• Andrii Nakryiko's avatar
    selftests/bpf: handle missing records in comparison mode better in veristat · a5710848
    Andrii Nakryiko authored
    When comparing two datasets, if either side is missing corresponding
    record with the same file and prog name, currently veristat emits
    misleading zeros/failures, and even tried to calculate a difference,
    even though there is no data to compare against.
    
    This patch improves internal logic of handling such situations. Now
    we'll emit "N/A" in places where data is missing and comparison is
    non-sensical.
    
    As an example, in an artificially truncated and mismatched Cilium
    results, the output looks like below:
    
      $ ./veristat -e file,prog,verdict,insns -C ~/base.csv ~/comp.csv
      File                Program                         Verdict (A)  Verdict (B)  Verdict (DIFF)  Insns (A)  Insns (B)  Insns   (DIFF)
      ------------------  ------------------------------  -----------  -----------  --------------  ---------  ---------  --------------
      bpf_alignchecker.o  __send_drop_notify              success      N/A          N/A                    53        N/A             N/A
      bpf_alignchecker.o  tail_icmp6_handle_ns            failure      failure      MATCH                  33         33     +0 (+0.00%)
      bpf_alignchecker.o  tail_icmp6_send_echo_reply      N/A          failure      N/A                   N/A         74             N/A
      bpf_host.o          __send_drop_notify              success      N/A          N/A                    53        N/A             N/A
      bpf_host.o          cil_from_host                   success      N/A          N/A                   762        N/A             N/A
      bpf_xdp.o           __send_drop_notify              success      success      MATCH                 151        151     +0 (+0.00%)
      bpf_xdp.o           cil_xdp_entry                   success      success      MATCH                 423        423     +0 (+0.00%)
      bpf_xdp.o           tail_handle_nat_fwd_ipv4        success      success      MATCH               21547      20920   -627 (-2.91%)
      bpf_xdp.o           tail_handle_nat_fwd_ipv6        success      success      MATCH               16974      17039    +65 (+0.38%)
      bpf_xdp.o           tail_lb_ipv4                    success      success      MATCH               71736      73430  +1694 (+2.36%)
      bpf_xdp.o           tail_lb_ipv6                    N/A          success      N/A                   N/A     151895             N/A
      bpf_xdp.o           tail_nodeport_ipv4_dsr          N/A          success      N/A                   N/A       1162             N/A
      bpf_xdp.o           tail_nodeport_ipv6_dsr          N/A          success      N/A                   N/A       1206             N/A
      bpf_xdp.o           tail_nodeport_nat_egress_ipv4   N/A          success      N/A                   N/A      15619             N/A
      bpf_xdp.o           tail_nodeport_nat_ingress_ipv4  success      success      MATCH                7658       7713    +55 (+0.72%)
      bpf_xdp.o           tail_nodeport_nat_ingress_ipv6  success      success      MATCH                6405       6397     -8 (-0.12%)
      bpf_xdp.o           tail_nodeport_nat_ipv6_egress   failure      failure      MATCH                 752        752     +0 (+0.00%)
      bpf_xdp.o           tail_rev_nodeport_lb4           success      success      MATCH                7126       6934   -192 (-2.69%)
      bpf_xdp.o           tail_rev_nodeport_lb6           success      success      MATCH               17954      17905    -49 (-0.27%)
      ------------------  ------------------------------  -----------  -----------  --------------  ---------  ---------  --------------
    
    Internally veristat now separates joining two datasets and remembering the
    join, and actually emitting a comparison view. This will come handy when we add
    support for filtering and custom ordering in comparison mode.
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/r/20221103055304.2904589-9-andrii@kernel.orgSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    a5710848
veristat.c 41 KB