From: Alina Quereilhac Date: Mon, 23 May 2011 11:58:52 +0000 (+0200) Subject: ns3 testbed receives a "StopTime" parameter to force the simulator to stop at a certa... X-Git-Tag: nepi_v2~12 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=a45a696cb3fe1d9b624c62f8bf537278353ff084;p=nepi.git ns3 testbed receives a "StopTime" parameter to force the simulator to stop at a certain time. --- diff --git a/examples/wimax_ns3.py b/examples/wimax_ns3.py index ddd8b763..7ede58ab 100644 --- a/examples/wimax_ns3.py +++ b/examples/wimax_ns3.py @@ -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() diff --git a/src/nepi/testbeds/ns3/attributes_metadata_v3_9_RC3.py b/src/nepi/testbeds/ns3/attributes_metadata_v3_9_RC3.py index 9a09f4f9..719fe10c 100644 --- a/src/nepi/testbeds/ns3/attributes_metadata_v3_9_RC3.py +++ b/src/nepi/testbeds/ns3/attributes_metadata_v3_9_RC3.py @@ -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({ diff --git a/src/nepi/testbeds/ns3/execute.py b/src/nepi/testbeds/ns3/execute.py index 47eba7d5..8b1d6b3c 100644 --- a/src/nepi/testbeds/ns3/execute.py +++ b/src/nepi/testbeds/ns3/execute.py @@ -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): diff --git a/src/nepi/testbeds/ns3/factories_metadata_v3_9_RC3.py b/src/nepi/testbeds/ns3/factories_metadata_v3_9_RC3.py index 250bac63..fee4bf22 100644 --- a/src/nepi/testbeds/ns3/factories_metadata_v3_9_RC3.py +++ b/src/nepi/testbeds/ns3/factories_metadata_v3_9_RC3.py @@ -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)