def test_recovery_missing_byte(self): dc = DataClient(host, port, storage_sender, gui_data_sender, active_channels) dc.start_sync_recovery_thread() # play the normal_sequence twice so we get in sync, but skip the last byte for x in normal_sequence: dc.incoming_queue.put(x) for i in range(len(normal_sequence) - 1): dc.incoming_queue.put(normal_sequence[i]) # play the normal_sequence once again for x in normal_sequence: dc.incoming_queue.put(x) time.sleep(0.2) assert not dc.synchronized # play the normal_sequence once again, this is where we recover for x in normal_sequence: dc.incoming_queue.put(x) time.sleep(0.2) assert dc.synchronized
def test_recovery_random_dead(self): dc = DataClient(host, port, storage_sender, gui_data_sender, active_channels) dc.start_sync_recovery_thread() # play the normal_sequence twice so we get in sync for i in range(2): for x in normal_sequence: dc.incoming_queue.put(x) # play the normal_sequence with a random DEAD to break sync for x in dead_sequence: dc.incoming_queue.put(x) time.sleep(0.2) assert not dc.synchronized # play the normal_sequence again twice, this is where we recover for i in range(2): for x in normal_sequence: dc.incoming_queue.put(x) time.sleep(0.2) assert dc.synchronized
def test_recovery_added_byte(self): dc = DataClient(host, port, storage_sender, gui_data_sender, active_channels) dc.start_sync_recovery_thread() # play the normal_sequence twice so we get in sync for i in range(2): for x in normal_sequence: dc.incoming_queue.put(x) # throw a wrench in the pipeline dc.incoming_queue.put('c') # play the normal_sequence once again for x in normal_sequence: dc.incoming_queue.put(x) time.sleep(0.2) assert not dc.synchronized # play the normal_sequence once again, this is where we recover for x in normal_sequence: dc.incoming_queue.put(x) time.sleep(0.2) assert dc.synchronized
def test_sync_to_parser_handoff(self): dc = DataClient(host, port, storage_sender, gui_data_sender, active_channels) dc.start_sync_recovery_thread() dc.start_parser_thread() # play the normal_sequence twice so we get in sync for i in range(3): for x in normal_sequence: dc.incoming_queue.put(x) time.sleep(0.2) assert not dc.storage_queue.empty() assert not dc.gui_queue.empty()