@@ -469,6 +469,7 @@ def test_none_returned_on_variant_call_with_bad_id(self):
469469 "experiment" : {
470470 "id" : 1 ,
471471 "name" : "test" ,
472+ "experiment_version" : 1 ,
472473 "variants" : [
473474 {"range_start" : 0.0 , "range_end" : 0.2 , "name" : "active" },
474475 {"range_start" : 0.2 , "range_end" : 0.4 , "name" : "control_1" },
@@ -1263,6 +1264,39 @@ def test_get_experiment(self):
12631264 self .assertEqual (experiment .stop_ts , cfg ["stop_ts" ])
12641265 self .assertEqual (experiment .owner , cfg ["owner" ])
12651266
1267+ def test_get_variant_without_expose_with_HG_as_control_1_and_child_returns_none_does_expose (
1268+ self ,
1269+ ):
1270+ self .exp_base_config ["exp_1" ].update ({"parent_hg_name" : "hg" })
1271+ # force child "exp_1" to return `None`
1272+ self .exp_base_config ["exp_1" ]["experiment" ]["variants" ] = [
1273+ {"name" : "control_1" , "size" : 0.0 , "range_end" : 0.0 , "range_start" : 0.0 },
1274+ ]
1275+
1276+ self .exp_base_config .update (self .parent_hg_config )
1277+ # force "hg" to bucket "control_1"
1278+ self .exp_base_config ["hg" ]["experiment" ]["variants" ] = [
1279+ {"name" : "control_1" , "size" : 1.00 , "range_end" : 1.0 , "range_start" : 0 },
1280+ {"name" : "holdout" , "size" : 0.00 , "range_end" : 0.0 , "range_start" : 0.00 },
1281+ ]
1282+
1283+ with create_temp_config_file (self .exp_base_config ) as f :
1284+ decider = self .setup_decider (f .name , self .dc )
1285+
1286+ self .assertEqual (self .event_logger .log .call_count , 0 )
1287+ variant = decider .get_variant_without_expose ("exp_1" )
1288+
1289+ assert variant == None
1290+
1291+ # exposure from control_1 of "hg"
1292+ self .assertEqual (self .event_logger .log .call_count , 1 )
1293+ event_fields = self .event_logger .log .call_args [1 ]
1294+
1295+ # `variant == None` for child but event will fire with `variant == "control_1"` for analysis
1296+ self .assert_exposure_event_fields (
1297+ experiment_name = "hg" , variant = "control_1" , event_fields = event_fields
1298+ )
1299+
12661300
12671301class TestDeciderGetDynamicConfig (unittest .TestCase ):
12681302 def setUp (self ):
0 commit comments