def test_v2_set_weights_config(): example = copy.deepcopy(er_example_step3) example['status']['currentWeightDistribution'] = [{ "name": "default", "value": 50 }, { "name": "canary", "value": 50 }] example['spec']['strategy']['weights'] = { "maxCandidateWeight": 53, "maxCandidateWeightIncrement": 2, "algorithm": 'Progressive' } expected_resp = [{ "name": "default", "value": 48 }, { "name": "canary", "value": 52 }] expr = ExperimentResource(**example) resp = get_weights(expr.convert_to_float()) assert resp.data == expected_resp
def test_v2_weights_with_no_winner(): example = copy.deepcopy(er_example_step3) example['status']['analysis']['winnerAssessment']['data'] = { "winnerFound": False } expr = ExperimentResource(**example) resp = get_weights(expr.convert_to_float()) assert resp.data == w_response['data']
def test_v2_weights_with_winner(): expr = ExperimentResource(**er_example_step3) resp = get_weights(expr.convert_to_float()) expected_resp = [ VersionWeight(name="default", value=5), VersionWeight(name="canary", value=95) ] assert resp.data == expected_resp
def provide_weights(experiment_resource: ExperimentResource = Body( ..., example=er_example_step3)): """ POST iter8 2.0 experiment resource, whose status includes aggregated metrics/version_assessments/winner assessment, and obtain weights. \f :body er: ExperimentResource """ return get_weights(experiment_resource.convert_to_float())
def test_v2_inc_old_weights_and_best_versions_and_canary_winner(): example = copy.deepcopy(er_example_step3) example['status']['currentWeightDistribution'] = [{ "name": "default", "value": 70 }, { "name": "canary", "value": 30 }] expected_resp = [{ "name": "default", "value": 5 }, { "name": "canary", "value": 95 }] expr = ExperimentResource(**example) resp = get_weights(expr.convert_to_float()) assert resp.data == expected_resp
def test_v2_inc_old_weights_and_no_best_versions(): example = copy.deepcopy(er_example_step3) example['status']['currentWeightDistribution'] = [{ "name": "default", "value": 50 }, { "name": "canary", "value": 50 }] example["status"]["analysis"]["winnerAssessment"]["data"] = { "winnerFound": False } expected_resp = [{ "name": "default", "value": 95 }, { "name": "canary", "value": 5 }] expr = ExperimentResource(**example) resp = get_weights(expr.convert_to_float()) assert resp.data == expected_resp
def test_v2_weights_endpoint(): expr = ExperimentResource(**er_example_step3) get_weights(expr.convert_to_float())
def test_v2_abn_w_without_wa(): expr = ExperimentResource(**abn_er_example) try: get_weights(expr.convert_to_float()) except AttributeError: pass