• Martin KaFai Lau's avatar
    bpf: selftests: Restore netns after each test · 811d7e37
    Martin KaFai Lau authored
    It is common for networking tests creating its netns and making its own
    setting under this new netns (e.g. changing tcp sysctl).  If the test
    forgot to restore to the original netns, it would affect the
    result of other tests.
    
    This patch saves the original netns at the beginning and then restores it
    after every test.  Since the restore "setns()" is not expensive, it does it
    on all tests without tracking if a test has created a new netns or not.
    
    The new restore_netns() could also be done in test__end_subtest() such
    that each subtest will get an automatic netns reset.  However,
    the individual test would lose flexibility to have total control
    on netns for its own subtests.  In some cases, forcing a test to do
    unnecessary netns re-configure for each subtest is time consuming.
    e.g. In my vm, forcing netns re-configure on each subtest in sk_assign.c
    increased the runtime from 1s to 8s.  On top of that,  test_progs.c
    is also doing per-test (instead of per-subtest) cleanup for cgroup.
    Thus, this patch also does per-test restore_netns().  The only existing
    per-subtest cleanup is reset_affinity() and no test is depending on this.
    Thus, it is removed from test__end_subtest() to give a consistent
    expectation to the individual tests.  test_progs.c only ensures
    any affinity/netns/cgroup change made by an earlier test does not
    affect the following tests.
    Signed-off-by: default avatarMartin KaFai Lau <kafai@fb.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
    Link: https://lore.kernel.org/bpf/20200702004858.2103728-1-kafai@fb.com
    811d7e37
test_progs.c 15.5 KB