def test_instantiation(self): config_file = self.createTestPath("local/simple_config/minimum_config") with ErtTestContext("kjell", config_file) as work_area: ert = work_area.getErt() configureErtNotifier(ert, config_file) brm = BaseRunModel(ert.get_queue_config()) self.assertFalse(brm.isQueueRunning())
def test_end_events_from_finished_model(self): brm = BaseRunModel(None, phase_count=0) tracker = BlockingTracker(brm, 1, 1) events = list(tracker.track()) for idx, ev_cls in enumerate([GeneralEvent, DetailedEvent, EndEvent]): self.assertIsInstance(events[idx], ev_cls)
def test_qtimers_are_stopped_for_finished_model(self): brm = BaseRunModel(None, phase_count=0) # a finished model tracker = QTimerTracker(brm, Mock, 1, 0, 0, Mock()) tracker._tick() for timer in tracker._qtimers: timer.stop.assert_called_once()
def test_failed_realizations(initials, completed, any_failed, failures): brm = BaseRunModel(None, None, None) brm._initial_realizations_mask = initials brm._completed_realizations_mask = completed assert brm._create_mask_from_failed_realizations() == failures assert brm._count_successful_realizations() == sum(completed) assert brm.has_failed_realizations() == any_failed
def test_end_events_are_emitted(self): event_handler = Mock() brm = BaseRunModel(None, phase_count=0) # a finished model tracker = QTimerTracker(brm, Mock, 1, 0, event_handler) tracker._general() for idx, ev_cls in enumerate([GeneralEvent, DetailedEvent, EndEvent]): _, args, _ = event_handler.mock_calls[idx] self.assertIsInstance(args[0], ev_cls, "called with unexpected event")
def test_event_loop_runs(self): brm = BaseRunModel(None, phase_count=1) tracker = BlockingTracker(brm, 1, 1, 1) idx = 0 expected = [TickEvent, GeneralEvent, DetailedEvent, TickEvent] for event in tracker.track(): self.assertIsInstance(event, expected[idx], "got unexpected event") idx += 1 if idx == 4: # End after recieving the second TickEvent break
def test_detailed_progress(): brm = BaseRunModel(None) brm._run_context = Mock() brm._run_context.get_iter.return_value = 0 run_arg1 = Mock() run_arg1.getQueueIndex.return_value = 0 run_arg2 = Mock() run_arg2.getQueueIndex.return_value = 1 run_arg2.iens = 0 brm._run_context.__iter__ = Mock() brm._run_context.__iter__.return_value = iter([run_arg1, run_arg2]) def job_status(queue_index): if queue_index == 0: return JobStatusType.JOB_QUEUE_PENDING if queue_index == 1: return JobStatusType.JOB_QUEUE_RUNNING brm._job_queue = Mock() brm._job_queue.getJobStatus.side_effect = job_status brm._job_queue.did_job_time_out.return_value = False with patch("ert_shared.models.base_run_model.ForwardModelStatus") as f: f.load.return_value = Mock() f.load.return_value.jobs = [{"name": "job1"}] brm.updateDetailedProgress() jobs, _ = brm.realization_progress[0][0] assert len(jobs) == 1 assert "name" in jobs[0]
def test_detailed_progress(self): # TODO: rewrite to make use of fixtures brm = BaseRunModel(None) brm._run_context = Mock() brm._run_context.get_iter.return_value = 0 run_arg1 = Mock() run_arg1.getQueueIndex.return_value = 0 run_arg2 = Mock() run_arg2.getQueueIndex.return_value = 1 run_arg2.iens = 0 brm._run_context.__iter__ = Mock() brm._run_context.__iter__.return_value = iter([run_arg1, run_arg2]) def job_status(queue_index): if queue_index == 0: return JobStatusType.JOB_QUEUE_PENDING if queue_index == 1: return JobStatusType.JOB_QUEUE_RUNNING brm._job_queue = Mock() brm._job_queue.getJobStatus.side_effect = job_status with patch("ert_shared.models.base_run_model.ForwardModelStatus") as f: f.load.return_value = Mock() f.load.return_value.jobs = [{"name": "job1"}] brm.updateDetailedProgress() jobs, status = brm.realization_progress[0][0] self.assertEqual(len(jobs), 1) self.assertIn("name", jobs[0])
def test_instantiation(self): config_file = self.createTestPath("local/simple_config/minimum_config") with ErtTestContext("kjell", config_file) as work_area: ert = work_area.getErt() brm = BaseRunModel(None, ert, ert.get_queue_config()) assert brm.support_restart
def test_active_realizations(initials, expected): brm = BaseRunModel(None, None, None) brm._initial_realizations_mask = initials assert brm._active_realizations == expected assert brm._ensemble_size == len(initials)
def test_is_forward_model_finished(test_input, expected): assert BaseRunModel.is_forward_model_finished(test_input) is expected