コード例 #1
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_parent_children__fail(self):
        parent_state = create_state_from_ee2(BATCH_PARENT)
        child_states = [create_state_from_ee2(job_id) for job_id in BATCH_CHILDREN]
        with self.assertRaisesRegex(
            ValueError, "Must supply children when setting children of batch job parent"
        ):
            Job(parent_state)

        child_jobs = [Job(child_state) for child_state in child_states]
        with self.assertRaisesRegex(ValueError, CHILD_ID_MISMATCH):
            Job(
                parent_state,
                children=child_jobs[1:],
            )

        with self.assertRaisesRegex(ValueError, CHILD_ID_MISMATCH):
            Job(
                parent_state,
                children=child_jobs * 2,
            )

        with self.assertRaisesRegex(ValueError, CHILD_ID_MISMATCH):
            Job(
                parent_state,
                children=child_jobs + [create_job_from_ee2(JOB_COMPLETED)],
            )
コード例 #2
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_parameters__param_fetch_fail(self):
        """
        test failure to retrieve job params data
        """
        job_state = get_test_job(JOB_TERMINATED)
        del job_state["job_input"]["params"]
        job = Job(job_state)
        self.assertEqual(job.params, JOB_ATTR_DEFAULTS["params"])

        with self.assertRaisesRegex(Exception, "Unable to fetch parameters for job"):
            job.parameters()
コード例 #3
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_query_job_state(self):
        for job_id in ALL_JOBS:
            exp = create_state_from_ee2(
                job_id, exclude_fields=JOB_INIT_EXCLUDED_JOB_STATE_FIELDS
            )
            got = Job.query_ee2_state(job_id, init=True)
            self.assertEqual(exp, got)

            exp = create_state_from_ee2(
                job_id, exclude_fields=EXCLUDED_JOB_STATE_FIELDS
            )
            got = Job.query_ee2_state(job_id, init=False)
            self.assertEqual(exp, got)
コード例 #4
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_parameters(self):
        """
        test that a job returns the correct parameters
        """
        job_state = get_test_job(JOB_COMPLETED)
        job_params = job_state.get("job_input", {}).get("params", None)
        self.assertIsNotNone(job_params)
        job = Job(job_state)
        self.assertIsNotNone(job.params)

        with assert_obj_method_called(MockClients, "get_job_params", call_status=False):
            params = job.parameters()
            self.assertIsNotNone(params)
            self.assertEqual(params, job_params)
コード例 #5
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_query_job_states(self):
        states = Job.query_ee2_states(ALL_JOBS, init=True)
        for job_id, got in states.items():
            exp = create_state_from_ee2(
                job_id, exclude_fields=JOB_INIT_EXCLUDED_JOB_STATE_FIELDS
            )
            self.assertEqual(exp, got)

        states = Job.query_ee2_states(ALL_JOBS, init=False)
        for job_id, got in states.items():
            exp = create_state_from_ee2(
                job_id, exclude_fields=EXCLUDED_JOB_STATE_FIELDS
            )
            self.assertEqual(exp, got)
コード例 #6
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_parameters__param_fetch_ok(self):
        """
        test that a job can successfully retrieve parameters from ee2
        if they do not exist
        """
        job_state = get_test_job(JOB_CREATED)
        job_params = job_state.get("job_input", {}).get("params", None)
        self.assertIsNotNone(job_params)

        # delete the job params from the input
        del job_state["job_input"]["params"]
        job = Job(job_state)
        self.assertEqual(job.params, JOB_ATTR_DEFAULTS["params"])

        params = job.parameters()
        self.assertEqual(params, job_params)
コード例 #7
0
def phony_job():
    return Job.from_state('phony_job', {
        'params': [],
        'service_ver': '0.0.0'
    },
                          'kbasetest',
                          'NarrativeTest/test_editor',
                          tag='dev')
コード例 #8
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_job_init__from_job_ids(self):
        job_ids = ALL_JOBS.copy()
        job_ids.remove(BATCH_PARENT)

        with mock.patch(CLIENTS, get_mock_client):
            jobs = Job.from_job_ids(job_ids, return_list=False)

        for job_id, job in jobs.items():
            self.check_job_attrs(job, job_id)
コード例 #9
0
ファイル: test_job.py プロジェクト: kbase/narrative
def get_batch_family_jobs(return_list=False):
    """
    As invoked in appmanager's run_app_batch, i.e.,
    with from_job_id(s)
    """
    child_jobs = Job.from_job_ids(BATCH_CHILDREN, return_list=True)
    batch_job = Job.from_job_id(BATCH_PARENT, children=child_jobs)

    if return_list:
        return [batch_job] + child_jobs
    else:
        return {
            BATCH_PARENT: batch_job,
            **{
                child_id: child_job
                for child_id, child_job in zip(BATCH_CHILDREN, child_jobs)
            },
        }
コード例 #10
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_parent_children__ok(self):
        child_jobs = [Job.from_job_id(job_id) for job_id in BATCH_CHILDREN]
        parent_job = Job(
            create_state_from_ee2(BATCH_PARENT),
            children=child_jobs,
        )

        self.assertFalse(parent_job.was_terminal())

        # Make all child jobs completed
        with mock.patch.object(
            MockClients,
            "check_job",
            mock.Mock(return_value={"status": COMPLETED_STATUS}),
        ):
            for child_job in child_jobs:
                child_job.state(force_refresh=True)

        self.assertTrue(parent_job.was_terminal())
コード例 #11
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_job_init__from_job_id(self):
        """
        test job initialisation, as is done by run_app
        """
        for job_id in ALL_JOBS:
            if job_id == BATCH_PARENT:
                continue

            with mock.patch(CLIENTS, get_mock_client):
                job = Job.from_job_id(job_id)
            self.check_job_attrs(job, job_id)
