def test_progression_start_iter_not_zero(full_snapshot): source_model = SnapshotModel() model = ProgressProxyModel(source_model, parent=None) reporting_mode = qt_api.QtTest.QAbstractItemModelTester.FailureReportingMode.Warning tester = qt_api.QtTest.QAbstractItemModelTester( # noqa, prevent GC model, reporting_mode) source_model._add_snapshot(SnapshotModel.prerender(full_snapshot), 1) assert model.data(model.index(0, 0, QModelIndex()), ProgressRole) == { "nr_reals": 100, "status": { REALIZATION_STATE_UNKNOWN: 100 }, } partial = PartialSnapshot(full_snapshot) partial.update_real("0", Realization(status=REALIZATION_STATE_FINISHED)) source_model._add_partial_snapshot(SnapshotModel.prerender(partial), 1) assert model.data(model.index(0, 0, QModelIndex()), ProgressRole) == { "nr_reals": 100, "status": { REALIZATION_STATE_UNKNOWN: 99, REALIZATION_STATE_FINISHED: 1 }, }
def test_changes(full_snapshot): source_model = SnapshotModel() model = JobListProxyModel(None, 0, 0, 0, 0) model.setSourceModel(source_model) reporting_mode = qt_api.QtTest.QAbstractItemModelTester.FailureReportingMode.Warning tester = qt_api.QtTest.QAbstractItemModelTester( # noqa, prevent GC model, reporting_mode) source_model._add_snapshot(SnapshotModel.prerender(full_snapshot), 0) assert (model.index(0, _id_to_col(ids.STATUS), QModelIndex()).data() == JOB_STATE_START) partial = PartialSnapshot(full_snapshot) start_time = datetime.datetime(year=2020, month=10, day=27, hour=12) end_time = datetime.datetime(year=2020, month=10, day=28, hour=13) partial.update_job( "0", "0", "0", job=Job( status=JOB_STATE_FAILURE, start_time=start_time, end_time=end_time, ), ) source_model._add_partial_snapshot(SnapshotModel.prerender(partial), 0) assert (model.index(0, _id_to_col(DURATION), QModelIndex()).data() == "1 day, 1:00:00") assert (model.index(0, _id_to_col(ids.STATUS), QModelIndex()).data() == JOB_STATE_FAILURE)
def test_no_cross_talk(full_snapshot): source_model = SnapshotModel() model = JobListProxyModel(None, 0, 0, 0, 0) model.setSourceModel(source_model) reporting_mode = qt_api.QtTest.QAbstractItemModelTester.FailureReportingMode.Warning qt_api.QtTest.QAbstractItemModelTester(model, reporting_mode) # noqa, prevent GC source_model._add_snapshot(SnapshotModel.prerender(full_snapshot), 0) source_model._add_snapshot(SnapshotModel.prerender(full_snapshot), 1) # Test that changes to iter=1 does not bleed into iter=0 partial = PartialSnapshot(full_snapshot) partial.update_job("0", "0", "0", job=Job(status=JOB_STATE_FAILURE)) source_model._add_partial_snapshot(SnapshotModel.prerender(partial), 1) assert ( model.index(0, _id_to_col(ids.STATUS), QModelIndex()).data() == JOB_STATE_START ) model.set_step(1, 0, 0, 0) assert ( model.index(0, _id_to_col(ids.STATUS), QModelIndex()).data() == JOB_STATE_FAILURE )
def test_change_iter(full_snapshot): source_model = SnapshotModel() model = RealListModel(None, 0) model.setSourceModel(source_model) reporting_mode = qt_api.QtTest.QAbstractItemModelTester.FailureReportingMode.Warning tester = qt_api.QtTest.QAbstractItemModelTester( # noqa, prevent GC model, reporting_mode) source_model._add_snapshot(SnapshotModel.prerender(full_snapshot), 0) assert (model.index(0, 0, QModelIndex()).data(NodeRole).data["status"] == REALIZATION_STATE_UNKNOWN) source_model._add_snapshot(SnapshotModel.prerender(full_snapshot), 1) model.setIter(1) partial = partial_snapshot(full_snapshot) partial.update_real("0", Realization(status=REALIZATION_STATE_FINISHED)) source_model._add_partial_snapshot(SnapshotModel.prerender(partial), 1) assert (model.index(0, 0, QModelIndex()).data(NodeRole).data["status"] == REALIZATION_STATE_FINISHED)
def test_realization_job_hint(full_snapshot): model = SnapshotModel() model._add_snapshot(SnapshotModel.prerender(full_snapshot), 0) partial = PartialSnapshot(full_snapshot) partial.update_job("0", "0", "0", Job(status=JOB_STATE_RUNNING)) model._add_partial_snapshot(SnapshotModel.prerender(partial), 0) first_real = model.index(0, 0, model.index(0, 0)) colors = model.data(first_real, RealJobColorHint) assert colors[0].name() == QColor(*COLOR_RUNNING).name() assert colors[1].name() == QColor(*COLOR_PENDING).name()
def test_using_qt_model_tester(qtmodeltester, full_snapshot): model = SnapshotModel() reporting_mode = qt_api.QtTest.QAbstractItemModelTester.FailureReportingMode.Warning tester = qt_api.QtTest.QAbstractItemModelTester( # noqa, prevent GC model, reporting_mode) model._add_snapshot(SnapshotModel.prerender(full_snapshot), 0) model._add_snapshot(SnapshotModel.prerender(full_snapshot), 1) partial = partial_snapshot(SnapshotModel.prerender(full_snapshot)) model._add_partial_snapshot(SnapshotModel.prerender(partial), 0) model._add_partial_snapshot(SnapshotModel.prerender(partial), 1) qtmodeltester.check(model, force_py=True)
def test_selection_success(large_snapshot, qtbot): iter = 0 widget = RealizationWidget(iter) qtbot.addWidget(widget) model = SnapshotModel() model._add_snapshot(SnapshotModel.prerender(large_snapshot), iter) widget.setSnapshotModel(model) widget.resize(800, 600) widget.move(0, 0) with qtbot.waitActive(widget, timeout=30000): widget.show() selection_id = 22 selection_rect = widget._real_view.rectForIndex( widget._real_list_model.index(selection_id, 0, QModelIndex())) def check_selection_cb(index): node = index.internalPointer() return isinstance(node, Node) and str(node.id) == str(selection_id) with qtbot.waitSignal(widget.currentChanged, timeout=30000, check_params_cb=check_selection_cb): qtbot.mouseClick( widget._real_view.viewport(), QtCore.Qt.LeftButton, pos=selection_rect.center(), )
def test_delegate_drawing_count(small_snapshot, qtbot): iter = 0 widget = RealizationWidget(iter) qtbot.addWidget(widget) with qtbot.waitActive(widget, timeout=30000): model = SnapshotModel() model._add_snapshot(SnapshotModel.prerender(small_snapshot), iter) widget.setSnapshotModel(model) widget.move(0, 0) widget.resize(640, 480) # mock delegate for counting how many times we draw delegates mock_delegate = MockDelegate() widget._real_view.setItemDelegate(mock_delegate) widget.show() qtbot.wait(1000) print(mock_delegate._max_id) qtbot.waitUntil( lambda: mock_delegate._max_id == len(small_snapshot.get_reals()) - 1, timeout=30000, )
def test_duration(mock_datetime, timezone, full_snapshot): source_model = SnapshotModel() model = JobListProxyModel(None, 0, 0, 0, 0) model.setSourceModel(source_model) reporting_mode = qt_api.QtTest.QAbstractItemModelTester.FailureReportingMode.Warning tester = qt_api.QtTest.QAbstractItemModelTester( # noqa, prevent GC model, reporting_mode ) source_model._add_snapshot(SnapshotModel.prerender(full_snapshot), 0) assert ( model.index(0, _id_to_col(ids.STATUS), QModelIndex()).data() == JOB_STATE_START ) partial = PartialSnapshot(full_snapshot) start_time = datetime.datetime( year=2020, month=10, day=27, hour=12, tzinfo=timezone ) # mock only datetime.datetime.now() mock_datetime.datetime.now.return_value = datetime.datetime( year=2020, month=10, day=28, hour=13, minute=12, second=11, microsecond=5, # Note that microseconds are intended to be removed tzinfo=timezone, ) partial.update_job( "0", "0", "2", job=Job( status=JOB_STATE_RUNNING, start_time=start_time, ), ) source_model._add_partial_snapshot(SnapshotModel.prerender(partial), 0) assert ( model.index(2, _id_to_col(DURATION), QModelIndex()).data() == "1 day, 1:12:11" ) mock_datetime.datetime.now.assert_called_once_with(timezone)
def test_using_qt_model_tester(qtmodeltester, full_snapshot): partial = partial_snapshot(full_snapshot) source_model = SnapshotModel() model = JobListProxyModel(None, 0, 0, 0, 0) model.setSourceModel(source_model) reporting_mode = qt_api.QtTest.QAbstractItemModelTester.FailureReportingMode.Warning tester = qt_api.QtTest.QAbstractItemModelTester( # noqa, prevent GC model, reporting_mode) source_model._add_snapshot(SnapshotModel.prerender(full_snapshot), 0) source_model._add_snapshot(SnapshotModel.prerender(full_snapshot), 1) source_model._add_partial_snapshot(SnapshotModel.prerender(partial), 0) source_model._add_partial_snapshot(SnapshotModel.prerender(partial), 1) qtmodeltester.check(model, force_py=True)
def test_delegate_instantiated(qtbot, large_snapshot): snapshot_model = SnapshotModel() progress_proxy_model = ProgressProxyModel(snapshot_model) snapshot_model._add_snapshot(SnapshotModel.prerender(large_snapshot), 0) legend_view = LegendView() qtbot.addWidget(legend_view) legend_view.setModel(progress_proxy_model) assert legend_view.itemDelegate(QModelIndex())
def test_realization_sort_order(full_snapshot): model = SnapshotModel() model._add_snapshot(SnapshotModel.prerender(full_snapshot), 0) for i in range(0, 100): iter_index = model.index(i, 0, model.index(0, 0, QModelIndex())) assert str(i) == iter_index.internalPointer().id, print( i, iter_index.internalPointer())
def consume_and_emit(self): logger.debug("tracking...") for event in self._tracker.track(): if self._stopped: logger.debug("stopped") break if isinstance(event, FullSnapshotEvent) and event.snapshot: SnapshotModel.prerender(event.snapshot) elif isinstance(event, SnapshotUpdateEvent) and event.partial_snapshot: SnapshotModel.prerender(event.partial_snapshot) logger.debug(f"emit {event}") self.consumed_event.emit(event) if isinstance(event, EndEvent): logger.debug("got end event") break self.done.emit() logger.debug("tracking done.")