Ejemplo n.º 1
0
 def test_inputs4job_with_correct_input_type_and_path(self):
     # The source inputs are returned.
     inp1 = models.Input(owner=self.job.owner,
                         path=self.paths.next(),
                         input_type="source",
                         size=self.sizes.next())
     inp1.save()
     models.Input2job(oq_job=self.job, input=inp1).save()
     path = self.paths.next()
     inp2 = models.Input(owner=self.job.owner,
                         path=path,
                         input_type="source",
                         size=self.sizes.next())
     inp2.save()
     models.Input2job(oq_job=self.job, input=inp2).save()
     inp3 = models.Input(owner=self.job.owner,
                         path=self.paths.next(),
                         input_type="source",
                         size=self.sizes.next())
     inp3.save()
     models.Input2job(oq_job=self.job, input=inp3).save()
     self.assertEqual([inp2],
                      models.inputs4job(self.job.id,
                                        input_type="source",
                                        path=path))
Ejemplo n.º 2
0
    def setUpClass(cls):
        default_user = helpers.default_user()

        cls.job = models.OqJob(owner=default_user)
        cls.job.save()

        # dmg dist per asset
        cls.ddpa_output = models.Output(
            owner=default_user, oq_job=cls.job,
            display_name='Test dmg dist per asset',
            output_type='dmg_dist_per_asset',
            db_backed=True)
        cls.ddpa_output.save()

        cls.ddpa = models.DmgDistPerAsset(
            output=cls.ddpa_output, dmg_states=cls.DMG_STATES)
        cls.ddpa.save()

        # We also need some sample exposure data records (to satisfy the dmg
        # dist per asset FK).
        test_input = models.Input(
            owner=default_user, input_type='exposure', path='fake', size=0)
        test_input.save()
        i2j = models.Input2job(input=test_input, oq_job=cls.job)
        i2j.save()
        exp_model = models.ExposureModel(
            owner=default_user, input=test_input, name='test-exp-model',
            category='economic loss', stco_type='per_asset', stco_unit='CHF')
        exp_model.save()

        test_site = shapes.Site(3.14, 2.17)
        cls.exp_data = models.ExposureData(  # Asset
            exposure_model=exp_model, asset_ref=helpers.random_string(),
            taxonomy=helpers.random_string(), number_of_units=37,
            site=test_site.point.to_wkt(), stco=1234.56)
        cls.exp_data.save()

        # dmg dist per taxonomy
        cls.ddpt_output = models.Output(
            owner=default_user, oq_job=cls.job,
            display_name='Test dmg dist per taxonomy',
            output_type='dmg_dist_per_taxonomy',
            db_backed=True)
        cls.ddpt_output.save()

        cls.ddpt = models.DmgDistPerTaxonomy(
            output=cls.ddpt_output, dmg_states=cls.DMG_STATES)
        cls.ddpt.save()

        # total dmg dist
        cls.ddt_output = models.Output(
            owner=default_user, oq_job=cls.job,
            display_name='Test dmg dist total',
            output_type='dmg_dist_total',
            db_backed=True)
        cls.ddt_output.save()

        cls.ddt = models.DmgDistTotal(
            output=cls.ddt_output, dmg_states=cls.DMG_STATES)
        cls.ddt.save()
Ejemplo n.º 3
0
 def setUp(self):
     self.emdl_input = models.Input(
         input_type="exposure", size=123, path="/tmp/fake-exposure-path",
         owner=self.job.owner)
     self.emdl_input.save()
     i2j = models.Input2job(input=self.emdl_input, oq_job=self.job)
     i2j.save()
Ejemplo n.º 4
0
 def setUpClass(cls):
     cls.job = cls.setup_classic_job()
     cls.input = models.Input(input_type="source",
                              size=123,
                              path="/tmp/fake-source-path",
                              owner=cls.job.owner)
     cls.input.save()
     i2j = models.Input2job(input=cls.input, oq_job=cls.job)
     i2j.save()
Ejemplo n.º 5
0
 def test_inputs4job_with_wrong_path(self):
     # No input is returned.
     inp = models.Input(owner=self.job.owner,
                        path=self.paths.next(),
                        input_type="exposure",
                        size=self.sizes.next())
     inp.save()
     models.Input2job(oq_job=self.job, input=inp).save()
     self.assertEqual([], models.inputs4job(self.job.id, path="xyz"))
Ejemplo n.º 6
0
 def test_inputs4job_with_single_input(self):
     # The single input is returned.
     inp = models.Input(owner=self.job.owner,
                        path=self.paths.next(),
                        input_type="exposure",
                        size=self.sizes.next())
     inp.save()
     models.Input2job(oq_job=self.job, input=inp).save()
     self.assertEqual([inp], models.inputs4job(self.job.id))
Ejemplo n.º 7
0
def insert_inputs(job, inputs):
    """Insert the input records for the given data and job."""
    for imt, imp in inputs:
        iobj = models.Input(path=imp,
                            input_type=imt,
                            owner=job.owner,
                            size=random.randint(1024, 16 * 1024))
        iobj.save()
        i2j = models.Input2job(input=iobj, oq_job=job)
        i2j.save()
Ejemplo n.º 8
0
 def setUp(self):
     emdl_input = models.Input(
         input_type="exposure", size=123, path="/tmp/fake-exposure-path",
         owner=self.job.owner)
     emdl_input.save()
     i2j = models.Input2job(input=emdl_input, oq_job=self.job)
     i2j.save()
     self.mdl = models.ExposureModel(
         input=emdl_input, owner=self.job.owner,
         name="exposure-model-testing", category="economic loss")
