def test_measure_tracker(measure_workbench): """Test the measure tracker. """ tracker = MeasureTracker() meas1 = measure(measure_workbench) meas2 = measure(measure_workbench) ev1 = Event() ev2 = Event() ev3 = Event() w1 = create_false_widget(meas1, ev1) w2 = create_false_widget(meas2, ev2) w3 = create_false_widget(None, ev3) tracker.start(meas1) assert tracker.get_selected_measure() is meas1 tracker.enqueue(w2) sleep(0.01) ev2.set() assert tracker.get_selected_measure() is meas2 ev2.clear() tracker._selected = meas1 # Test discarding the buffer when new widgets are enqueued while processing tracker.enqueue(w3) tracker.enqueue(w1) while tracker._buffer_empty.is_set(): sleep(0.01) assert not tracker._queue_not_empty.is_set() tracker.enqueue(w2) ev3.set() ev2.set() assert tracker.get_selected_measure() is meas2 ev2.clear() ev3.clear() # Test getting the selected when the buffer is empty but not the queue. tracker.enqueue(w1) sleep(0.01) assert not tracker._queue_not_empty.is_set() tracker.enqueue(w3) ev1.set() ev3.set() assert tracker.get_selected_measure() is meas1 # Test stopping while processing. ev3.clear() tracker.enqueue(w3) sleep(0.01) tracker._should_stop.set() ev3.set() tracker.stop()
def test_find_next_measure(measure_workbench): """Test finding the next valid measure in the queue. """ from ecpy.testing.measure.fixtures import measure m1 = measure(measure_workbench) m2 = measure(measure_workbench) m3 = measure(measure_workbench) plugin = measure_workbench.get_plugin('ecpy.measure') plugin.enqueued_measures.add(m1) plugin.enqueued_measures.add(m2) plugin.enqueued_measures.add(m3) m1.status = 'COMPLETED' assert plugin.find_next_measure() is m2