示例#1
0
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)
示例#2
0
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)
示例#3
0
    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])
示例#4
0
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