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))
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()
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()
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()
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"))
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))
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()
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")
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")
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()
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()
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"))
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)
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)
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
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()