From: Mitani <mi...@ry...> - 2010-07-16 04:19:39
|
Hi, With RHEL5.4/5.5 systems, I noticed that "Containers" test failed but "Containers" is PASS in log results: ---<log results file>------------- ... hangup01 PASS 0 Containers PASS 0 BindMounts PASS 0 ... ---------------- ---<detail in redirected file>------------- ... check_netns_enabled 1 TFAIL : unshare syscall smoke test failed: errno=EINVAL(22): Invalid argument Network namespaces not enabled in kernel. Not running netns tests. ... ---------------- The source which returned with "Invalid argument" is "check_netns_enabled.c": ---<check_netns_enabled.c>------------- main() { /* Checking if the kernel supports unshare with netns capabilities. */ if (syscall(__NR_unshare, CLONE_NEWNET | CLONE_NEWNS) < 0) { tst_resm (TFAIL | TERRNO, "unshare syscall smoke test failed"); } tst_exit(); } ---------------- In RHEL5.4/5.5 systems, unshare() does not support the argument "CLONE_NEWNET". But I feel strange that log results is "PASS" in spite of "TFAIL" exit. "container_test.sh" which calls "check_netns_enabled.c" is as follows: ---<container_test.sh>------------- ... check_netns_enabled if [ $? -eq 0 ]; then echo "Running netns tests." runnetnstest.sh else echo "Network namespaces not enabled in kernel. Not running netns tests." fi ... ---------------- According to above source, "check_netns_enabled.c" is only the judgement whether "runnetnstest.sh" test can be called or not. So, I think that "TFAIL" is not suitable for the test impossibility message. "TCONF" is more suitable for the message than "TFAIL", I think. But, if "TCONF" is used instead of "TFAIL", "tst_exit" returns with 0. And the test shell "runnetnstest.sh" is called against intention. I thought up two ways of solutions. (1) Insert "exit(1)" just after "tst_resm()" of "check_netns_enabled.c" (2) Replace "TFAIL" with "TWARN", instead of "TCONF". But above solutions are both irregular measures, I think. If there are other good measures, please give me advice. In the following, I nominate a temporary patch for an example: Signed-off-by: Tomonori Mitani <mi...@ry...> ===(1)========= --- a/testcases/kernel/containers/netns/check_netns_enabled.c 2010-07-12 02:01:45.000000000 +0900 +++ b/testcases/kernel/containers/netns/check_netns_enabled.c 2010-07-16 11:58:14.000000000 +0900 @@ -43,7 +43,8 @@ { /* Checking if the kernel supports unshare with netns capabilities. */ if (syscall(__NR_unshare, CLONE_NEWNET | CLONE_NEWNS) < 0) { - tst_resm (TFAIL | TERRNO, "unshare syscall smoke test failed"); + tst_resm (TCONF | TERRNO, "unshare syscall smoke test failed"); + exit (1); } tst_exit(); } ============ ===(2)========= --- a/testcases/kernel/containers/netns/check_netns_enabled.c 2010-07-12 02:01:45.000000000 +0900 +++ b/testcases/kernel/containers/netns/check_netns_enabled.c 2010-07-16 11:56:47.000000000 +0900 @@ -43,7 +43,7 @@ { /* Checking if the kernel supports unshare with netns capabilities. */ if (syscall(__NR_unshare, CLONE_NEWNET | CLONE_NEWNS) < 0) { - tst_resm (TFAIL | TERRNO, "unshare syscall smoke test failed"); + tst_resm (TWARN | TERRNO, "unshare syscall smoke test failed"); } tst_exit(); } ============ Regards-- -Tomonori Mitani |