async def run_test(): # Arrange self.data_engine.start() handler = [] request = DataRequest( venue=Venue("RANDOM"), data_type=QuoteTick, metadata={ "Symbol": Symbol("SOMETHING", Venue("RANDOM")), "FromDateTime": None, "ToDateTime": None, "Limit": 1000, }, callback=handler.append, request_id=self.uuid_factory.generate(), request_timestamp=self.clock.utc_now(), ) # Act self.data_engine.send(request) await asyncio.sleep(0.1) # Assert self.assertEqual(0, self.data_engine.message_qsize()) self.assertEqual(1, self.data_engine.request_count) # Tear Down self.data_engine.stop()
def test_send_data_request_when_data_type_unrecognized_logs_and_does_nothing( self): # Arrange self.data_engine.register_client(self.binance_client) handler = [] request = DataRequest( venue=BINANCE, data_type=str, # str data type is invalid metadata={ "Symbol": Symbol("SOMETHING", Venue("RANDOM")), "FromDateTime": None, "ToDateTime": None, "Limit": 1000, }, callback=handler.append, request_id=self.uuid_factory.generate(), request_timestamp=self.clock.utc_now(), ) # Act self.data_engine.send(request) # Assert self.assertEqual(1, self.data_engine.request_count)
async def run_test(): # Arrange self.data_engine.start() # Also starts client await asyncio.sleep(0.3) # Allow engine message queue to start handler = ObjectStorer() request = DataRequest( venue=BINANCE, data_type=TradeTick, metadata={ "Symbol": ETHUSDT, "FromDateTime": None, "ToDateTime": None, "Limit": 100, }, callback=handler.store, request_id=self.uuid_factory.generate(), request_timestamp=self.clock.utc_now(), ) # Act self.data_engine.send(request) await asyncio.sleep(1) # Assert self.assertEqual(1, self.data_engine.response_count) self.assertEqual(1, handler.count) # Tear Down self.data_engine.stop() await self.data_engine.get_run_queue_task()
def test_send_data_request_with_duplicate_ids_logs_and_does_not_handle_second( self): # Arrange self.data_engine.register_client(self.binance_client) handler = [] uuid = self.uuid_factory.generate() # We'll use this as a duplicate request1 = DataRequest( venue=BINANCE, data_type=QuoteTick, # str data type is invalid metadata={ "Symbol": Symbol("SOMETHING", Venue("RANDOM")), "FromDateTime": None, "ToDateTime": None, "Limit": 1000, }, callback=handler.append, request_id=uuid, # Duplicate request_timestamp=self.clock.utc_now(), ) request2 = DataRequest( venue=BINANCE, data_type=QuoteTick, # str data type is invalid metadata={ "Symbol": Symbol("SOMETHING", Venue("RANDOM")), "FromDateTime": None, "ToDateTime": None, "Limit": 1000, }, callback=handler.append, request_id=uuid, # Duplicate request_timestamp=self.clock.utc_now(), ) # Act self.data_engine.send(request1) self.data_engine.send(request2) # Assert self.assertEqual(2, self.data_engine.request_count)
async def run_test(): # Arrange with open(TEST_PATH + "instruments.json") as response: instruments = json.load(response) # Arrange with open(TEST_PATH + "bars.json") as response: bars = json.load(response) self.mock_oanda.request.side_effect = [instruments, bars] handler = ObjectStorer() self.data_engine.start() await asyncio.sleep(0.3) bar_spec = BarSpecification(1, BarAggregation.MINUTE, PriceType.MID) bar_type = BarType(symbol=AUDUSD, bar_spec=bar_spec) request = DataRequest( venue=OANDA, data_type=Bar, metadata={ "BarType": bar_type, "FromDateTime": None, "ToDateTime": None, "Limit": 1000, }, callback=handler.store_2, request_id=self.uuid_factory.generate(), request_timestamp=self.clock.utc_now(), ) # Act self.data_engine.send(request) # Allow time for request to be sent, processed and response returned await asyncio.sleep(0.3) # Assert self.assertEqual(1, self.data_engine.response_count) self.assertEqual(1, handler.count) # Final bar incomplete so becomes partial self.assertEqual(99, len(handler.get_store()[0][1])) # Tear Down self.data_engine.stop() self.data_engine.dispose()
async def run_test(): # Arrange with open(TEST_PATH + "res_instruments.json") as response: instruments = json.load(response) with open(TEST_PATH + "res_bars.json") as response: bars = json.load(response) self.mock_ccxt.markets = instruments self.mock_ccxt.fetch_ohlcv = bars self.data_engine.start() await asyncio.sleep(0.1) # Allow engine message queue to start handler = ObjectStorer() bar_spec = BarSpecification(1, BarAggregation.MINUTE, PriceType.LAST) bar_type = BarType(symbol=ETHUSDT, bar_spec=bar_spec) request = DataRequest( venue=BINANCE, data_type=Bar, metadata={ "BarType": bar_type, "FromDateTime": None, "ToDateTime": None, "Limit": 100, }, callback=handler.store_2, request_id=self.uuid_factory.generate(), request_timestamp=self.clock.utc_now(), ) # Act self.data_engine.send(request) await asyncio.sleep(0.3) # Assert self.assertEqual(2, self.data_engine.response_count) self.assertEqual(1, handler.count) self.assertEqual(100, len(handler.get_store()[0][1])) # Tear Down self.data_engine.stop() await self.data_engine.get_run_queue_task()
async def run_test(): # Arrange with open(TEST_PATH + "res_instruments.json") as response: instruments = json.load(response) with open(TEST_PATH + "res_trades.json") as response: trades = json.load(response) self.mock_ccxt.markets = instruments self.mock_ccxt.fetch_trades = trades self.data_engine.start() await asyncio.sleep(0.1) # Allow engine message queue to start handler = ObjectStorer() request = DataRequest( venue=BINANCE, data_type=TradeTick, metadata={ "Symbol": ETHUSDT, "FromDateTime": None, "ToDateTime": None, "Limit": 100, }, callback=handler.store, request_id=self.uuid_factory.generate(), request_timestamp=self.clock.utc_now(), ) # Act self.data_engine.send(request) await asyncio.sleep(1) # Assert self.assertEqual(2, self.data_engine.response_count) self.assertEqual(1, handler.count) # Tear Down self.data_engine.stop() await self.data_engine.get_run_queue_task()
def test_send_request_when_no_data_clients_registered_does_nothing(self): # Arrange handler = [] request = DataRequest( venue=Venue("RANDOM"), data_type=QuoteTick, metadata={ "Symbol": Symbol("SOMETHING", Venue("RANDOM")), "FromDateTime": None, "ToDateTime": None, "Limit": 1000, }, callback=handler.append, request_id=self.uuid_factory.generate(), request_timestamp=self.clock.utc_now(), ) # Act self.data_engine.send(request) # Assert self.assertEqual(1, self.data_engine.request_count)