diff --git a/doc/developer/topotests.rst b/doc/developer/topotests.rst index 4a8f7bd27d..fa6a1ba660 100644 --- a/doc/developer/topotests.rst +++ b/doc/developer/topotests.rst @@ -953,6 +953,32 @@ configuration files (per-daemon) using the following commands: end r1# +You can also login to the node specified by nsenter using bash, etc. +A pid file for each node will be created in the relevant test dir. +You can run scripts inside the node, or use vtysh's or feature. + +.. code:: shell + + [unet shell] + # cd tests/topotests/srv6_locator + # ./test_srv6_locator.py --topology-only + unet> r1 show segment-routing srv6 locator + Locator: + Name ID Prefix Status + -------------------- ------- ------------------------ ------- + loc1 1 2001:db8:1:1::/64 Up + loc2 2 2001:db8:2:2::/64 Up + + [Another shell] + # nsenter -a -t $(cat /tmp/topotests/srv6_locator.test_srv6_locator/r1.pid) bash --norc + # vtysh + r1# r1 show segment-routing srv6 locator + Locator: + Name ID Prefix Status + -------------------- ------- ------------------------ ------- + loc1 1 2001:db8:1:1::/64 Up + loc2 2 2001:db8:2:2::/64 Up + Writing Tests """"""""""""" diff --git a/tests/topotests/lib/topogen.py b/tests/topotests/lib/topogen.py index 325f65dd6f..33e1388639 100644 --- a/tests/topotests/lib/topogen.py +++ b/tests/topotests/lib/topogen.py @@ -771,6 +771,10 @@ class TopoRouter(TopoGear): # Mount gear log directory on a common path self.net.bind_mount(self.gearlogdir, "/tmp/gearlogdir") + # Ensure pid file + with open(os.path.join(self.logdir, self.name + ".pid"), "w") as f: + f.write(str(self.net.pid) + "\n") + def __str__(self): gear = super(TopoRouter, self).__str__() gear += " TopoRouter<>"