From: Hiroki Shirokura Date: Tue, 7 Sep 2021 03:55:01 +0000 (+0000) Subject: topotests: to create pid file of topotest router X-Git-Tag: base_8.1~102^2~2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=e03862c34a31ad716d56cc90cd67446125d614e9;p=matthieu%2Ffrr.git topotests: to create pid file of topotest router Create a pid file for the router created by topotest. By executing nsenter directly against this pid, developers can execute commands directly from outside the unet shell. This allows the developer to use script, tab completion, etc., and improves efficiency. Signed-off-by: Hiroki Shirokura --- diff --git a/doc/developer/topotests.rst b/doc/developer/topotests.rst index 4a8f7bd27d..14da25768f 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 sh 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 sh 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..a76ceaf16b 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(tgen.net.hosts[self.name].pid)) + def __str__(self): gear = super(TopoRouter, self).__str__() gear += " TopoRouter<>"