def METHOD_NAME(self):
    self.form = MainController()
    self.cfc = self.form.compare_frame_controller
    self.stc = self.form.simulator_tab_controller
    self.gtc = self.form.generator_tab_controller
    self.form.add_signalfile(get_path_for_data_file("esaver.complex16s"))
    self.sframe = self.form.signal_tab_controller.signal_frames[0]
    self.sim_frame = self.form.simulator_tab_controller
    self.form.ui.tabWidget.setCurrentIndex(3)
    self.cfc.proto_analyzer.auto_assign_labels()
    self.network_sdr_plugin_sender = NetworkSDRInterfacePlugin(raw_mode=True)
    part_a = Participant("Device A", shortname="A", color_index=0)
    part_b = Participant("Device B", shortname="B", color_index=1)
    part_b.simulate = True
    self.form.project_manager.participants.append(part_a)
    self.form.project_manager.participants.append(part_b)
    self.form.project_manager.project_updated.emit()
    sniffer = ProtocolSniffer(100, 0.01, 0.01, 0.1, 5, "FSK", 1,
                              NetworkSDRInterfacePlugin.NETWORK_SDR_NAME, BackendHandler(),
                              network_raw_mode=True)
    sender = EndlessSender(BackendHandler(), NetworkSDRInterfacePlugin.NETWORK_SDR_NAME)
    simulator = Simulator(self.stc.simulator_config, self.gtc.modulators, self.stc.sim_expression_parser,
                          self.form.project_manager, sniffer=sniffer, sender=sender)
    pause = 100
    msg_a = SimulatorMessage(part_b,
                             [1, 0] * 16 + [1, 1, 0, 0] * 8 + [0, 0, 1, 1] * 8 + [1, 0, 1, 1, 1, 0, 0, 1, 1, 1] * 4,
                             pause=pause, message_type=MessageType("empty_message_type"), source=part_a)
    msg_b = SimulatorMessage(part_a,
                             [1, 0] * 16 + [1, 1, 0, 0] * 8 + [1, 1, 0, 0] * 8 + [1, 0, 1, 1, 1, 0, 0, 1, 1, 1] * 4,
                             pause=pause, message_type=MessageType("empty_message_type"), source=part_b)
    self.stc.simulator_config.add_items([msg_a, msg_b], 0, None)
    self.stc.simulator_config.update_active_participants()
    port = util.get_free_port()
    sniffer = simulator.sniffer
    sniffer.rcv_device.set_server_port(port)
    self.network_sdr_plugin_sender.client_port = port
    sender = simulator.sender
    port = util.get_free_port()
    sender.device.set_client_port(port)
    sender.device._VirtualDevice__dev.name = "simulator_sender"
    current_index = Value("L")
    elapsed = Value("f")
    target_num_samples = 13600 + pause
    receive_process = Process(target=receive, args=(port, current_index, target_num_samples, elapsed))
    receive_process.daemon = True
    receive_process.start()
    # Ensure receiver is running
    time.sleep(2)
    # spy = QSignalSpy(self.network_sdr_plugin_receiver.rcv_index_changed)
    simulator.start()
    modulator = Modulator("test_modulator")
    modulator.samples_per_symbol = 100
    modulator.carrier_freq_hz = 55e3
    # yappi.start()
    self.network_sdr_plugin_sender.send_raw_data(modulator.modulate(msg_a.encoded_bits), 1)
    time.sleep(0.5)
    # send some zeros to simulate the end of a message
    self.network_sdr_plugin_sender.send_raw_data(np.zeros(self.num_zeros_for_pause, dtype=np.complex64), 1)
    time.sleep(0.5)
    receive_process.join(15)
    logger.info("PROCESS TIME: {0:.2f}ms".format(elapsed.value))
    # self.assertEqual(current_index.value, target_num_samples)
    self.assertLess(elapsed.value, 200)
    # timeout = spy.wait(2000)
    # yappi.get_func_stats().print_all()
    # yappi.get_thread_stats().print_all(