Пример #1
0
    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)
Пример #2
0
    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': []
            })
Пример #3
0
    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'})
Пример #4
0
    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'})
Пример #5
0
    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')))
Пример #6
0
    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')))
Пример #7
0
    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")
Пример #8
0
    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': []
            })
Пример #9
0
    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)
Пример #10
0
    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
Пример #11
0
    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")
Пример #12
0
    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
Пример #13
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'
            })
Пример #14
0
    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)
Пример #15
0
    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)
Пример #16
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'})
Пример #17
0
    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)