def test_call_at(self): d = dummy() d.called = False def func(): d.called = True self.loop.call_at(self.loop.time()+0.1, func) self.loop.run() self.assertTrue(d.called)
def test_call_soon(self): d = dummy() d.called = False def func(): d.called = True self.loop.call_soon(func) self.loop.run() self.assertTrue(d.called)
def test_call_later(self): d = dummy() d.called = False def func(): d.called = True self.loop.call_later(0.1, func) self.loop.run() self.assertTrue(d.called)
def test_spawn(self): d = dummy() d.called = False def func(): d.called = True evergreen.spawn(func) self.loop.run() self.assertTrue(d.called)
def test_task_decorator(self): d = dummy() d.called = False @evergreen.task def func(): d.called = True func() self.loop.run() self.assertTrue(d.called)
def test_spawn_kill(self): d = dummy() d.called = False def func(): d.called = True task = evergreen.spawn(func) task.kill() self.loop.run() self.assertFalse(d.called)
def test_simple_task(self): d = dummy() d.called = False def func(): d.called = True task = evergreen.Task(target=func) task.start() self.loop.run() self.assertTrue(d.called)
def test_call_later_cancel(self): d = dummy() d.called = False def func(): d.called = True h = self.loop.call_later(0.1, func) h.cancel() self.loop.run() self.assertFalse(d.called)
def test_call_at(self): d = dummy() d.called = False def func(): d.called = True self.loop.call_at(self.loop.time() + 0.1, func) self.loop.run() self.assertTrue(d.called)
def genFeatureAfterDummy(fin, fout, desc, mins, maxs): names = [] tmp = {'isDummy':None, 'cntBox':None, 'isFromMax':None} for f in desc['features']: f['isDummy'] = tmp['isDummy'] if f.get('isDummy') is None else f['isDummy'] f['cntBox'] = tmp['cntBox'] if f.get('cntBox') is None else f['cntBox'] f['isFromMax'] = tmp['isFromMax'] if f.get('isFromMax') is None else f['isFromMax'] if f['isDummy']: for i in range(f['cntBox']): names.append('%s[%d]' % (f['name'], i)) else: names.append(f['name']) tmp['isDummy'] = f['isDummy'] tmp['cntBox'] = f['cntBox'] tmp['isFromMax'] = f['isFromMax'] head = names[0] for name in names[1:]: head = head + ',%s' % name head = head + ',class' fout.write('%s\n' % head) features = desc['features'] cntFeatures = len(features) while True: l = fin.readline().strip() if len(l) == 0: break feature = [i.strip() for i in l.split(',')] l = '' tmp = {'isDummy':None, 'cntBox':None, 'isFromMax':None} for i in range(cntFeatures): features[i]['isDummy'] = tmp['isDummy'] if features[i].get('isDummy') is None else f['isDummy'] features[i]['cntBox'] = tmp['cntBox'] if features[i].get('cntBox') is None else f['cntBox'] features[i]['isFromMax'] = tmp['isFromMax'] if features[i].get('isFromMax') is None else f['isFromMax'] feature[i] = eval(feature[i]) if features[i]['isDummy']: feature[i] = dummy(feature[i], maxs[i], mins[i], features[i]['cntBox'], features[i]['isFromMax']) cntFeature = len(feature[i]) for j in range(cntFeature): l = repr(feature[i][j]) if i == 0 and j ==0 else l + ',%s' % repr(feature[i][j]) else: l = repr(feature[i]) if i == 0 else l + ',%s' % repr(feature[i]) tmp['isDummy'] = features[i]['isDummy'] tmp['cntBox'] = features[i]['cntBox'] tmp['isFromMax'] = features[i]['isFromMax'] l = l + ',%s' % feature[-1] fout.write('%s\n' % l)
def test_task_join(self): d = dummy() d.called = False def func1(): evergreen.sleep(0.01) def func2(): d.called = t1.join() t1 = evergreen.spawn(func1) t2 = evergreen.spawn(func2) self.loop.run() self.assertTrue(d.called)
def test_call_repeatedly(self): d = dummy() d.counter = 0 d.handler = None def func(): d.counter += 1 if d.counter == 3: d.handler.cancel() d.handler = self.loop.call_repeatedly(0.1, func) self.loop.run() self.assertEqual(d.counter, 3)
def test_call_later_cancel2(self): d = dummy() d.called = False def func1(): h2.cancel() def func2(): d.called = True h1 = self.loop.call_later(0.01, func1) h2 = self.loop.call_later(0.01, func2) self.loop.run() self.assertFalse(d.called)
def test_spawn_kill_join(self): d = dummy() d.called = False def func1(): d.called = True def func2(): self.assertTrue(t1.join()) t1 = evergreen.spawn(func1) t1.kill() t2 = evergreen.spawn(func2) self.loop.run() self.assertFalse(d.called)
def test_signal(self): if not hasattr(signal, 'SIGALRM'): self.skipTest('No signal support') return d = dummy() d.called = False def signal_cb(): d.called = True h = self.loop.add_signal_handler(signal.SIGALRM, signal_cb) signal.setitimer(signal.ITIMER_REAL, 0.1, 0) # Send SIGALRM once self.loop.call_later(0.15, self.loop.stop) self.loop.run_forever() self.assertTrue(d.called)
def test_task_join_timeout(self): d = dummy() d.called = False def func1(): evergreen.sleep(10) def func2(): d.called = t1.join(0.01) def func3(): evergreen.sleep(0.1) t1.kill() t1 = evergreen.spawn(func1) t2 = evergreen.spawn(func2) t3 = evergreen.spawn(func3) self.loop.run() self.assertTrue(not d.called)
def test_run_forever(self): d = dummy() d.called = False def stop_loop(): d.called = True self.loop.stop() def func(): import time time.sleep(0.2) self.loop.call_from_thread(stop_loop) t = threading.Thread(target=func) t.start() self.loop.run_forever() t.join() self.assertTrue(d.called)
def test_condition(self): d = dummy() d.value = 0 cond = locks.Condition() def func1(): with cond: self.assertEqual(d.value, 0) cond.wait() self.assertEqual(d.value, 42) def func2(): with cond: d.value = 42 cond.notify_all() evergreen.spawn(func1) evergreen.spawn(func2) self.loop.run()
def test_signal_remove(self): if not hasattr(signal, 'SIGALRM'): self.skipTest('No signal support') return d = dummy() d.called1 = False d.called2 = False def signal_cb1(): d.called1 = True def signal_cb2(): d.called2 = True h1 = self.loop.add_signal_handler(signal.SIGALRM, signal_cb1) self.loop.remove_signal_handler(signal.SIGALRM) h2 = self.loop.add_signal_handler(signal.SIGALRM, signal_cb2) signal.setitimer(signal.ITIMER_REAL, 0.1, 0) # Send SIGALRM once self.loop.call_later(0.15, self.loop.stop) self.loop.run_forever() self.assertFalse(d.called1) self.assertTrue(d.called2)
def test_barrier(self): num_tasks = 10 d = dummy() d.count = 0 barrier = locks.Barrier(num_tasks + 1, timeout=1) def func(): evergreen.sleep(0.01) d.count += 1 barrier.wait() def runner(): for x in range(num_tasks): evergreen.spawn(func) barrier.wait() evergreen.spawn(runner) self.loop.run() self.assertEqual(d.count, num_tasks) self.assertEqual(barrier.parties, num_tasks + 1)
def genFeatureAfterDummy(fin, fout, desc, mins, maxs): names = [] tmp = {'isDummy': None, 'cntBox': None, 'isFromMax': None} for f in desc['features']: f['isDummy'] = tmp['isDummy'] if f.get( 'isDummy') is None else f['isDummy'] f['cntBox'] = tmp['cntBox'] if f.get('cntBox') is None else f['cntBox'] f['isFromMax'] = tmp['isFromMax'] if f.get( 'isFromMax') is None else f['isFromMax'] if f['isDummy']: for i in range(f['cntBox']): names.append('%s[%d]' % (f['name'], i)) else: names.append(f['name']) tmp['isDummy'] = f['isDummy'] tmp['cntBox'] = f['cntBox'] tmp['isFromMax'] = f['isFromMax'] head = names[0] for name in names[1:]: head = head + ',%s' % name head = head + ',class' fout.write('%s\n' % head) features = desc['features'] cntFeatures = len(features) while True: l = fin.readline().strip() if len(l) == 0: break feature = [i.strip() for i in l.split(',')] l = '' tmp = {'isDummy': None, 'cntBox': None, 'isFromMax': None} for i in range(cntFeatures): features[i]['isDummy'] = tmp['isDummy'] if features[i].get( 'isDummy') is None else f['isDummy'] features[i]['cntBox'] = tmp['cntBox'] if features[i].get( 'cntBox') is None else f['cntBox'] features[i]['isFromMax'] = tmp['isFromMax'] if features[i].get( 'isFromMax') is None else f['isFromMax'] feature[i] = eval(feature[i]) if features[i]['isDummy']: feature[i] = dummy(feature[i], maxs[i], mins[i], features[i]['cntBox'], features[i]['isFromMax']) cntFeature = len(feature[i]) for j in range(cntFeature): l = repr( feature[i][j] ) if i == 0 and j == 0 else l + ',%s' % repr(feature[i][j]) else: l = repr( feature[i]) if i == 0 else l + ',%s' % repr(feature[i]) tmp['isDummy'] = features[i]['isDummy'] tmp['cntBox'] = features[i]['cntBox'] tmp['isFromMax'] = features[i]['isFromMax'] l = l + ',%s' % feature[-1] fout.write('%s\n' % l)