def __init__(self, working_directory, output_directory, dry_run=False, debug=False): self.dry_run = dry_run logger.info("Input directory set to: %s" % working_directory) logger.info("Output directory set to: %s" % output_directory) working_context = context.get_context(working_directory) output_context = context.get_context(output_directory) if dry_run and working_context.is_remote(): sys.stdout.write("A dry run can only be done on local files.\n") sys.exit(0) if output_context.is_remote(): sys.stdout.write("The output directory must be local.\n") sys.exit(0) image_manager = self._create_image_manager() progress_manager = working_context.get_progress_manager() builder = self._create_workunit_builder(working_context, output_context, progress_manager) workunit_provider = WorkUnitProvider(self.input_suffix, working_context, progress_manager, builder, randomize=self.should_randomize_workunits) prefetching_workunit_provider = PreFetchingWorkUnitProvider(workunit_provider, config.read("PREFETCH.NUMBER"), image_manager) if working_context.is_remote(): synchronization_manager = SynchronizationManager(working_context) else: synchronization_manager = None model = TransAckValidationModel(prefetching_workunit_provider, image_manager, synchronization_manager) logger.debug("Created model.") view = self._create_view(model, debug=debug) logger.debug("Created view.") model.start_work() self.model = model self.view = view self.controller = view.controller self.controller.display_current_image() if not synchronization_manager: self.view.disable_sync_menu() self.view.show()
def setUp(self): events.unsub_all() self.workunit_provider = Mock(spec=PreFetchingWorkUnitProvider) self.image_manager = Mock(spec=ImageManager) self.synchronization_manager = Mock(spec=SynchronizationManager) self.model = TransAckValidationModel(self.workunit_provider, self.image_manager, self.synchronization_manager) self.data = AstromParser().parse( self.get_abs_path( "data/model_testdir_1/1584431p15.measure3.reals.astrom")) self.output_context = Mock(spec=LocalDirectoryWorkingContext) self.progress_manager = MagicMock(spec=LocalProgressManager) self.sources = self.data.get_sources()
def setUp(self): events.unsub_all() self.workunit_provider = Mock(spec=PreFetchingWorkUnitProvider) self.image_manager = Mock(spec=ImageManager) self.synchronization_manager = Mock(spec=SynchronizationManager) self.model = TransAckValidationModel(self.workunit_provider, self.image_manager, self.synchronization_manager) self.data = AstromParser().parse( self.get_abs_path("data/model_testdir_1/1584431p15.measure3.reals.astrom")) self.output_context = Mock(spec=LocalDirectoryWorkingContext) self.progress_manager = MagicMock(spec=LocalProgressManager) self.sources = self.data.get_sources()
class TransitionAcknowledgementModelTest(FileReadingTestCase): def setUp(self): events.unsub_all() self.workunit_provider = Mock(spec=PreFetchingWorkUnitProvider) self.image_manager = Mock(spec=ImageManager) self.synchronization_manager = Mock(spec=SynchronizationManager) self.model = TransAckValidationModel(self.workunit_provider, self.image_manager, self.synchronization_manager) self.data = AstromParser().parse( self.get_abs_path( "data/model_testdir_1/1584431p15.measure3.reals.astrom")) self.output_context = Mock(spec=LocalDirectoryWorkingContext) self.progress_manager = MagicMock(spec=LocalProgressManager) self.sources = self.data.get_sources() def use_reals_workunit(self): self.workunit = RealsWorkUnit("file", self.data, self.progress_manager, self.output_context) self.model.add_workunit(self.workunit) assert_that(self.model.get_current_reading(), equal_to(self.sources[0].get_reading(0))) def use_cands_workunit(self): self.workunit = CandidatesWorkUnit("file", self.data, self.progress_manager, self.output_context) self.workunit.get_writer = Mock() self.model.add_workunit(self.workunit) assert_that(self.model.get_current_reading(), equal_to(self.sources[0].get_reading(0))) def test_ignores_change_observations_while_transitioning_observations( self): self.use_reals_workunit() first_reading = self.sources[0].get_reading(0) second_reading = self.sources[0].get_reading(1) third_reading = self.sources[0].get_reading(2) assert_that(self.model.get_current_reading(), equal_to(first_reading)) # This should cause the model to enter the waiting state. self.model.next_obs() assert_that(self.model.get_current_reading(), equal_to(second_reading)) self.model.next_obs() assert_that(self.model.get_current_reading(), equal_to(second_reading)) self.model.previous_obs() assert_that(self.model.get_current_reading(), equal_to(second_reading)) self.model.acknowledge_image_displayed() self.model.next_obs() assert_that(self.model.get_current_reading(), equal_to(third_reading)) def test_ignores_change_sources_while_transitioning_sources(self): self.use_reals_workunit() first_source = self.sources[0] second_source = self.sources[1] third_source = self.sources[2] assert_that(self.model.get_current_source(), equal_to(first_source)) # This should cause the model to enter the waiting state. self.model.next_source() assert_that(self.model.get_current_source(), equal_to(second_source)) self.model.next_source() assert_that(self.model.get_current_source(), equal_to(second_source)) self.model.previous_source() assert_that(self.model.get_current_source(), equal_to(second_source)) self.model.acknowledge_image_displayed() self.model.next_source() assert_that(self.model.get_current_source(), equal_to(third_source)) def test_ignores_next_item_while_transitioning_items(self): self.use_cands_workunit() first_source = self.sources[0] second_source = self.sources[1] third_source = self.sources[2] assert_that(self.model.get_current_source(), equal_to(first_source)) # This should cause the model to enter the waiting state. self.model.next_item() assert_that(self.model.get_current_source(), equal_to(second_source)) self.model.next_item() assert_that(self.model.get_current_source(), equal_to(second_source)) self.model.acknowledge_image_displayed() self.model.next_item() assert_that(self.model.get_current_source(), equal_to(third_source)) def test_reals_ignores_accept_while_transitioning_observations(self): self.use_reals_workunit() first_reading = self.sources[0].get_reading(0) second_reading = self.sources[0].get_reading(1) assert_that(self.model.get_current_reading(), equal_to(first_reading)) # This should cause the model to enter the waiting state. self.model.next_obs() assert_that(self.model.get_current_reading(), equal_to(second_reading)) assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.accept_current_item() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.acknowledge_image_displayed() self.model.accept_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) def test_reals_ignores_reject_while_transitioning_observations(self): self.use_reals_workunit() first_reading = self.sources[0].get_reading(0) second_reading = self.sources[0].get_reading(1) assert_that(self.model.get_current_reading(), equal_to(first_reading)) # This should cause the model to enter the waiting state. self.model.next_obs() assert_that(self.model.get_current_reading(), equal_to(second_reading)) assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.reject_current_item() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.acknowledge_image_displayed() self.model.reject_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) def test_cands_allow_accept_while_transitioning_observations(self): self.use_cands_workunit() self.model.next_obs() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.accept_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) def test_cands_allow_reject_while_transitioning_observations(self): self.use_cands_workunit() self.model.next_obs() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.reject_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) def test_cands_ignore_accept_while_transitioning_sources(self): self.use_cands_workunit() # This should cause the model to enter the waiting state. self.model.next_source() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.accept_current_item() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.acknowledge_image_displayed() self.model.accept_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) def test_cands_ignore_reject_while_transitioning_sources(self): self.use_cands_workunit() # This should cause the model to enter the waiting state. self.model.next_source() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.reject_current_item() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.acknowledge_image_displayed() self.model.reject_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) @patch("daomop.gui.models.validation.events") def test_additional_change_image_events_not_sent_when_waiting( self, events_mock): self.use_reals_workunit() # This should cause the model to enter the waiting state. self.model.next_item() assert_that(events_mock.send.call_count, equal_to(1)) self.model.next_item() assert_that(events_mock.send.call_count, equal_to(1)) self.model.acknowledge_image_displayed() self.model.next_item() assert_that(events_mock.send.call_count, equal_to(2))
class TransitionAcknowledgementModelTest(FileReadingTestCase): def setUp(self): events.unsub_all() self.workunit_provider = Mock(spec=PreFetchingWorkUnitProvider) self.image_manager = Mock(spec=ImageManager) self.synchronization_manager = Mock(spec=SynchronizationManager) self.model = TransAckValidationModel(self.workunit_provider, self.image_manager, self.synchronization_manager) self.data = AstromParser().parse( self.get_abs_path("data/model_testdir_1/1584431p15.measure3.reals.astrom")) self.output_context = Mock(spec=LocalDirectoryWorkingContext) self.progress_manager = MagicMock(spec=LocalProgressManager) self.sources = self.data.get_sources() def use_reals_workunit(self): self.workunit = RealsWorkUnit("file", self.data, self.progress_manager, self.output_context) self.model.add_workunit(self.workunit) assert_that(self.model.get_current_reading(), equal_to(self.sources[0].get_reading(0))) def use_cands_workunit(self): self.workunit = CandidatesWorkUnit("file", self.data, self.progress_manager, self.output_context) self.workunit.get_writer = Mock() self.model.add_workunit(self.workunit) assert_that(self.model.get_current_reading(), equal_to(self.sources[0].get_reading(0))) def test_ignores_change_observations_while_transitioning_observations(self): self.use_reals_workunit() first_reading = self.sources[0].get_reading(0) second_reading = self.sources[0].get_reading(1) third_reading = self.sources[0].get_reading(2) assert_that(self.model.get_current_reading(), equal_to(first_reading)) # This should cause the model to enter the waiting state. self.model.next_obs() assert_that(self.model.get_current_reading(), equal_to(second_reading)) self.model.next_obs() assert_that(self.model.get_current_reading(), equal_to(second_reading)) self.model.previous_obs() assert_that(self.model.get_current_reading(), equal_to(second_reading)) self.model.acknowledge_image_displayed() self.model.next_obs() assert_that(self.model.get_current_reading(), equal_to(third_reading)) def test_ignores_change_sources_while_transitioning_sources(self): self.use_reals_workunit() first_source = self.sources[0] second_source = self.sources[1] third_source = self.sources[2] assert_that(self.model.get_current_source(), equal_to(first_source)) # This should cause the model to enter the waiting state. self.model.next_source() assert_that(self.model.get_current_source(), equal_to(second_source)) self.model.next_source() assert_that(self.model.get_current_source(), equal_to(second_source)) self.model.previous_source() assert_that(self.model.get_current_source(), equal_to(second_source)) self.model.acknowledge_image_displayed() self.model.next_source() assert_that(self.model.get_current_source(), equal_to(third_source)) def test_ignores_next_item_while_transitioning_items(self): self.use_cands_workunit() first_source = self.sources[0] second_source = self.sources[1] third_source = self.sources[2] assert_that(self.model.get_current_source(), equal_to(first_source)) # This should cause the model to enter the waiting state. self.model.next_item() assert_that(self.model.get_current_source(), equal_to(second_source)) self.model.next_item() assert_that(self.model.get_current_source(), equal_to(second_source)) self.model.acknowledge_image_displayed() self.model.next_item() assert_that(self.model.get_current_source(), equal_to(third_source)) def test_reals_ignores_accept_while_transitioning_observations(self): self.use_reals_workunit() first_reading = self.sources[0].get_reading(0) second_reading = self.sources[0].get_reading(1) assert_that(self.model.get_current_reading(), equal_to(first_reading)) # This should cause the model to enter the waiting state. self.model.next_obs() assert_that(self.model.get_current_reading(), equal_to(second_reading)) assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.accept_current_item() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.acknowledge_image_displayed() self.model.accept_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) def test_reals_ignores_reject_while_transitioning_observations(self): self.use_reals_workunit() first_reading = self.sources[0].get_reading(0) second_reading = self.sources[0].get_reading(1) assert_that(self.model.get_current_reading(), equal_to(first_reading)) # This should cause the model to enter the waiting state. self.model.next_obs() assert_that(self.model.get_current_reading(), equal_to(second_reading)) assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.reject_current_item() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.acknowledge_image_displayed() self.model.reject_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) def test_cands_allow_accept_while_transitioning_observations(self): self.use_cands_workunit() self.model.next_obs() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.accept_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) def test_cands_allow_reject_while_transitioning_observations(self): self.use_cands_workunit() self.model.next_obs() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.reject_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) def test_cands_ignore_accept_while_transitioning_sources(self): self.use_cands_workunit() # This should cause the model to enter the waiting state. self.model.next_source() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.accept_current_item() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.acknowledge_image_displayed() self.model.accept_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) def test_cands_ignore_reject_while_transitioning_sources(self): self.use_cands_workunit() # This should cause the model to enter the waiting state. self.model.next_source() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.reject_current_item() assert_that(self.model.get_num_items_processed(), equal_to(0)) self.model.acknowledge_image_displayed() self.model.reject_current_item() assert_that(self.model.get_num_items_processed(), equal_to(1)) @patch("ossos.gui.models.validation.events") def test_additional_change_image_events_not_sent_when_waiting(self, events_mock): self.use_reals_workunit() # This should cause the model to enter the waiting state. self.model.next_item() assert_that(events_mock.send.call_count, equal_to(1)) self.model.next_item() assert_that(events_mock.send.call_count, equal_to(1)) self.model.acknowledge_image_displayed() self.model.next_item() assert_that(events_mock.send.call_count, equal_to(2))
def __init__(self, working_directory, output_directory, dry_run=False, debug=False, name_filter=None, user_id=None): self.dry_run = dry_run self.user_id = user_id logger.info("Input directory set to: %s" % working_directory) logger.info("Output directory set to: %s" % output_directory) working_context = context.get_context(working_directory, userid=self.user_id) output_context = context.get_context(output_directory, userid=self.user_id) if dry_run and working_context.is_remote(): sys.stdout.write("A dry run can only be done on local files.\n") sys.exit(0) if output_context.is_remote(): sys.stdout.write("The output directory must be local.\n") sys.exit(0) image_manager = self._create_image_manager() progress_manager = working_context.get_progress_manager() builder = self._create_workunit_builder(working_context, output_context, progress_manager) workunit_provider = WorkUnitProvider( self.input_suffix, working_context, progress_manager, builder, randomize=self.should_randomize_workunits, name_filter=name_filter) prefetching_workunit_provider = PreFetchingWorkUnitProvider( workunit_provider, config.read("PREFETCH.NUMBER"), image_manager) if working_context.is_remote(): synchronization_manager = SynchronizationManager(working_context, sync_enabled=True) else: synchronization_manager = None model = TransAckValidationModel(prefetching_workunit_provider, image_manager, synchronization_manager) logger.debug("Created model.") view = self._create_view(model, debug=debug) logger.debug("Created view.") model.start_work() self.model = model self.view = view self.controller = view.controller self.controller.display_current_image() if not synchronization_manager: self.view.disable_sync_menu() self.view.show()