def find_internal_events(self, replay_dag, wait_time_seconds): ''' Replay the replay_dag, then wait for wait_time_seconds and collect internal events that occur. Return the list of internal events. ''' replayer = Replayer(self.simulation_cfg, replay_dag) log.debug("Replaying prefix") simulation = replayer.simulate() # Directly after the last input has been injected, flush the internal # event buffers in case there were unaccounted internal events # Note that there isn't a race condition between flush()'ing and # incoming internal events, since sts is single-threaded # TODO(cs): flush() is not longer needed! simulation.god_scheduler.flush() simulation.controller_sync_callback.flush() # Now set all internal event buffers (GodScheduler for # ControlMessageReceives and ReplaySyncCallback for state changes) # to "pass through + record" simulation.set_pass_through() # Note that this is the monkey patched version of time.sleep log.debug("peek()'ing for %f seconds" % wait_time_seconds) time.sleep(wait_time_seconds) # Now turn off those pass-through and grab the inferred events newly_inferred_events = simulation.unset_pass_through() simulation.clean_up() return newly_inferred_events
def find_internal_events(self, replay_dag, wait_time_seconds): """ Replay the replay_dag, then wait for wait_time_seconds and collect internal events that occur. Return the list of internal events. """ replayer = Replayer(self.simulation_cfg, replay_dag) log.debug("Replaying prefix") simulation = replayer.simulate() # Directly after the last input has been injected, flush the internal # event buffers in case there were unaccounted internal events # Note that there isn't a race condition between flush()'ing and # incoming internal events, since sts is single-threaded # TODO(cs): flush() is not longer needed! simulation.god_scheduler.flush() simulation.controller_sync_callback.flush() # Now set all internal event buffers (GodScheduler for # ControlMessageReceives and ReplaySyncCallback for state changes) # to "pass through + record" simulation.set_pass_through() # Note that this is the monkey patched version of time.sleep log.debug("peek()'ing for %f seconds" % wait_time_seconds) time.sleep(wait_time_seconds) # Now turn off those pass-through and grab the inferred events newly_inferred_events = simulation.unset_pass_through() simulation.clean_up() return newly_inferred_events
def find_internal_events(self, replay_dag, inject_input, wait_time_seconds): ''' Replay the replay_dag, then wait for wait_time_seconds and collect internal events that occur. Return the list of internal events. ''' replayer = Replayer(self.simulation_cfg, replay_dag) log.debug("Replaying prefix") simulation = replayer.simulate() newly_inferred_events = play_forward(simulation, inject_input, wait_time_seconds) return newly_inferred_events
def find_internal_events(self, replay_dag, inject_input, wait_time_seconds): ''' Replay the replay_dag, then wait for wait_time_seconds and collect internal events that occur. Return the list of internal events. ''' replayer = Replayer(self.simulation_cfg, replay_dag) log.debug("Replaying prefix") simulation = replayer.simulate() newly_inferred_events = play_forward(simulation, inject_input, wait_time_seconds) return newly_inferred_events
def play_forward(results_dir, subsequence_id): # TODO(cs): need to serialize the parameters to Replayer rather than # wrapping them in a closure... otherwise, can't use RemoteForker # TODO(aw): MCSFinder needs to configure Simulation to always let DataplaneEvents pass through create_clean_python_dir(results_dir) # Copy stdout and stderr to a file "replay.out" tee = Tee(open(os.path.join(results_dir, "replay.out"), "w")) tee.tee_stdout() tee.tee_stderr() # Set up replayer. input_logger = InputLogger() replayer = Replayer( self.simulation_cfg, new_dag, wait_on_deterministic_values=self.wait_on_deterministic_values, input_logger=input_logger, allow_unexpected_messages=False, pass_through_whitelisted_messages=True, delay_flow_mods=self.delay_flow_mods, **self.kwargs) replayer.init_results(results_dir) self._runtime_stats = RuntimeStats(subsequence_id) violations = [] simulation = None try: simulation = replayer.simulate() self._track_new_internal_events(simulation, replayer) # Wait a bit in case the bug takes awhile to happen self.log("Sleeping %d seconds after run" % self.end_wait_seconds) time.sleep(self.end_wait_seconds) violations = self.invariant_check(simulation) if violations != []: input_logger.log_input_event( InvariantViolation(violations)) except SystemExit: # One of the invariant checks bailed early. Oddly, this is not an # error for us, it just means that there were no violations... # [this logic is arguably broken] # Return no violations, and let Forker handle system exit for us. violations = [] finally: input_logger.close(replayer, self.simulation_cfg, skip_mcs_cfg=True) if simulation is not None: simulation.clean_up() tee.close() if self.strict_assertion_checking: test_serialize_response(violations, self._runtime_stats.client_dict()) timed_out_internal = [ e.label for e in new_dag.events if e.timed_out ] return (violations, self._runtime_stats.client_dict(), timed_out_internal)
def test_controller_crash(self): simulation = None try: self.write_controller_crash_superlog() simulation_cfg = self.setup_controller_simulation() replayer = Replayer(simulation_cfg, self.tmp_controller_superlog) simulation = replayer.simulate() finally: os.unlink(self.tmp_controller_superlog) if simulation is not None: simulation.clean_up()
def test_basic(self): simulation = None try: self.write_simple_superlog() simulation_cfg = self.setup_simple_simulation() replayer = Replayer(simulation_cfg, self.tmp_basic_superlog) simulation = replayer.simulate() finally: os.unlink(self.tmp_basic_superlog) if simulation is not None: simulation.clean_up()
def test_dataplane_injection(self): simulation = None try: self.write_dataplane_trace_superlog() simulation_cfg = self.setup_dataplane_simulation() replayer = Replayer(simulation_cfg, self.tmp_dataplane_superlog) simulation = replayer.simulate() finally: os.unlink(self.tmp_dataplane_superlog) if simulation is not None: simulation.clean_up()
def replay(self, new_dag): # Run the simulation forward if self.transform_dag: new_dag = self.transform_dag(new_dag) # TODO(aw): MCSFinder needs to configure Simulation to always let DataplaneEvents pass through replayer = Replayer(self.simulation_cfg, new_dag, **self.kwargs) simulation = replayer.simulate() # Wait a bit in case the bug takes awhile to happen time.sleep(self.end_wait_seconds) violations = self.invariant_check(simulation) simulation.clean_up() return violations
def play_forward(results_dir, subsequence_id): # TODO(cs): need to serialize the parameters to Replayer rather than # wrapping them in a closure... otherwise, can't use RemoteForker # TODO(aw): MCSFinder needs to configure Simulation to always let DataplaneEvents pass through create_clean_python_dir(results_dir) # Copy stdout and stderr to a file "replay.out" tee = Tee(open(os.path.join(results_dir, "replay.out"), "w")) tee.tee_stdout() tee.tee_stderr() # Set up replayer. input_logger = InputLogger() replayer = Replayer(self.simulation_cfg, new_dag, wait_on_deterministic_values=self.wait_on_deterministic_values, input_logger=input_logger, allow_unexpected_messages=False, pass_through_whitelisted_messages=True, delay_flow_mods=self.delay_flow_mods, **self.kwargs) replayer.init_results(results_dir) self._runtime_stats = RuntimeStats(subsequence_id) violations = [] simulation = None try: simulation = replayer.simulate() self._track_new_internal_events(simulation, replayer) # Wait a bit in case the bug takes awhile to happen self.log("Sleeping %d seconds after run" % self.end_wait_seconds) time.sleep(self.end_wait_seconds) violations = self.invariant_check(simulation) if violations != []: input_logger.log_input_event(InvariantViolation(violations)) except SystemExit: # One of the invariant checks bailed early. Oddly, this is not an # error for us, it just means that there were no violations... # [this logic is arguably broken] # Return no violations, and let Forker handle system exit for us. violations = [] finally: input_logger.close(replayer, self.simulation_cfg, skip_mcs_cfg=True) if simulation is not None: simulation.clean_up() tee.close() if self.strict_assertion_checking: test_serialize_response(violations, self._runtime_stats.client_dict()) timed_out_internal = [ e.label for e in new_dag.events if e.timed_out ] return (violations, self._runtime_stats.client_dict(), timed_out_internal)
def test_migration(self): simulation = None try: self.write_migration_superlog() simulation_cfg = self.setup_migration_simulation() replayer = Replayer(simulation_cfg, self.tmp_migration_superlog) simulation = replayer.simulate() latest_switch = simulation.topology.get_switch(7) latest_port = latest_switch.ports[101] (host, interface) = simulation.topology.get_connected_port( latest_switch, latest_port) self.assertTrue(type(host) == Host) finally: os.unlink(self.tmp_migration_superlog) if simulation is not None: simulation.clean_up()
def replay(self, new_dag): # Run the simulation forward if self.transform_dag: new_dag = self.transform_dag(new_dag) # TODO(aw): MCSFinder needs to configure Simulation to always let DataplaneEvents pass through replayer = Replayer(self.simulation_cfg, new_dag, wait_on_deterministic_values=self.wait_on_deterministic_values, **self.kwargs) simulation = replayer.simulate() self._track_new_internal_events(simulation, replayer) # Wait a bit in case the bug takes awhile to happen self.log("Sleeping %d seconds after run" % self.end_wait_seconds) time.sleep(self.end_wait_seconds) violations = self.invariant_check(simulation) simulation.clean_up() return violations
def replay_interval(self, simulation, dag_interval, initial_wait_seconds): assert(dag_interval.events != []) # TODO(cs): set EventScheduler's epsilon_seconds parameter? replayer = Replayer(self.simulation_cfg, dag_interval, initial_wait=initial_wait_seconds, **self.kwargs) replayer.simulation = simulation if 'pass_through_sends' in self.kwargs and self.kwargs['pass_through_sends']: replayer.set_pass_through_sends(simulation) replayer.run_simulation_forward()
def play_forward(results_dir, subsequence_id): # TODO(cs): need to serialize the parameters to Replayer rather than # wrapping them in a closure... otherwise, can't use RemoteForker # TODO(aw): MCSFinder needs to configure Simulation to always let DataplaneEvents pass through create_clean_python_dir(results_dir) # Copy stdout and stderr to a file "replay.out" tee = Tee(open(os.path.join(results_dir, "replay.out"), "w")) tee.tee_stdout() tee.tee_stderr() # Set up replayer. input_logger = InputLogger() replayer = Replayer(self.simulation_cfg, new_dag, input_logger=input_logger, bug_signature=self.bug_signature, invariant_check_name=self.invariant_check_name, **self.kwargs) replayer.init_results(results_dir) self._runtime_stats = RuntimeStats(subsequence_id) simulation = None try: simulation = replayer.simulate() self._track_new_internal_events(simulation, replayer) except SystemExit: # One of the invariant checks bailed early. Oddly, this is not an # error for us, it just means that there were no violations... # [this logic is arguably broken] # Return no violations, and let Forker handle system exit for us. simulation.violation_found = False finally: input_logger.close(replayer, self.simulation_cfg, skip_mcs_cfg=True) if simulation is not None: simulation.clean_up() tee.close() if self.strict_assertion_checking: test_serialize_response(violations, self._runtime_stats.client_dict()) timed_out_internal = [ e.label for e in new_dag.events if e.timed_out ] return (simulation.violation_found, self._runtime_stats.client_dict(), timed_out_internal)
def play_forward(results_dir, subsequence_id): # TODO(cs): need to serialize the parameters to Replayer rather than # wrapping them in a closure... otherwise, can't use RemoteForker # TODO(aw): MCSFinder needs to configure Simulation to always let DataplaneEvents pass through create_clean_python_dir(results_dir) # Copy stdout and stderr to a file "replay.out" tee = Tee(open(os.path.join(results_dir, "replay.out"), "w")) tee.tee_stdout() tee.tee_stderr() # Set up replayer. input_logger = InputLogger() replayer = Replayer(self.simulation_cfg, new_dag, input_logger=input_logger, bug_signature=self.bug_signature, invariant_check_name=self.invariant_check_name, **self.kwargs) replayer.init_results(results_dir) self._runtime_stats = RuntimeStats(subsequence_id) simulation = None try: simulation = replayer.simulate() self._track_new_internal_events(simulation, replayer) except SystemExit: # One of the invariant checks bailed early. Oddly, this is not an # error for us, it just means that there were no violations... # [this logic is arguably broken] # Return no violations, and let Forker handle system exit for us. simulation.violation_found = False finally: input_logger.close(replayer, self.simulation_cfg, skip_mcs_cfg=True) if simulation is not None: simulation.clean_up() tee.close() if self.strict_assertion_checking: test_serialize_response(violations, self._runtime_stats.client_dict()) timed_out_internal = [ e.label for e in new_dag.events if e.timed_out ] return (simulation.violation_found, self._runtime_stats.client_dict(), timed_out_internal)
def find_internal_events(self, simulation, controller, dag_interval, inject_input, wait_time_seconds): assert(dag_interval.events != []) initial_wait_seconds = (inject_input.time.as_float() - dag_interval.events[-1].time.as_float()) # TODO(cs): set EventScheduler's epsilon_seconds parameter? replayer = Replayer(self.simulation_cfg, dag_interval, pass_through_whitelisted_messages=True, default_dp_permit=self.default_dp_permit, initial_wait=initial_wait_seconds) replayer.simulation = simulation if self.pass_through_sends: replayer.set_pass_through_sends(simulation) replayer.run_simulation_forward() # Now peek() for internal events following inject_input return self.snapshot_and_play_forward(simulation, controller, inject_input, wait_time_seconds)
cwd='/home/mininet/ONOS', controller_type='onos', kill_cmd='./start-onos.sh stop', restart_cmd='./start-onos.sh stop'), ControllerConfig(start_cmd='./start-onos.sh start', label='c2', address='192.168.56.12', cwd='/home/mininet/ONOS', controller_type='onos', kill_cmd='./start-onos.sh stop', restart_cmd='./start-onos.sh stop') ], topology_class=MeshTopology, topology_params="num_switches=2", patch_panel_class=BufferedPatchPanel, multiplex_sockets=False, ignore_interposition=False, kill_controllers_on_exit=False) control_flow = Replayer( simulation_config, "experiments/onos_id_bug_fixed_ids_no_traffic/events.trace", input_logger=InputLogger(), wait_on_deterministic_values=False, allow_unexpected_messages=False, delay_flow_mods=False, default_dp_permit=True, pass_through_whitelisted_messages=True, invariant_check_name='InvariantChecker.check_liveness', bug_signature="c1")
from sts.input_traces.input_logger import InputLogger simulation_config = SimulationConfig(controller_configs=[ ControllerConfig( start_cmd= './pox.py --verbose openflow.discovery forwarding.l2_multi_broken_floyd sts.util.socket_mux.pox_monkeypatcher openflow.of_01 --address=__address__ --port=__port__', label='c1', address='127.0.0.1', cwd='pox') ], topology_class=MeshTopology, topology_params="num_switches=3", patch_panel_class=BufferedPatchPanel, multiplex_sockets=True, ignore_interposition=True, kill_controllers_on_exit=True) control_flow = Replayer( simulation_config, "experiments/pox_broken_floyd_updated_mcs/intermcs_4_/mcs.trace.notimeouts", input_logger=InputLogger(), wait_on_deterministic_values=False, allow_unexpected_messages=False, delay_flow_mods=False, default_dp_permit=False, pass_through_whitelisted_messages=False, invariant_check_name='InvariantChecker.python_check_loops', bug_signature= "{'hs_history': [(x^L) - ([]), (dl_src:12:34:56:78:01:03,dl_dst:12:34:56:78:03:03,dl_vlan:65535,dl_vlan_pcp:0,dl_type:2048,nw_tos:0,nw_proto:1,nw_src:123.123.1.3/32,nw_dst:123.123.3.3/32,tp_src:0,tp_dst:0) - ([]), (dl_src:12:34:56:78:01:03,dl_dst:12:34:56:78:03:03,dl_vlan:65535,dl_vlan_pcp:0,dl_type:2048,nw_tos:0,nw_proto:1,nw_src:123.123.1.3/32,nw_dst:123.123.3.3/32,tp_src:0,tp_dst:0) - ([]), (dl_src:12:34:56:78:01:03,dl_dst:12:34:56:78:03:03,dl_vlan:65535,dl_vlan_pcp:0,dl_type:2048,nw_tos:0,nw_proto:1,nw_src:123.123.1.3/32,nw_dst:123.123.3.3/32,tp_src:0,tp_dst:0) - ([])], 'hdr': (dl_src:12:34:56:78:01:03,dl_dst:12:34:56:78:03:03,dl_vlan:65535,dl_vlan_pcp:0,dl_type:2048,nw_tos:0,nw_proto:1,nw_src:123.123.1.3/32,nw_dst:123.123.3.3/32,tp_src:0,tp_dst:0) - ([]), 'visits': [100003, 200002, 300001, 100001], 'port': 200002}" )
from sts.simulation_state import SimulationConfig from sts.input_traces.input_logger import InputLogger simulation_config = SimulationConfig(controller_configs=[ ControllerConfig( start_cmd= './pox.py --verbose sts.syncproto.pox_syncer --blocking=False openflow.discovery forwarding.l2_multi sts.util.socket_mux.pox_monkeypatcher openflow.of_01 --address=__address__ --port=__port__', label='c1', address='127.0.0.1', cwd='old_pox', sync='tcp:localhost:18899') ], topology_class=MeshTopology, topology_params="num_switches=2", patch_panel_class=BufferedPatchPanel, multiplex_sockets=True, ignore_interposition=False, kill_controllers_on_exit=True) control_flow = Replayer( simulation_config, "experiments/retrigger_debug_branch_loop/events.trace", input_logger=InputLogger(), wait_on_deterministic_values=False, allow_unexpected_messages=False, delay_flow_mods=False, default_dp_permit=False, pass_through_whitelisted_messages=False, invariant_check_name='check_for_blackholes_or_connectivity', bug_signature="")
#cmd_exec.execute_command("echo 'sleeping for 10sec'; sleep 10") cmd_exec.execute_command("./scripts/conf_setup.sh 2;") cmd_exec.execute_command("zk start") cmd_exec.execute_command("cassandra start") cmd_exec.execute_command("echo 'sleeping for 10sec'; sleep 10") cmd_exec.execute_command("cassandra cleandb;") cmd_exec.execute_command("echo 'sleeping for 10sec'; sleep 10") #cmd_exec.execute_command("onos start") #cmd_exec.execute_command("echo 'sleeping for 40sec'; sleep 40") setup() simulation_config = SimulationConfig(controller_configs=[ControllerConfig(start_cmd='./start-onos.sh start', label='c1', address='192.168.56.11', cwd='/home/mininet/ONOS', controller_type='onos', kill_cmd='./start-onos.sh stop', restart_cmd='./start-onos.sh stop'), ControllerConfig(start_cmd='./start-onos.sh start', label='c2', address='192.168.56.12', cwd='/home/mininet/ONOS', controller_type='onos', kill_cmd='./start-onos.sh stop', restart_cmd='./start-onos.sh stop')], topology_class=MeshTopology, topology_params="num_switches=2", patch_panel_class=BufferedPatchPanel, multiplex_sockets=False, ignore_interposition=True, kill_controllers_on_exit=False) control_flow = Replayer(simulation_config, "experiments/onos_id_bug_fixed_ids_traffic/events.trace", input_logger=InputLogger(), wait_on_deterministic_values=False, allow_unexpected_messages=False, delay_flow_mods=False, default_dp_permit=True, pass_through_whitelisted_messages=True,] invariant_check_name='InvariantChecker.check_liveness', bug_signature="")
from sts.control_flow.replayer import Replayer from sts.simulation_state import SimulationConfig from sts.input_traces.input_logger import InputLogger simulation_config = SimulationConfig(controller_configs=[ ControllerConfig( start_cmd= 'java -ea -Dlogback.configurationFile=./src/main/resources/logback-trace.xml -jar ./target/floodlight.jar -cf ./src/main/resources/trace_circuitpusher.properties', label='c1', address='127.0.0.1', cwd='../floodlight') ], topology_class=BinaryLeafTreeTopology, topology_params="num_levels=1", patch_panel_class=BufferedPatchPanel, multiplex_sockets=False, ignore_interposition=False, kill_controllers_on_exit=True) control_flow = Replayer( simulation_config, "paper/trace_floodlight_circuitpusher-BinaryLeafTreeTopology1-steps200/events.trace", input_logger=InputLogger(), wait_on_deterministic_values=False, allow_unexpected_messages=False, delay_flow_mods=False, default_dp_permit=False, pass_through_whitelisted_messages=False, invariant_check_name='InvariantChecker.check_liveness', bug_signature="")
from sts.control_flow.replayer import Replayer from sts.simulation_state import SimulationConfig from sts.input_traces.input_logger import InputLogger simulation_config = SimulationConfig(controller_configs=[ ControllerConfig( start_cmd= './pox.py --verbose openflow.discovery forwarding.l2_multi_broken_floyd sts.util.socket_mux.pox_monkeypatcher openflow.of_01 --address=__address__ --port=7777', label='c1', address='127.0.0.1', cwd='pox') ], topology_class=MeshTopology, topology_params="num_switches=3", patch_panel_class=BufferedPatchPanel, multiplex_sockets=True, ignore_interposition=False, kill_controllers_on_exit=True) control_flow = Replayer( simulation_config, "experiments/pox_broken_floyd_updated/events.trace", input_logger=InputLogger(), wait_on_deterministic_values=False, allow_unexpected_messages=False, delay_flow_mods=False, default_dp_permit=False, pass_through_whitelisted_messages=False, invariant_check_name='InvariantChecker.python_check_loops', bug_signature="")
from sts.control_flow.replayer import Replayer from sts.simulation_state import SimulationConfig from sts.input_traces.input_logger import InputLogger simulation_config = SimulationConfig(controller_configs=[ ControllerConfig( start_cmd= './pox.py --verbose openflow.discovery forwarding.l2_multi_null_pointer sts.util.socket_mux.pox_monkeypatcher openflow.of_01 --address=../sts_socket_pipe', label='c1', address='sts_socket_pipe', cwd='pox') ], topology_class=FatTree, topology_params="", patch_panel_class=BufferedPatchPanel, multiplex_sockets=True, ignore_interposition=True, kill_controllers_on_exit=True) control_flow = Replayer( simulation_config, "experiments/pox_null_pointer_mcs_blackbox/intermcs_5_/mcs.trace.notimeouts", input_logger=InputLogger(), wait_on_deterministic_values=False, allow_unexpected_messages=False, delay_flow_mods=False, default_dp_permit=False, pass_through_whitelisted_messages=False, invariant_check_name='InvariantChecker.check_liveness', bug_signature="c1")
from config.experiment_config_lib import ControllerConfig from sts.topology import * from sts.control_flow.replayer import Replayer from sts.simulation_state import SimulationConfig from sts.input_traces.input_logger import InputLogger simulation_config = SimulationConfig(controller_configs=[ControllerConfig(start_cmd='./pox.py --verbose forwarding.consistency --consistent=True --deny=False --update_wait=10 --update_once=True --consistent_sleep=5 openflow.of_01 --address=__address__ --port=__port__ ', label='c1', address='127.0.0.1', cwd='pox/')], topology_class=ConsistencyTopology, topology_params="", patch_panel_class=BufferedPatchPanel, multiplex_sockets=False, ignore_interposition=False, kill_controllers_on_exit=True) control_flow = Replayer(simulation_config, "traces/trace_pox_hb_ConsistencyTopology-True-steps200/events.trace", input_logger=InputLogger(), wait_on_deterministic_values=False, allow_unexpected_messages=False, delay_flow_mods=False, default_dp_permit=False, pass_through_whitelisted_messages=False, invariant_check_name='InvariantChecker.check_liveness', bug_signature="")
from sts.control_flow.replayer import Replayer from sts.simulation_state import SimulationConfig from sts.input_traces.input_logger import InputLogger simulation_config = SimulationConfig(controller_configs=[ ControllerConfig( start_cmd= 'java -ea -Dlogback.configurationFile=./src/main/resources/logback-trace.xml -jar ./target/floodlight.jar -cf ./src/main/resources/hb_learningswitch.properties', label='c1', address='127.0.0.1', cwd='../floodlight') ], topology_class=BinaryLeafTreeTopology, topology_params="num_levels=3", patch_panel_class=BufferedPatchPanel, multiplex_sockets=False, ignore_interposition=False, kill_controllers_on_exit=True) control_flow = Replayer( simulation_config, "traces/floodlight_hb_circuitpusher-bintree3-traffic/events.trace", input_logger=InputLogger(), wait_on_deterministic_values=False, allow_unexpected_messages=False, delay_flow_mods=False, default_dp_permit=False, pass_through_whitelisted_messages=False, invariant_check_name='InvariantChecker.check_liveness', bug_signature="")
cwd='/home/mininet/ONOS', controller_type='onos', kill_cmd='./start-onos.sh stop', restart_cmd='./start-onos.sh stop'), ControllerConfig(start_cmd='./start-onos.sh start', label='c2', address='192.168.56.12', cwd='/home/mininet/ONOS', controller_type='onos', kill_cmd='./start-onos.sh stop', restart_cmd='./start-onos.sh stop') ], topology_class=MeshTopology, topology_params="num_switches=2", patch_panel_class=BufferedPatchPanel, multiplex_sockets=False, ignore_interposition=False, kill_controllers_on_exit=False) control_flow = Replayer( simulation_config, "experiments/onos_id_bug_fixed_ids_file_mcs4/interreplay_7_r_3/events.trace", input_logger=InputLogger(), wait_on_deterministic_values=False, allow_unexpected_messages=False, delay_flow_mods=False, default_dp_permit=False, pass_through_whitelisted_messages=False, invariant_check_name='check_for_file', bug_signature="bug_file_detected")
from config.experiment_config_lib import ControllerConfig from sts.topology import * from sts.control_flow.replayer import Replayer from sts.simulation_state import SimulationConfig from sts.input_traces.input_logger import InputLogger simulation_config = SimulationConfig(controller_configs=[ControllerConfig(start_cmd='./start-onos.sh start', label='c1', address='192.168.56.11', cwd='/home/mininet/ONOS', controller_type='onos', kill_cmd='./start-onos.sh stop', restart_cmd='./start-onos.sh stop'), ControllerConfig(start_cmd='./start-onos.sh start', label='c2', address='192.168.56.12', cwd='/home/mininet/ONOS', controller_type='onos', kill_cmd='./start-onos.sh stop', restart_cmd='./start-onos.sh stop')], topology_class=MeshTopology, topology_params="num_switches=2", patch_panel_class=BufferedPatchPanel, multiplex_sockets=False, ignore_interposition=False, kill_controllers_on_exit=False) control_flow = Replayer(simulation_config, "experiments/onos_controller_id_replay_2014_05_30_10_46_45/events.trace", input_logger=InputLogger(), wait_on_deterministic_values=False, allow_unexpected_messages=False, delay_flow_mods=False, default_dp_permit=False, pass_through_whitelisted_messages=False, invariant_check_name='None', bug_signature="")