Files
infix/test/case/meta/reproducible.py
T
Tobias Waldekranz 784b391467 test: reproducible: Log software versions
Make sure that we keep a record of the versions and boot source used
by all devices under test when running the full suite - in case we
ever suspect that there is a mismatch between the intended test image
and the actual one.

Since this test now needs to communicate with the devices, make sure
that we run the wait test first.
2024-12-02 12:42:28 +01:00

40 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import infamy
with infamy.Test() as test:
with test.step("$PYTHONHASHSEED is set"):
seed = os.environ.get("PYTHONHASHSEED")
if seed == None:
print("$PYTHONHASHSEED must be set in order to create a reproducible test environment")
test.fail()
else:
print(f"Specify PYTHONHASHSEED={seed} to reproduce this test environment")
with test.step("Discover topology and attach to available DUTs"):
env = infamy.Env(False)
ctrl = env.ptop.get_ctrl()
duts = {}
for ix in env.ptop.get_infixen():
cport, ixport = env.ptop.get_mgmt_link(ctrl, ix)
print(f"Attaching to {ix}:{ixport} via {ctrl}:{cport}")
duts[ix] = env.attach(ix, ixport)
with test.step("Log running software versions"):
for name, tgt in duts.items():
sys = tgt.get_data("/ietf-system:system-state")
sw = sys["system-state"]["software"]
plt = sys["system-state"]["platform"]
print(f"{name}:")
for k,v in plt.items():
print(f" {k:<16s} {v}")
for k in ("compatible", "booted"):
print(f" {k:<16s} {sw[k]}")
test.succeed()