class BasicFunctionTestCase(PersistMixin, TestCase): def setUp(self): self.ram = self.create_ram() self.persist = self.create_persist() self.scheduler = Scheduler(ram_storage=self.ram, persist_storage=self.persist) def test_add(self): event_id = self.scheduler.add(delay_time=1.0, foobar=1) self.assertGreater(event_id, 0) def test_delete(self): event_id = self.scheduler.add(delay_time=1.0, foobar=1) self.scheduler.delete(event_id) self.assertEqual(self.ram.get(event_id), None)
class RestoreTestCase(PersistMixin, TestCase): N = 100 def setUp(self): self.ram = self.create_ram() self.persist = self.create_persist() self.scheduler1 = Scheduler(ram_storage=self.create_ram(), persist_storage=self.persist) self.trigger_time = int(time() + 600) for i in xrange(self.N): self.scheduler1.add(trigger_time=self.trigger_time, ev_index=i, ev_data=[{'%s' % i: i}]) self.scheduler2 = Scheduler(ram_storage=self.create_ram(), persist_storage=self.persist) def test_restore(self): self.scheduler2.restore() events = self.scheduler2.get_events(self.trigger_time) self.assertEqual(len(events), self.N) for event in events: self.assertEqual(event.data.ev_data[0][str(event.data.ev_index)], event.data.ev_index)
def do_test(self, duration, events): current_time = int(time()) schedule = self.generate_schedule(duration, events, current_time=current_time) scheduler = Scheduler( ram_storage=self.ram_storages[randint(0,len(self.ram_storages)-1)](), persist_storage=self.create_persist() ) for event_time, events in schedule: if event_time == 0: continue for event in events: scheduler.add(trigger_time=event_time, key=event['key']) for i in xrange(0, duration): events = scheduler.get_events(current_time + i * 60.0) events = [ev.data for ev in events] if events != schedule[i][1]: print "fail tick = ", i events = scheduler.get_events(current_time + i * 60.0) self.assertEqual(events, schedule[i][1])
from random import randint from time import time fake = FakePersistStorage() db_persist = DBPersistStorage('mysql://*****:*****@localhost/liketools_scheduler') if not db_persist.initiated(): db_persist.init() scheduler = Scheduler(ram_storage=RBTreeStorage(), persist_storage=FakePersistStorage())#db_persist) #scheduler.restore() min_time = int(time()) max_time = min_time + min_time / 2; delay = min_time / 2; for i in xrange(10**3): scheduler.add(delay_time=randint(0, delay), index=i) s = 0.0 N = 100 for i in xrange(N): print i, " iteration..." t = time() events = scheduler.get_events() del events s = s + time() - t print s/N