def test_qc_attachment(self): instrument_device = InstrumentDevice(name='whatever') instrument_device_id,_ = self.rrclient.create(instrument_device) self.addCleanup(self.rrclient.delete, instrument_device_id) self.client.register_instrument(instrument_device_id) self.addCleanup(self.client.unregister_instrument, instrument_device_id) dp = DataProduct(name='instrument output') dp_id,_ = self.rrclient.create(dp) self.addCleanup(self.rrclient.delete, dp_id) parser_id = self.make_grt_parser() attachment = Attachment(name='qc ref', attachment_type=AttachmentType.REFERENCE,content=global_range_test_document, context=ReferenceAttachmentContext(parser_id=parser_id)) att_id = self.rrclient.create_attachment(dp_id, attachment) self.addCleanup(self.rrclient.delete_attachment, att_id) attachment2 = Attachment(name='qc ref2', attachment_type=AttachmentType.REFERENCE, content=global_range_test_document2, context=ReferenceAttachmentContext(parser_id=parser_id)) att2_id = self.rrclient.create_attachment(dp_id, attachment2) self.addCleanup(self.rrclient.delete_attachment, att2_id) self.client.assign_data_product(instrument_device_id, dp_id) self.addCleanup(self.client.unassign_data_product, instrument_device_id, dp_id) svm = StoredValueManager(self.container) doc = svm.read_value('grt_CE01ISSM-MF005-01-CTDBPC999_TEMPWAT') np.testing.assert_array_almost_equal(doc['grt_min_value'], -2.)
def test_search_by_name(self): inst_dev = InstrumentDevice(name='test_dev',serial_number='ABC123') dev_id, _ = self.rr.create(inst_dev) self.discovery.create_view('devs',fields=['name','serial_number']) search_string = "search 'serial_number' is 'abc*' from 'devs'" results = self.poll(9, self.discovery.parse,search_string) self.assertIsNotNone(results, 'Results not found') self.assertTrue(results[0]['_id'] == dev_id)
def test_basic_searching(self): #- - - - - - - - - - - - - - - - - # set up the fake resources #- - - - - - - - - - - - - - - - - instrument_pool = [ InstrumentDevice(name='sonobuoy1', hardware_version='1'), InstrumentDevice(name='sonobuoy2', hardware_version='2'), InstrumentDevice(name='sonobuoy3', hardware_version='3') ] for instrument in instrument_pool: self.rr.create(instrument) view_id = self.discovery.create_view('devices', fields=['hardware_version']) search_string = "search 'hardware_version' is '2' from '%s'"%view_id results = self.poll(5, self.discovery.parse,search_string) result = results[0]['_source'] self.assertIsInstance(result, InstrumentDevice) self.assertTrue(result.name == 'sonobuoy2') self.assertTrue(result.hardware_version == '2')
def test_search_by_name_index(self): inst_dev = InstrumentDevice(name='test_dev',serial_number='ABC123') dev_id, _ = self.rr.create(inst_dev) search_string = "search 'serial_number' is 'abc*' from 'resources_index'" results = self.poll(9, self.discovery.parse,search_string) self.assertIsNotNone(results, 'Results not found') self.assertTrue(results[0]['_id'] == dev_id) bank_acc = BankAccount(name='blah', cash_balance=10) res_id , _ = self.rr.create(bank_acc) search_string = "search 'cash_balance' values from 0 to 100 from 'resources_index'" results = self.poll(9, self.discovery.parse,search_string) self.assertIsNotNone(results, 'Results not found') self.assertTrue(results[0]['_id'] == res_id)
def create_device_site_deployment(self, dep_name="Deployment", starting=''): from interface.objects import StreamConfiguration, StreamConfigurationType, InstrumentDevice from interface.objects import InstrumentModel, PlatformAgent, InstrumentSite, TemporalBounds, Deployment from interface.objects import RemotePlatformDeploymentContext stream_conf = StreamConfiguration( stream_name="CTD 1 Parsed Stream", parameter_dictionary_name='ctd_parsed_param_dict', stream_type=StreamConfigurationType.PARSED) pdict_id = self.dataset_management.read_parameter_dictionary_by_name( name='ctd_parsed_param_dict') stream_def_id = self.create_stream_definition( name='CTD 1', parameter_dictionary_id=pdict_id) data_product_id = self.create_data_product( name="DDP_1", stream_def_id=stream_def_id, stream_configuration=stream_conf) self.activate_data_product(data_product_id) dataset_id = self.RR2.find_dataset_id_of_data_product_using_has_dataset( data_product_id) stream_def = self.resource_registry.find_objects( data_product_id, PRED.hasStreamDefinition)[0][0] param_dict = self.resource_registry.find_objects( stream_def._id, PRED.hasParameterDictionary)[0][0] # Add data to the DataProduct dataset_monitor = DatasetMonitor(dataset_id) self.addCleanup(dataset_monitor.stop) rdt = self.ph.get_rdt(stream_def._id) rdt_ = self.ph.rdt_for_data_product(data_product_id) self.assertEquals(rdt.fields, rdt_.fields) rdt['time'] = [0, 1, 2, 3] rdt['temp'] = [10, 11, 12, 13] self.ph.publish_rdt_to_data_product(data_product_id, rdt) self.assertTrue(dataset_monitor.wait()) # Create Device device = InstrumentDevice(name='Device 1') device_id = self.instrument_management.create_instrument_device(device) self.data_acquisition_management.register_instrument(device_id) self.data_acquisition_management.assign_data_product( device_id, data_product_id) # Create Model model = InstrumentModel(name='Model 1') model_id = self.instrument_management.create_instrument_model(model) self.instrument_management.assign_instrument_model_to_instrument_device( model_id, device_id) # Create AgentDefinition ad = PlatformAgent(stream_configurations=[stream_conf]) ad_id, _ = self.resource_registry.create(ad) # Create Site site = InstrumentSite(name='Site 1', stream_configurations=[stream_conf]) site_id, _ = self.resource_registry.create(site) self.resource_registry.create_association(site_id, PRED.hasModel, model_id) self.resource_registry.create_association(site_id, PRED.hasAgentDefinition, ad_id) # TemporalBounds of the Deployment temp_bounds = TemporalBounds(start_datetime=starting, end_datetime='') # Create Deployment deployment = Deployment(name=dep_name, type="RemotePlatform", context=RemotePlatformDeploymentContext(), constraint_list=[temp_bounds]) deployment_id = self.observatory_management.create_deployment( deployment=deployment, site_id=site_id, device_id=device_id) return site_id, device_id, dataset_id, deployment_id, param_dict, data_product_id
def on_init(self): res_obj = InstrumentDevice(name="resource2") rid,_ = self.clients.resource_registry.create(res_obj) agent_resources[self.id] = rid self.resource_id = rid agent_instances[self._proc_name] = self.id