| File: | t/01-validation.t |
| Coverage: | 100.0% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | 1 1 1 | 2951 2 24 | use strict; | ||||
| 2 | 1 1 1 | 3 3 36 | use warnings; | ||||
| 3 | |||||||
| 4 | 1 1 1 | 287 875 86 | use FindBin qw/$Bin/; | ||||
| 5 | 1 1 1 | 225 497 4 | use lib qq{$Bin/../lib}; | ||||
| 6 | |||||||
| 7 | 1 1 1 | 440 68802 8 | use Test::More; | ||||
| 8 | 1 1 1 | 433 2214 3 | use Test::Exception; | ||||
| 9 | |||||||
| 10 | 1 1 1 1 1 | 66829 693 1 1 13 | use_ok('OpenMP::Environment'); | ||||
| 11 | |||||||
| 12 | 1 | 335 | my $env = OpenMP::Environment->new; | ||||
| 13 | 1 | 3 | isa_ok( $env, 'OpenMP::Environment' ); | ||||
| 14 | |||||||
| 15 | 1 | 268 | note q{Testing validation for all OpenMP Environmental Variables that have checks implemented}; | ||||
| 16 | |||||||
| 17 | # OMP_CANCELLATION | ||||||
| 18 | 1 | 407 | note q{## OMP_CANCELLATION's valid values are: 'TRUE', 'FALSE', and may be unset}; | ||||
| 19 | 1 | 306 | is $env->omp_cancellation(q{TRUE}), q{TRUE}, q{OMP_CANCELLATION can be set to 'TRUE' }; | ||||
| 20 | 1 | 225 | is $env->omp_cancellation(q{true}), q{TRUE}, q{OMP_CANCELLATION can be set to 'TRUE' via 'true' }; | ||||
| 21 | 1 | 209 | is $env->unset_omp_cancellation(), q{TRUE}, q{unset_omp_cancellation returns last known value if OMP_CANCELLATION is set}; | ||||
| 22 | 1 | 204 | is $env->omp_cancellation(q{FALSE}), q{FALSE}, q{OMP_CANCELLATION can be set to 'FALSE' }; | ||||
| 23 | 1 | 213 | is $env->omp_cancellation(q{false}), q{FALSE}, q{OMP_CANCELLATION can be set to 'FALSE' via 'false' }; | ||||
| 24 | 1 | 208 | is $env->unset_omp_cancellation(), q{FALSE}, q{unset_omp_cancellation returns last known value if OMP_CANCELLATION is set}; | ||||
| 25 | 1 | 204 | is $env->omp_cancellation, undef, q{OMP_CANCELLATION has indeed been unset}; | ||||
| 26 | 1 | 243 | ok !exists( $ENV{OMP_CANCELLATION} ), q/$ENV{OMP_CANCELLATION} doesn't exist, as expected/; | ||||
| 27 | 1 1 | 190 28 | dies_ok( sub { $env->omp_cancellation(q{Invalid value xxx}) }, q{omp_cancellation dies on invalid input} ); | ||||
| 28 | |||||||
| 29 | # OMP_DISPLAY_AFFINITY | ||||||
| 30 | 1 | 202 | note q{## OMP_DISPLAY_AFFINITY's valid values are: 'TRUE', 'FALSE', and may be unset}; | ||||
| 31 | 1 | 318 | is $env->omp_display_affinity(q{TRUE}), q{TRUE}, q{OMP_DISPLAY_AFFINITY can be set to 'TRUE'}; | ||||
| 32 | 1 | 208 | is $env->omp_display_affinity(q{true}), q{TRUE}, q{OMP_DISPLAY_AFFINITY upper-cases 'true'}; | ||||
| 33 | 1 | 207 | is $env->unset_omp_display_affinity(), q{TRUE}, q{unset_omp_display_affinity returns last known value}; | ||||
| 34 | 1 | 201 | is $env->omp_display_affinity(q{FALSE}), q{FALSE}, q{OMP_DISPLAY_AFFINITY can be set to 'FALSE'}; | ||||
| 35 | 1 | 208 | is $env->omp_display_affinity(q{false}), q{FALSE}, q{OMP_DISPLAY_AFFINITY upper-cases 'false'}; | ||||
| 36 | 1 | 209 | is $env->unset_omp_display_affinity(), q{FALSE}, q{unset_omp_display_affinity returns last known value}; | ||||
| 37 | 1 | 202 | is $env->omp_display_affinity, undef, q{OMP_DISPLAY_AFFINITY has been unset}; | ||||
| 38 | 1 1 | 243 23 | dies_ok( sub { $env->omp_display_affinity(q{sometimes}) }, q{omp_display_affinity dies on invalid input} ); | ||||
| 39 | |||||||
| 40 | # OMP_DYNAMIC | ||||||
| 41 | 1 | 202 | note q{## OMP_DYNAMIC's valid values are: 'true', 1, 'false', 0, and may be unset}; | ||||
| 42 | 1 | 308 | is $env->omp_dynamic(q{true}), q{true}, q{OMP_DYNAMIC can be set to 'true' via 'true' }; | ||||
| 43 | 1 | 223 | is $env->unset_omp_dynamic(), q{true}, q{unset_omp_dynamic returns last known value if OMP_DYNAMIC is set}; | ||||
| 44 | 1 | 204 | is $env->omp_dynamic(q{1}), q{1}, q{OMP_DYNAMIC can be set to '1' via '1' }; | ||||
| 45 | 1 | 208 | is $env->unset_omp_dynamic(), q{1}, q{unset_omp_dynamic returns last known value if OMP_DYNAMIC is set}; | ||||
| 46 | 1 | 203 | is $env->omp_dynamic(q{false}), undef, q{OMP_DYNAMIC can be set to 'false' via 'false' }; | ||||
| 47 | 1 | 244 | is $env->unset_omp_dynamic(), undef, q{unset_omp_dynamic returns undef when OMP_DYNAMIC already doesn't exist}; | ||||
| 48 | 1 | 243 | is $env->omp_dynamic(q{1}), q{1}, q{OMP_DYNAMIC can be set to '1' via '1' }; | ||||
| 49 | 1 | 204 | is $env->omp_dynamic(q{0}), 1, q{OMP_DYNAMIC can be unset via '0', if set returns 1}; | ||||
| 50 | 1 | 201 | is $env->unset_omp_dynamic(), undef, q{unset_omp_dynamic returns last known value if OMP_DYNAMIC is set, including undef if unset}; | ||||
| 51 | 1 | 245 | is $env->omp_dynamic, undef, q{OMP_DYNAMIC has indeed been unset}; | ||||
| 52 | 1 | 238 | ok !exists( $ENV{OMP_DYNAMIC} ), q/$ENV{OMP_DYNAMIC} doesn't exist, as expected/; | ||||
| 53 | 1 1 | 184 21 | dies_ok( sub { $env->omp_dynamic(q{Invalid value xxx}) }, q{omp_dynamic dies on invalid input} ); | ||||
| 54 | |||||||
| 55 | # OMP_NESTED | ||||||
| 56 | 1 | 194 | note q{## OMP_NESTED's valid values are: 'TRUE', 'FALSE', and may be unset}; | ||||
| 57 | 1 | 314 | is $env->omp_nested(q{TRUE}), q{TRUE}, q{OMP_NESTED can be set to 'TRUE' }; | ||||
| 58 | 1 | 209 | is $env->omp_nested(q{true}), q{TRUE}, q{OMP_NESTED can be set to 'TRUE' via 'true' }; | ||||
| 59 | 1 | 207 | is $env->unset_omp_nested(), q{TRUE}, q{unset_omp_nested returns last known value if OMP_NESTED is set}; | ||||
| 60 | 1 | 203 | is $env->omp_nested(q{TRUE}), q{TRUE}, q{OMP_NESTED can be set to 'TRUE' }; | ||||
| 61 | 1 | 209 | is $env->omp_nested(q{FALSE}), q{TRUE}, q{OMP_NESTED is deleted from %ENV when set to 'FALSE' }; | ||||
| 62 | 1 | 204 | is $env->omp_nested(q{false}), undef, q{OMP_NESTED is deleted from %ENV when set to 'false' }; | ||||
| 63 | 1 | 240 | is $env->unset_omp_nested(), undef, q{unset_omp_nested returns last known value if OMP_NESTED is set}; | ||||
| 64 | 1 | 245 | is $env->omp_nested, undef, q{OMP_NESTED has indeed been unset}; | ||||
| 65 | 1 | 235 | ok !exists( $ENV{OMP_NESTED} ), q/$ENV{OMP_NESTED} doesn't exist, as expected/; | ||||
| 66 | 1 1 | 183 21 | dies_ok( sub { $env->omp_nested(q{Invalid value xxx}) }, q{omp_nested dies on invalid input} ); | ||||
| 67 | |||||||
| 68 | # OMP_WAIT_POLICY | ||||||
| 69 | 1 | 198 | note q{## OMP_WAIT_POLICY's valid values are: 'ACTIVE', 'PASSIVE', and may be unset}; | ||||
| 70 | 1 | 306 | is $env->omp_wait_policy(q{ACTIVE}), q{ACTIVE}, q{OMP_WAIT_POLICY can be set to 'ACTIVE' }; | ||||
| 71 | 1 | 217 | is $env->omp_wait_policy(q{active}), q{ACTIVE}, q{OMP_WAIT_POLICY can be set to 'ACTIVE' via 'active' }; | ||||
| 72 | 1 | 208 | is $env->unset_omp_wait_policy(), q{ACTIVE}, q{unset_omp_wait_policy returns last known value if OMP_WAIT_POLICY is set}; | ||||
| 73 | 1 | 203 | is $env->omp_wait_policy(q{PASSIVE}), q{PASSIVE}, q{OMP_WAIT_POLICY can be set to 'PASSIVE' }; | ||||
| 74 | 1 | 208 | is $env->omp_wait_policy(q{passive}), q{PASSIVE}, q{OMP_WAIT_POLICY can be set to 'PASSIVE' via 'passive' }; | ||||
| 75 | 1 | 208 | is $env->unset_omp_wait_policy(), q{PASSIVE}, q{unset_omp_wait_policy returns last known value if OMP_WAIT_POLICY is set}; | ||||
| 76 | 1 | 201 | is $env->omp_wait_policy, undef, q{OMP_WAIT_POLICY has indeed been unset}; | ||||
| 77 | 1 | 239 | ok !exists( $ENV{OMP_WAIT_POLICY} ), q/$ENV{OMP_WAIT_POLICY} doesn't exist, as expected/; | ||||
| 78 | 1 1 | 186 22 | dies_ok( sub { $env->omp_wait_policy(q{Invalid value xxx}) }, q{omp_wait_policy dies on invalid input} ); | ||||
| 79 | |||||||
| 80 | # GOMP_DEBUG | ||||||
| 81 | 1 | 198 | note q{## GOMP_DEBUG's valid values are: '1', '0', and may be unset}; | ||||
| 82 | 1 | 307 | is $env->gomp_debug(q{1}), q{1}, q{GOMP_DEBUG can be set to '1' }; | ||||
| 83 | 1 | 208 | is $env->unset_gomp_debug(), q{1}, q{unset_gomp_debug returns last known value if GOMP_DEBUG is set}; | ||||
| 84 | 1 | 203 | is $env->gomp_debug(q{0}), q{0}, q{GOMP_DEBUG can be set to '0' }; | ||||
| 85 | 1 | 207 | is $env->unset_gomp_debug(), q{0}, q{unset_gomp_debug returns last known value if GOMP_DEBUG is set}; | ||||
| 86 | 1 | 203 | is $env->gomp_debug, undef, q{GOMP_DEBUG has indeed been unset}; | ||||
| 87 | 1 | 241 | ok !exists( $ENV{GOMP_DEBUG} ), q/$ENV{GOMP_DEBUG} doesn't exist, as expected/; | ||||
| 88 | 1 1 | 185 21 | dies_ok( sub { $env->gomp_debug(q{Invalid value xxx}) }, q{gomp_debug dies on invalid input} ); | ||||
| 89 | |||||||
| 90 | # OMP_DISPLAY_ENV | ||||||
| 91 | 1 | 207 | note q{## OMP_DISPLAY_ENV's valid values are: 'TRUE', 'VERBOSE', 'FALSE', and may be unset}; | ||||
| 92 | 1 | 311 | is $env->omp_display_env(q{TRUE}), q{TRUE}, q{OMP_DISPLAY_ENV can be set to 'TRUE' }; | ||||
| 93 | 1 | 220 | is $env->omp_display_env(q{true}), q{TRUE}, q{OMP_DISPLAY_ENV can be set to 'TRUE' via 'true' }; | ||||
| 94 | 1 | 209 | is $env->unset_omp_display_env(), q{TRUE}, q{unset_omp_display_env returns last known value if OMP_DISPLAY_ENV is set}; | ||||
| 95 | 1 | 204 | is $env->omp_display_env(q{VERBOSE}), q{VERBOSE}, q{OMP_DISPLAY_ENV can be set to 'VERBOSE' }; | ||||
| 96 | 1 | 207 | is $env->omp_display_env(q{verbose}), q{VERBOSE}, q{OMP_DISPLAY_ENV can be set to 'VERBOSE' via 'verbose' }; | ||||
| 97 | 1 | 208 | is $env->unset_omp_display_env(), q{VERBOSE}, q{unset_omp_display_env returns last known value if OMP_DISPLAY_ENV is set}; | ||||
| 98 | 1 | 209 | is $env->omp_display_env(q{FALSE}), q{FALSE}, q{OMP_DISPLAY_ENV can be set to 'FALSE' }; | ||||
| 99 | 1 | 208 | is $env->omp_display_env(q{false}), q{FALSE}, q{OMP_DISPLAY_ENV can be set to 'FALSE' via 'false' }; | ||||
| 100 | 1 | 206 | is $env->unset_omp_display_env(), q{FALSE}, q{unset_omp_display_env returns last known value if OMP_DISPLAY_ENV is set}; | ||||
| 101 | 1 | 200 | is $env->omp_display_env, undef, q{OMP_DISPLAY_ENV has indeed been unset}; | ||||
| 102 | 1 | 240 | ok !exists( $ENV{OMP_DISPLAY_ENV} ), q/$ENV{OMP_DISPLAY_ENV} doesn't exist, as expected/; | ||||
| 103 | 1 1 | 186 21 | dies_ok( sub { $env->omp_display_env(q{Invalid value xxx}) }, q{omp_display_env dies on invalid input} ); | ||||
| 104 | |||||||
| 105 | # OMP_TARGET_OFFLOAD | ||||||
| 106 | 1 | 199 | note q{## OMP_TARGET_OFFLOAD's valid values are: 'MANDATORY', 'DISABLED', 'DEFAULT', and may be unset}; | ||||
| 107 | 1 | 308 | is $env->omp_target_offload(q{MANDATORY}), q{MANDATORY}, q{OMP_TARGET_OFFLOAD can be set to 'MANDATORY' }; | ||||
| 108 | 1 | 209 | is $env->omp_target_offload(q{mandatory}), q{MANDATORY}, q{OMP_TARGET_OFFLOAD can be set to 'MANDATORY' via 'mandatory' }; | ||||
| 109 | 1 | 216 | is $env->unset_omp_target_offload(), q{MANDATORY}, q{unset_omp_target_offload returns last known value if OMP_TARGET_OFFLOAD is set}; | ||||
| 110 | 1 | 202 | is $env->omp_target_offload(q{DISABLED}), q{DISABLED}, q{OMP_TARGET_OFFLOAD can be set to 'DISABLED' }; | ||||
| 111 | 1 | 250 | is $env->omp_target_offload(q{disabled}), q{DISABLED}, q{OMP_TARGET_OFFLOAD can be set to 'DISABLED' via 'disabled' }; | ||||
| 112 | 1 | 207 | is $env->unset_omp_target_offload(), q{DISABLED}, q{unset_omp_target_offload returns last known value if OMP_TARGET_OFFLOAD is set}; | ||||
| 113 | 1 | 205 | is $env->omp_target_offload(q{DEFAULT}), q{DEFAULT}, q{OMP_TARGET_OFFLOAD can be set to 'DEFAULT' }; | ||||
| 114 | 1 | 207 | is $env->omp_target_offload(q{default}), q{DEFAULT}, q{OMP_TARGET_OFFLOAD can be set to 'DEFAULT' via 'default' }; | ||||
| 115 | 1 | 206 | is $env->unset_omp_target_offload(), q{DEFAULT}, q{unset_omp_target_offload returns last known value if OMP_TARGET_OFFLOAD is set}; | ||||
| 116 | 1 | 202 | is $env->omp_target_offload, undef, q{OMP_TARGET_OFFLOAD has indeed been unset}; | ||||
| 117 | 1 | 241 | ok !exists( $ENV{OMP_TARGET_OFFLOAD} ), q/$ENV{OMP_TARGET_OFFLOAD} doesn't exist, as expected/; | ||||
| 118 | 1 1 | 186 22 | dies_ok( sub { $env->omp_target_offload(q{Invalid value xxx}) }, q{omp_target_offload dies on invalid input} ); | ||||
| 119 | |||||||
| 120 | # >= 1 | ||||||
| 121 | # OMP_DEFAULT_DEVICE | ||||||
| 122 | 1 | 195 | note q{## OMP_DEFAULT_DEVICE's valid values are integers 0 or greater (>= 0)}; | ||||
| 123 | 1 | 303 | is $env->omp_default_device(0), 0, q{OMP_DEFAULT_DEVICE can be set to 0}; | ||||
| 124 | 1 | 212 | is $env->unset_omp_default_device(), 0, q{unset_omp_default_device returns last known value if OMP_DEFAULT_DEVICE is set}; | ||||
| 125 | 1 | 204 | is $env->omp_default_device(q{0}), q{0}, q{OMP_DEFAULT_DEVICE can be set to '0'}; | ||||
| 126 | 1 | 206 | is $env->unset_omp_default_device(), q{0}, q{unset_omp_default_device returns last known value if OMP_DEFAULT_DEVICE is set}; | ||||
| 127 | 1 | 203 | for my $i ( 1 .. 10 ) { | ||||
| 128 | 10 | 1821 | is $env->omp_default_device($i), $i, qq{OMP_DEFAULT_DEVICE can be set to $i}; | ||||
| 129 | 10 | 2084 | is $env->unset_omp_default_device(), $i, q{unset_omp_default_device returns last known value if OMP_DEFAULT_DEVICE is set}; | ||||
| 130 | 10 | 2030 | is $env->omp_default_device(qq{$i}), qq{$i}, qq{OMP_DEFAULT_DEVICE can be set to '$i'}; | ||||
| 131 | 10 | 2086 | is $env->unset_omp_default_device(), qq{$i}, q{unset_omp_default_device returns last known value if OMP_DEFAULT_DEVICE is set}; | ||||
| 132 | } | ||||||
| 133 | 1 1 | 205 22 | dies_ok( sub { $env->omp_default_device(-1) }, q{omp_default_device dies on invalid input (-1)} ); | ||||
| 134 | 1 1 | 200 21 | dies_ok( sub { $env->omp_default_device(-2) }, q{omp_default_device dies on invalid input (-2)} ); | ||||
| 135 | 1 1 | 201 20 | dies_ok( sub { $env->omp_default_device(q{foo}) }, q{omp_default_device dies on invalid input ('foo')} ); | ||||
| 136 | |||||||
| 137 | # OMP_MAX_TASK_PRIORITY | ||||||
| 138 | 1 | 202 | note q{## OMP_MAX_TASK_PRIORITY's valid values are integers 0 or greater (>= 0)}; | ||||
| 139 | 1 | 309 | is $env->omp_max_task_priority(0), 0, q{OMP_MAX_TASK_PRIORITY can be set to 0}; | ||||
| 140 | 1 | 211 | is $env->unset_omp_max_task_priority(), 0, q{unset_omp_max_task_priority returns last known value if OMP_MAX_TASK_PRIORITY is set}; | ||||
| 141 | 1 | 208 | is $env->omp_max_task_priority(q{0}), q{0}, q{OMP_MAX_TASK_PRIORITY can be set to '0'}; | ||||
| 142 | 1 | 211 | is $env->unset_omp_max_task_priority(), q{0}, q{unset_omp_max_task_priority returns last known value if OMP_MAX_TASK_PRIORITY is set}; | ||||
| 143 | 1 | 208 | for my $i ( 1 .. 10 ) { | ||||
| 144 | 10 | 1828 | is $env->omp_max_task_priority($i), $i, qq{OMP_MAX_TASK_PRIORITY can be set to $i}; | ||||
| 145 | 10 | 2071 | is $env->unset_omp_max_task_priority(), $i, q{unset_omp_max_task_priority returns last known value if OMP_MAX_TASK_PRIORITY is set}; | ||||
| 146 | 10 | 2043 | is $env->omp_max_task_priority(qq{$i}), qq{$i}, qq{OMP_MAX_TASK_PRIORITY can be set to '$i'}; | ||||
| 147 | 10 | 2081 | is $env->unset_omp_max_task_priority(), qq{$i}, q{unset_omp_max_task_priority returns last known value if OMP_MAX_TASK_PRIORITY is set}; | ||||
| 148 | } | ||||||
| 149 | 1 1 | 209 22 | dies_ok( sub { $env->omp_max_task_priority(-1) }, q{omp_max_task_priority dies on invalid input (-1)} ); | ||||
| 150 | 1 1 | 201 22 | dies_ok( sub { $env->omp_max_task_priority(-2) }, q{omp_max_task_priority dies on invalid input (-2)} ); | ||||
| 151 | 1 1 | 201 21 | dies_ok( sub { $env->omp_max_task_priority(q{foo}) }, q{omp_max_task_priority dies on invalid input ('foo')} ); | ||||
| 152 | |||||||
| 153 | # >= 0 | ||||||
| 154 | # OMP_MAX_ACTIVE_LEVELS | ||||||
| 155 | 1 | 199 | note q{## OMP_MAX_ACTIVE_LEVELS's valid values are integers 0 or greater (>= 1)}; | ||||
| 156 | 1 | 309 | for my $i ( 1 .. 10 ) { | ||||
| 157 | 10 | 1845 | is $env->omp_max_active_levels($i), $i, qq{OMP_MAX_ACTIVE_LEVELS can be set to $i}; | ||||
| 158 | 10 | 2088 | is $env->unset_omp_max_active_levels(), $i, q{unset_omp_max_active_levels returns last known value if OMP_MAX_ACTIVE_LEVELS is set}; | ||||
| 159 | 10 | 2037 | is $env->omp_max_active_levels(qq{$i}), qq{$i}, qq{OMP_MAX_ACTIVE_LEVELS can be set to '$i'}; | ||||
| 160 | 10 | 2097 | is $env->unset_omp_max_active_levels(), qq{$i}, q{unset_omp_max_active_levels returns last known value if OMP_MAX_ACTIVE_LEVELS is set}; | ||||
| 161 | } | ||||||
| 162 | 1 1 | 206 22 | dies_ok( sub { $env->omp_max_active_levels(0) }, q{omp_max_active_levels dies on invalid input (0)} ); | ||||
| 163 | 1 1 | 201 22 | dies_ok( sub { $env->omp_max_active_levels(-1) }, q{omp_max_active_levels dies on invalid input (-1)} ); | ||||
| 164 | 1 1 | 201 22 | dies_ok( sub { $env->omp_max_active_levels(-2) }, q{omp_max_active_levels dies on invalid input (-2)} ); | ||||
| 165 | 1 1 | 201 22 | dies_ok( sub { $env->omp_max_active_levels(q{foo}) }, q{omp_max_active_levels dies on invalid input ('foo')} ); | ||||
| 166 | |||||||
| 167 | # OMP_NUM_THREADS | ||||||
| 168 | 1 | 199 | note q{## OMP_NUM_THREADS's valid values are integers 0 or greater (>= 1)}; | ||||
| 169 | 1 | 317 | for my $i ( 1 .. 10 ) { | ||||
| 170 | 10 | 1865 | is $env->omp_num_threads($i), $i, qq{OMP_NUM_THREADS can be set to $i}; | ||||
| 171 | 10 | 2143 | is $env->unset_omp_num_threads(), $i, q{unset_omp_num_threads returns last known value if OMP_NUM_THREADS is set}; | ||||
| 172 | 10 | 2048 | is $env->omp_num_threads(qq{$i}), qq{$i}, qq{OMP_NUM_THREADS can be set to '$i'}; | ||||
| 173 | 10 | 2082 | is $env->unset_omp_num_threads(), qq{$i}, q{unset_omp_num_threads returns last known value if OMP_NUM_THREADS is set}; | ||||
| 174 | } | ||||||
| 175 | 1 1 | 209 22 | dies_ok( sub { $env->omp_num_threads(0) }, q{omp_num_threads dies on invalid input (0)} ); | ||||
| 176 | 1 1 | 205 22 | dies_ok( sub { $env->omp_num_threads(-1) }, q{omp_num_threads dies on invalid input (-1)} ); | ||||
| 177 | 1 1 | 205 21 | dies_ok( sub { $env->omp_num_threads(-2) }, q{omp_num_threads dies on invalid input (-2)} ); | ||||
| 178 | 1 1 | 201 21 | dies_ok( sub { $env->omp_num_threads(q{foo}) }, q{omp_num_threads dies on invalid input ('foo')} ); | ||||
| 179 | 1 | 197 | is $env->omp_num_threads(q{8,4,2}), q{8,4,2}, q{OMP_NUM_THREADS accepts a nested-level list}; | ||||
| 180 | 1 | 215 | is $env->unset_omp_num_threads(), q{8,4,2}, q{nested-level OMP_NUM_THREADS list can be unset}; | ||||
| 181 | 1 | 208 | is $env->omp_num_threads(q{8, 4, 2}), q{8, 4, 2}, q{OMP_NUM_THREADS accepts whitespace around list separators}; | ||||
| 182 | 1 | 211 | is $env->unset_omp_num_threads(), q{8, 4, 2}, q{whitespace-preserving OMP_NUM_THREADS list can be unset}; | ||||
| 183 | 1 1 | 210 23 | dies_ok( sub { $env->omp_num_threads(q{8,0,2}) }, q{omp_num_threads rejects zero in a nested-level list} ); | ||||
| 184 | 1 1 | 205 21 | dies_ok( sub { $env->omp_num_threads(q{8,,2}) }, q{omp_num_threads rejects an empty nested-level list item} ); | ||||
| 185 | 1 1 | 205 22 | dies_ok( sub { $env->omp_num_threads(q{8,foo,2}) }, q{omp_num_threads rejects a non-integer nested-level list item} ); | ||||
| 186 | |||||||
| 187 | # OMP_NUM_TEAMS | ||||||
| 188 | 1 | 196 | note q{## OMP_NUM_TEAMS's valid values are integers 0 or greater (>= 1)}; | ||||
| 189 | 1 | 312 | for my $i ( 1 .. 10 ) { | ||||
| 190 | 10 | 1848 | is $env->omp_num_teams($i), $i, qq{OMP_NUM_TEAMS can be set to $i}; | ||||
| 191 | 10 | 2097 | is $env->unset_omp_num_teams(), $i, q{unset_omp_num_teams returns last known value if OMP_NUM_TEAMS is set}; | ||||
| 192 | 10 | 2047 | is $env->omp_num_teams(qq{$i}), qq{$i}, qq{OMP_NUM_TEAMS can be set to '$i'}; | ||||
| 193 | 10 | 2097 | is $env->unset_omp_num_teams(), qq{$i}, q{unset_omp_num_teams returns last known value if OMP_NUM_TEAMS is set}; | ||||
| 194 | } | ||||||
| 195 | 1 1 | 209 25 | dies_ok( sub { $env->omp_num_teams(0) }, q{omp_num_teams dies on invalid input (0)} ); | ||||
| 196 | 1 1 | 209 22 | dies_ok( sub { $env->omp_num_teams(-1) }, q{omp_num_teams dies on invalid input (-1)} ); | ||||
| 197 | 1 1 | 201 21 | dies_ok( sub { $env->omp_num_teams(-2) }, q{omp_num_teams dies on invalid input (-2)} ); | ||||
| 198 | 1 1 | 203 23 | dies_ok( sub { $env->omp_num_teams(q{foo}) }, q{omp_num_teams dies on invalid input ('foo')} ); | ||||
| 199 | |||||||
| 200 | # OMP_THREAD_LIMIT | ||||||
| 201 | 1 | 202 | note q{## OMP_THREAD_LIMIT's valid values are integers 0 or greater (>= 1)}; | ||||
| 202 | 1 | 332 | for my $i ( 1 .. 10 ) { | ||||
| 203 | 10 | 1853 | is $env->omp_thread_limit($i), $i, qq{OMP_THREAD_LIMIT can be set to $i}; | ||||
| 204 | 10 | 2113 | is $env->unset_omp_thread_limit(), $i, q{unset_omp_thread_limit returns last known value if OMP_THREAD_LIMIT is set}; | ||||
| 205 | 10 | 2057 | is $env->omp_thread_limit(qq{$i}), qq{$i}, qq{OMP_THREAD_LIMIT can be set to '$i'}; | ||||
| 206 | 10 | 2097 | is $env->unset_omp_thread_limit(), qq{$i}, q{unset_omp_thread_limit returns last known value if OMP_THREAD_LIMIT is set}; | ||||
| 207 | } | ||||||
| 208 | 1 1 | 209 43 | dies_ok( sub { $env->omp_thread_limit(0) }, q{omp_thread_limit dies on invalid input (0)} ); | ||||
| 209 | 1 1 | 206 22 | dies_ok( sub { $env->omp_thread_limit(-1) }, q{omp_thread_limit dies on invalid input (-1)} ); | ||||
| 210 | 1 1 | 201 21 | dies_ok( sub { $env->omp_thread_limit(-2) }, q{omp_thread_limit dies on invalid input (-2)} ); | ||||
| 211 | 1 1 | 199 21 | dies_ok( sub { $env->omp_thread_limit(q{foo}) }, q{omp_thread_limit dies on invalid input ('foo')} ); | ||||
| 212 | |||||||
| 213 | # OMP_TEAMS_THREAD_LIMIT | ||||||
| 214 | 1 | 197 | note q{## OMP_TEAMS_THREAD_LIMIT's valid values are integers 0 or greater (>= 1)}; | ||||
| 215 | 1 | 320 | for my $i ( 1 .. 10 ) { | ||||
| 216 | 10 | 1834 | is $env->omp_teams_thread_limit($i), $i, qq{OMP_THREAD_LIMIT can be set to $i}; | ||||
| 217 | 10 | 2083 | is $env->unset_omp_teams_thread_limit(), $i, q{unset_omp_teams_thread_limit returns last known value if OMP_THREAD_LIMIT is set}; | ||||
| 218 | 10 | 2027 | is $env->omp_teams_thread_limit(qq{$i}), qq{$i}, qq{OMP_THREAD_LIMIT can be set to '$i'}; | ||||
| 219 | 10 | 2071 | is $env->unset_omp_teams_thread_limit(), qq{$i}, q{unset_omp_teams_thread_limit returns last known value if OMP_THREAD_LIMIT is set}; | ||||
| 220 | } | ||||||
| 221 | 1 1 | 205 22 | dies_ok( sub { $env->omp_teams_thread_limit(0) }, q{omp_teams_thread_limit dies on invalid input (0)} ); | ||||
| 222 | 1 1 | 201 22 | dies_ok( sub { $env->omp_teams_thread_limit(-1) }, q{omp_teams_thread_limit dies on invalid input (-1)} ); | ||||
| 223 | 1 1 | 202 21 | dies_ok( sub { $env->omp_teams_thread_limit(-2) }, q{omp_teams_thread_limit dies on invalid input (-2)} ); | ||||
| 224 | 1 1 | 198 27 | dies_ok( sub { $env->omp_teams_thread_limit(q{foo}) }, q{omp_teams_thread_limit dies on invalid input ('foo')} ); | ||||
| 225 | |||||||
| 226 | ## not validated, but test set/unset | ||||||
| 227 | ## no convenient 'uc' filters, either | ||||||
| 228 | # OMP_ALLOCATOR | ||||||
| 229 | 1 | 206 | ok $env->omp_allocator(q{omp_high_bw_mem_alloc}), q{omp_allocator sets a predefined allocator}; | ||||
| 230 | 1 | 200 | is $env->unset_omp_allocator(), q{omp_high_bw_mem_alloc}, q{unset_omp_allocator returns last known value}; | ||||
| 231 | 1 | 208 | ok $env->omp_allocator(q{omp_low_lat_mem_space:pinned=true,partition=nearest}), q{omp_allocator passes complex allocator syntax through}; | ||||
| 232 | 1 | 199 | is $env->unset_omp_allocator(), q{omp_low_lat_mem_space:pinned=true,partition=nearest}, q{complex OMP_ALLOCATOR value can be unset}; | ||||
| 233 | |||||||
| 234 | # OMP_AFFINITY_FORMAT | ||||||
| 235 | 1 | 205 | ok $env->omp_affinity_format(q{thread %n affinity %A}), q{omp_affinity_format sets an affinity display format}; | ||||
| 236 | 1 | 198 | is $env->unset_omp_affinity_format(), q{thread %n affinity %A}, q{unset_omp_affinity_format returns last known value}; | ||||
| 237 | |||||||
| 238 | # OMP_PROC_BIND | ||||||
| 239 | 1 | 205 | ok $env->omp_proc_bind(q{TRUE}), q{omp_proc_bind sets arbitrary value ok, no validation (yet)}; | ||||
| 240 | 1 | 198 | is $env->unset_omp_proc_bind(), q{TRUE}, q{unset_omp_proc_bind returns last known value if OMP_PROC_BIND is set}; | ||||
| 241 | 1 | 209 | ok $env->omp_proc_bind(q{FALSE}), q{omp_proc_bind sets arbitrary value ok, no validation (yet)}; | ||||
| 242 | 1 | 196 | is $env->unset_omp_proc_bind(), q{FALSE}, q{unset_omp_proc_bind returns last known value if OMP_PROC_BIND is set}; | ||||
| 243 | 1 | 207 | ok $env->omp_proc_bind(q{MASTER,CLOSE,SPREAD}), q{omp_proc_bind sets arbitrary value ok, no validation (yet)}; | ||||
| 244 | 1 | 195 | is $env->unset_omp_proc_bind(), q{MASTER,CLOSE,SPREAD}, q{unset_omp_proc_bind returns last known value if OMP_PROC_BIND is set}; | ||||
| 245 | |||||||
| 246 | # OMP_PLACES | ||||||
| 247 | 1 | 207 | ok $env->omp_places(q/{0,1,2}, {3,4,6}, {7,8,9}, {10,11,12}/), q{omp_places sets arbitrary value ok, no validation (yet)}; | ||||
| 248 | 1 | 195 | is $env->unset_omp_places(), q/{0,1,2}, {3,4,6}, {7,8,9}, {10,11,12}/, q{unset_omp_places returns last known value if OMP_PLACES is set}; | ||||
| 249 | |||||||
| 250 | # OMP_STACKSIZE | ||||||
| 251 | 1 | 206 | ok $env->omp_stacksize(1024), q{omp_stacksize sets arbitrary value ok, no validation (yet)}; | ||||
| 252 | 1 | 196 | is $env->unset_omp_stacksize(), 1024, q{unset_omp_stacksize returns last known value if OMP_STACKSIZE is set}; | ||||
| 253 | 1 | 204 | ok $env->omp_stacksize(q{1024G}), q{omp_stacksize sets arbitrary value ok, no validation (yet)}; | ||||
| 254 | 1 | 196 | is $env->unset_omp_stacksize(), q{1024G}, q{unset_omp_stacksize returns last known value if OMP_STACKSIZE is set}; | ||||
| 255 | |||||||
| 256 | # OMP_SCHEDULE | ||||||
| 257 | 1 | 206 | ok $env->omp_schedule(q{static,10}), q{omp_schedule sets arbitrary (static,10) value ok, no validation (yet)}; | ||||
| 258 | 1 | 200 | is $env->unset_omp_schedule(), q{static,10}, q{unset_omp_schedule returns last known value if OMP_SCHEDULE is set}; | ||||
| 259 | 1 | 209 | ok $env->omp_schedule(q{dynamic,10}), q{omp_schedule sets arbitrary (dynamic,10) value ok, no validation (yet)}; | ||||
| 260 | 1 | 198 | is $env->unset_omp_schedule(), q{dynamic,10}, q{unset_omp_schedule returns last known value if OMP_SCHEDULE is set}; | ||||
| 261 | 1 | 204 | ok $env->omp_schedule(q{guided,10}), q{omp_schedule sets arbitrary (guided,10) value ok, no validation (yet)}; | ||||
| 262 | 1 | 196 | is $env->unset_omp_schedule(), q{guided,10}, q{unset_omp_schedule returns last known value if OMP_SCHEDULE is set}; | ||||
| 263 | |||||||
| 264 | # GOMP_CPU_AFFINITY | ||||||
| 265 | 1 | 207 | ok $env->gomp_cpu_affinity(q{0 3 1-2 4-15:2}), q{gomp_cpu_affinity sets arbitrary (0 3 1-2 4-15:2) value ok, no validation (yet)}; | ||||
| 266 | 1 | 197 | is $env->unset_gomp_cpu_affinity(), q{0 3 1-2 4-15:2}, q{unset_gomp_cpu_affinity returns last known value if OMP_PLACES is set}; | ||||
| 267 | |||||||
| 268 | # GOMP_STACKSIZE | ||||||
| 269 | 1 | 205 | ok $env->gomp_stacksize(1024), q{gomp_stacksize sets arbitrary (1024) value ok, no validation (yet)}; | ||||
| 270 | 1 | 198 | is $env->unset_gomp_stacksize(), 1024, q{unset_gomp_stacksize returns last known value if GOMP_STACKSIZE is set}; | ||||
| 271 | |||||||
| 272 | # GOMP_SPINCOUNT | ||||||
| 273 | 1 | 204 | ok $env->gomp_spincount(q{not sure about this one}), q{gomp_spincount sets arbitrary value ok, no validation (yet)}; | ||||
| 274 | 1 | 199 | is $env->unset_gomp_spincount(), q{not sure about this one}, q{unset_gomp_spincount returns last known value if GOMP_SPINCOUNT is set}; | ||||
| 275 | |||||||
| 276 | # GOMP_RTEMS_THREAD_POOLS | ||||||
| 277 | 1 | 207 | ok $env->gomp_rtems_thread_pools(q{not sure about this one}), q{gomp_rtems_thread_pools sets arbitrary value ok, no validation (yet)}; | ||||
| 278 | 1 | 198 | is $env->unset_gomp_rtems_thread_pools(), q{not sure about this one}, q{unset_gomp_rtems_thread_pools returns last known value if GOMP_RTEMS_THREAD_POOLS is set}; | ||||
| 279 | |||||||
| 280 | 1 | 207 | done_testing; | ||||
| 281 | |||||||
| 282 | 1 | 671 | exit; | ||||