示例#1
0
  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)
示例#2
0
    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