Commit 0558c396 authored by tannerlove's avatar tannerlove Committed by David S. Miller

selftests/net: plug rxtimestamp test into kselftest framework

Run rxtimestamp as part of TEST_PROGS. Analogous to other tests, add
new rxtimestamp.sh wrapper script, so that the test runs isolated
from background traffic in a private network namespace.

Also ignore failures of test case #6 by default. This case verifies
that a receive timestamp is not reported if timestamp reporting is
enabled for a socket, but generation is disabled. Receive timestamp
generation has to be enabled globally, as no associated socket is
known yet. A background process that enables rx timestamp generation
therefore causes a false positive. Ntpd is one example that does.

Add a "--strict" option to cause failure in the event that any test
case fails, including test #6. This is useful for environments that
are known to not have such background processes.

Tested:
make -C tools/testing/selftests TARGETS="net" run_tests
Signed-off-by: default avatarTanner Love <tannerlove@google.com>
Acked-by: default avatarWillem de Bruijn <willemb@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 547030c8
...@@ -17,6 +17,7 @@ TEST_PROGS += route_localnet.sh ...@@ -17,6 +17,7 @@ TEST_PROGS += route_localnet.sh
TEST_PROGS += reuseaddr_ports_exhausted.sh TEST_PROGS += reuseaddr_ports_exhausted.sh
TEST_PROGS += txtimestamp.sh TEST_PROGS += txtimestamp.sh
TEST_PROGS += vrf-xfrm-tests.sh TEST_PROGS += vrf-xfrm-tests.sh
TEST_PROGS += rxtimestamp.sh
TEST_PROGS_EXTENDED := in_netns.sh TEST_PROGS_EXTENDED := in_netns.sh
TEST_GEN_FILES = socket nettest TEST_GEN_FILES = socket nettest
TEST_GEN_FILES += psock_fanout psock_tpacket msg_zerocopy reuseport_addr_any TEST_GEN_FILES += psock_fanout psock_tpacket msg_zerocopy reuseport_addr_any
......
...@@ -44,6 +44,7 @@ struct test_case { ...@@ -44,6 +44,7 @@ struct test_case {
struct options sockopt; struct options sockopt;
struct tstamps expected; struct tstamps expected;
bool enabled; bool enabled;
bool warn_on_fail;
}; };
struct sof_flag { struct sof_flag {
...@@ -89,7 +90,7 @@ static struct test_case test_cases[] = { ...@@ -89,7 +90,7 @@ static struct test_case test_cases[] = {
}, },
{ {
{ so_timestamping: SOF_TIMESTAMPING_SOFTWARE }, { so_timestamping: SOF_TIMESTAMPING_SOFTWARE },
{} warn_on_fail : true
}, },
{ {
{ so_timestamping: SOF_TIMESTAMPING_RX_SOFTWARE { so_timestamping: SOF_TIMESTAMPING_RX_SOFTWARE
...@@ -115,6 +116,7 @@ static struct option long_options[] = { ...@@ -115,6 +116,7 @@ static struct option long_options[] = {
{ "tcp", no_argument, 0, 't' }, { "tcp", no_argument, 0, 't' },
{ "udp", no_argument, 0, 'u' }, { "udp", no_argument, 0, 'u' },
{ "ip", no_argument, 0, 'i' }, { "ip", no_argument, 0, 'i' },
{ "strict", no_argument, 0, 'S' },
{ NULL, 0, NULL, 0 }, { NULL, 0, NULL, 0 },
}; };
...@@ -327,6 +329,7 @@ int main(int argc, char **argv) ...@@ -327,6 +329,7 @@ int main(int argc, char **argv)
{ {
bool all_protocols = true; bool all_protocols = true;
bool all_tests = true; bool all_tests = true;
bool strict = false;
int arg_index = 0; int arg_index = 0;
int failures = 0; int failures = 0;
int s, t; int s, t;
...@@ -363,6 +366,9 @@ int main(int argc, char **argv) ...@@ -363,6 +366,9 @@ int main(int argc, char **argv)
all_protocols = false; all_protocols = false;
socket_types[0].enabled = true; socket_types[0].enabled = true;
break; break;
case 'S':
strict = true;
break;
default: default:
error(1, 0, "Failed to parse parameters."); error(1, 0, "Failed to parse parameters.");
} }
...@@ -379,7 +385,8 @@ int main(int argc, char **argv) ...@@ -379,7 +385,8 @@ int main(int argc, char **argv)
printf("Starting testcase %d...\n", t); printf("Starting testcase %d...\n", t);
if (run_test_case(socket_types[s], test_cases[t])) { if (run_test_case(socket_types[s], test_cases[t])) {
failures++; if (strict || !test_cases[t].warn_on_fail)
failures++;
printf("FAILURE in test case "); printf("FAILURE in test case ");
print_test_case(&test_cases[t]); print_test_case(&test_cases[t]);
} }
......
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
./in_netns.sh ./rxtimestamp $@
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment