def test_jobsubmission_create(self): """Test JobSubmission object""" with self.assertRaises(TypeError): JobSubmission(None, "") api = mock.create_autospec(BatchAppsApi) job = JobSubmission(api, "test_job") self.assertEqual(job.name, "test_job") self.assertFalse("type" in job.__dict__) self.assertTrue("params" in job.__dict__) self.assertEqual(job.required_files, None) self.assertEqual(job.settings, "") self.assertEqual(job.source, "") self.assertEqual(job.instances, 0) job = JobSubmission(api, "test_job", instances=10, job_file="test.bat", job_type="Animation") self.assertFalse("type" in job.__dict__) self.assertEqual(job.required_files, None) self.assertEqual(job.source, "test.bat") self.assertEqual(job.instances, 10)
def test_jobsubmission_auto_pool(self, mock_pool): """Test _auto_pool""" api = mock.create_autospec(BatchAppsApi) api.jobtype.return_value = "TestApp" mock_pool.return_value = mock.create_autospec(PoolSpecifier) mock_pool.return_value.target_size = 5 mock_pool.return_value.max_tasks = 2 mock_pool.return_value.communication = False mock_pool.return_value.certificates = [] job = JobSubmission(api, "test_job", params={}) pool = job._auto_pool(4) mock_pool.assert_called_with(mock.ANY, target_size=4) self.assertEqual(pool, { 'targetDedicated': "5", 'maxTasksPerTVM': "2", 'communication': False, 'certificateReferences': [] })
def test_jobsubmission_submit(self, mock_message): """Test submit""" resp = mock.create_autospec(Response) resp.success = False resp.result = RestCallException(None, "Boom!", None) api = mock.create_autospec(BatchAppsApi) api.send_job.return_value = resp mock_message.return_value = "{message}" job = JobSubmission(api, "test_job") with self.assertRaises(RestCallException): job.submit() api.send_job.assert_called_with("{message}") mock_message.assert_called_with() resp.success = True resp.result = {'jobId': 'abc', 'link': {'href': 'test'}} sub = job.submit() mock_message.assert_called_with() self.assertEqual(sub, {'jobId': 'abc', 'id': 'abc', 'link': 'test'})
def test_jobsubmission_submit(self, mock_message): """Test submit""" resp = mock.create_autospec(Response) resp.success = False resp.result = RestCallException(None, "Boom!", None) api = mock.create_autospec(BatchAppsApi) api.send_job.return_value = resp mock_message.return_value = "{message}" job = JobSubmission(api, "test_job") with self.assertRaises(RestCallException): job.submit() api.send_job.assert_called_with("{message}") mock_message.assert_called_with() resp.success = True resp.result = {'jobId':'abc', 'link':{'href':'test'}} sub = job.submit() mock_message.assert_called_with() self.assertEqual(sub, {'jobId':'abc', 'id':'abc', 'link':'test'})
def test_jobsubmission_filter_params(self): """Test _filter_params""" api = mock.create_autospec(BatchAppsApi) api.default_params.return_value = {} job = JobSubmission(api, "test_job", params={}) self.assertEqual(list(job._filter_params()), []) job.params = {"k1":"v1", "k2":"v2"} self.assertEqual(sorted(job._filter_params(), key=itemgetter('Name')), sorted([{"Name":"k2", "Value":"v2"}, {"Name":"k1", "Value":"v1"}], key=itemgetter('Name'))) api.default_params.return_value = {"k2":"v0", "k3":"v3"} self.assertEqual(sorted(job._filter_params(), key=itemgetter('Name')), sorted([{"Name":"k3", "Value":"v3"}, {"Name":"k2", "Value":"v2"}, {"Name":"k1", "Value":"v1"}], key=itemgetter('Name')))
def test_jobsubmission_filter_params(self): """Test _filter_params""" api = mock.create_autospec(BatchAppsApi) api.default_params.return_value = {} job = JobSubmission(api, "test_job", params={}) self.assertEqual(list(job._filter_params()), []) job.params = {"k1": "v1", "k2": "v2"} self.assertEqual( sorted(job._filter_params(), key=itemgetter('Name')), sorted([{ "Name": "k2", "Value": "v2" }, { "Name": "k1", "Value": "v1" }], key=itemgetter('Name'))) api.default_params.return_value = {"k2": "v0", "k3": "v3"} self.assertEqual( sorted(job._filter_params(), key=itemgetter('Name')), sorted([{ "Name": "k3", "Value": "v3" }, { "Name": "k2", "Value": "v2" }, { "Name": "k1", "Value": "v1" }], key=itemgetter('Name')))
def test_jobsubmission_add_file(self, mock_coll): """Test add_file""" coll = mock.create_autospec(FileCollection) api = mock.create_autospec(BatchAppsApi) mock_coll.return_value = coll job = JobSubmission(api, "test_job") job.add_file("test_file") mock_coll.assert_called_with(api) coll.add.assert_called_with("test_file") mock_coll.called = False job = JobSubmission(api, "test_job") job.required_files = coll job.add_file("test_file") self.assertFalse(mock_coll.called) coll.add.assert_called_with("test_file")
def test_jobsubmission_auto_pool(self, mock_pool): """Test _auto_pool""" api = mock.create_autospec(BatchAppsApi) api.jobtype.return_value = "TestApp" mock_pool.return_value = mock.create_autospec(PoolSpecifier) mock_pool.return_value.target_size = 5 mock_pool.return_value.max_tasks = 2 mock_pool.return_value.communication = False mock_pool.return_value.certificates = [] job = JobSubmission(api, "test_job", params={}) pool = job._auto_pool(4) mock_pool.assert_called_with(mock.ANY, target_size=4) self.assertEqual( pool, { 'targetDedicated': "5", 'maxTasksPerTVM': "2", 'communication': False, 'certificateReferences': [] })
def test_jobsubmission_add_collection(self, mock_coll): """Test add_file_collection""" api = mock.create_autospec(BatchAppsApi) files = mock.create_autospec(FileCollection) job = JobSubmission(api, "test_job") job.add_file_collection() mock_coll.assert_called_with(api) mock_coll.called = False job = JobSubmission(api, "test_job") with self.assertRaises(TypeError): job.add_file_collection("test") job = JobSubmission(api, "test_job") job.add_file_collection(files) self.assertEqual(job.required_files, files) self.assertFalse(mock_coll.called)
def test_jobsubmission_attr(self): """Test __getattr__""" api = mock.create_autospec(BatchAppsApi) job = JobSubmission(api, "test_job", params={}, settings="test_settings") job.test = "my_param" job.data = "my_data" job.number = 42 #with self.assertRaises(AttributeError): job.none_obj = None #with self.assertRaises(AttributeError): job.dict_obj = {"a": []} self.assertEqual(job.params["test"], "my_param") self.assertEqual(job.params["data"], "my_data") self.assertEqual(job.params["number"], "42") self.assertEqual(job.test, "my_param") self.assertEqual(job.data, "my_data") self.assertEqual(job.number, "42") self.assertEqual(job.settings, "test_settings") self.assertEqual(job.none_obj, "None") self.assertEqual(job.dict_obj, "{'a': []}") with self.assertRaises(AttributeError): print(job.other_obj) job.source = "my_file.txt" del job.source with self.assertRaises(AttributeError): self.assertEqual(job.source, "") del job.test with self.assertRaises(AttributeError): print(job.test) with self.assertRaises(AttributeError): del job.new_data
def test_jobsubmission_attr(self): """Test __getattr__""" api = mock.create_autospec(BatchAppsApi) job = JobSubmission(api, "test_job", params={}, settings="test_settings") job.test = "my_param" job.data = "my_data" job.number = 42 #with self.assertRaises(AttributeError): job.none_obj = None #with self.assertRaises(AttributeError): job.dict_obj = {"a":[]} self.assertEqual(job.params["test"], "my_param") self.assertEqual(job.params["data"], "my_data") self.assertEqual(job.params["number"], "42") self.assertEqual(job.test, "my_param") self.assertEqual(job.data, "my_data") self.assertEqual(job.number, "42") self.assertEqual(job.settings, "test_settings") self.assertEqual(job.none_obj, "None") self.assertEqual(job.dict_obj, "{'a': []}") with self.assertRaises(AttributeError): print(job.other_obj) job.source = "my_file.txt" del job.source with self.assertRaises(AttributeError): self.assertEqual(job.source, "") del job.test with self.assertRaises(AttributeError): print(job.test) with self.assertRaises(AttributeError): del job.new_data
def test_jobsubmission_create_job_message(self, mock_filter, mock_pool): """Test _create_job_message""" api = mock.create_autospec(BatchAppsApi) api.jobtype.return_value = "TestApp" mock_pool.return_value = {"autopool": "0"} files = mock.create_autospec(FileCollection) files._get_message.return_value = ["file1", "file2"] files.__len__.return_value = 2 mock_filter.return_value = [{"Name": "k1", "Value": "v1"}] job = JobSubmission(api, "test_job", params={}) job.instances = -1 #with self.assertRaises(ValueError): msg = job._create_job_message() mock_pool.assert_called_with(1) self.assertEqual( msg, { 'Name': 'test_job', 'Type': 'TestApp', 'RequiredFiles': [], 'autoPoolSpecification': { "autopool": "0" }, 'Parameters': [{ "Name": "k1", "Value": "v1" }], 'JobFile': '', 'Settings': '', 'Priority': 'Medium' }) job.required_files = files job.instances = 5 job.settings = "blah" msg = job._create_job_message() mock_pool.assert_called_with(5) self.assertEqual( msg, { 'Name': 'test_job', 'Type': 'TestApp', 'RequiredFiles': ["file1", "file2"], 'autoPoolSpecification': { "autopool": "0" }, 'Parameters': [{ "Name": "k1", "Value": "v1" }], 'JobFile': '', 'Settings': 'blah', 'Priority': 'Medium' }) job.source = None job.instances = [] job.type = 42 job.name = {} job.pool = "testID" msg = job._create_job_message() self.assertEqual( msg, { 'Name': '{}', 'Type': 'TestApp', 'RequiredFiles': ["file1", "file2"], 'poolId': "testID", 'Parameters': [{ "Name": "k1", "Value": "v1" }], 'JobFile': 'None', 'Settings': 'blah', 'Priority': 'Medium' }) job.pool = mock.create_autospec(Pool) job.pool.id = "differentID" msg = job._create_job_message() self.assertEqual( msg, { 'Name': '{}', 'Type': 'TestApp', 'RequiredFiles': ["file1", "file2"], 'poolId': "differentID", 'Parameters': [{ "Name": "k1", "Value": "v1" }], 'JobFile': 'None', 'Settings': 'blah', 'Priority': 'Medium' })
def test_jobsubmission_job_file(self): """Test set_job_file""" jfile = mock.create_autospec(UserFile) coll = mock.create_autospec(FileCollection) api = mock.create_autospec(BatchAppsApi) jfile.name = "test" job = JobSubmission(api, "test_job") with self.assertRaises(ValueError): job.set_job_file(2) with self.assertRaises(ValueError): job.set_job_file(None) with self.assertRaises(ValueError): job.set_job_file("Something") with self.assertRaises(ValueError): job.set_job_file(jfile) job.required_files = coll job.set_job_file(jfile) self.assertEqual(job.source, "test") coll.add.assert_called_with(jfile) coll.__len__.return_value = 1 job = JobSubmission(api, "test_job") job.required_files = coll job.set_job_file(0)
def test_jobsubmission_create_job_message(self, mock_filter, mock_pool): """Test _create_job_message""" api = mock.create_autospec(BatchAppsApi) api.jobtype.return_value = "TestApp" mock_pool.return_value = {"autopool":"0"} files = mock.create_autospec(FileCollection) files._get_message.return_value = ["file1", "file2"] files.__len__.return_value = 2 mock_filter.return_value = [{"Name":"k1", "Value":"v1"}] job = JobSubmission(api, "test_job", params={}) job.instances = -1 #with self.assertRaises(ValueError): msg = job._create_job_message() mock_pool.assert_called_with(1) self.assertEqual(msg, {'Name':'test_job', 'Type': 'TestApp', 'RequiredFiles':[], 'autoPoolSpecification': {"autopool":"0"}, 'Parameters':[{"Name":"k1", "Value":"v1"}], 'JobFile':'', 'Settings':'', 'Priority':'Medium'}) job.required_files = files job.instances = 5 job.settings = "blah" msg = job._create_job_message() mock_pool.assert_called_with(5) self.assertEqual(msg, {'Name':'test_job', 'Type': 'TestApp', 'RequiredFiles':["file1", "file2"], 'autoPoolSpecification': {"autopool":"0"}, 'Parameters':[{"Name":"k1", "Value":"v1"}], 'JobFile':'', 'Settings':'blah', 'Priority':'Medium'}) job.source = None job.instances = [] job.type = 42 job.name = {} job.pool = "testID" msg = job._create_job_message() self.assertEqual(msg, {'Name':'{}', 'Type': 'TestApp', 'RequiredFiles':["file1", "file2"], 'poolId': "testID", 'Parameters':[{"Name":"k1", "Value":"v1"}], 'JobFile':'None', 'Settings':'blah', 'Priority':'Medium'}) job.pool = mock.create_autospec(Pool) job.pool.id = "differentID" msg = job._create_job_message() self.assertEqual(msg, {'Name':'{}', 'Type': 'TestApp', 'RequiredFiles':["file1", "file2"], 'poolId': "differentID", 'Parameters':[{"Name":"k1", "Value":"v1"}], 'JobFile':'None', 'Settings':'blah', 'Priority':'Medium'})