def retrieve(self, dataset_id='', query=None, delivery_format=None, module='', cls='', kwargs=None): if query is None: query = {} if delivery_format is None: delivery_format = {} validate_is_instance(query,dict,'Query was improperly formatted.') validate_true(dataset_id, 'No dataset provided') replay_instance = ReplayProcess() replay_instance.dataset = self.clients.dataset_management.read_dataset(dataset_id) replay_instance.dataset_id = dataset_id replay_instance.start_time = query.get('start_time', None) replay_instance.end_time = query.get('end_time', None) replay_instance.parameters = query.get('parameters',None) replay_instance.container = self.container retrieve_data = replay_instance.execute_retrieve() if module and cls: return self._transform_data(retrieve_data, module, cls, kwargs or {}) return retrieve_data
def retrieve(self, dataset_id="", query=None, delivery_format=None, module="", cls="", kwargs=None): """ Retrieves a dataset. @param dataset_id Dataset identifier @param query Query parameters (start_time, end_time, stride_time, parameters) @param delivery_format The stream definition identifier for the outgoing granule (stream_defintinition_id) @param module Module to chain a transform into @param cls Class of the transform @param kwargs Keyword Arguments to pass into the transform. """ if query is None: query = {} if delivery_format is None: delivery_format = {} validate_is_instance(query, dict, "Query was improperly formatted.") validate_true(dataset_id, "No dataset provided") replay_instance = ReplayProcess() replay_instance.dataset = self.clients.dataset_management.read_dataset(dataset_id) replay_instance.dataset_id = dataset_id replay_instance.start_time = query.get("start_time", None) replay_instance.end_time = query.get("end_time", None) replay_instance.stride_time = query.get("stride_time", None) replay_instance.parameters = query.get("parameters", None) replay_instance.tdoa = query.get("tdoa", None) replay_instance.stream_def_id = delivery_format replay_instance.container = self.container if replay_instance.tdoa is not None: validate_is_instance(replay_instance.tdoa, slice) retrieve_data = replay_instance.execute_retrieve() if module and cls: return self._transform_data(retrieve_data, module, cls, kwargs or {}) return retrieve_data
class ReplayProcessUnitTest(PyonTestCase): def setUp(self): self.replay = ReplayProcess() self.replay.dataset_id = 'dataset' self.replay.dataset = DotDict() self.replay.dataset.datastore_name='datasets' self.replay.dataset.primary_view_key = 'stream_id' self.replay.deliver_format = {} self.replay.start_time = None self.replay.end_time = None self.replay.output = DotDict() self.replay.output.publish = Mock() @patch('ion.processes.data.replay.replay_process.DatasetManagementService') @patch('ion.processes.data.replay.replay_process.CoverageCraft') def test_execute_retrieve(self,mock_bb, mock_dsm): mock_dsm._get_coverage = Mock() mock_bb.sync_rdt_with_coverage = Mock() mock_bb().to_granule = Mock() mock_bb().to_granule.return_value = {'test':1} self.replay.start_time = 0 self.replay.end_time = 0 self.replay.parameters = None retval = self.replay.execute_retrieve() self.assertEquals(retval,{'test':1}) @patch('ion.processes.data.replay.replay_process.gevent') def test_execute_replay(self,mock_gevent): mock_gevent.spawn = Mock() self.replay.publishing = DotDict() self.replay.publishing.is_set = Mock() self.replay.publishing.return_value = False retval = self.replay.execute_replay self.assertTrue(retval) def test_replay(self): self.replay.publishing = DotDict() self.replay.publishing.set = Mock() self.replay.publishing['clear'] = Mock() self.replay.execute_retrieve = Mock() self.replay.execute_retrieve.return_value = {'test':True} self.replay.output = DotDict() self.replay.output.publish = Mock() retval = self.replay.replay() self.assertTrue(retval) @patch('ion.processes.data.replay.replay_process.DatasetManagementService') @patch('ion.processes.data.replay.replay_process.DatasetManagementServiceClient') @patch('ion.processes.data.replay.replay_process.CoverageCraft') def test_get_last_granule(self, mock_bb, dsm_cli, dsm): mock_bb().sync_rdt_with_coverage = Mock() mock_bb().to_granule.return_value = {'test':True} dsm_cli().read_dataset = Mock() dataset = DotDict() dataset.datastore_name = 'test' dataset.view_name = 'bogus/view' dsm._get_coverage = Mock() dsm._get_coverage.return_value = {} datastore = DotDict() datastore.query_view = Mock() datastore.query_view.return_value = [{'doc':{'ts_create':0}}] container = DotDict() container.datastore_manager.get_datastore = Mock() container.datastore_manager.get_datastore.return_value = datastore retval = self.replay.get_last_granule(container,'dataset_id') self.assertEquals(retval,{'test':True}) @patch('ion.processes.data.replay.replay_process.DatasetManagementService') @patch('ion.processes.data.replay.replay_process.CoverageCraft') def test_get_last_values(self, craft, dsm): dsm._get_coverage = Mock() craft().sync_rdt_with_coverage = Mock() craft().to_granule = Mock() craft().to_granule.return_value = {'test':True} retval = self.replay.get_last_values('dataset_id') self.assertEquals(retval,{'test':True})