Ejemplo n.º 9
0
 def setUp(self):
     fmdl_input = models.Input(input_type="fragility",
                               size=123,
                               path="/tmp/fake-fragility-path",
                               owner=self.job.owner)
     fmdl_input.save()
     i2j = models.Input2job(input=fmdl_input, oq_job=self.job)
     i2j.save()
     self.mdl = models.FragilityModel(input=fmdl_input,
                                      owner=self.job.owner,
                                      format="continuous")
Ejemplo n.º 10
0
 def setUp(self):
     # md5sum digest incorrect
     self.glt_i = models.Input(input_type="lt_gmpe", size=123,
                               path=self.GLT, owner=self.old_job.owner,
                               digest="0" * 32)
     self.glt_i.save()
     i2j = models.Input2job(input=self.glt_i, oq_job=self.old_job)
     i2j.save()
     # md5sum digest correct
     if sys.platform == 'darwin':
         digest = subprocess.check_output(["md5", self.SLT]).split()[-1]
     else:
         digest = subprocess.check_output(["md5sum", self.SLT]).split()[0]
     self.slt_i = models.Input(input_type="lt_source", size=123,
                               path=self.SLT, owner=self.old_job.owner,
                               digest=digest)
     self.slt_i.save()
     i2j = models.Input2job(input=self.slt_i, oq_job=self.old_job)
     i2j.save()
     self.job = self.setup_classic_job()
Ejemplo n.º 11
0
 def setUp(self):
     emdl_input = models.Input(
         input_type="exposure", size=123, path="/tmp/fake-exposure-path",
         owner=self.job.owner)
     emdl_input.save()
     i2j = models.Input2job(input=emdl_input, oq_job=self.job)
     i2j.save()
     self.mdl = models.ExposureModel(
         input=emdl_input, owner=self.job.owner, unit_type="count",
         name="exposure-data-testing", category="economic loss",
         coco_type="per_asset", coco_unit="USD")
     self.mdl.save()
Ejemplo n.º 12
0
 def test_inputs4job_with_correct_input_type(self):
     # The exposure inputs are returned.
     inp1 = models.Input(owner=self.job.owner,
                         path=self.paths.next(),
                         input_type="exposure",
                         size=self.sizes.next())
     inp1.save()
     models.Input2job(oq_job=self.job, input=inp1).save()
     inp2 = models.Input(owner=self.job.owner,
                         path=self.paths.next(),
                         input_type="rupture",
                         size=self.sizes.next())
     inp2.save()
     models.Input2job(oq_job=self.job, input=inp2).save()
     inp3 = models.Input(owner=self.job.owner,
                         path=self.paths.next(),
                         input_type="exposure",
                         size=self.sizes.next())
     inp3.save()
     models.Input2job(oq_job=self.job, input=inp3).save()
     self.assertEqual([inp1, inp3],
                      models.inputs4job(self.job.id, input_type="exposure"))
Ejemplo n.º 13
0
    def test_get_site_model_too_many_site_models(self):
        job = engine.prepare_job()
        site_model_inp1 = models.Input(
            owner=job.owner, digest='fake', path='fake',
            input_type='site_model', size=0
        )
        site_model_inp1.save()
        site_model_inp2 = models.Input(
            owner=job.owner, digest='fake', path='fake',
            input_type='site_model', size=0
        )
        site_model_inp2.save()

        # link both site models to the job:
        models.Input2job(input=site_model_inp1, oq_job=job).save()
        models.Input2job(input=site_model_inp2, oq_job=job).save()

        with self.assertRaises(RuntimeError) as assert_raises:
            general.get_site_model(job.id)

        self.assertEqual('Only 1 site model per job is allowed, found 2.',
                         assert_raises.exception.message)
Ejemplo n.º 14
0
    def test_get_site_model(self):
        job = engine.prepare_job()
        site_model_inp = models.Input(
            owner=job.owner, digest='fake', path='fake',
            input_type='site_model', size=0
        )
        site_model_inp.save()

        # The link has not yet been made in the input2job table.
        self.assertIsNone(general.get_site_model(job.id))

        # Complete the link:
        models.Input2job(input=site_model_inp, oq_job=job).save()

        actual_site_model = general.get_site_model(job.id)
        self.assertEqual(site_model_inp, actual_site_model)
Ejemplo n.º 15
0
    def _setup_input(self, input_type, size, path, digest, jobs):
        """Create a model input and associate it with the given jobs.

        Its owner will be the same as the owner of the first job.
        """
        # In order for the tests in this class to work we need to disable any
        # other model inputs that might still be in the database.
        models.Input2job.objects.all().delete()

        mdl = models.Input(input_type=input_type, size=size, path=path,
                           owner=jobs[0].owner, digest=digest)
        mdl.save()
        for job in jobs:
            i2j = models.Input2job(input=mdl, oq_job=job)
            i2j.save()
        return mdl
Ejemplo n.º 16
0
 def setUp(self):
     fmdl_input = models.Input(input_type="fragility",
                               size=123,
                               path="/tmp/fake-fragility-path",
                               owner=self.job.owner)
     fmdl_input.save()
     i2j = models.Input2job(input=fmdl_input, oq_job=self.job)
     i2j.save()
     self.mdl = models.FragilityModel(input=fmdl_input,
                                      owner=self.job.owner,
                                      format="discrete",
                                      lss="a b c".split(),
                                      imls=[0.2, 0.3],
                                      imt="mmi")
     self.mdl.save()
     self.continuous_mdl = models.FragilityModel(input=fmdl_input,
                                                 owner=self.job.owner,
                                                 format="continuous",
                                                 lss="d e f".split())
     self.continuous_mdl.save()