chan.set_attribute_value("Delay", "0ns") iface1.connector("chan").connect(chan.connector("dev2")) iface2.connector("chan").connect(chan.connector("dev2")) app = ns3_desc.create("ns3::V4Ping") app.set_attribute_value("Remote", "10.0.0.2") app.set_attribute_value("Verbose", True) app.set_attribute_value("StartTime", "0s") app.set_attribute_value("StopTime", "20s") app.connector("node").connect(node1.connector("apps")) xml = exp_desc.to_xml() controller = ExperimentController(xml, root_dir) controller.start() time.sleep(5) controller.set(chan.guid, "Delay", "10s") time.sleep(5) controller.set(chan.guid, "Delay", "0s") while not controller.is_finished(app.guid): time.sleep(0.5) controller.stop() controller.shutdown()
class ExperimentControllerServer(BaseServer): def __init__(self, root_dir, log_level, experiment_xml, environment_setup, clean_root): super(ExperimentControllerServer, self).__init__(root_dir, log_level, environment_setup = environment_setup, clean_root = clean_root) self._experiment_xml = experiment_xml self._experiment = None def post_daemonize(self): from nepi.core.execute import ExperimentController self._experiment = ExperimentController(self._experiment_xml, root_dir = self._root_dir) @Marshalling.handles(GUIDS) @Marshalling.args() @Marshalling.retval( Marshalling.pickled_data ) def guids(self): return self._experiment.guids @Marshalling.handles(STARTED_TIME) @Marshalling.args() @Marshalling.retval( Marshalling.pickled_data ) def started_time(self): return self._experiment.started_time @Marshalling.handles(STOPPED_TIME) @Marshalling.args() @Marshalling.retval( Marshalling.pickled_data ) def stopped_time(self): return self._experiment.stopped_time @Marshalling.handles(XML) @Marshalling.args() @Marshalling.retval() def experiment_design_xml(self): return self._experiment.experiment_design_xml @Marshalling.handles(EXEC_XML) @Marshalling.args() @Marshalling.retval() def experiment_execute_xml(self): return self._experiment.experiment_execute_xml @Marshalling.handles(TRACE) @Marshalling.args(int, str, Marshalling.base64_data) @Marshalling.retval() def trace(self, guid, trace_id, attribute): return str(self._experiment.trace(guid, trace_id, attribute)) @Marshalling.handles(TRACES_INFO) @Marshalling.args() @Marshalling.retval( Marshalling.pickled_data ) def traces_info(self): return self._experiment.traces_info() @Marshalling.handles(FINISHED) @Marshalling.args(int) @Marshalling.retval(Marshalling.bool) def is_finished(self, guid): return self._experiment.is_finished(guid) @Marshalling.handles(STATUS) @Marshalling.args(int) @Marshalling.retval(int) def status(self, guid): return self._experiment.status(guid) @Marshalling.handles(GET) @Marshalling.args(int, Marshalling.base64_data, str) @Marshalling.retval( Marshalling.pickled_data ) def get(self, guid, name, time): return self._experiment.get(guid, name, time) @Marshalling.handles(SET) @Marshalling.args(int, Marshalling.base64_data, Marshalling.pickled_data, str) @Marshalling.retvoid def set(self, guid, name, value, time): self._experiment.set(guid, name, value, time) @Marshalling.handles(START) @Marshalling.args() @Marshalling.retvoid def start(self): self._experiment.start() @Marshalling.handles(STOP) @Marshalling.args() @Marshalling.retvoid def stop(self): self._experiment.stop() @Marshalling.handles(RECOVER) @Marshalling.args() @Marshalling.retvoid def recover(self): self._experiment.recover() @Marshalling.handles(SHUTDOWN) @Marshalling.args() @Marshalling.retvoid def shutdown(self): self._experiment.shutdown() @Marshalling.handles(GET_TESTBED_ID) @Marshalling.args(int) @Marshalling.retval() def get_testbed_id(self, guid): return self._experiment.get_testbed_id(guid) @Marshalling.handles(GET_FACTORY_ID) @Marshalling.args(int) @Marshalling.retval() def get_factory_id(self, guid): return self._experiment.get_factory_id(guid) @Marshalling.handles(GET_TESTBED_VERSION) @Marshalling.args(int) @Marshalling.retval() def get_testbed_version(self, guid): return self._experiment.get_testbed_version(guid)