示例#1
0
文件: test_job.py 项目: wangjs/MAGMa
    def test_submitQuery_with_tarball(self):
        self.factory.tarball = 'Magma-1.1.tar.gz'
        self.factory.submitJob2Launcher = Mock()
        job = self.factory.fromScratch(u'bob')
        jobquery = JobQuery(job.dir, "", [])
        status_cb_url = 'http://example.com/status/{}.json'.format(job.id)
        jobquery.status_callback_url = status_cb_url

        self.factory.submitQuery(jobquery, job)

        jobmanager_query = {'jobdir': jobquery.dir + '/',
                            'executable': "/bin/sh",
                            'prestaged': [self.factory.script_fn,
                                          'results.db',
                                          # tarball is staged as well
                                          'Magma-1.1.tar.gz'
                                          ],
                            "poststaged": ['results.db'],
                            "stderr": "stderr.txt",
                            "stdout": "stdout.txt",
                            'arguments': [self.factory.script_fn],
                            'status_callback_url': status_cb_url
                            }
        self.factory.submitJob2Launcher.assert_called_with(jobmanager_query)
        self.assertEqual(job.state, u'PENDING')
示例#2
0
文件: test_job.py 项目: wangjs/MAGMa
    def test_submitQuery_invalid_joblauncher(self):
        from requests.exceptions import HTTPError
        from magmaweb.job import JobSubmissionError
        exc = HTTPError('422 Client Error: Unprocessable Entity')
        self.factory.submitJob2Launcher = Mock(side_effect=exc)
        job = self.factory.fromScratch(u'bob')
        jobquery = JobQuery(job.dir, "", [])
        status_cb_url = 'http://example.com/status/{}.json'.format(job.id)
        jobquery.status_callback_url = status_cb_url

        with self.assertRaises(JobSubmissionError):
            self.factory.submitQuery(jobquery, job)

        self.assertEqual(job.state, 'SUBMISSION_ERROR')
示例#3
0
文件: test_job.py 项目: wangjs/MAGMa
    def test_submitQuery_no_joblauncher(self):
        from requests.exceptions import ConnectionError
        from magmaweb.job import JobSubmissionError
        exc = ConnectionError('[Errno 111] Connection refused')
        self.factory.submitJob2Launcher = Mock(side_effect=exc)
        job = self.factory.fromScratch(u'bob')
        jobquery = JobQuery(job.dir, "", [])
        status_cb_url = 'http://example.com/status/{}.json'.format(job.id)
        jobquery.status_callback_url = status_cb_url

        with self.assertRaises(JobSubmissionError):
            self.factory.submitQuery(jobquery, job)

        self.assertEqual(job.state, 'SUBMISSION_ERROR')
示例#4
0
文件: test_job.py 项目: wangjs/MAGMa
    def test_submitQuery(self):
        self.factory.init_script = "# make magma available"
        job = self.factory.fromScratch(u'bob')

        self.factory.script_fn = 'script.sh'
        cmd = "magma add_structures -t smiles structures.dat results.db\n"
        jobquery = JobQuery(job.dir, cmd, ['structures.dat'])
        status_cb_url = 'http://example.com/status/{}.json'.format(job.id)
        jobquery.status_callback_url = status_cb_url

        launcher_url = 'http://localhost:9998/job/'
        launcher_url += '70a00fe2-f698-41ed-b28c-b37c22f10440'
        self.factory.submitJob2Launcher = Mock(return_value=launcher_url)

        self.factory.submitQuery(jobquery, job)

        job_script_fn = os.path.join(jobquery.dir, self.factory.script_fn)
        job_script = open(job_script_fn).read()
        exp_script = "# make magma available\n"
        exp_script += "magma add_structures -t smiles "
        exp_script += "structures.dat results.db\n"
        self.assertMultiLineEqual(job_script, exp_script)
        jobmanager_query = {'jobdir': jobquery.dir + '/',
                            'executable': "/bin/sh",
                            'prestaged': [self.factory.script_fn,
                                          'results.db',
                                          'structures.dat'
                                          ],
                            "poststaged": ['results.db'],
                            "stderr": "stderr.txt",
                            "stdout": "stdout.txt",
                            'arguments': [self.factory.script_fn],
                            'status_callback_url': status_cb_url
                            }
        self.factory.submitJob2Launcher.assert_called_with(jobmanager_query)
        self.assertEqual(job.state, u'PENDING')
        self.assertEqual(job.launcher_url, launcher_url)