• Yonghong Song's avatar
    selftests/bpf: Fix flaky selftest lwt_redirect/lwt_reroute · e7f31873
    Yonghong Song authored
    Recently, when running './test_progs -j', I occasionally hit the
    following errors:
    
      test_lwt_redirect:PASS:pthread_create 0 nsec
      test_lwt_redirect_run:FAIL:netns_create unexpected error: 256 (errno 0)
      #142/2   lwt_redirect/lwt_redirect_normal_nomac:FAIL
      #142     lwt_redirect:FAIL
      test_lwt_reroute:PASS:pthread_create 0 nsec
      test_lwt_reroute_run:FAIL:netns_create unexpected error: 256 (errno 0)
      test_lwt_reroute:PASS:pthread_join 0 nsec
      #143/2   lwt_reroute/lwt_reroute_qdisc_dropped:FAIL
      #143     lwt_reroute:FAIL
    
    The netns_create() definition looks like below:
    
      #define NETNS "ns_lwt"
      static inline int netns_create(void)
      {
            return system("ip netns add " NETNS);
      }
    
    One possibility is that both lwt_redirect and lwt_reroute create
    netns with the same name "ns_lwt" which may cause conflict. I tried
    the following example:
      $ sudo ip netns add abc
      $ echo $?
      0
      $ sudo ip netns add abc
      Cannot create namespace file "/var/run/netns/abc": File exists
      $ echo $?
      1
      $
    
    The return code for above netns_create() is 256. The internet search
    suggests that the return value for 'ip netns add ns_lwt' is 1, which
    matches the above 'sudo ip netns add abc' example.
    
    This patch tried to use different netns names for two tests to avoid
    'ip netns add <name>' failure.
    
    I ran './test_progs -j' 10 times and all succeeded with
    lwt_redirect/lwt_reroute tests.
    Signed-off-by: default avatarYonghong Song <yonghong.song@linux.dev>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Tested-by: default avatarEduard Zingerman <eddyz87@gmail.com>
    Link: https://lore.kernel.org/bpf/20240205052914.1742687-1-yonghong.song@linux.dev
    e7f31873
lwt_reroute.c 6.98 KB