コード例 #12
0
def phony_job():
    return Job.from_state(
        "phony_job",
        {
            "params": [],
            "service_ver": "0.0.0"
        },
        "kbasetest",
        "NarrativeTest/test_editor",
        tag="dev",
    )
コード例 #13
0
    def _mocked_job(self, with_version=True, with_cell_id=True, with_run_id=True, with_token_id=True):
        kwargs = dict()
        if with_version:
            kwargs["app_version"] = self.app_version
        if with_cell_id:
            kwargs["cell_id"] = self.cell_id
        if with_run_id:
            kwargs["run_id"] = self.run_id
        if with_token_id:
            kwargs["token_id"] = self.token_id

        job = Job(self.job_id, self.app_id, self.inputs, self.owner, tag=self.app_tag, **kwargs)

        return job
コード例 #14
0
 def test_job_from_state(self):
     job_info = {
         "params": self.inputs,
         "service_ver": self.app_version
     }
     job = Job.from_state(self.job_id, job_info, self.owner, self.app_id, tag=self.app_tag,
                          cell_id=self.cell_id, run_id=self.run_id, token_id=self.token_id)
     self.assertEqual(job.job_id, self.job_id)
     self.assertEqual(job.app_id, self.app_id)
     self.assertEqual(job.inputs, self.inputs)
     self.assertEqual(job.owner, self.owner)
     self.assertEqual(job.tag, self.app_tag)
     self.assertEqual(job.app_version, self.app_version)
     self.assertEqual(job.cell_id, self.cell_id)
     self.assertEqual(job.run_id, self.run_id)
     self.assertEqual(job.token_id, self.token_id)
コード例 #15
0
ファイル: test_job.py プロジェクト: briehl/narrative
 def test_job_from_state(self):
     job_info = {
         "params": self.inputs,
         "service_ver": self.app_version
     }
     job = Job.from_state(self.job_id, job_info, self.owner, self.app_id, tag=self.app_tag, 
                          cell_id=self.cell_id, run_id=self.run_id, token_id=self.token_id)
     self.assertEqual(job.job_id, self.job_id)
     self.assertEqual(job.app_id, self.app_id)
     self.assertEqual(job.inputs, self.inputs)
     self.assertEqual(job.owner, self.owner)
     self.assertEqual(job.tag, self.app_tag)
     self.assertEqual(job.app_version, self.app_version)
     self.assertEqual(job.cell_id, self.cell_id)
     self.assertEqual(job.run_id, self.run_id)
     self.assertEqual(job.token_id, self.token_id)
コード例 #16
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_job_init__extra_state(self):
        """
        test job initialisation as is done by run_legacy_batch_app
        """

        app_id = "kb_BatchApp/run_batch"
        extra_data = {
            "batch_app": app_id,
            "batch_tag": None,
            "batch_size": 300,
        }

        for job_id in ALL_JOBS:
            if job_id == BATCH_PARENT:
                continue

            with mock.patch(CLIENTS, get_mock_client):
                batch_job = Job.from_job_id(
                    job_id,
                    extra_data=extra_data,
                )

            self.check_job_attrs(batch_job, job_id, {"extra_data": extra_data})
コード例 #17
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_job_from_state__custom(self):
        """
        test job initialisation with defaults being filled in
        TODO do a non-default?
        """
        params = [
            {
                "import_type": "FASTQ/FASTA",
                "name": "small.forward.fq",
            }
        ]
        test_job = {
            "user": "******",
            "job_input": {
                "params": params,
                "service_ver": "42",
                "app_id": "This/app",
            },
            "job_id": "0123456789abcdef",
        }

        expected = {
            "app_id": "This/app",
            "app_version": "42",
            "batch_id": JOB_ATTR_DEFAULTS["batch_id"],
            "cell_id": JOB_ATTR_DEFAULTS["cell_id"],
            "extra_data": None,
            "job_id": "0123456789abcdef",
            "params": params,
            "run_id": JOB_ATTR_DEFAULTS["run_id"],
            "tag": JOB_ATTR_DEFAULTS["tag"],
            "user": "******",
        }

        job = Job(test_job)
        self.check_job_attrs_custom(job, expected)
コード例 #18
0
ファイル: test_job.py プロジェクト: kbase/narrative
 def test_show_output_widget(self, mock_method):
     mock_method.return_value = True
     job = Job(get_test_job(JOB_COMPLETED))
     self.assertTrue(job.show_output_widget())
     mock_method.assert_called_once()
コード例 #19
0
ファイル: test_job.py プロジェクト: kbase/narrative
    def test_job_init__error_no_job_id(self):

        with self.assertRaisesRegex(
            ValueError, "Cannot create a job without a job ID!"
        ):
            Job({"params": {}, "app_id": "this/that"})
コード例 #20
0
ファイル: test_job.py プロジェクト: kbase/narrative
 def test_show_output_widget__incomplete_state(self):
     job = Job(get_test_job(JOB_CREATED))
     self.assertRegex(
         job.show_output_widget(), "Job is incomplete! It has status 'created'"
     )
コード例 #21
0
ファイル: test_job.py プロジェクト: kbase/narrative
def create_job_from_ee2(job_id, extra_data=None, children=None):
    state = get_test_job(job_id)
    job = Job(state, extra_data=extra_data, children=children)
    return job
コード例 #22
0
ファイル: test_jobmanager.py プロジェクト: briehl/narrative
def phony_job():
    return Job.from_state('phony_job',
                          {'params': [], 'service_ver': '0.0.0'},
                          'kbasetest',
                          'NarrativeTest/test_editor',
                          tag='dev')