class DataRetrieverServiceTest(PyonTestCase): def setUp(self): mock_clients = self._create_service_mock('data_retriever') self.data_retriever_service = DataRetrieverService() self.data_retriever_service.clients = mock_clients self.mock_rr_create = self.data_retriever_service.clients.resource_registry.create self.mock_rr_create_assoc = self.data_retriever_service.clients.resource_registry.create_association self.mock_rr_read = self.data_retriever_service.clients.resource_registry.read self.mock_rr_update = self.data_retriever_service.clients.resource_registry.update self.mock_rr_delete = self.data_retriever_service.clients.resource_registry.delete self.mock_rr_delete_assoc = self.data_retriever_service.clients.resource_registry.delete_association self.mock_rr_find_assoc = self.data_retriever_service.clients.resource_registry.find_associations self.mock_ps_create_stream = self.data_retriever_service.clients.pubsub_management.create_stream self.mock_ps_create_stream_definition = self.data_retriever_service.clients.pubsub_management.create_stream_definition self.data_retriever_service.container = DotDict({ 'id':'123', 'spawn_process':Mock(), 'proc_manager':DotDict({ 'terminate_process':Mock(), 'procs':[] }), 'datastore_manager':DotDict({ 'get_datastore':Mock() }) }) self.datastore = DotDict({ 'query_view':Mock() }) self.data_retriever_service.container.datastore_manager.get_datastore.return_value = self.datastore self.mock_cc_spawn = self.data_retriever_service.container.spawn_process self.mock_cc_terminate = self.data_retriever_service.container.proc_manager.terminate_process self.mock_pd_schedule = self.data_retriever_service.clients.process_dispatcher.schedule_process self.mock_pd_cancel = self.data_retriever_service.clients.process_dispatcher.cancel_process self.mock_ds_read = self.data_retriever_service.clients.dataset_management.read_dataset self.data_retriever_service.process_definition = ProcessDefinition() self.data_retriever_service.process_definition.executable['module'] = 'ion.processes.data.replay_process' self.data_retriever_service.process_definition.executable['class'] = 'ReplayProcess' self.data_retriever_service.process_definition_id = 'mock_procdef_id' @unittest.skip('Can we mock the datastore manager?') def test_define_replay(self): #mocks self.mock_ps_create_stream.return_value = '12345' self.mock_rr_create.return_value = ('replay_id','garbage') self.mock_ds_read.return_value = DotDict({ 'datastore_name':'unittest', 'view_name':'garbage', 'primary_view_key':'primary key'}) document = DotDict({'stream_resource_id':'0'}) self.mock_pd_schedule.return_value = 'process_id' self.datastore.query_view.return_value = [{'doc':document}] config = {'process':{ 'query':'myquery', 'datastore_name':'unittest', 'view_name':'garbage', 'key_id':'primary key', 'delivery_format':None, 'publish_streams':{'output':'12345'} }} # execution r,s = self.data_retriever_service.define_replay(dataset_id='dataset_id', query='myquery') # assertions self.assertTrue(self.mock_ps_create_stream_definition.called) self.assertTrue(self.mock_ps_create_stream.called) self.assertTrue(self.mock_rr_create.called) self.mock_rr_create_assoc.assert_called_with('replay_id',PRED.hasStream,'12345',None) self.assertTrue(self.mock_pd_schedule.called) self.assertTrue(self.mock_rr_update.called) self.assertEquals(r,'replay_id') self.assertEquals(s,'12345') def test_define_replay_no_data(self): #mocks self.mock_ps_create_stream.return_value = '12345' self.mock_rr_create.return_value = ('replay_id','garbage') self.mock_ds_read.return_value = DotDict({ 'datastore_name':'unittest', 'view_name':'garbage', 'primary_view_key':'primary key'}) document = DotDict({'stream_resource_id':'0'}) self.mock_pd_schedule.return_value = 'process_id' self.datastore.query_view.return_value = [] # Raises index error config = {'process':{ 'query':'myquery', 'datastore_name':'unittest', 'view_name':'garbage', 'key_id':'primary key', 'delivery_format':None, 'publish_streams':{'output':'12345'} }} with self.assertRaises(NotFound): self.data_retriever_service.define_replay(dataset_id='dataset_id', query='myquery') @unittest.skip('Can\'t do unit test here') def test_start_replay(self): pass def test_cancel_replay(self): #mocks self.mock_rr_find_assoc.return_value = [1,2,3] replay = Replay() replay.process_id = '1' self.mock_rr_read.return_value = replay #execution self.data_retriever_service.cancel_replay('replay_id') #assertions self.assertEquals(self.mock_rr_delete_assoc.call_count,3) self.mock_rr_delete.assert_called_with('replay_id') self.mock_pd_cancel.assert_called_with('1')
class DataRetrieverServiceTest(PyonTestCase): def setUp(self): mock_clients = self._create_service_mock('data_retriever') self.data_retriever_service = DataRetrieverService() self.data_retriever_service.clients = mock_clients self.mock_rr_create = self.data_retriever_service.clients.resource_registry.create self.mock_rr_create_assoc = self.data_retriever_service.clients.resource_registry.create_association self.mock_rr_read = self.data_retriever_service.clients.resource_registry.read self.mock_rr_update = self.data_retriever_service.clients.resource_registry.update self.mock_rr_delete = self.data_retriever_service.clients.resource_registry.delete self.mock_rr_delete_assoc = self.data_retriever_service.clients.resource_registry.delete_association self.mock_rr_find_assoc = self.data_retriever_service.clients.resource_registry.find_associations self.mock_ps_create_stream = self.data_retriever_service.clients.pubsub_management.create_stream self.mock_ps_create_stream_definition = self.data_retriever_service.clients.pubsub_management.create_stream_definition self.data_retriever_service.container = DotDict({ 'id': '123', 'spawn_process': Mock(), 'proc_manager': DotDict({ 'terminate_process': Mock(), 'procs': [] }), 'datastore_manager': DotDict({'get_datastore': Mock()}) }) self.datastore = DotDict({'query_view': Mock()}) self.data_retriever_service.container.datastore_manager.get_datastore.return_value = self.datastore self.mock_cc_spawn = self.data_retriever_service.container.spawn_process self.mock_cc_terminate = self.data_retriever_service.container.proc_manager.terminate_process self.mock_pd_schedule = self.data_retriever_service.clients.process_dispatcher.schedule_process self.mock_pd_cancel = self.data_retriever_service.clients.process_dispatcher.cancel_process self.mock_ds_read = self.data_retriever_service.clients.dataset_management.read_dataset self.data_retriever_service.process_definition = ProcessDefinition() self.data_retriever_service.process_definition.executable[ 'module'] = 'ion.processes.data.replay_process' self.data_retriever_service.process_definition.executable[ 'class'] = 'ReplayProcess' self.data_retriever_service.process_definition_id = 'mock_procdef_id' @unittest.skip('Can we mock the datastore manager?') def test_define_replay(self): #mocks self.mock_ps_create_stream.return_value = '12345' self.mock_rr_create.return_value = ('replay_id', 'garbage') self.mock_ds_read.return_value = DotDict({ 'datastore_name': 'unittest', 'view_name': 'garbage', 'primary_view_key': 'primary key' }) document = DotDict({'stream_resource_id': '0'}) self.mock_pd_schedule.return_value = 'process_id' self.datastore.query_view.return_value = [{'doc': document}] config = { 'process': { 'query': 'myquery', 'datastore_name': 'unittest', 'view_name': 'garbage', 'key_id': 'primary key', 'delivery_format': None, 'publish_streams': { 'output': '12345' } } } # execution r, s = self.data_retriever_service.define_replay( dataset_id='dataset_id', query='myquery') # assertions self.assertTrue(self.mock_ps_create_stream_definition.called) self.assertTrue(self.mock_ps_create_stream.called) self.assertTrue(self.mock_rr_create.called) self.mock_rr_create_assoc.assert_called_with('replay_id', PRED.hasStream, '12345', None) self.assertTrue(self.mock_pd_schedule.called) self.assertTrue(self.mock_rr_update.called) self.assertEquals(r, 'replay_id') self.assertEquals(s, '12345') def test_define_replay_no_data(self): #mocks self.mock_ps_create_stream.return_value = '12345' self.mock_rr_create.return_value = ('replay_id', 'garbage') self.mock_ds_read.return_value = DotDict({ 'datastore_name': 'unittest', 'view_name': 'garbage', 'primary_view_key': 'primary key' }) document = DotDict({'stream_resource_id': '0'}) self.mock_pd_schedule.return_value = 'process_id' self.datastore.query_view.return_value = [] # Raises index error config = { 'process': { 'query': 'myquery', 'datastore_name': 'unittest', 'view_name': 'garbage', 'key_id': 'primary key', 'delivery_format': None, 'publish_streams': { 'output': '12345' } } } with self.assertRaises(NotFound): self.data_retriever_service.define_replay(dataset_id='dataset_id', query='myquery') @unittest.skip('Can\'t do unit test here') def test_start_replay(self): pass def test_cancel_replay(self): #mocks self.mock_rr_find_assoc.return_value = [1, 2, 3] replay = Replay() replay.process_id = '1' self.mock_rr_read.return_value = replay #execution self.data_retriever_service.cancel_replay('replay_id') #assertions self.assertEquals(self.mock_rr_delete_assoc.call_count, 3) self.mock_rr_delete.assert_called_with('replay_id') self.mock_pd_cancel.assert_called_with('1')