> -----Original Message----- > From: Garrett Cooper [mailto:[email protected]] > Sent: Saturday, July 17, 2010 7:51 AM > To: Mitani > Cc: [email protected] > Subject: Re: [LTP] ”Containers” test was "TFAIL" but "PASS" > is in log results > > On Fri, Jul 16, 2010 at 3:50 PM, Garrett Cooper <[email protected]> > wrote: > > On Thu, Jul 15, 2010 at 9:19 PM, Mitani <[email protected]> wrote: > >> 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 <[email protected]> > >> > >> ===(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(); > >> } > >> ============ > > > > Uh, that would introduce a more serious problem because the netns > > tests are keyed on whether or not that script passes or fails. > > s/script/app/ > > > If you can provide a more stable means of detecting whether or not > > CLONE_* is available with netns, and integrate that into the tests, > > that would be a better idea. > > Thanks, > -Garrett
Sorry for my late answer. I considered how to judge detecting whether or not CLONE_* is available. However, I hit only about errno judgment. Signed-off-by: Tomonori Mitani <[email protected]> ============ --- a/testcases/kernel/containers/netns/check_netns_enabled.c 2010-07-30 02:23:32.000000000 +0900 +++ b/testcases/kernel/containers/netns/check_netns_enabled.c 2010-08-02 10:38:31.000000000 +0900 @@ -42,8 +42,12 @@ 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"); + if (syscall(__NR_unshare, CLONE_NEWNET | CLONE_NEWNS) < 0) { + if (errno == EINVAL) { + tst_resm (TWARN | TERRNO, "unshare syscall not support CLONE_NEWNET or CLONE_NEWNS"); + } else { + tst_resm (TFAIL | TERRNO, "unshare syscall smoke test failed"); + } } tst_exit(); } ============ Thanks-- -Tomonori Mitani
check_netns_enabled.patch
Description: Binary data
------------------------------------------------------------------------------ The Palm PDK Hot Apps Program offers developers who use the Plug-In Development Kit to bring their C/C++ apps to Palm for a share of $1 Million in cash or HP Products. Visit us here for more details: http://p.sf.net/sfu/dev2dev-palm
_______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
