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: Tanner Love <tannerlove@google.com> Acked-by: Willem de Bruijn <willemb@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
547030c8e6
commit
0558c39604
|
@ -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 {
|
||||||
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[] = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ 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[] = {
|
||||||
{ "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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
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]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
./in_netns.sh ./rxtimestamp $@
|
Loading…
Reference in New Issue