Merge branch 'bpf-misc-fixes'
Jakub Kicinski says: ==================== This small series allows test_offload.py selftest to run on modern distributions which may create BPF programs for cgroups at boot, like Ubuntu 18.04. We still expect the program list to not be altered by any other agent while the test is running, but no longer depend on there being no BPF programs at all at the start. Fixing the test revealed a small problem with bpftool, which doesn't report the program load time very accurately. Because nanoseconds were not taken into account reported load time would fluctuate by 1 second. First patch of the series takes care of fixing that. ==================== Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
commit
902196a56d
|
@ -90,7 +90,9 @@ static void print_boot_time(__u64 nsecs, char *buf, unsigned int size)
|
|||
}
|
||||
|
||||
wallclock_secs = (real_time_ts.tv_sec - boot_time_ts.tv_sec) +
|
||||
nsecs / 1000000000;
|
||||
(real_time_ts.tv_nsec - boot_time_ts.tv_nsec + nsecs) /
|
||||
1000000000;
|
||||
|
||||
|
||||
if (!localtime_r(&wallclock_secs, &load_tm)) {
|
||||
snprintf(buf, size, "%llu", nsecs / 1000000000);
|
||||
|
|
|
@ -163,6 +163,10 @@ def bpftool(args, JSON=True, ns="", fail=True):
|
|||
|
||||
def bpftool_prog_list(expected=None, ns=""):
|
||||
_, progs = bpftool("prog show", JSON=True, ns=ns, fail=True)
|
||||
# Remove the base progs
|
||||
for p in base_progs:
|
||||
if p in progs:
|
||||
progs.remove(p)
|
||||
if expected is not None:
|
||||
if len(progs) != expected:
|
||||
fail(True, "%d BPF programs loaded, expected %d" %
|
||||
|
@ -171,6 +175,10 @@ def bpftool_prog_list(expected=None, ns=""):
|
|||
|
||||
def bpftool_map_list(expected=None, ns=""):
|
||||
_, maps = bpftool("map show", JSON=True, ns=ns, fail=True)
|
||||
# Remove the base maps
|
||||
for m in base_maps:
|
||||
if m in maps:
|
||||
maps.remove(m)
|
||||
if expected is not None:
|
||||
if len(maps) != expected:
|
||||
fail(True, "%d BPF maps loaded, expected %d" %
|
||||
|
@ -585,8 +593,8 @@ skip(os.getuid() != 0, "test must be run as root")
|
|||
# Check tools
|
||||
ret, progs = bpftool("prog", fail=False)
|
||||
skip(ret != 0, "bpftool not installed")
|
||||
# Check no BPF programs are loaded
|
||||
skip(len(progs) != 0, "BPF programs already loaded on the system")
|
||||
base_progs = progs
|
||||
_, base_maps = bpftool("map")
|
||||
|
||||
# Check netdevsim
|
||||
ret, out = cmd("modprobe netdevsim", fail=False)
|
||||
|
|
Loading…
Reference in New Issue