def setUp(self): self.total_bitrate = 1000 self.costs = {DMEventHandler.WEB_BROWSING: 0.5} self.reputation = 0.5 # Bidder instance intialized with lebodic's reputation update self.lebodic_params = {'method':'lebodic', 'window_size':5} self.bidder1 = Bidder(total_bitrate=self.total_bitrate, costs=self.costs, bidding_params={'method':'myopic'}, reputation=self.reputation, reputation_params=self.lebodic_params) # Bidder instace initialized with mcdiarmid's reputation update self.mcdiarmid_params = {'method':'mcdiarmid', 'commitment':0.8} self.bidder2 = Bidder(total_bitrate=self.total_bitrate, costs=self.costs, bidding_params={'method':'myopic'}, reputation=self.reputation, reputation_params=self.mcdiarmid_params)
class BidderTests(unittest.TestCase): def setUp(self): self.total_bitrate = 1000 self.costs = {DMEventHandler.WEB_BROWSING: 0.5} self.reputation = 0.5 # Bidder instance intialized with lebodic's reputation update self.lebodic_params = {'method':'lebodic', 'window_size':5} self.bidder1 = Bidder(total_bitrate=self.total_bitrate, costs=self.costs, bidding_params={'method':'myopic'}, reputation=self.reputation, reputation_params=self.lebodic_params) # Bidder instace initialized with mcdiarmid's reputation update self.mcdiarmid_params = {'method':'mcdiarmid', 'commitment':0.8} self.bidder2 = Bidder(total_bitrate=self.total_bitrate, costs=self.costs, bidding_params={'method':'myopic'}, reputation=self.reputation, reputation_params=self.mcdiarmid_params) def test_init_raises_uninitialized_argument_error(self): with self.assertRaises(errors.UninitializedArgumentError): Bidder() def test_init_properties(self): self.assertEqual(self.bidder1.costs, self.costs) self.assertEqual(self.bidder1.reputation, self.reputation) self.assertEqual(self.bidder1.total_bitrate, self.total_bitrate) def test_init_lebodics_reputation_update_method(self): self.assertEqual(self.bidder1._reputation_update_method.func, self.bidder1._bidder_helper.lebodics_reputation_update) self.assertEqual(self.bidder1._reputation_update_method.args, (self.lebodic_params['window_size'],)) def test_init_alisdairs_reputation_update_method(self): self.assertEqual(self.bidder2._reputation_update_method.func, self.bidder2._bidder_helper.mcdiarmids_reputation_update) self.assertEqual(self.bidder2._reputation_update_method.args, (self.mcdiarmid_params['commitment'],)) def test_init_myopic_bidding_method(self): self.assertEqual(self.bidder1._bidding_method.func, self.bidder1._bidder_helper.myopic_bidding) self.assertEqual(self.bidder1._bidding_method.args, ()) def test_available_bitrate_update(self): usage_sr_numbers = [1, 2] usage_bitrates = [488, 0] reclaim_sr_numbers = [2, 1] reclaim_bitrates = [488, self.total_bitrate] # Test bitrate usage for i in range(2): self.bidder1._update_available_bitrate(usage_sr_numbers[i], DMEventHandler.WEB_BROWSING) self.assertEqual(self.bidder1.available_bitrate, usage_bitrates[i]) # Test bitrate reclaim for i in range(2): self.bidder1._update_available_bitrate(reclaim_sr_numbers[i]) self.assertEqual(self.bidder1.available_bitrate, reclaim_bitrates[i]) def test_success_list_update(self): service_type = DMEventHandler.WEB_BROWSING self.bidder1._update_success_list(service_type) self.bidder1._update_available_bitrate(0, service_type) self.bidder1._update_success_list(service_type) self.assertEqual(self.bidder1.success_list, [1, 0])