def test_uniform_choice(self): # test name: deterministic-1 # client: 09a7407c-e371-492b-82e3-ef438d960ca3 # num alts: 2 # salted: deterministic-1.09a7407c-e371-492b-82e3-ef438d960ca3 # hased: 179d8fdfcd3b4725a112121af37620cca633fbdc # first 7: 179d8fd # to int: 24762621 # mod 2: 1 exp = Experiment('deterministic-1', ['y', 'n'], redis=self.redis) cli = SClient('09a7407c-e371-492b-82e3-ef438d960ca3', redis=self.redis) alt = exp.get_alternative(cli).name self.assertEqual('n', alt) # test name: deterministic-1 # client: 09a7407c-e371-492b-82e3-ef438d960ca3 # num alts: 3 # salted: deterministic-1.09a7407c-e371-492b-82e3-ef438d960ca3 # hased: 179d8fdfcd3b4725a112121af37620cca633fbdc # first 7: 179d8fd # to int: 24762621 # mod 3: 1 exp = Experiment('deterministic-1', ['y', 'n', 'm'], redis=self.redis) cli = SClient('09a7407c-e371-492b-82e3-ef438d960ca3', redis=self.redis) alt = exp.get_alternative(cli).name self.assertEqual('n', alt) # test name: deterministic-2 # client: 1b7b8b69-9b5b-4720-ba08-3e449fd60260 # num alts: 3 # salted: deterministic-2.1b7b8b69-9b5b-4720-ba08-3e449fd60260 # hased: c55c5f029437e37ba830c18810362a3ffaa31538 # first 7: c55c5f0 # to int: 206947824 # mod 3: 0 exp = Experiment('deterministic-2', ['y', 'n', 'm'], redis=self.redis) cli = SClient('1b7b8b69-9b5b-4720-ba08-3e449fd60260', redis=self.redis) alt = exp.get_alternative(cli).name self.assertEqual('y', alt) # test name: deterministic-3 # client: 53c07ed4-80cd-4860-ad68-7eb76ed27180 # num alts: 6 # salted: deterministic-3.53c07ed4-80cd-4860-ad68-7eb76ed27180 # hased: d802aac8271a522eac4ad596967a5bf3e5696a72 # first 7: d802aac # to int: 226503340 # mod 6: 4 exp = Experiment('deterministic-3', ['y', 'n', 'm', 'one', 'two', 'three'], redis=self.redis) cli = SClient('53c07ed4-80cd-4860-ad68-7eb76ed27180', redis=self.redis) alt = exp.get_alternative(cli).name self.assertEqual('two', alt)
def test_participate_with_client_chosen_alternative(self, mock_find_or_create): exp = Experiment("test", ["no", "yes"], winner=None) exp.get_alternative = Mock(return_value=Alternative("yes", exp)) mock_find_or_create.return_value = exp alternative = participate("test", ["no", "yes"], "id1", alternative="yes") exp.get_alternative.assert_called_once() self.assertEqual("yes", alternative.name)
def test_participate(self, mock_find_or_create): exp = Experiment("test", ["no", "yes"], winner=None) exp.get_alternative = Mock(return_value=Alternative("yes", exp)) mock_find_or_create.return_value = exp alternative = participate("test", ["no", "yes"], "id1") self.assertEqual("yes", alternative.name) self.assertEqual("test", alternative.experiment.name)
def test_cant_convert_twice(self): exp = Experiment('test-cant-convert-twice', ['1', '2'], redis=self.app.redis) client = Client("eric", redis=self.app.redis) alt = exp.get_alternative(client) exp.convert(client) self.assertEqual(exp.total_conversions(), 1) exp.convert(client, dt=dateutil.parser.parse("2012-01-01")) self.assertEqual(exp.total_conversions(), 1) data = exp.objectify_by_period("day") altdata = [a for a in data["alternatives"] if a["name"] == alt.name][0]["data"] total_participants = sum([d["participants"] for d in altdata]) self.assertEqual(total_participants, 1) total_conversions = sum([d["conversions"] for d in altdata]) self.assertEqual(data["has_winner"], False) self.assertEqual(total_conversions, 1) # Only retrieve the slim set. data = exp.objectify_by_period("day", slim=True) self.assertFalse(data.has_key("has_winner")) self.assertFalse(data.has_key("kpi")) self.assertFalse(data.has_key("kpis")) self.assertFalse(data.has_key("period"))
def test_find_existing_conversion(self): exp = Experiment('test-find-existing-conversion', ['1', '2'], redis=self.app.redis) client = Client("eric", redis=self.app.redis) alt = exp.get_alternative(client) exp.convert(client) alt2 = exp.existing_conversion(client) self.assertIsNotNone(alt2) self.assertTrue(alt.name == alt2.name) client2 = Client("zack", redis=self.app.redis) alt3 = exp.existing_conversion(client2) self.assertIsNone(alt3)
def test_find_existing_conversion(self): exp = Experiment('test-find-existing-conversion', ['1', '2'], redis=self.app.redis) client = Client("eric", redis=self.app.redis) alt = exp.get_alternative(client) exp.convert(client) alt2 = exp.existing_conversion(client) self.assertIsNotNone(alt2) self.assertTrue(alt.name == alt2.name) client2 = Client("zack", redis=self.app.redis) alt3 = exp.existing_conversion(client2) self.assertIsNone(alt3)
def test_cant_convert_twice(self): exp = Experiment('test-cant-convert-twice', ['1', '2'], redis=self.app.redis) client = Client("eric", redis=self.app.redis) alt = exp.get_alternative(client) exp.convert(client) self.assertEqual(exp.total_conversions(), 1) exp.convert(client, dt=dateutil.parser.parse("2012-01-01")) self.assertEqual(exp.total_conversions(), 1) data = exp.objectify_by_period("day") altdata = [a for a in data["alternatives"] if a["name"] == alt.name][0]["data"] total_participants = sum([d["participants"] for d in altdata]) self.assertEqual(total_participants, 1) total_conversions = sum([d["conversions"] for d in altdata]) self.assertEqual(total_conversions, 1)
def test_cant_convert_twice(self): exp = Experiment('test-cant-convert-twice', ['1', '2'], self.app.redis) client = Client("eric", self.app.redis) alt = exp.get_alternative(client) exp.convert(client) self.assertEqual(exp.total_conversions(), 1) exp.convert(client, dt=dateutil.parser.parse("2012-01-01")) self.assertEqual(exp.total_conversions(), 1) data = exp.objectify_by_period("day") altdata = [a for a in data["alternatives"] if a["name"] == alt.name][0]["data"] total_participants = sum([d["participants"] for d in altdata]) self.assertEqual(total_participants, 1) total_conversions = sum([d["conversions"] for d in altdata]) self.assertEqual(total_conversions, 1)
def test_cant_convert_twice(self): exp = Experiment('test-cant-convert-twice', ['1', '2'], redis=self.app.redis) client = Client("eric", redis=self.app.redis) alt = exp.get_alternative(client) exp.convert(client) self.assertEqual(exp.total_conversions(), 1) exp.convert(client, dt=dateutil.parser.parse("2012-01-01")) self.assertEqual(exp.total_conversions(), 1) data = exp.objectify_by_period("day") altdata = [a for a in data["alternatives"] if a["name"] == alt.name][0]["data"] total_participants = sum([d["participants"] for d in altdata]) self.assertEqual(total_participants, 1) total_conversions = sum([d["conversions"] for d in altdata]) self.assertEqual(data["has_winner"], False) self.assertEqual(total_conversions, 1) # Only retrieve the slim set. data = exp.objectify_by_period("day", slim=True) self.assertFalse(data.has_key("has_winner")) self.assertFalse(data.has_key("kpi")) self.assertFalse(data.has_key("kpis")) self.assertFalse(data.has_key("period"))
def test_convert(self): exp = Experiment('test-convert', ['1', '2'], redis=self.app.redis) client = Client("eric", redis=self.app.redis) exp.get_alternative(client) exp.convert(client) self.assertEqual(exp.total_conversions(), 1)
def test_convert(self): exp = Experiment('test-convert', ['1', '2'], redis=self.app.redis) client = Client("eric", redis=self.app.redis) exp.get_alternative(client) exp.convert(client) self.assertEqual(exp.total_conversions(), 1)