Example #1
0
 def test_prepare_job(self):
     """
     `prepare_job` returns a :py:class:`geonode.mtapi.models.OqJob`
     instance. The latter's `oq_params` property refers to the correct
     upload record.
     """
     post_params = get_post_params()
     job = prepare_job(post_params)
     self.assertTrue(isinstance(job, OqJob))
     self.upload = Upload.objects.get(id=post_params["upload"])
     self.assertEqual(self.upload, job.oq_params.upload)
Example #2
0
 def test_prepare_job_result_with_failed(self):
     """
     The result dictionary for failed OpenQuake jobs is prepared correctly.
     """
     post_params = get_post_params()
     job = prepare_job(post_params)
     self.upload = job.oq_params.upload
     job.status = "failed"
     self.assertEqual(
         {"msg": "Calculation failed", "status": "failure",
          "id": job.id},
         prepare_job_result(job))
Example #3
0
 def test_prepare_job_result_with_succeeded_no_maps(self):
     """
     The result dictionary for succeeded OpenQuake jobs (w/o hazard/loss
     maps) is prepared correctly.
     """
     post_params = get_post_params()
     job = prepare_job(post_params)
     self.upload = job.oq_params.upload
     job.status = "succeeded"
     self.assertEqual(
         {"msg": "Calculation succeeded", "status": "success",
         "id": job.id, "files": []},
         prepare_job_result(job))
Example #4
0
 def test_prepare_job_param_values(self):
     """
     `prepare_job` returns a :py:class:`geonode.mtapi.models.OqJob`
     instance. The latter's `oq_params` property is initialized correctly.
     """
     post_params = get_post_params()
     oqp = prepare_job(post_params).oq_params
     self.upload = oqp.upload
     trans_tab = dict(reference_v30_value="reference_vs30_value")
     param_names = (
         "job_type", "region_grid_spacing", "min_magnitude",
         "investigation_time", "component", "imt", "truncation_type",
         "truncation_level", "reference_v30_value", "imls", "poes",
         "realizations")
     for param_name in param_names:
         attr_name = trans_tab.get(param_name, param_name)
         self.assertEqual(getattr(oqp, attr_name),
                          post_params["fields"][param_name])
Example #5
0
 def test_start_job(self):
     """
     The oqrunner process is started with the correct path/arguments and
     its process ID (pid) is captured in the corresponding job record.
     """
     post_params = get_post_params()
     job = prepare_job(post_params)
     self.upload = job.oq_params.upload
     process_mock = mock.MagicMock(name="mock:the-process")
     process_mock.pid = 31459
     popen_mock = mock.MagicMock(name="mock:subprocess.Popen")
     popen_mock.return_value = process_mock
     with mock.patch('subprocess.Popen', new=popen_mock):
         self.assertEqual(0, job.job_pid)
         start_job(job)
         args, _kwargs = popen_mock.call_args
         self.assertEqual(
             ([settings.OQRUNNER_PATH, "-j", str(job.id)],), args)
         self.assertEqual(31459, job.job_pid)
Example #6
0
 def test_prepare_job_ignored_params(self):
     """
     `prepare_job()` ignores the following parameters: "period",
     "gm_correlated" and "histories" for classical job types.
     """
     ignored_fields = {"period": 1, "histories": 1, "gm_correlated": False}
     post_params = get_post_params(ignored_fields)
     oqp = prepare_job(post_params).oq_params
     self.upload = oqp.upload
     trans_tab = dict(reference_v30_value="reference_vs30_value")
     param_names = (
         "job_type", "region_grid_spacing", "min_magnitude",
         "investigation_time", "component", "imt", "truncation_type",
         "truncation_level", "reference_v30_value", "imls", "poes",
         "realizations")
     for param_name in param_names:
         attr_name = trans_tab.get(param_name, param_name)
         self.assertEqual(getattr(oqp, attr_name),
                          post_params["fields"][param_name])