class TestPyMorseStreamSlow(unittest.TestCase): def setUp(self): print("Starting test...") self.freq = 10 self._server = SocketWriter( freq=self.freq) # First tests: producer at 10 Hz self.host = "localhost" self.stream = StreamJSON(self.host, 61000) self._asyncore_thread = threading.Thread(target=asyncore.loop, kwargs={'timeout': 0.01}) self._asyncore_thread.start() def test_get(self): self.assertEqual(self.stream.get(), [0]) self.assertEqual(self.stream.get(), [1]) def test_last_timed(self): d = 1 / float(self.freq) self.assertIsNone(self.stream.last()) time.sleep(d + d * 0.5) self.assertEqual(self.stream.last(), [0]) time.sleep(d) self.assertEqual(self.stream.last(), [1]) time.sleep(d) time.sleep(d) self.assertEqual(self.stream.last(), [3]) def test_subscribe(self): d = 1 / float(self.freq) self.ok = False self.i = 0 self.stream.subscribe(self.on_data) time.sleep(d + d * 0.5) self.assertTrue(self.ok) self.ok = False time.sleep(d) self.assertTrue(self.ok) def test_unsubscribe(self): d = 1 / float(self.freq) self.ok = False self.i = 0 self.stream.subscribe(self.on_data) time.sleep(d + d * 0.5) self.assertTrue(self.ok) self.ok = False self.stream.unsubscribe(self.on_data) time.sleep(d) self.assertFalse(self.ok) def on_data(self, record): self.ok = True self.assertEqual(record, [self.i]) self.i += 1 def tearDown(self): self._server.close() asyncore.close_all() self._asyncore_thread.join(TIMEOUT) self._asyncore_thread = None # in case we want to re-create
class TestPyMorseStreamSlow(unittest.TestCase): def setUp(self): print("Starting test...") self.freq = 10 self._server = SocketWriter(freq = self.freq) # First tests: producer at 10 Hz self.host = "localhost" self.stream = StreamJSON(self.host, 61000) self._asyncore_thread = threading.Thread( target = asyncore.loop, kwargs = {'timeout': 0.01} ) self._asyncore_thread.start() def test_get(self): self.assertEqual(self.stream.get(), [0]) self.assertEqual(self.stream.get(), [1]) def test_last_timed(self): d = 1/float(self.freq) self.assertIsNone(self.stream.last()) time.sleep(d + d * 0.5) self.assertEqual(self.stream.last(), [0]) time.sleep(d) self.assertEqual(self.stream.last(), [1]) time.sleep(d) time.sleep(d) self.assertEqual(self.stream.last(), [3]) def test_subscribe(self): d = 1/float(self.freq) self.ok = False self.i = 0 self.stream.subscribe(self.on_data) time.sleep(d + d * 0.5) self.assertTrue(self.ok) self.ok = False time.sleep(d) self.assertTrue(self.ok) def test_unsubscribe(self): d = 1/float(self.freq) self.ok = False self.i = 0 self.stream.subscribe(self.on_data) time.sleep(d + d * 0.5) self.assertTrue(self.ok) self.ok = False self.stream.unsubscribe(self.on_data) time.sleep(d) self.assertFalse(self.ok) def on_data(self, record): self.ok = True self.assertEqual(record, [self.i]) self.i += 1 def tearDown(self): self._server.close() asyncore.close_all() self._asyncore_thread.join(TIMEOUT) self._asyncore_thread = None # in case we want to re-create