File Coverage

File:t/02-assert-env.t
Coverage:100.0%

linestmtbrancondsubpodtimecode
1
1
1
1
3147
2
24
use strict;
2
1
1
1
4
0
35
use warnings;
3
4
1
1
1
225
838
91
use FindBin qw/$Bin/;
5
1
1
1
274
467
3
use lib qq{$Bin/../lib};
6
7
1
1
1
418
70287
7
use Test::More;
8
1
1
1
578
3076
2
use Test::Exception;
9
10
1
1
1
1
1
62504
568
3
1
3
use_ok('OpenMP::Environment');
11
12
1
372
my $env = OpenMP::Environment->new;
13
1
3
isa_ok( $env, 'OpenMP::Environment' );
14
15# Set up environment as if done externally
16
1
325
local %ENV = %ENV;
17
18# the following are technically valid, but not guarenteed to be self-consistent;
19# they are, however, validated
20sub set_valid {
21
16
48
    $ENV{OMP_CANCELLATION}      = q{TRUE};
22
16
25
    $ENV{OMP_DISPLAY_AFFINITY}  = q{TRUE};
23
16
22
    $ENV{OMP_DISPLAY_ENV}       = q{TRUE};
24
16
24
    $ENV{OMP_TARGET_OFFLOAD}    = q{MANDATORY};
25
16
22
    $ENV{OMP_DYNAMIC}           = q{true};
26
16
27
    $ENV{OMP_DEFAULT_DEVICE}    = 0;
27
16
21
    $ENV{OMP_MAX_ACTIVE_LEVELS} = 1;
28
16
19
    $ENV{OMP_MAX_TASK_PRIORITY} = 0;
29
16
21
    $ENV{OMP_NESTED}            = q{TRUE};
30
16
25
    $ENV{OMP_NUM_THREADS}       = 16;
31
16
22
    $ENV{OMP_THREAD_LIMIT}      = 1;
32
16
21
    $ENV{OMP_TEAMS_THREAD_LIMIT}      = 1;
33
16
22
    $ENV{OMP_WAIT_POLICY}       = q{PASSIVE};
34
16
30
    $ENV{GOMP_DEBUG}            = 0;
35}
36
37
1
4
ok $env->assert_omp_environment, q{External OpenMP is not set, deemed validated as expected};
38
39
1
213
set_valid();
40
41
1
3
note $env->_omp_summary;
42
43
1
428
ok $env->assert_omp_environment, q{External OpenMP validated as expected};
44
45
1
230
note qq{Setting up non-validated variables via %ENV ...\n\n};
46
47# the following are technically valid, but not guarenteed to be self-consistent;
48# nor are these validated directly
49
1
326
$ENV{OMP_ALLOCATOR}           = q{omp_high_bw_mem_alloc};
50
1
3
$ENV{OMP_AFFINITY_FORMAT}     = q{thread %n affinity %A};
51
1
4
$ENV{OMP_PROC_BIND}           = q{MASTER,CLOSE,SPREAD};
52
1
2
$ENV{OMP_PLACES}              = q/{0,1,2}, {3,4,6}, {7,8,9}, {10,11,12}/;
53
1
3
$ENV{OMP_STACKSIZE}           = 1024;
54
1
4
$ENV{GOMP_STACKSIZE}          = q{1024G};
55
1
3
$ENV{OMP_SCHEDULE}            = q{dynamic,16};
56
1
3
$ENV{GOMP_CPU_AFFINITY}       = q{0 3 1-2 4-15:2};
57
1
3
$ENV{GOMP_SPINCOUNT}          = q{INFINITY};
58
1
3
$ENV{GOMP_RTEMS_THREAD_POOLS} = q{1@WRK0:3$4@WRK1};
59
60
1
2
note $env->_omp_summary;
61
1
332
note q{};
62
1
305
note q{Now testing assert_omp_environment for each validated variable};
63
64
1
304
$ENV{OMP_CANCELLATION} = q{xxx};
65
1
1
5
29
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_CANCELLATION is invalid} );
66
67
1
199
set_valid();
68
1
2
$ENV{OMP_DISPLAY_AFFINITY} = q{yyy};
69
1
1
4
22
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_DISPLAY_AFFINITY is invalid} );
70
71
1
216
set_valid();
72
1
2
$ENV{OMP_DISPLAY_ENV} = q{yyy};
73
1
1
4
22
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_DISPLAY_ENV is invalid} );
74
75
1
213
set_valid();
76
77
1
2
$ENV{OMP_TARGET_OFFLOAD} = q{xxx};
78
1
1
4
22
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_TARGET_OFFLOAD is invalid} );
79
80
1
207
set_valid();
81
82
1
2
$ENV{OMP_DYNAMIC} = q{xxx};
83
1
1
5
21
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_DYNAMIC is invalid} );
84
85
1
208
set_valid();
86
87
1
3
$ENV{OMP_DEFAULT_DEVICE} = -1;
88
1
1
4
21
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_DEFAULT_DEVICE is invalid} );
89
90
1
202
set_valid();
91
92
1
3
$ENV{OMP_MAX_ACTIVE_LEVELS} = -1;
93
1
1
4
21
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_MAX_ACTIVE_LEVELS is invalid} );
94
95
1
198
set_valid();
96
97
1
2
$ENV{OMP_MAX_TASK_PRIORITY} = -1;
98
1
1
7
22
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_MAX_TASK_PRIORITY is invalid} );
99
100
1
202
set_valid();
101
102
1
2
$ENV{OMP_NESTED} = q{yyy};
103
1
1
5
22
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_NESTED is invalid} );
104
105
1
197
set_valid();
106
1
3
$ENV{OMP_NUM_THREADS} = q{16,8,4};
107
1
3
ok $env->assert_omp_environment, q{Nested-level OMP_NUM_THREADS list validates when supplied externally};
108
109
1
210
set_valid();
110
1
3
$ENV{OMP_NUM_THREADS} = q{figgy};
111
1
1
4
24
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_NUM_THREADS is invalid} );
112
113
1
287
set_valid();
114
115
1
4
$ENV{OMP_NUM_TEAMS} = q{figgy};
116
1
1
3
23
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_NUM_TEAMS is invalid} );
117
118
1
200
set_valid();
119
120
1
2
$ENV{OMP_THREAD_LIMIT} = q{aaa};
121
1
1
4
21
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_THREAD_LIMIT is invalid} );
122
123
1
197
set_valid();
124
125
1
2
$ENV{OMP_TEAMS_THREAD_LIMIT} = q{aaa};
126
1
1
5
21
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_TEAMS_THREAD_LIMIT is invalid} );
127
128
1
195
set_valid();
129
130
1
3
$ENV{OMP_WAIT_POLICY} = q{PASSIVE-AGGRESSIVE};
131
1
1
4
21
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when OMP_WAIT_POLICY is invalid} );
132
133
1
208
set_valid();
134
135
1
3
$ENV{GOMP_DEBUG} = q{bbb};
136
1
1
4
23
dies_ok( sub { $env->assert_omp_environment }, q{Fails as expectedly when GOMP_DEBUG is invalid} );
137
138
1
195
done_testing;
139
140
1
697
exit;