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