class GelTestCase(unittest.TestCase): def setUp(self): self.reactor = Gel() def test_timeout_call(self): A = 1 B = 2 C = 3 @gel_main(self.reactor) def timer(): run_time = time.time() @gel_quit(self.reactor) def callback(a, b, c): cb_time = time.time() self.assertEqual(A, a) self.assertEqual(B, b) self.assertEqual(C, c) # check if the timer was dispared between 1 and 2 seconds # as we can't really tell if the time will be triggered exactly on time self.assertGreaterEqual(cb_time + .1, run_time) self.assertLessEqual(run_time, cb_time + 2) self.reactor.timeout_seconds_call(.1, callback, A, B, c=C) timer() def test_idle_call(self): A = 1 B = 2 C = 3 @gel_main(self.reactor) def call_later(): @gel_quit(self.reactor) def callback(a, b, c): self.assertEqual(A, a) self.assertEqual(B, b) self.assertEqual(C, c) self.reactor.idle_call(callback, A, B, c=C) call_later() def test_socket_accept(self): @gel_main(self.reactor) def actual_test(): import socket port_generator = port_generator_helper() while True: s = socket.socket() try: s.bind(("127.0.0.1", six.next(port_generator))) except socket.error: continue s.listen(1) break @gel_quit(self.reactor) def callback(event): socket, addr = event.accept() self.assertIs(event, s) self.reactor.register_io(s, callback) client = socket.socket() client.connect(s.getsockname()) actual_test() def test_main_iteration_with_block_false_should_return_True_with_no_events( self): self.assertTrue(self.reactor.main_iteration(block=False)) def test_sleep(self): start = time.time() self.reactor.sleep(200) current = time.time() # assure that the sleep time is almost the sleep we asked for wait_time = current - start self.assertLessEqual(wait_time, .220) self.assertGreaterEqual(wait_time, .190) def test_wait_task(self): def threaded_task(a, b): return a * b ret = self.reactor.wait_task(threaded_task, 3, 4) self.assertEqual(ret, 3 * 4) def test_wait_task_throwns_an_exception_inside_thread_should_raises_that_exception_in_the_current_execution_flow( self): def threaded_task(): return 0 / 0 self.assertRaises(ZeroDivisionError, self.reactor.wait_task, threaded_task) def test_threaded_wrapper(self): @self.reactor.threaded_wrapper def threaded_task(): time.sleep(0.1) return 10 self.assertEqual(10, threaded_task()) def test_selector(self): @gel_main(self.reactor) def actual_test(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto(b"", ("", 1)) _, port = s.getsockname() def timeout(): s.sendto(b"\x00", s.getsockname()) self.reactor.timeout_seconds_call(0.1, timeout) response = self.reactor.selector([s]) self.assertEqual(s, response) self.assertEqual(s.recvfrom(1), (b'\x00', ('127.0.0.1', s.getsockname()[1]))) self.reactor.main_quit() actual_test() def test_selector_with_timeout_timed_out(self): @gel_main(self.reactor) def actual_test(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto(b"", ("", 1)) _, port = s.getsockname() def timeout(): s.sendto(b"\x00", s.getsockname()) self.reactor.timeout_seconds_call(0.3, timeout) response = self.reactor.selector([s], 0.1) self.assertIsNone(response) self.reactor.main_quit() actual_test() def test_selector_with_timeout(self): @gel_main(self.reactor) def actual_test(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto(b"", ("", 1)) _, port = s.getsockname() def timeout(): s.sendto(b"\x00", s.getsockname()) self.reactor.timeout_seconds_call(0.01, timeout) response = self.reactor.selector([s], 0.2) self.assertEqual(s, response) self.assertEqual(s.recvfrom(1), (b'\x00', ('127.0.0.1', s.getsockname()[1]))) self.reactor.main_quit() actual_test()
class GelTestCase(unittest.TestCase): def setUp(self): self.reactor = Gel() def test_timeout_call(self): A = 1 B = 2 C = 3 @gel_main(self.reactor) def timer(): run_time = time.time() @gel_quit(self.reactor) def callback(a, b, c): cb_time = time.time() self.assertEqual(A, a) self.assertEqual(B, b) self.assertEqual(C, c) # check if the timer was dispared between 1 and 2 seconds # as we can't really tell if the time will be triggered exactly on time self.assertGreaterEqual(cb_time + .1, run_time) self.assertLessEqual(run_time, cb_time + 2) self.reactor.timeout_seconds_call(.1, callback, A, B, c=C) timer() def test_idle_call(self): A = 1 B = 2 C = 3 @gel_main(self.reactor) def call_later(): @gel_quit(self.reactor) def callback(a, b, c): self.assertEqual(A, a) self.assertEqual(B, b) self.assertEqual(C, c) self.reactor.idle_call(callback, A, B, c=C) call_later() def test_socket_accept(self): @gel_main(self.reactor) def actual_test(): import socket port_generator = port_generator_helper() while True: s = socket.socket() try: s.bind(("127.0.0.1", six.next(port_generator))) except socket.error: continue s.listen(1) break @gel_quit(self.reactor) def callback(event): socket, addr = event.accept() self.assertIs(event, s) self.reactor.register_io(s, callback) client = socket.socket() client.connect(s.getsockname()) actual_test() def test_main_iteration_with_block_false_should_return_True_with_no_events(self): self.assertTrue(self.reactor.main_iteration(block=False)) def test_sleep(self): start = time.time() self.reactor.sleep(200) current = time.time() # assure that the sleep time is almost the sleep we asked for wait_time = current - start self.assertLessEqual(wait_time, .220) self.assertGreaterEqual(wait_time, .190) def test_wait_task(self): def threaded_task(a, b): return a * b ret = self.reactor.wait_task(threaded_task, 3, 4) self.assertEqual(ret, 3 * 4) def test_wait_task_throwns_an_exception_inside_thread_should_raises_that_exception_in_the_current_execution_flow(self): def threaded_task(): return 0/0 self.assertRaises(ZeroDivisionError, self.reactor.wait_task, threaded_task) def test_threaded_wrapper(self): @self.reactor.threaded_wrapper def threaded_task(): time.sleep(0.1) return 10 self.assertEqual(10, threaded_task()) def test_selector(self): @gel_main(self.reactor) def actual_test(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto(b"", ("", 1)) _, port = s.getsockname() def timeout(): s.sendto(b"\x00", s.getsockname()) self.reactor.timeout_seconds_call(0.1, timeout) response = self.reactor.selector([s]) self.assertEqual(s, response) self.assertEqual(s.recvfrom(1), (b'\x00', ('127.0.0.1', s.getsockname()[1]))) self.reactor.main_quit() actual_test() def test_selector_with_timeout_timed_out(self): @gel_main(self.reactor) def actual_test(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto(b"", ("", 1)) _, port = s.getsockname() def timeout(): s.sendto(b"\x00", s.getsockname()) self.reactor.timeout_seconds_call(0.3, timeout) response = self.reactor.selector([s], 0.1) self.assertIsNone(response) self.reactor.main_quit() actual_test() def test_selector_with_timeout(self): @gel_main(self.reactor) def actual_test(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto(b"", ("", 1)) _, port = s.getsockname() def timeout(): s.sendto(b"\x00", s.getsockname()) self.reactor.timeout_seconds_call(0.01, timeout) response = self.reactor.selector([s], 0.2) self.assertEqual(s, response) self.assertEqual(s.recvfrom(1), (b'\x00', ('127.0.0.1', s.getsockname()[1]))) self.reactor.main_quit() actual_test()