Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
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])