Sorry for the resend, but I found and fixed a couple of warts in this
series.
The test scripts need to dispatch commands in various different
contexts: on the host, in namespaces, and in guests. Currently this
is done by running each context in a tmux pane and simulating typing
into that pane using tmux commands. This has a number of problems:
* It's slow
* Getting the results from programs is tricky and error prone. We
can misparse output if:
* The window isn't large enough
* Commands produce output which looks like a shell prompt
* The shell doesn't have the prompt we expect
* A accidental keypress while the tests are running can mess up the
test run
* We have to issue explicit "echo $?" commands to check if things
succeeded
This series adds a new subsystem to the test scripts for dispatching
commands which accurately preserves output (both stdout and stderr),
and exit codes.
Most of the testsuite is converted to this new system. For now the
distro tests still rely on the old approach, since they have some
complications that require additional handling. That does, alas, mean
we have some ugly transitional code remaining. Oh well, we should be
able to clean that up at some point.
This series is pased on the previous series cleaning up the
performance tests.
Changes since v2:
* Whitespace fixes based on review comments
* Added proper copyright, license and banner information to nsholder
Changes since v1:
* Removed a couple of commented debugging lines in patch 9/11
* Removed a no longer necessary pipe-pane in patch 9/11
David Gibson (11):
test: Correctly match "background" with "wait" commands
test: Context execution helpers
test: Allow a tmux pane to watch commands executed in contexts
test: Integration of old-style pane execution and new context
execution
test: Issue host commands via context for most tests
test: Use new-style contexts for passt pane in the pasta and passt
tests
test: Add nsholder utility
test: Extend context system to run commands in namespace for pasta
tests
test: Use context system for guest commands
test: Use context system for two_guests tests
test: Use new-style command issue for passt_in_ns tests
test/.gitignore | 3 +
test/Makefile | 13 +-
test/lib/context | 125 +++++++++++++++++
test/lib/layout | 61 +++------
test/lib/setup | 274 +++++++++++++++++++-------------------
test/lib/term | 84 ++++++++++++
test/lib/test | 138 ++++++++-----------
test/nsholder.c | 139 +++++++++++++++++++
test/passt.mbuto | 32 ++++-
test/run | 1 +
test/shutdown/passt | 4 +-
test/shutdown/passt_in_ns | 4 +-
test/tcp/passt | 2 +
test/tcp/passt_in_ns | 17 ++-
test/tcp/pasta | 1 -
test/udp/passt | 1 +
test/udp/passt_in_ns | 5 +-
test/udp/pasta | 1 -
18 files changed, 628 insertions(+), 277 deletions(-)
create mode 100644 test/lib/context
create mode 100644 test/nsholder.c
--
2.37.3