Adding dummy ns3 fd-net-device test
authorAlina Quereilhac <alina.quereilhac@inria.fr>
Wed, 26 Nov 2014 23:27:34 +0000 (00:27 +0100)
committerAlina Quereilhac <alina.quereilhac@inria.fr>
Wed, 26 Nov 2014 23:27:34 +0000 (00:27 +0100)
src/nepi/resources/ns3/ns3fdnetdevice.py
src/nepi/resources/ns3/ns3pipechanel.py
test/resources/linux/ns3/ns3fdnetdevice.py

index 3e42d23..e4fdbd7 100644 (file)
@@ -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')
+
index c74b24d..b9da520 100644 (file)
@@ -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)
 
index 326ac45..b4bbc92 100755 (executable)
@@ -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):