def setUp(self): self.mock_ionobj = self._create_IonObject_mock(mockDataProcessObj) self.mock_clients = self._create_service_mock( 'data_process_management') self.data_process_mgmt_service = DataProcessManagementService() self.data_process_mgmt_service.clients = self.mock_clients self.data_process_mgmt_service.on_init() # Create a data process definition self.data_process_def_name = "TestDataProcessDef_X" self.data_process_def_obj = IonObject(RT.DataProcessDefinition, name=self.data_process_def_name) # Define some variables for use in the tests self.in_product_A = "ID4INprodA" self.in_product_B = "ID4INprodB" self.out_product_A = "ID4OUTprodA" self.out_product_B = "ID4OUTprodB" self.data_proc_def_id = "ID4procDef" self.data_prod_id = "ID4producer" self.subscription_id = "ID4subscription" self.stream_id = "ID4stream" self.data_process_name = "process_" + self.data_process_def_name \ + " - calculates " + \ self.out_product_A + time.ctime() self.data_process_object = IonObject(RT.DataProcess, name=self.data_process_name) self.data_process_id = "ID4process" self.transform_id = "ID4transform"
def setUp(self): self.mock_ionobj = self._create_IonObject_mock(mockDataProcessObj) self.mock_clients = self._create_service_mock("data_process_management") self.data_process_mgmt_service = DataProcessManagementService() self.data_process_mgmt_service.clients = self.mock_clients self.data_process_mgmt_service.on_init() # Create a data process definition self.data_process_def_name = "TestDataProcessDef_X" self.data_process_def_obj = IonObject(RT.DataProcessDefinition, name=self.data_process_def_name) # Define some variables for use in the tests self.in_product_A = "ID4INprodA" self.in_product_B = "ID4INprodB" self.out_product_A = "ID4OUTprodA" self.out_product_B = "ID4OUTprodB" self.data_proc_def_id = "ID4procDef" self.data_prod_id = "ID4producer" self.subscription_id = "ID4subscription" self.stream_id = "ID4stream" self.data_process_name = ( "process_" + self.data_process_def_name + " - calculates " + self.out_product_A + time.ctime() ) self.data_process_object = IonObject(RT.DataProcess, name=self.data_process_name) self.data_process_id = "ID4process" self.transform_id = "ID4transform"
def setUp(self): self.mock_ionobj = self._create_IonObject_mock('ion.services.sa.process.data_process_management_service.IonObject') #self.mock_ionobj = IonObject self.mock_clients = self._create_service_mock('data_process_management') self.RR = self.mock_clients.resource_registry self.DPMS = DataProcessManagementService() self.DPMS.clients = self.mock_clients # must call this manually self.DPMS.on_init() self.DPMS.module_uploader = RegisterModulePreparerPy(dest_user="******", dest_host="my_host", dest_path="/my/remote/wwwroot/my/path", dest_wwwprefix="http://my_host/my/path") self.addCleanup(delattr, self, "DPMS") self.addCleanup(delattr, self, "mock_ionobj")
class TestRegisterProcessDefinition(PyonTestCase): def setUp(self): self.mock_ionobj = self._create_IonObject_mock('ion.services.sa.process.data_process_management_service.IonObject') #self.mock_ionobj = IonObject self.mock_clients = self._create_service_mock('data_process_management') self.RR = self.mock_clients.resource_registry self.DPMS = DataProcessManagementService() self.DPMS.clients = self.mock_clients # must call this manually self.DPMS.on_init() self.DPMS.module_uploader = RegisterModulePreparerPy(dest_user="******", dest_host="my_host", dest_path="/my/remote/wwwroot/my/path", dest_wwwprefix="http://my_host/my/path") self.addCleanup(delattr, self, "DPMS") self.addCleanup(delattr, self, "mock_ionobj") #self.resource_impl_cleanup() #def resource_impl_cleanup(self): #pass def _mock_uploader_modules(self, emulate_success): self.mock_dict = {} popen_mock = Mock() popen_mock.communicate.return_value = ("scp_out dump", "scp_err dump") if emulate_success: popen_mock.returncode = 0 else: popen_mock.returncode = 1 subprocess_mock = Mock() subprocess_mock.Popen.return_value = popen_mock subprocess_mock.PIPE = "MYPIPE" tempfile_mock = Mock() tempfile_mock.mkstemp.return_value = ("my_handle", "my_tempfile_name") self.mock_dict["tempfile"] = tempfile_mock self.mock_dict["subprocess"] = subprocess_mock self.mock_dict["os"] = Mock() self.DPMS.module_uploader.modules = self.mock_dict def test_register_data_process_definition_unit(self): # setup self.DPMS.get_unique_id = (lambda: "my_uuid") print "Willing mock with bad py file" self._mock_uploader_modules(True) self.assertRaises(BadRequest, self.DPMS.register_data_process_definition, BASE64_BADPYFILE) print "Unwilling mock with good py file" self._mock_uploader_modules(False) self.assertRaises(BadRequest, self.DPMS.register_data_process_definition, BASE64_PYFILE) print "Willing mock with good py file" self._mock_uploader_modules(True) uri = self.DPMS.register_data_process_definition(BASE64_PYFILE) scp_dest = "my_user@my_host:/my/remote/wwwroot/my/path/process_code_my_uuid.py" self.mock_dict["subprocess"].Popen.assert_any_call(["scp", "-v", "-o", "PasswordAuthentication=no", "-o", 'StrictHostKeyChecking=no', 'my_tempfile_name', scp_dest], stdout=self.mock_dict["subprocess"].PIPE, stderr=self.mock_dict["subprocess"].PIPE) self.assertEqual("http://my_host/my/path/process_code_my_uuid.py", uri)
class Test_DataProcessManagementService_Unit(PyonTestCase): def setUp(self): self.mock_ionobj = self._create_IonObject_mock(mockDataProcessObj) self.mock_clients = self._create_service_mock("data_process_management") self.data_process_mgmt_service = DataProcessManagementService() self.data_process_mgmt_service.clients = self.mock_clients self.data_process_mgmt_service.on_init() # Create a data process definition self.data_process_def_name = "TestDataProcessDef_X" self.data_process_def_obj = IonObject(RT.DataProcessDefinition, name=self.data_process_def_name) # Define some variables for use in the tests self.in_product_A = "ID4INprodA" self.in_product_B = "ID4INprodB" self.out_product_A = "ID4OUTprodA" self.out_product_B = "ID4OUTprodB" self.data_proc_def_id = "ID4procDef" self.data_prod_id = "ID4producer" self.subscription_id = "ID4subscription" self.stream_id = "ID4stream" self.data_process_name = ( "process_" + self.data_process_def_name + " - calculates " + self.out_product_A + time.ctime() ) self.data_process_object = IonObject(RT.DataProcess, name=self.data_process_name) self.data_process_id = "ID4process" self.transform_id = "ID4transform" @unittest.skip("not working") def test_create_data_process(self): # setup self.resource_registry.read.return_value = self.data_process_def_obj self.resource_registry.create.return_value = (self.data_process_id, "Version_1") self.transform_management_service.create_transform.return_value = self.transform_id self.data_acquisition_management.register_process.return_value = self.data_prod_id self.mock_ionobj.return_value = self.data_process_object # test call dp_id = self.data_process_mgmt_service.create_data_process( self.data_proc_def_id, [self.in_product_A], self.out_product_A ) # verify results self.assertEqual(dp_id, "ID4process") self.resource_registry.read.assert_called_once_with(self.data_proc_def_id, "") self.mock_ionobj.assert_called_once_with(RT.DataProcess, name=self.data_process_name) self.resource_registry.create.assert_called_once_with(self.data_process_object) self.data_acquisition_management.register_process.assert_called_once_with(self.data_process_id) self.transform_management_service.create_transform.assert_called_once_with( self.data_prod_id, self.subscription_id, self.stream_id ) self.transform_management_service.schedule_transform.assert_called_once_with(self.transform_id) self.transform_management_service.bind_transform.assert_called_once_with(self.transform_id) self.assertEqual(self.resource_registry.create_association.call_count, 3) self.resource_registry.create_association.assert_called_with( self.data_process_id, PRED.hasTransform, self.transform_id, None ) pop_last_call(self.resource_registry.create_association) self.resource_registry.create_association.assert_called_with( self.data_process_id, PRED.hasOutputProduct, self.out_product_A, None ) pop_last_call(self.resource_registry.create_association) self.resource_registry.create_association.assert_called_once_with( self.data_process_id, PRED.hasInputProduct, self.in_product_A, None ) @unittest.skip("not working") def test_read_data_process(self): # setup self.resource_registry.find_associations.return_value = ([self.transform_id], "don't care") self.transform_object.data_process_definition_id = self.data_proc_def_id self.transform_object.in_subscription_id = self.in_product_A self.transform_object.out_data_product_id = self.out_product_A self.transform_management_service.read_transform.return_value = self.transform_object # test call dpd_id, in_id, out_id = self.data_process_mgmt_service.read_data_process(self.data_process_id) # verify results self.assertEqual(dpd_id, self.data_proc_def_id) self.assertEqual(in_id, self.in_product_A) self.assertEqual(out_id, self.out_product_A) self.resource_registry.find_associations.assert_called_once_with( self.data_process_id, PRED.hasTransform, "", None, False ) self.transform_management_service.read_transform.assert_called_once_with(self.transform_id)
class Test_DataProcessManagementService_Unit(PyonTestCase): def setUp(self): self.mock_ionobj = self._create_IonObject_mock(mockDataProcessObj) self.mock_clients = self._create_service_mock( 'data_process_management') self.data_process_mgmt_service = DataProcessManagementService() self.data_process_mgmt_service.clients = self.mock_clients self.data_process_mgmt_service.on_init() # Create a data process definition self.data_process_def_name = "TestDataProcessDef_X" self.data_process_def_obj = IonObject(RT.DataProcessDefinition, name=self.data_process_def_name) # Define some variables for use in the tests self.in_product_A = "ID4INprodA" self.in_product_B = "ID4INprodB" self.out_product_A = "ID4OUTprodA" self.out_product_B = "ID4OUTprodB" self.data_proc_def_id = "ID4procDef" self.data_prod_id = "ID4producer" self.subscription_id = "ID4subscription" self.stream_id = "ID4stream" self.data_process_name = "process_" + self.data_process_def_name \ + " - calculates " + \ self.out_product_A + time.ctime() self.data_process_object = IonObject(RT.DataProcess, name=self.data_process_name) self.data_process_id = "ID4process" self.transform_id = "ID4transform" @unittest.skip('not working') def test_create_data_process(self): # setup self.resource_registry.read.return_value = (self.data_process_def_obj) self.resource_registry.create.return_value = (self.data_process_id, 'Version_1') self.transform_management_service.create_transform.return_value = self.transform_id self.data_acquisition_management.register_process.return_value = self.data_prod_id self.mock_ionobj.return_value = self.data_process_object # test call dp_id = self.data_process_mgmt_service.create_data_process \ (self.data_proc_def_id, \ [self.in_product_A], \ self.out_product_A) # verify results self.assertEqual(dp_id, 'ID4process') self.resource_registry.read.assert_called_once_with( self.data_proc_def_id, '') self.mock_ionobj.assert_called_once_with(RT.DataProcess, name=self.data_process_name) self.resource_registry.create.assert_called_once_with( self.data_process_object) self.data_acquisition_management.register_process.assert_called_once_with( self.data_process_id) self.transform_management_service.create_transform.assert_called_once_with( self.data_prod_id, self.subscription_id, self.stream_id) self.transform_management_service.schedule_transform.assert_called_once_with( self.transform_id) self.transform_management_service.bind_transform.assert_called_once_with( self.transform_id) self.assertEqual(self.resource_registry.create_association.call_count, 3) self.resource_registry.create_association.assert_called_with( self.data_process_id, PRED.hasTransform, self.transform_id, None) pop_last_call(self.resource_registry.create_association) self.resource_registry.create_association.assert_called_with( self.data_process_id, PRED.hasOutputProduct, self.out_product_A, None) pop_last_call(self.resource_registry.create_association) self.resource_registry.create_association.assert_called_once_with( self.data_process_id, PRED.hasInputProduct, self.in_product_A, None) @unittest.skip('not working') def test_read_data_process(self): # setup self.resource_registry.find_associations.return_value = ([ self.transform_id ], "don't care") self.transform_object.data_process_definition_id = self.data_proc_def_id self.transform_object.in_subscription_id = self.in_product_A self.transform_object.out_data_product_id = self.out_product_A self.transform_management_service.read_transform.return_value = self.transform_object # test call dpd_id, in_id, out_id = self.data_process_mgmt_service.read_data_process( self.data_process_id) # verify results self.assertEqual(dpd_id, self.data_proc_def_id) self.assertEqual(in_id, self.in_product_A) self.assertEqual(out_id, self.out_product_A) self.resource_registry.find_associations.assert_called_once_with( self.data_process_id, PRED.hasTransform, '', None, False) self.transform_management_service.read_transform.assert_called_once_with( self.transform_id)