Skip to content

scripts: keep concurrent egress script tests from deleting each other's probe files #1007

Closed

Description

l3-l4-egress-protocols.sh.in, l3-l4-egress-port-ranges.sh.in and ipv6-egress-policy.sh.in in scripts/nvx_tools/microvm_test_scripts/ write each probe's result to a fixed path, /tmp/nvx-egress-<probe>, and clear those files with rm -f /tmp/nvx-egress-* before probing. In a guest, /tmp is private. But scripts/test_microvm_tests.py also runs each rendered script on the host, through the host's POSIX shell (_posix_shell()), for example in test_l3_l4_egress_protocol_script_reports_each_probe. Two runs of these tests at once on one host share /tmp, so one deletes or overwrites the other's probe files.

Running several validate-nvx blocks at once on one host made these tests fail with 70 != 0 and cat: /tmp/nvx-egress-tcp-inside: No such file or directory; each passed when run alone. We saw it on a Linux host and on a Windows host (Git for Windows' sh). Any host that runs these tests more than once at a time is affected.

Let the scripts take their scratch directory from the environment, defaulting to /tmp in the guest, and have the host-side tests give each run its own temporary directory.

Found while validating the stacked pull requests #955 to #992 against dev; it reproduces at dev itself. Related to #833.

Metadata

Metadata

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions