Skip to content

Commit 6795a41

Browse files
authored
Arm backend: Seed tests before collection (#20183)
Seed the Arm test RNG during pytest configuration so module-level random inputs are deterministic before test collection imports model test modules. Keep the per-test seeding fixture for reproducible test execution. This will make tests behave less random and hopefully fix some flakeynes in testing/CI. For example test_dl3_arm.py failes about 5% of the time before this fix due to it getting non seeded random numbers. cc @digantdesai @freddan80 @per @oscarandersson8218 @mansnils @Sebastian-Larsson @robell @rascani Signed-off-by: Zingo Andersen <Zingo.Andersen@arm.com>
1 parent 6911e9f commit 6795a41

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

backends/arm/test/conftest.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ def pytest_configure(config):
2626
pytest._test_options["llama_inputs"] = config.option.llama_inputs # type: ignore[attr-defined]
2727

2828
logging.basicConfig(stream=sys.stdout)
29+
_set_random_seed()
2930

3031

3132
def pytest_collection_modifyitems(config, items):
@@ -78,24 +79,28 @@ def set_random_seed():
7879
ARM_TEST_SEED=3478246 pytest --config-file=/dev/null --verbose -s --color=yes backends/arm/test/ops/test_avg_pool.py -k <TESTCASE>
7980
8081
"""
82+
_set_random_seed()
83+
84+
85+
def _set_random_seed():
8186
import torch
8287

8388
seed_env = os.environ.get("ARM_TEST_SEED", "0")
8489
if seed_env == "RANDOM":
8590
random.seed() # reset seed, in case any other test has fiddled with it
8691
seed = random.randint(0, 2**32 - 1) # nosec B311 - non-crypto seed for tests
8792
torch.manual_seed(seed)
93+
print(f" ARM_TEST_SEED=RANDOM using:{seed} ", end=" ")
8894
elif str.isdigit(seed_env):
8995
seed = int(seed_env)
9096
random.seed(seed)
9197
torch.manual_seed(seed)
98+
print(f" ARM_TEST_SEED={seed} ", end=" ")
9299
else:
93100
raise TypeError(
94101
"ARM_TEST_SEED env variable must be integers or the string RANDOM"
95102
)
96103

97-
print(f" ARM_TEST_SEED={seed} ", end=" ")
98-
99104

100105
# ==== End of Pytest fixtures =====
101106

0 commit comments

Comments
 (0)