diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 608565fdc..63a0b7468 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -360,6 +360,8 @@ jobs: pip install -e . - name: Tests incl. ccxt compatibility tests + env: + CI_WEB_PROXY: http://152.67.78.211:13128 run: | pytest --random-order --cov=freqtrade --cov-config=.coveragerc --longrun diff --git a/tests/exchange/test_ccxt_compat.py b/tests/exchange/test_ccxt_compat.py index 0ce6a286d..2f8c92c49 100644 --- a/tests/exchange/test_ccxt_compat.py +++ b/tests/exchange/test_ccxt_compat.py @@ -12,6 +12,7 @@ from typing import Tuple import pytest +from freqtrade.constants import Config from freqtrade.enums import CandleType from freqtrade.exchange import timeframe_to_minutes, timeframe_to_prev_date from freqtrade.exchange.exchange import Exchange, timeframe_to_msecs @@ -31,16 +32,17 @@ EXCHANGES = { 'leverage_tiers_public': False, 'leverage_in_spot_market': False, }, - # 'binance': { - # 'pair': 'BTC/USDT', - # 'stake_currency': 'USDT', - # 'hasQuoteVolume': True, - # 'timeframe': '5m', - # 'futures': True, - # 'futures_pair': 'BTC/USDT:USDT', - # 'leverage_tiers_public': False, - # 'leverage_in_spot_market': False, - # }, + 'binance': { + 'pair': 'BTC/USDT', + 'stake_currency': 'USDT', + 'use_ci_proxy': True, + 'hasQuoteVolume': True, + 'timeframe': '5m', + 'futures': True, + 'futures_pair': 'BTC/USDT:USDT', + 'leverage_tiers_public': False, + 'leverage_in_spot_market': False, + }, 'kraken': { 'pair': 'BTC/USDT', 'stake_currency': 'USDT', @@ -107,8 +109,23 @@ def exchange_conf(): return config +def set_test_proxy(config: Config, use_proxy: bool) -> Config: + # Set proxy to test in CI. + import os + if use_proxy and (proxy := os.environ.get('CI_WEB_PROXY')): + config['exchange']['ccxt_config'] = { + 'proxies': { + 'https': proxy, + 'http': proxy, + } + } + + return config + + @pytest.fixture(params=EXCHANGES, scope="class") def exchange(request, exchange_conf): + set_test_proxy(exchange_conf, EXCHANGES[request.param].get('use_ci_proxy', False)) exchange_conf['exchange']['name'] = request.param exchange_conf['stake_currency'] = EXCHANGES[request.param]['stake_currency'] exchange = ExchangeResolver.load_exchange(request.param, exchange_conf, validate=True) @@ -121,6 +138,7 @@ def exchange_futures(request, exchange_conf, class_mocker): if not EXCHANGES[request.param].get('futures') is True: yield None, request.param else: + set_test_proxy(exchange_conf, EXCHANGES[request.param].get('use_ci_proxy', False)) exchange_conf = deepcopy(exchange_conf) exchange_conf['exchange']['name'] = request.param exchange_conf['trading_mode'] = 'futures'