Skip to content

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

Open

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions