Add exchange_ws test case

This commit is contained in:
Matthias
2022-11-29 06:42:48 +01:00
parent f223319909
commit ec6c54367b
2 changed files with 35 additions and 4 deletions

View File

@@ -4,7 +4,7 @@ import logging
import time import time
from datetime import datetime from datetime import datetime
from threading import Thread from threading import Thread
from typing import Dict, List, Set, Tuple from typing import Dict, List, Optional, Set, Tuple
import ccxt import ccxt
@@ -20,23 +20,24 @@ class ExchangeWS():
def __init__(self, config: Config, ccxt_object: ccxt.Exchange) -> None: def __init__(self, config: Config, ccxt_object: ccxt.Exchange) -> None:
self.config = config self.config = config
self.ccxt_object = ccxt_object self.ccxt_object = ccxt_object
self._thread = Thread(name="ccxt_ws", target=self.__start_forever)
self._background_tasks: Set[asyncio.Task] = set() self._background_tasks: Set[asyncio.Task] = set()
self._klines_watching: Set[PairWithTimeframe] = set() self._klines_watching: Set[PairWithTimeframe] = set()
self._klines_scheduled: Set[PairWithTimeframe] = set() self._klines_scheduled: Set[PairWithTimeframe] = set()
self.klines_last_refresh: Dict[PairWithTimeframe, float] = {} self.klines_last_refresh: Dict[PairWithTimeframe, float] = {}
self.klines_last_request: Dict[PairWithTimeframe, float] = {} self.klines_last_request: Dict[PairWithTimeframe, float] = {}
self._thread = Thread(name="ccxt_ws", target=self._start_forever)
self._thread.start() self._thread.start()
def __start_forever(self) -> None: def _start_forever(self) -> None:
self._loop = asyncio.new_event_loop() self._loop = asyncio.new_event_loop()
self._loop.run_forever() self._loop.run_forever()
def cleanup(self) -> None: def cleanup(self) -> None:
logger.debug("Cleanup called - stopping") logger.debug("Cleanup called - stopping")
self._klines_watching.clear() self._klines_watching.clear()
self._loop.stop() if hasattr(self, '_loop'):
self._loop.stop()
self._thread.join() self._thread.join()
logger.debug("Stopped") logger.debug("Stopped")

View File

@@ -0,0 +1,30 @@
from time import sleep
from unittest.mock import MagicMock
from freqtrade.exchange.exchange_ws import ExchangeWS
def test_exchangews_init(mocker):
config = MagicMock()
ccxt_object = MagicMock()
mocker.patch("freqtrade.exchange.exchange_ws.ExchangeWS._start_forever", MagicMock())
exchange_ws = ExchangeWS(config, ccxt_object)
assert exchange_ws.config == config
assert exchange_ws.ccxt_object == ccxt_object
assert exchange_ws._thread.name == "ccxt_ws"
assert exchange_ws._background_tasks == set()
assert exchange_ws._klines_watching == set()
assert exchange_ws._klines_scheduled == set()
assert exchange_ws.klines_last_refresh == {}
assert exchange_ws.klines_last_request == {}
assert exchange_ws._ob_watching == set()
assert exchange_ws._ob_scheduled == set()
assert exchange_ws.ob_last_request == {}
sleep(0.1)
# Cleanup
exchange_ws.cleanup()