def test_validation_fails(self): variant_set_cfg_none = None variant_set_cfg_0 = [] variant_set_cfg_2 = [ { "name": "variant_1", "size": 0.25 }, { "name": "variant_2", "size": 0.25 }, ] variant_set_cfg_too_big = [ { "name": "variant_1", "size": 1.05 }, ] with self.assertRaises(ValueError): variant_set_none = RolloutVariantSet(variant_set_cfg_none) with self.assertRaises(ValueError): variant_set_0 = RolloutVariantSet(variant_set_cfg_0) with self.assertRaises(ValueError): variant_set_2 = RolloutVariantSet(variant_set_cfg_2) with self.assertRaises(ValueError): variant_set_too_big = RolloutVariantSet(variant_set_cfg_too_big)
def test_distribution_def_odd(self): variant_cfg = [{"name": "variant_1", "size": 1.0}] variant_set = RolloutVariantSet(variants=variant_cfg, num_buckets=NUM_BUCKETS_ODD) variant_counts = {"variant_1": 0, None: 0} for bucket in range(0, NUM_BUCKETS_ODD): variant = variant_set.choose_variant(bucket) variant_counts[variant] += 1 self.assertEqual(len(variant_counts), 2) self.assertEqual(variant_counts["variant_1"], 1037) self.assertEqual(variant_counts[None], 0)
def test_distribution_single_bucket(self): cfg = [{"name": "variant_1", "size": 0.001}] variant_set = RolloutVariantSet(variants=cfg, num_buckets=NUM_BUCKETS_DEFAULT) variant_counts = {"variant_1": 0, None: 0} for bucket in range(0, NUM_BUCKETS_DEFAULT): variant = variant_set.choose_variant(bucket) variant_counts[variant] += 1 self.assertEqual(len(variant_counts), 2) self.assertEqual(variant_counts["variant_1"], 1) self.assertEqual(variant_counts[None], 999)
def create_rollout_variant_set(): cfg = generate_variant_config() return RolloutVariantSet(variants=cfg, num_buckets=NUM_BUCKETS_DEFAULT)