From 559d7cdec8fc89dffca1dc3c9392ad44eb0a1d11 Mon Sep 17 00:00:00 2001 From: Alina Quereilhac Date: Thu, 27 Nov 2014 00:27:34 +0100 Subject: [PATCH] Adding dummy ns3 fd-net-device test --- src/nepi/resources/ns3/ns3fdnetdevice.py | 22 ++++++++++++++++ src/nepi/resources/ns3/ns3pipechanel.py | 29 ++++++++-------------- test/resources/linux/ns3/ns3fdnetdevice.py | 3 --- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/nepi/resources/ns3/ns3fdnetdevice.py b/src/nepi/resources/ns3/ns3fdnetdevice.py index 3e42d23c..e4fdbd76 100644 --- a/src/nepi/resources/ns3/ns3fdnetdevice.py +++ b/src/nepi/resources/ns3/ns3fdnetdevice.py @@ -39,4 +39,26 @@ class NS3BaseFdNetDevice(NS3BaseNetDevice): if node and node.uuid not in self.connected: self.simulation.invoke(node.uuid, "AddDevice", self.uuid) self._connected.add(node.uuid) + + def _instantiate_object(self): + """ just validate that the simulator is in real time + mode, otherwise it is not going to work + """ + + mode = self.simulation.get("simulatorImplementationType") + if mode != "ns3::RealtimeSimulatorImpl": + msg = "The simulation must run in real time!!" + self.error(msg) + raise RuntimeError, msg + super(NS3BaseFdNetDevice, self)._instantiate_object() + + def send_fd(self, fd): + import passfd + import socket + + address = self.simulation.invoke(self.uuid, "recvFD") + sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) + sock.connect(address) + passfd.sendfd(sock, fd, '0') + diff --git a/src/nepi/resources/ns3/ns3pipechanel.py b/src/nepi/resources/ns3/ns3pipechanel.py index c74b24d6..b9da5204 100644 --- a/src/nepi/resources/ns3/ns3pipechanel.py +++ b/src/nepi/resources/ns3/ns3pipechanel.py @@ -58,14 +58,9 @@ class NS3BasePipeChannel(NS3Base): def _instantiate_object(self): """ The pipe channel does not really exists as an ns-3 object. - Do nothing, just validate that the simulator is in real time - mode, otherwise it is not going to work. + Do nothing. """ - mode = self.simulator.get("simulatorImplementationType") - if mode != "ns3::RealtimeSimulatorImpl": - msg = "The simulation must run in real time!!" - self.error(msg) - raise RuntimeError, msg + pass def _connect_object(self): dev1 = self.devices[0] @@ -73,17 +68,15 @@ class NS3BasePipeChannel(NS3Base): if dev1.uuid not in self.connected and dev2.uuid not in self.connected: (s0, s1) = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM, 0) - self._send_fd(dev1, s0) - self._send_fd(dev2, s1) + + dev1.send_fd(s0) - def _send_fd(self, dev, fd): - import passfd - - address = self.simulation.invoke(dev.uuid, "recvFD") - sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) - sock.connect(address) - passfd.sendfd(sock, fd, '0') + self._connected.add(dev1.uuid) + dev1._connected.add(self.uuid) + + dev2.send_fd(s1) + + self._connected.add(dev2.uuid) + dev2._connected.add(self.uuid) - self._connected.add(dev.uuid) - dev._connected.add(self.uuid) diff --git a/test/resources/linux/ns3/ns3fdnetdevice.py b/test/resources/linux/ns3/ns3fdnetdevice.py index 326ac458..b4bbc92c 100755 --- a/test/resources/linux/ns3/ns3fdnetdevice.py +++ b/test/resources/linux/ns3/ns3fdnetdevice.py @@ -51,9 +51,6 @@ def add_fd_device(ec, node, ip, prefix): ec.set(dev, "prefix", prefix) ec.register_connection(node, dev) - #queue = ec.register_resource("ns3::DropTailQueue") - #ec.register_connection(dev, queue) - return dev class LinuxNS3FdNetDeviceTest(unittest.TestCase): -- 2.43.0