def test_interpreter_overrides(self): # test overriding a parameter that gets set by the experiment proc = Interpreter(self.compiled, self.interpreter_salt, {'userid': 123454}) proc.set_overrides({'specific_goal': 0}) self.assertEqual(proc.get_params().get('specific_goal'), 0) self.assertEqual(proc.get_params().get('ratings_goal'), None) # test to make sure input data can also be overridden proc = Interpreter(self.compiled, self.interpreter_salt, {'userid': 123453}) proc.set_overrides({'userid': 123454}) self.assertEqual(proc.get_params().get('specific_goal'), 1)
def test_interpreter_overrides(self): # test overriding a parameter that gets set by the experiment proc = Interpreter(self.compiled, self.interpreter_salt, {'userid': 123454}) proc.set_overrides({'specific_goal': 0}) self.assertEqual(proc.get_params().get('specific_goal'), 0) self.assertEqual(proc.get_params().get('ratings_goal'), None) # test to make sure input data can also be overridden proc = Interpreter(self.compiled, self.interpreter_salt, {'userid': 123453}) proc.set_overrides({'userid': 123454}) self.assertEqual(proc.get_params().get('specific_goal'), 1)
def testPlanOutScript(script, inputs, overrides=None, assertions=None): payload = {} # make sure experiment runs with the given inputs if inputs: i = Interpreter(script, 'demo_salt', inputs) if overrides: i.set_overrides(overrides) else: payload['errors'] = [{ "error_code": "no_inputs", "message": "Missing inputs" }] return payload try: results = dict(i.get_params()) # executes experiment except Exception as err: #message = "Error running experiment: %s" % traceback.format_exc(0) message = "Error running experiment:\n%s" % err payload['errors'] = [{ "error_code": "runtime", "message": message }] return payload payload['results'] = results # validate if input contains validation code validation_errors = [] if assertions: for (key, value) in assertions.iteritems(): if key not in results: validation_errors.append({ "error_code": "assertion", "message": {"param": key} }) else: if results[key] != value: message = {'param': key, 'expected': value, 'got': results[key]} validation_errors.append({ "error_code": "assertion", "message": message }) if validation_errors: payload['errors'] = validation_errors return payload
def testPlanOutScript(script, inputs={}, overrides=None, assertions=None): payload = {} # make sure experiment runs with the given inputs i = Interpreter(script, 'demo_salt', inputs) if overrides: i.set_overrides(overrides) try: results = dict(i.get_params()) # executes experiment except Exception as err: #message = "Error running experiment: %s" % traceback.format_exc(0) message = "Error running experiment:\n%s" % err payload['errors'] = [{"error_code": "runtime", "message": message}] return payload payload['results'] = results # validate if input contains validation code validation_errors = [] if assertions: for (key, value) in assertions.iteritems(): if key not in results: validation_errors.append({ "error_code": "assertion", "message": { "param": key } }) else: if results[key] != value: message = { 'param': key, 'expected': value, 'got': results[key] } validation_errors.append({ "error_code": "assertion", "message": message }) if validation_errors: payload['errors'] = validation_errors return payload