def test_value_not_allowed_type(self): """Other than `Trial.Result.allowed_types` are not allowed in `Trial.Result.type`. Same for `Trial.Param`. """ with pytest.raises(ValueError): v = Trial.Result(name='asfda', type='hoho') v = Trial.Result() with pytest.raises(ValueError): v.type = 'asfda' with pytest.raises(ValueError): v = Trial.Param(name='asfda', type='hoho') v = Trial.Param() with pytest.raises(ValueError): v.type = 'asfda'
def test_push_completed_trial(hacked_exp, database, random_dt): """Successfully push a completed trial into database.""" trial = hacked_exp.reserve_trial() trial.results = [] res = Trial.Result(name='yolo', type='objective', value='3') trial.results.append(res) hacked_exp.push_completed_trial(trial) yo = database.trials.find_one({'_id': trial.id}) assert len(yo['results']) == len(trial.results) assert yo['results'][0] == trial.results[0].to_dict() assert yo['status'] == 'completed' assert yo['end_time'] == random_dt
def _consume(self, trial, workdirname): config_file = tempfile.NamedTemporaryFile(mode='w', prefix='trial_', suffix='.conf', dir=workdirname, delete=False) config_file.close() log.debug("## New temp config file: %s", config_file.name) results_file = tempfile.NamedTemporaryFile(mode='w', prefix='results_', suffix='.log', dir=workdirname, delete=False) results_file.close() log.debug("## New temp results file: %s", results_file.name) log.debug( "## Building command line argument and configuration for trial.") cmd_args = self.template_builder.build_to(config_file.name, trial) log.debug( "## Launch user's script as a subprocess and wait for finish.") script_process = self.launch_process(results_file.name, cmd_args) if script_process is None: return None returncode = script_process.wait() if returncode != 0: log.error( "Something went wrong. Check logs. Process " "returned with code %d !", returncode) return None log.debug( "## Parse results from file and fill corresponding Trial object.") results = self.converter.parse(results_file.name) trial.results = [ Trial.Result(name=res['name'], type=res['type'], value=res['value']) for res in results ] return trial