From 71cf7aedb5030d83232d1fea93ca8fa3cbd73085 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 29 Nov 2024 06:48:39 +0100 Subject: [PATCH] chore: remove unnecessary test-file that test is flaky for new pairs - and wouldn't run in production anyway. --- .../test_binance_compare_ohlcv.py | 102 ------------------ 1 file changed, 102 deletions(-) delete mode 100644 tests/exchange_online/test_binance_compare_ohlcv.py diff --git a/tests/exchange_online/test_binance_compare_ohlcv.py b/tests/exchange_online/test_binance_compare_ohlcv.py deleted file mode 100644 index a6335ef22..000000000 --- a/tests/exchange_online/test_binance_compare_ohlcv.py +++ /dev/null @@ -1,102 +0,0 @@ -""" -Check if the earliest klines from rest API have its counterpart on https://data.binance.vision -Not expected to run in CI, manually run from shell: - - TEST_BINANCE_COMPARE_OHLCV=1 pytest tests/exchange_online/test_binance_compare_ohlcv.py - -Until 2024-10-30, there are three usdt-m futures symbols "lack" data -All SPOT symbols are good. - -BTCUSDT-1m 113 days -ARCHIVE: 2019-12-31 00:00:00 │ 2024-10-30 02:51:00 │ 2541772 -API: 2019-09-08 17:57:00 │ 2024-10-30 03:11:00 │ 2704874 - -ETHUSDT 34 days -ARCHIVE: 2019-12-31 00:00:00 │ 2020-02-29 23:59:00 │ 87840 -API: 2019-11-27 07:45:00 │ 2020-03-01 11:03:00 │ 136999 - -BCHUSDT 12 days -ARCHIVE: 2019-12-31 00:00:00 │ 2020-02-29 23:59:00 │ 87840 -API: 2019-12-19 08:57:00 │ 2020-03-01 06:55:00 │ 104999 -""" - -import asyncio -import os - -import aiohttp -import pytest - -from freqtrade.exchange.binance_public_data import binance_vision_zip_url -from freqtrade.util.datetime_helpers import dt_from_ts - - -class Check: - def __init__(self, asset_type_url_segment, timeframe): - self.asset_type_url_segment = asset_type_url_segment - self.timeframe = timeframe - self.klines_endpoint = "https://api.binance.com/api/v3/klines" - self.exchange_endpoint = "https://api.binance.com/api/v3/exchangeInfo" - self.mismatch = set() - - if asset_type_url_segment == "futures/um": - self.klines_endpoint = "https://fapi.binance.com/fapi/v1/klines" - self.exchange_endpoint = "https://fapi.binance.com/fapi/v1/exchangeInfo" - - async def check_one_symbol(self, symbol): - async with self.session.get( - self.klines_endpoint, params=dict(symbol=symbol, interval=self.timeframe, startTime=0) - ) as resp: - resp.raise_for_status() - json = await resp.json() - first_kline = json[0] - first_kline_ts = first_kline[0] - date = dt_from_ts(first_kline_ts).date() - - archive_url = binance_vision_zip_url( - self.asset_type_url_segment, symbol=symbol, timeframe=self.timeframe, date=date - ) - async with self.session.get( - archive_url, params=dict(symbol=symbol, interval=self.timeframe, startTime=0) - ) as resp: - if resp.status != 200: - self.mismatch.add(symbol) - print( - f"{resp.status} API first kline: {dt_from_ts(first_kline_ts).isoformat()} " - f"{archive_url}" - ) - web_url = archive_url.rsplit("/", 1)[0].replace( - "https://data.binance.vision/", "https://data.binance.vision/?prefix=" - ) - print(f"Check {web_url}") - - async def get_symbols(self): - async with self.session.get(self.exchange_endpoint) as resp: - resp.raise_for_status() - json = await resp.json() - symbols = [ - symbol["symbol"] - for symbol in json["symbols"] - if not symbol["status"] == "PENDING_TRADING" - ] - return symbols - - async def run(self) -> list: - async with aiohttp.ClientSession() as session: - self.session = session - symbols = await self.get_symbols() - await asyncio.gather(*[self.check_one_symbol(symbol) for symbol in symbols]) - return self.mismatch - - -@pytest.mark.skipif( - not bool(os.environ.get("TEST_BINANCE_COMPARE_OHLCV")), - reason="Simply to demonstrate the availabity of the archive endpoint", -) -async def test_binance_compare_ohlcv(): - futures_mismatch = await Check("futures/um", "1m").run() - assert futures_mismatch == set(["BTCUSDT", "ETHUSDT", "BCHUSDT"]) - - spot_mismatch = await Check("spot", "1m").run() - assert not spot_mismatch - - assert 0