def testExperimentRunnerUpdates(self): experiment = get_experiment_with_batch_trial() save_experiment(experiment) # one runner on the batch self.assertEqual(get_session().query(SQARunner).count(), 1) # add runner to experiment runner = get_synthetic_runner() experiment.runner = runner save_experiment(experiment) self.assertEqual(get_session().query(SQARunner).count(), 2) # update runner # (should perform update in place) runner = get_synthetic_runner() runner.dummy_metadata = {"foo": "bar"} experiment.runner = runner save_experiment(experiment) self.assertEqual(get_session().query(SQARunner).count(), 2) # remove runner # (old one should be deleted) experiment.runner = None save_experiment(experiment) self.assertEqual(get_session().query(SQARunner).count(), 1) loaded_experiment = load_experiment(experiment.name) self.assertEqual(experiment, loaded_experiment)
def testExperimentTrialUpdates(self): experiment = get_experiment_with_batch_trial() save_experiment(experiment) self.assertEqual(get_session().query(SQATrial).count(), 1) self.assertEqual(get_session().query(SQARunner).count(), 1) # add trial trial = experiment.new_batch_trial() runner = get_synthetic_runner() trial.runner = runner save_experiment(experiment) self.assertEqual(get_session().query(SQATrial).count(), 2) self.assertEqual(get_session().query(SQARunner).count(), 2) # update trial's runner runner.dummy_metadata = "dummy metadata" trial.runner = runner save_experiment(experiment) self.assertEqual(get_session().query(SQATrial).count(), 2) self.assertEqual(get_session().query(SQARunner).count(), 2) trial.run() save_experiment(experiment) self.assertEqual(get_session().query(SQATrial).count(), 2) loaded_experiment = load_experiment(experiment.name) self.assertEqual(experiment, loaded_experiment)
def testRunnerDecodeFailure(self): runner = get_synthetic_runner() sqa_runner = self.encoder.runner_to_sqa(runner) sqa_runner.runner_type = "foobar" with self.assertRaises(SQADecodeError): self.decoder.runner_from_sqa(sqa_runner)