tc-testing: Correct compound statements for namespace execution
authorLucas Bates <lucasb@mojatatu.com>
Mon, 26 Mar 2018 14:46:14 +0000 (10:46 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 27 Mar 2018 14:52:07 +0000 (10:52 -0400)
commitcd464197f2378499db134d6c44af3b4e3c0c14b5
treeee5e050e83da80c020d399523d7b8f8c1b2998e1
parente1a22d13eb1f302afd692583777e27828d375a39
tc-testing: Correct compound statements for namespace execution

If tdc is executing test cases inside a namespace, only the
first command in a compound statement will be executed inside
the namespace by tdc. As a result, the subsequent commands
are not executed inside the namespace and the test will fail.

Example:

for i in {x..y}; do args="foo"; done && tc actions add $args

The namespace execution feature will prepend 'ip netns exec'
to the command:

ip netns exec tcut for i in {x..y}; do args="foo"; done && \
  tc actions add $args

So the actual tc command is not parsed by the shell as being
part of the namespace execution.

Enclosing these compound statements inside a bash invocation
with proper escape characters resolves the problem by creating
a subshell inside the namespace.

Signed-off-by: Lucas Bates <lucasb@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/tc-testing/tc-tests/actions/gact.json