ns3 testbed receives a "StopTime" parameter to force the simulator to stop at a certa...
authorAlina Quereilhac <alina.quereilhac@inria.fr>
Mon, 23 May 2011 11:58:52 +0000 (13:58 +0200)
committerAlina Quereilhac <alina.quereilhac@inria.fr>
Mon, 23 May 2011 11:58:52 +0000 (13:58 +0200)
examples/wimax_ns3.py
src/nepi/testbeds/ns3/attributes_metadata_v3_9_RC3.py
src/nepi/testbeds/ns3/execute.py
src/nepi/testbeds/ns3/factories_metadata_v3_9_RC3.py

index ddd8b76..7ede58a 100644 (file)
@@ -14,7 +14,6 @@ import time
 class Roads09Example(object):
     def __init__(self):
         self.root_dir = tempfile.mkdtemp()
-        print self.root_dir
 
     def add_ns3_node(self, ns3_desc):
         node = ns3_desc.create("ns3::Node")
@@ -84,6 +83,7 @@ class Roads09Example(object):
         ns3_provider = FactoriesProvider(testbed_id, testbed_version)
         ns3_desc = exp_desc.add_testbed_description(ns3_provider)
         ns3_desc.set_attribute_value("homeDirectory", self.root_dir)
+        ns3_desc.set_attribute_value("StopTime", "8.1s")
 
         node1 = self.add_ns3_node(ns3_desc)
         node2 = self.add_ns3_node(ns3_desc)
@@ -108,7 +108,7 @@ class Roads09Example(object):
 
         udp_server = ns3_desc.create("ns3::UdpServer")
         udp_server.set_attribute_value("Port", 100)
-        udp_server.set_attribute_value("StartTime", "1s")
+        udp_server.set_attribute_value("StartTime", "6s")
         udp_server.set_attribute_value("StopTime", "8s")
         udp_server.connector("node").connect(node1.connector("apps"))
 
@@ -118,7 +118,7 @@ class Roads09Example(object):
         udp_client.set_attribute_value("MaxPackets", 1200)
         udp_client.set_attribute_value("Interval", "0.5s")
         udp_client.set_attribute_value("PacketSize", 1024)
-        udp_client.set_attribute_value("StartTime", "1s")
+        udp_client.set_attribute_value("StartTime", "6s")
         udp_client.set_attribute_value("StopTime", "8s")
         udp_client.connector("node").connect(node2.connector("apps"))
 
@@ -132,7 +132,8 @@ class Roads09Example(object):
         controller.shutdown()
 
     def clean(self):
-        shutil.rmtree(self.root_dir)
+        #shutil.rmtree(self.root_dir)
+        pass
 
 if __name__ == '__main__':
     example = Roads09Example()
index 9a09f4f..719fe10 100644 (file)
@@ -8,14 +8,14 @@ from nepi.core.attributes import Attribute
 from nepi.util import validation
 
 testbed_attributes = dict({
-     "simu_impl_type": dict({
+    "simu_impl_type": dict({
             "name": "SimulatorImplementationType",
             "help": "The object class to use as the simulator implementation",
             "type": Attribute.STRING,
             "flags": Attribute.DesignOnly,
             "validation_function": validation.is_string
         }),
-      "checksum": dict({
+    "checksum": dict({
             "name": "ChecksumEnabled",
             "help": "A global switch to enable all checksums for all protocols",
             "type": Attribute.BOOL,
@@ -23,6 +23,13 @@ testbed_attributes = dict({
             "flags": Attribute.DesignOnly,
             "validation_function": validation.is_bool
         }),
+    "simu_stop": dict({
+        "name": "StopTime",
+        "validation_function": validation.is_time,
+        "value": None,
+        "type": Attribute.STRING,
+        "help": "Stop time for the simulation"
+    }),
 })
 
 attributes = dict({
index 47eba7d..8b1d6b3 100644 (file)
@@ -187,6 +187,7 @@ class TestbedController(testbed_impl.TestbedController):
         simu_impl_type = self._attributes.get_attribute_value(
                 "SimulatorImplementationType")
         checksum = self._attributes.get_attribute_value("ChecksumEnabled")
+        stop_time = self._attributes.get_attribute_value("StopTime")
 
         bindings = os.environ["NEPI_NS3BINDINGS"] \
                 if "NEPI_NS3BINDINGS" in os.environ else None
@@ -221,6 +222,9 @@ class TestbedController(testbed_impl.TestbedController):
         if checksum:
             value = mod.BooleanValue(checksum)
             mod.GlobalValue.Bind ("ChecksumEnabled", value)
+        if stop_time:
+            value = mod.Time(stop_time)
+            mod.Simulator.Stop (value)
         return mod
 
     def _get_construct_parameters(self, guid):
index 250bac6..fee4bf2 100644 (file)
@@ -147,7 +147,6 @@ def wimaxascii_trace(testbed_instance, guid, trace_id):
     testbed_instance.follow_trace(guid, trace_id, filename)
     filepath = testbed_instance.trace_filename(guid, trace_id)
     helper = testbed_instance.ns3.WimaxHelper()
-    asciiHelper = testbed_instance.ns3.AsciiTraceHelper()
     stream = asciiHelper.CreateFileStream (filepath)
     helper.EnableAscii(stream, element)
 
@@ -372,7 +371,7 @@ def status_application(testbed_instance, guid):
         start_value = parameters["StartTime"]
         start_time = testbed_instance.ns3.Time(start_value)
         if now.Compare(start_time) < 0:
-            return STATUS_NOT_RUNNING
+            return STATUS_NOT_STARTED
     if "StopTime" in parameters and parameters["StopTime"]:
         stop_value = parameters["StopTime"]
         stop_time = testbed_instance.ns3.Time(stop_value)