From f89b64c972a5bb7b45b5fc99a0b0b33a510445ac Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 Apr 2022 06:55:47 +0200 Subject: [PATCH] Improve test by having multistrat.meta file available --- freqtrade/data/btanalysis.py | 2 +- freqtrade/rpc/api_server/api_backtest.py | 4 ++-- freqtrade/rpc/api_server/api_v1.py | 3 ++- tests/rpc/test_rpc_apiserver.py | 7 +++++-- .../backtest-result_multistrat.meta.json | 10 ++++++++++ 5 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 tests/testdata/backtest_results/backtest-result_multistrat.meta.json diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index ffa7fe0c0..8abcc6747 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -168,7 +168,7 @@ def load_and_merge_backtest_result(strategy_name: str, filename: Path, results: def _get_backtest_files(dirname: Path) -> List[Path]: - return reversed(sorted(dirname.glob('backtest-result-*-[0-9][0-9].json'))) + return list(reversed(sorted(dirname.glob('backtest-result-*-[0-9][0-9].json')))) def get_backtest_resultlist(dirname: Path): diff --git a/freqtrade/rpc/api_server/api_backtest.py b/freqtrade/rpc/api_server/api_backtest.py index b11b28685..a902ea984 100644 --- a/freqtrade/rpc/api_server/api_backtest.py +++ b/freqtrade/rpc/api_server/api_backtest.py @@ -1,7 +1,7 @@ import asyncio import logging from copy import deepcopy -from typing import List +from typing import Any, Dict, List from fastapi import APIRouter, BackgroundTasks, Depends @@ -215,7 +215,7 @@ def api_backtest_history(config=Depends(get_config), ws_mode=Depends(is_webserve def api_backtest_history_result(filename: str, strategy: str, config=Depends(get_config), ws_mode=Depends(is_webserver_mode)): # Get backtest result history, read from metadata files fn = config['user_data_dir'] / 'backtest_results' / filename - results = { + results: Dict[str, Any] = { 'metadata': {}, 'strategy': {}, 'strategy_comparison': [], diff --git a/freqtrade/rpc/api_server/api_v1.py b/freqtrade/rpc/api_server/api_v1.py index d96154824..5021c99f9 100644 --- a/freqtrade/rpc/api_server/api_v1.py +++ b/freqtrade/rpc/api_server/api_v1.py @@ -35,7 +35,8 @@ logger = logging.getLogger(__name__) # 1.13: forcebuy supports stake_amount # versions 2.xx -> futures/short branch # 2.14: Add entry/exit orders to trade response -API_VERSION = 2.14 +# 2.15: Add backtest history endpoints +API_VERSION = 2.15 # Public API, requires no auth. router_public = APIRouter() diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 52ab35c36..af8361571 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -1597,8 +1597,9 @@ def test_api_backtest_history(botclient, mocker, testdatadir): rc = client_get(client, f"{BASE_URI}/backtest/history") assert_response(rc) result = rc.json() - assert len(result) == 1 + assert len(result) == 3 fn = result[0]['filename'] + assert fn == "backtest-result_multistrat.json" strategy = result[0]['strategy'] rc = client_get(client, f"{BASE_URI}/backtest/history/result?filename={fn}&strategy={strategy}") assert_response(rc) @@ -1607,7 +1608,9 @@ def test_api_backtest_history(botclient, mocker, testdatadir): assert result2['status'] == 'ended' assert not result2['running'] assert result2['progress'] == 1 - assert result2['backtest_result']['strategy'][CURRENT_TEST_STRATEGY] + # Only one strategy loaded - even though we use multiresult + assert len(result2['backtest_result']['strategy']) == 1 + assert result2['backtest_result']['strategy'][strategy] def test_health(botclient): diff --git a/tests/testdata/backtest_results/backtest-result_multistrat.meta.json b/tests/testdata/backtest_results/backtest-result_multistrat.meta.json new file mode 100644 index 000000000..906edcece --- /dev/null +++ b/tests/testdata/backtest_results/backtest-result_multistrat.meta.json @@ -0,0 +1,10 @@ +{ + "StrategyTestV2": { + "run_id": "430d0271075ef327edbb23088f4db4ebe51a3dbf", + "backtest_start_time": 1648904006 + }, + "TestStrategy": { + "run_id": "110d0271075ef327edbb23085102b4ebe51a3d55", + "backtest_start_time": 1648904006 + } +}