def METHOD_NAME(self):
    q = queue.Queue()
    fun = q.put
    timer = Timer()
    scheduler = sched.scheduler(timer.time, timer.sleep)
    now = timer.time()
    event1 = scheduler.enterabs(now + 1, 1, fun, (1,))
    event2 = scheduler.enterabs(now + 2, 1, fun, (2,))
    event4 = scheduler.enterabs(now + 4, 1, fun, (4,))
    event5 = scheduler.enterabs(now + 5, 1, fun, (5,))
    event3 = scheduler.enterabs(now + 3, 1, fun, (3,))
    t = threading.Thread(target=scheduler.run)
    t.start()
    timer.advance(1)
    self.assertEqual(q.get(timeout=TIMEOUT), 1)
    self.assertTrue(q.empty())
    scheduler.cancel(event2)
    scheduler.cancel(event5)
    timer.advance(1)
    self.assertTrue(q.empty())
    timer.advance(1)
    self.assertEqual(q.get(timeout=TIMEOUT), 3)
    self.assertTrue(q.empty())
    timer.advance(1)
    self.assertEqual(q.get(timeout=TIMEOUT), 4)
    self.assertTrue(q.empty())
    timer.advance(1000)
    t.join(timeout=TIMEOUT)
    self.assertFalse(t.is_alive())
    self.assertTrue(q.empty())
    self.assertEqual(timer.time(), 4)