Lines Matching +full:self +full:- +full:test
7 # June 1991 as shown in the file COPYING in the top-level directory of this
50 log_level -= sub
113 stdout = stdout.decode("utf-8")
114 stderr = stderr.decode("utf-8")
119 if stderr[-1] == "\n":
120 stderr = stderr[:-1]
129 if len(stderr) > 0 and stderr[-1] == "\n":
130 stderr = stderr[:-1]
139 cmd("rm -f %s" % (f))
169 return tool("bpftool", args, {"json":"-p"}, JSON=JSON, ns=ns,
229 args = "-force " + args
230 return tool("ip", args, {"json":"-j"}, JSON=JSON, ns=ns,
234 return tool("tc", args, {"json":"-p"}, JSON=JSON, ns=ns,
283 def __init__(self, path): argument
284 self.path = path
285 self._dict = self._debugfs_dir_read(path)
287 def __len__(self): argument
288 return len(self._dict.keys())
290 def __getitem__(self, key): argument
292 key = list(self._dict.keys())[key]
293 return self._dict[key]
295 def __setitem__(self, key, value): argument
299 cmd("echo '%s' > %s/%s" % (value, self.path, key))
302 _, out = cmd('cat %s/%s' % (self.path, key))
303 self._dict[key] = out.strip()
305 def _debugfs_dir_read(self, path): argument
348 log("WRITE %s: %r" % (fullpath, val), -e.errno)
352 def __init__(self, port_count=1): argument
356 self.ctrl_write("new_device", "%u %u" % (addr, port_count))
363 self.addr = addr
367 self.wait_for_netdevs(port_count)
372 ifnames = self.get_ifnames()
374 devs.append(self)
375 self.dfs_dir = "/sys/kernel/debug/netdevsim/netdevsim%u/" % addr
377 self.nsims = []
379 self.nsims.append(NetdevSim(self, port_index, ifnames[port_index]))
381 def get_ifnames(self): argument
383 listdir = os.listdir("/sys/bus/netdevsim/devices/netdevsim%u/net/" % self.addr)
389 def wait_for_netdevs(self, port_count): argument
395 ifnames = self.get_ifnames()
404 def dfs_num_bound_progs(self): argument
405 path = os.path.join(self.dfs_dir, "bpf_bound_progs")
409 def dfs_get_bound_progs(self, expected): argument
410 progs = DebugfsDir(os.path.join(self.dfs_dir, "bpf_bound_progs"))
417 def remove(self): argument
418 self.ctrl_write("del_device", "%u" % (self.addr, ))
419 devs.remove(self)
421 def remove_nsim(self, nsim): argument
422 self.nsims.remove(nsim)
423 self.ctrl_write("devices/netdevsim%u/del_port" % (self.addr, ),
431 def __init__(self, nsimdev, port_index, ifname): argument
439 self.nsimdev = nsimdev
440 self.port_index = port_index
441 self.ns = ""
442 self.dfs_dir = "%s/ports/%u/" % (nsimdev.dfs_dir, port_index)
443 self.dfs_refresh()
444 _, [self.dev] = ip("link show dev %s" % ifname)
446 def __getitem__(self, key): argument
447 return self.dev[key]
449 def remove(self): argument
450 self.nsimdev.remove_nsim(self)
452 def dfs_refresh(self): argument
453 self.dfs = DebugfsDir(self.dfs_dir)
454 return self.dfs
456 def dfs_read(self, f): argument
457 path = os.path.join(self.dfs_dir, f)
461 def wait_for_flush(self, bound=0, total=0, n_retry=20): argument
463 nbound = self.nsimdev.dfs_num_bound_progs()
470 def set_ns(self, ns): argument
472 ip("link set dev %s netns %s" % (self.dev["ifname"], name), ns=self.ns)
473 self.ns = ns
475 def set_mtu(self, mtu, fail=True): argument
476 return ip("link set dev %s mtu %d" % (self.dev["ifname"], mtu),
479 def set_xdp(self, bpf, mode, force=False, JSON=True, verbose=False, argument
483 return ip("link set dev %s xdp%s %s" % (self.dev["ifname"], mode, bpf),
487 def unset_xdp(self, mode, force=False, JSON=True, argument
489 return ip("link set dev %s xdp%s off" % (self.dev["ifname"], mode),
493 def ip_link_show(self, xdp): argument
494 _, link = ip("link show dev %s" % (self['ifname']))
504 def tc_add_ingress(self): argument
505 tc("qdisc add dev %s ingress" % (self['ifname']))
507 def tc_del_ingress(self): argument
508 tc("qdisc del dev %s ingress" % (self['ifname']))
510 def tc_flush_filters(self, bound=0, total=0): argument
511 self.tc_del_ingress()
512 self.tc_add_ingress()
513 self.wait_for_flush(bound=bound, total=total)
515 def tc_show_ingress(self, expected=None): argument
520 args = "-s filter show dev %s ingress" % (self['ifname'])
546 def cls_filter_op(self, op, qdisc="ingress", prio=None, handle=None, argument
558 .format(op=op, dev=self['ifname'], qdisc=qdisc, spec=spec,
562 def cls_bpf_add_filter(self, bpf, op="add", prio=None, handle=None, argument
578 return self.cls_filter_op(op=op, prio=prio, handle=handle, cls=cls,
582 def set_ethtool_tc_offloads(self, enable, fail=True): argument
583 args = "hw-tc-offload %s" % ("on" if enable else "off")
584 return ethtool(self, "-K", args, fail=fail)
593 cmd("rm -f %s" % (f))
624 fail(err["error"].find("No such device") == -1,
692 start_test("Test multi-attachment XDP - %s + offload..." %
712 start_test("Test multi-attachment XDP - replace...")
714 fail(ret == 0, "Replaced one of programs without -force")
717 start_test("Test multi-attachment XDP - remove without mode...")
736 start_test("Test multi-attachment XDP - reattach...")
744 start_test("Test multi-attachment XDP - device remove...")
754 parser.add_argument("--log", help="output verbose log to given file")
758 logfile.write("# -*-Org-*-")
764 skip(os.getuid() != 0, "test must be run as root")
783 if out.find("/sys/kernel/debug type debugfs") == -1:
784 cmd("mount -t debugfs none /sys/kernel/debug")
796 if err.find("Error: Failed to find qdisc with specified handle.") == -1:
811 start_test("Test destruction of generic XDP...")
822 start_test("Test TC non-offloaded...")
826 start_test("Test TC non-offloaded isn't getting bound...")
833 start_test("Test TC offloads are off by default...")
843 start_test("Test TC offload by default...")
853 start_test("Test TC cBPF bytcode tries offload by default...")
864 start_test("Test TC cBPF unbound bytecode doesn't offload...")
872 start_test("Test non-0 chain offload...")
880 start_test("Test TC replace...")
893 start_test("Test TC replace bad flags...")
900 "Software TC incorrect load in replace test, iteration %d" %
904 start_test("Test spurious extack from the driver...")
917 start_test("Test TC offloads failure...")
925 start_test("Test TC offloads work...")
930 start_test("Test TC offload basics...")
942 start_test("Test TC offload is device-bound...")
949 start_test("Test disabling TC offloads is rejected while filters installed...")
954 start_test("Test qdisc removal frees things...")
958 start_test("Test disabling TC offloads is OK without filters...")
965 start_test("Test destroying device gets rid of TC filters...")
974 start_test("Test destroying device gets rid of XDP...")
983 start_test("Test XDP prog reporting...")
990 start_test("Test XDP prog replace without force...")
992 fail(ret == 0, "Replaced XDP program without -force")
995 start_test("Test XDP prog replace with force...")
997 fail(ret != 0, "Could not replace XDP program with -force")
1004 "Device parameters reported for non-offloaded program")
1006 start_test("Test XDP prog replace with bad flags...")
1014 start_test("Test MTU restrictions...")
1027 start_test("Test non-offload XDP attaching to HW...")
1032 fail(ret == 0, "attached non-offloaded XDP program to HW")
1033 check_extack_nsim(err, "xdpoffload of non-bound program.", args)
1036 start_test("Test offload XDP attaching to drv...")
1046 start_test("Test XDP load failure...")
1055 start_test("Test XDP offload...")
1063 start_test("Test XDP offload is device bound...")
1073 start_test("Test removing XDP program many times...")
1082 start_test("Test attempt to use a program for a wrong device...")
1104 start_test("Test mixing of TC and XDP...")
1119 start_test("Test binding TC from pinned...")
1125 start_test("Test binding XDP from pinned...")
1134 start_test("Test offload of wrong type fails...")
1138 start_test("Test asking for TC offload of two filters...")
1147 start_test("Test if netdev removal waits for translation...")
1160 time_diff = end - start
1175 start_test("Test loading program with maps...")
1178 start_test("Test bpftool bound info reporting (own ns)...")
1181 start_test("Test bpftool bound info reporting (other ns)...")
1186 start_test("Test bpftool bound info reporting (remote ns)...")
1189 start_test("Test bpftool bound info reporting (back to own ns)...")
1197 start_test("Test bpftool bound info reporting (removed dev)...")
1207 start_test("Test map update (no flags)...")
1223 start_test("Test map update (exists)...")
1233 fail(ret == 0, "updated non-existing key")
1234 fail(err["error"].find("No such file or directory") == -1,
1237 start_test("Test map update (noexist)...")
1244 fail(err["error"].find("File exists") == -1,
1247 start_test("Test map dump...")
1256 start_test("Test map getnext...")
1268 fail(err["error"].find("No such file or directory") == -1,
1271 start_test("Test map delete (htab)...")
1275 start_test("Test map delete (array)...")
1280 fail(err["error"].find("No such file or directory") == -1,
1283 start_test("Test map remove...")
1294 start_test("Test map creation fail path...")
1304 start_test("Test multi-dev ASIC program reuse...")
1323 start_test("Test multi-dev ASIC cross-dev replace...")
1325 fail(ret == 0, "cross-ASIC program allowed")
1328 fail(ret == 0, "cross-ASIC program allowed")
1330 start_test("Test multi-dev ASIC cross-dev install...")
1336 fail(ret == 0, "cross-ASIC program allowed")
1341 fail(ret == 0, "cross-ASIC program allowed")
1344 start_test("Test multi-dev ASIC cross-dev map reuse...")
1362 "error message missing for cross-ASIC map")
1370 "error message missing for cross-ASIC map")
1372 start_test("Test multi-dev ASIC cross-dev destruction...")
1383 start_test("Test multi-dev ASIC cross-dev destruction - move...")
1396 start_test("Test multi-dev ASIC cross-dev destruction - orphaned...")