mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-12-15 20:31:43 +00:00
Add exchange_ws test case
This commit is contained in:
@@ -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")
|
||||||
|
|
||||||
|
|||||||
30
tests/exchange/test_exchange_ws.py
Normal file
30
tests/exchange/test_exchange_ws.py
Normal 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()
|
||||||
Reference in New Issue
Block a user