def setUp(self): self.queue = EventQueue() self.event = prototype.JobEvent(timestamp=0, job=None) self.events = [ prototype.JobEvent(timestamp=i, job=None) for i in xrange(10) ] self.handler = _create_handler()
def test_sometimes_relevant_handler(self): self.queue.add_handler(prototype.JobEvent, self.handler) self._add_event_and_advance(prototype.JobEvent(timestamp=0, job="x")) self.failUnless(self.handler.called) self.handler.called = False self._add_event_and_advance( prototype.JobStartEvent(timestamp=1, job="x")) self.failIf(self.handler.called) self._add_event_and_advance(prototype.JobEvent(timestamp=2, job="x")) self.failUnless(self.handler.called)
def test_sort_order(self): e1 = prototype.JobEvent(timestamp=10, job="abc") e2 = prototype.JobEvent(timestamp=22, job="abc") self.failUnless(e1 < e2) self.failIf(e1 >= e2)
def test_nonequal_type(self): e1 = prototype.JobEvent(timestamp=10, job="abc") e2 = prototype.JobStartEvent(timestamp=10, job="abc") # different type self.assertNotEqual(e1, e2)
def test_nonequal_job(self): e1 = prototype.JobEvent(timestamp=10, job="abc") e2 = prototype.JobEvent(timestamp=10, job="def") self.assertNotEqual(e1, e2)
def test_equal(self): e1 = prototype.JobEvent(timestamp=10, job="abc") e2 = prototype.JobEvent(timestamp=10, job="abc") self.assertEqual(e1, e2)
def test_str_sanity(self): str(prototype.JobEvent(timestamp=11, job=None))
def test_add_event_same_timestamp_after_advance(self): # same timestamp should succeed even after an event has been handled self._add_event_and_advance(prototype.JobEvent(timestamp=2, job="x")) self.queue.add_event(prototype.JobEvent(timestamp=2, job="y"))
def test_add_event_earlier_event_after_later_advance(self): # after handling an event with a later timestamp, adding an event with # an older timestamp should fail self._add_event_and_advance(prototype.JobEvent(timestamp=2, job="x")) self.assertRaises(Exception, self.queue.add_event, prototype.JobEvent(timestamp=1, job="x"))
def test_remove_event_fails_on_missing_event(self): event1 = prototype.JobEvent(0, 0) event2 = prototype.JobEvent(0, 1) assert event1 != event2 # different events self.queue.add_event(event1) self.assertRaises(Exception, self.queue.remove_event, event2)
def _gen_random_timestamp_events(): return [ prototype.JobEvent(timestamp=random.randrange(0, 100), job=str(i)) for i in xrange(30) ]