Пример #1
0
class DMEventHandlerTests(unittest.TestCase):
  def setUp(self):
    self.se = SimulationEngine()
    self.se.prng = np.random.RandomState(0)
    self.dmeh = DMEventHandler(self.se)
    self.dmeh.interarrival_rate = 0.5
    self.dmeh.duration = 2.5

  def test_init(self):
    self.assertEqual(self.dmeh.interarrival_rate, 0.5)
    self.assertEqual(self.dmeh.duration, 2.5)

  def test_generate_sr_event(self):
    event_time = 1.5
    event = self.dmeh._generate_sr_event(event_time)
    prng = np.random.RandomState(0)
    bundle = (float(prng.choice(self.dmeh._w_space, 1)[0]),
              prng.choice(list(DMEventHandler.BITRATES.keys()), 1)[0])
    self.assertEqual(event.identifier, DMEventHandler.SR_EVENT)
    self.assertGreater(event.time, event_time)
    self.assertIsInstance(event.kwargs.get('bundle', None), tuple)
    self.assertIn(event.kwargs.get('bundle', None)[0], self.dmeh._w_space)
    self.assertIn(event.kwargs.get('bundle', None)[1], DMEventHandler.BITRATES.keys())

  def test_generate_st_event(self):
    event_time = 1.5
    event = self.dmeh._generate_st_event(event_time, None)
    self.assertEqual(event.identifier, DMEventHandler.ST_EVENT)
    self.assertGreater(event.time, event_time)
    self.assertEqual(event.kwargs.get('bundle', None), None)

  def test_select_winner(self):
    bidders = [
        Bidder(10000, costs={DMEventHandler.WEB_BROWSING: 0.75},
          bidding_params={'method':'myopic'}, reputation=0.25,
          reputation_params={'method':'lebodic', 'window_size':5}),
        Bidder(10000, costs={DMEventHandler.WEB_BROWSING: 0.25},
          bidding_params={'method':'myopic'}, reputation=0.75,
          reputation_params={'method':'lebodic', 'window_size':5})]
    self.dmeh.bidders = bidders
    self.assertEqual(self.dmeh._select_winner(DMEventHandler.WEB_BROWSING, 0.5),
                     bidders[1])
    self.assertEqual(self.dmeh._select_winner(DMEventHandler.WEB_BROWSING, 0.25),
                     bidders[0])
    self.assertEqual(self.dmeh._select_winner(DMEventHandler.WEB_BROWSING, 0.75),
                     bidders[1])
Пример #2
0
 def setUp(self):
   self.se = SimulationEngine()
   self.se.prng = np.random.RandomState(0)
   self.dmeh = DMEventHandler(self.se)
   self.dmeh.interarrival_rate = 0.5
   self.dmeh.duration = 2.5