Fix benchmark tests
This commit is contained in:
@@ -32,7 +32,7 @@ ENVIRONMENT="development"
|
||||
# Run the main performance test and capture output
|
||||
echo "📊 Running main performance test..."
|
||||
TEST_OUTPUT=$(dotnet test src/Managing.Workers.Tests/Managing.Workers.Tests.csproj \
|
||||
--filter "ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry" \
|
||||
--filter "FullyQualifiedName~Telemetry_ETH_RSI&FullyQualifiedName!~EMACROSS" \
|
||||
--verbosity minimal \
|
||||
--logger "console;verbosity=detailed" 2>&1)
|
||||
|
||||
@@ -48,7 +48,7 @@ fi
|
||||
# Run business logic validation tests
|
||||
echo "📊 Running business logic validation tests..."
|
||||
VALIDATION_OUTPUT=$(dotnet test src/Managing.Workers.Tests/Managing.Workers.Tests.csproj \
|
||||
--filter "ExecuteBacktest_With_ETH_FifteenMinutes_Data_Should_Return_LightBacktest|ExecuteBacktest_With_ETH_FifteenMinutes_Data_Second_File_Should_Return_LightBacktest" \
|
||||
--filter "ExecuteBacktest_With_ETH_FifteenMinutes_Data_Should_Return_LightBacktest|LongBacktest_ETH_RSI" \
|
||||
--verbosity minimal \
|
||||
--logger "console;verbosity=detailed" 2>&1)
|
||||
|
||||
@@ -138,7 +138,7 @@ else
|
||||
fi
|
||||
|
||||
# Create CSV row
|
||||
CSV_ROW="$TIMESTAMP,ExecuteBacktest_With_Large_Dataset_Should_Show_Performance_Telemetry,$CANDLES_COUNT,$EXECUTION_TIME,$PROCESSING_RATE,$MEMORY_START,$MEMORY_END,$MEMORY_PEAK,$SIGNAL_UPDATES,$SIGNAL_SKIPPED,$SIGNAL_EFFICIENCY,$BACKTEST_STEPS,$AVG_SIGNAL_UPDATE,$AVG_BACKTEST_STEP,$FINAL_PNL,$WIN_RATE,$GROWTH_PERCENTAGE,$SCORE,$COMMIT_HASH,$BRANCH_NAME,$ENVIRONMENT"
|
||||
CSV_ROW="$TIMESTAMP,Telemetry_ETH_RSI,$CANDLES_COUNT,$EXECUTION_TIME,$PROCESSING_RATE,$MEMORY_START,$MEMORY_END,$MEMORY_PEAK,$SIGNAL_UPDATES,$SIGNAL_SKIPPED,$SIGNAL_EFFICIENCY,$BACKTEST_STEPS,$AVG_SIGNAL_UPDATE,$AVG_BACKTEST_STEP,$FINAL_PNL,$WIN_RATE,$GROWTH_PERCENTAGE,$SCORE,$COMMIT_HASH,$BRANCH_NAME,$ENVIRONMENT"
|
||||
|
||||
# Append to CSV file
|
||||
echo "$CSV_ROW" >> "src/Managing.Workers.Tests/performance-benchmarks.csv"
|
||||
@@ -146,7 +146,7 @@ echo "$CSV_ROW" >> "src/Managing.Workers.Tests/performance-benchmarks.csv"
|
||||
# Now run the two-scenarios test
|
||||
echo "📊 Running two-scenarios performance test..."
|
||||
TWO_SCENARIOS_OUTPUT=$(dotnet test src/Managing.Workers.Tests/Managing.Workers.Tests.csproj \
|
||||
--filter "ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry" \
|
||||
--filter "Telemetry_ETH_RSI_EMACROSS" \
|
||||
--verbosity minimal \
|
||||
--logger "console;verbosity=detailed" 2>&1)
|
||||
|
||||
@@ -160,14 +160,20 @@ else
|
||||
fi
|
||||
|
||||
# Extract performance metrics from the two-scenarios test output
|
||||
TWO_SCENARIOS_CANDLES_COUNT=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Candles Processed:" | sed 's/.*: //' | sed 's/[^0-9]//g' | xargs)
|
||||
TWO_SCENARIOS_EXECUTION_TIME=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "⏱️ Total Execution Time:" | sed 's/.*: //' | sed 's/s//' | sed 's/,/./g' | awk '{print $NF}' | xargs)
|
||||
TWO_SCENARIOS_PROCESSING_RATE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Candles Processed:" | sed 's/.*Processed: [0-9]* (//' | sed 's/ candles\/sec)//' | xargs)
|
||||
TWO_SCENARIOS_CANDLES_COUNT=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Candles Processed:" | head -1 | sed 's/.*Processed: //' | sed 's/ (.*//' | sed 's/[^0-9]//g' | xargs)
|
||||
TWO_SCENARIOS_EXECUTION_TIME=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "⏱️ Total Execution Time:" | head -1 | sed 's/.*: //' | sed 's/s//' | sed 's/,/./g' | awk '{print $1}' | xargs)
|
||||
TWO_SCENARIOS_PROCESSING_RATE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Candles Processed:" | head -1 | sed 's/.*Processed: [0-9]* (//' | sed 's/ candles\/sec).*//' | sed 's/,/./g' | sed 's/[^0-9.]//g' | xargs)
|
||||
|
||||
# Extract memory metrics (use defaults since two-scenarios test doesn't track detailed memory)
|
||||
TWO_SCENARIOS_MEMORY_START=${MEMORY_START:-0.0}
|
||||
TWO_SCENARIOS_MEMORY_END=${MEMORY_END:-0.0}
|
||||
TWO_SCENARIOS_MEMORY_PEAK=${MEMORY_PEAK:-0.0}
|
||||
# Extract memory metrics from backtest executor output (same format as main test)
|
||||
TWO_SCENARIOS_MEMORY_LINE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "💾 Memory Usage:")
|
||||
TWO_SCENARIOS_MEMORY_START=$(echo "$TWO_SCENARIOS_MEMORY_LINE" | sed 's/.*Start=//' | sed 's/MB.*//' | xargs)
|
||||
TWO_SCENARIOS_MEMORY_END=$(echo "$TWO_SCENARIOS_MEMORY_LINE" | sed 's/.*End=//' | sed 's/MB.*//' | xargs)
|
||||
TWO_SCENARIOS_MEMORY_PEAK=$(echo "$TWO_SCENARIOS_MEMORY_LINE" | sed 's/.*Peak=//' | sed 's/MB.*//' | xargs)
|
||||
|
||||
# Set defaults for missing memory values
|
||||
TWO_SCENARIOS_MEMORY_START=${TWO_SCENARIOS_MEMORY_START:-0.0}
|
||||
TWO_SCENARIOS_MEMORY_END=${TWO_SCENARIOS_MEMORY_END:-0.0}
|
||||
TWO_SCENARIOS_MEMORY_PEAK=${TWO_SCENARIOS_MEMORY_PEAK:-0.0}
|
||||
|
||||
# Extract signal update metrics (use defaults since two-scenarios test doesn't track these)
|
||||
TWO_SCENARIOS_SIGNAL_UPDATES=0.0
|
||||
@@ -179,13 +185,13 @@ TWO_SCENARIOS_BACKTEST_STEPS=0.0
|
||||
TWO_SCENARIOS_AVG_SIGNAL_UPDATE=0.0
|
||||
TWO_SCENARIOS_AVG_BACKTEST_STEP=0.0
|
||||
|
||||
# Extract trading results
|
||||
TWO_SCENARIOS_FINAL_PNL=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "🎯 Final PnL:" | sed 's/.*Final PnL: //' | sed 's/,/./g' | xargs)
|
||||
TWO_SCENARIOS_WIN_RATE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Win Rate:" | sed 's/.*Win Rate: //' | sed 's/%//' | xargs)
|
||||
TWO_SCENARIOS_GROWTH_PERCENTAGE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Growth:" | sed 's/.*Growth: //' | sed 's/%//' | sed 's/,/./g' | xargs)
|
||||
TWO_SCENARIOS_SCORE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📊 Score:" | sed 's/.*Score: //' | sed 's/[^0-9.-]//g' | xargs)
|
||||
# Extract trading results - remove "(Expected: ...)" text and clean values to pure numbers
|
||||
TWO_SCENARIOS_FINAL_PNL=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "🎯 Final PnL:" | head -1 | sed 's/.*Final PnL: //' | sed 's/ (Expected:.*//' | sed 's/,/./g' | sed 's/[^0-9.-]//g' | xargs)
|
||||
TWO_SCENARIOS_WIN_RATE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Win Rate:" | head -1 | sed 's/.*Win Rate: //' | sed 's/ (Expected:.*//' | sed 's/%//' | sed 's/[^0-9]//g' | xargs)
|
||||
TWO_SCENARIOS_GROWTH_PERCENTAGE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📈 Growth:" | head -1 | sed 's/.*Growth: //' | sed 's/ (Expected:.*//' | sed 's/%//' | sed 's/,/./g' | sed 's/[^0-9.-]//g' | xargs)
|
||||
TWO_SCENARIOS_SCORE=$(echo "$TWO_SCENARIOS_OUTPUT" | grep "📊 Score:" | head -1 | sed 's/.*Score: //' | sed 's/ (Expected:.*//' | sed 's/,/./g' | sed 's/[^0-9.-]//g' | xargs)
|
||||
|
||||
# Set defaults for missing values
|
||||
# Set defaults for missing values and ensure clean numeric format
|
||||
TWO_SCENARIOS_CANDLES_COUNT=${TWO_SCENARIOS_CANDLES_COUNT:-0}
|
||||
TWO_SCENARIOS_EXECUTION_TIME=${TWO_SCENARIOS_EXECUTION_TIME:-0.0}
|
||||
TWO_SCENARIOS_PROCESSING_RATE=${TWO_SCENARIOS_PROCESSING_RATE:-0.0}
|
||||
@@ -194,11 +200,17 @@ TWO_SCENARIOS_WIN_RATE=${TWO_SCENARIOS_WIN_RATE:-0}
|
||||
TWO_SCENARIOS_GROWTH_PERCENTAGE=${TWO_SCENARIOS_GROWTH_PERCENTAGE:-0.00}
|
||||
TWO_SCENARIOS_SCORE=${TWO_SCENARIOS_SCORE:-0.00}
|
||||
|
||||
# Fix malformed values
|
||||
TWO_SCENARIOS_SCORE=$(echo "$TWO_SCENARIOS_SCORE" | sed 's/^0*$/0.00/' | xargs)
|
||||
# Ensure all values are clean numbers (remove any remaining non-numeric characters except decimal point and minus)
|
||||
TWO_SCENARIOS_CANDLES_COUNT=$(echo "$TWO_SCENARIOS_CANDLES_COUNT" | sed 's/[^0-9]//g')
|
||||
TWO_SCENARIOS_EXECUTION_TIME=$(echo "$TWO_SCENARIOS_EXECUTION_TIME" | sed 's/[^0-9.]//g')
|
||||
TWO_SCENARIOS_PROCESSING_RATE=$(echo "$TWO_SCENARIOS_PROCESSING_RATE" | sed 's/[^0-9.]//g')
|
||||
TWO_SCENARIOS_FINAL_PNL=$(echo "$TWO_SCENARIOS_FINAL_PNL" | sed 's/[^0-9.-]//g')
|
||||
TWO_SCENARIOS_WIN_RATE=$(echo "$TWO_SCENARIOS_WIN_RATE" | sed 's/[^0-9]//g')
|
||||
TWO_SCENARIOS_GROWTH_PERCENTAGE=$(echo "$TWO_SCENARIOS_GROWTH_PERCENTAGE" | sed 's/[^0-9.-]//g')
|
||||
TWO_SCENARIOS_SCORE=$(echo "$TWO_SCENARIOS_SCORE" | sed 's/[^0-9.-]//g' | sed 's/^$/0.00/')
|
||||
|
||||
# Create CSV row for two-scenarios test
|
||||
TWO_SCENARIOS_CSV_ROW="$TIMESTAMP,ExecuteBacktest_With_Two_Scenarios_Should_Show_Performance_Telemetry,$TWO_SCENARIOS_CANDLES_COUNT,$TWO_SCENARIOS_EXECUTION_TIME,$TWO_SCENARIOS_PROCESSING_RATE,$TWO_SCENARIOS_MEMORY_START,$TWO_SCENARIOS_MEMORY_END,$TWO_SCENARIOS_MEMORY_PEAK,$TWO_SCENARIOS_SIGNAL_UPDATES,$TWO_SCENARIOS_SIGNAL_SKIPPED,$TWO_SCENARIOS_SIGNAL_EFFICIENCY,$TWO_SCENARIOS_BACKTEST_STEPS,$TWO_SCENARIOS_AVG_SIGNAL_UPDATE,$TWO_SCENARIOS_AVG_BACKTEST_STEP,$TWO_SCENARIOS_FINAL_PNL,$TWO_SCENARIOS_WIN_RATE,$TWO_SCENARIOS_GROWTH_PERCENTAGE,$TWO_SCENARIOS_SCORE,$COMMIT_HASH,$BRANCH_NAME,$ENVIRONMENT"
|
||||
TWO_SCENARIOS_CSV_ROW="$TIMESTAMP,Telemetry_ETH_RSI_EMACROSS,$TWO_SCENARIOS_CANDLES_COUNT,$TWO_SCENARIOS_EXECUTION_TIME,$TWO_SCENARIOS_PROCESSING_RATE,$TWO_SCENARIOS_MEMORY_START,$TWO_SCENARIOS_MEMORY_END,$TWO_SCENARIOS_MEMORY_PEAK,$TWO_SCENARIOS_SIGNAL_UPDATES,$TWO_SCENARIOS_SIGNAL_SKIPPED,$TWO_SCENARIOS_SIGNAL_EFFICIENCY,$TWO_SCENARIOS_BACKTEST_STEPS,$TWO_SCENARIOS_AVG_SIGNAL_UPDATE,$TWO_SCENARIOS_AVG_BACKTEST_STEP,$TWO_SCENARIOS_FINAL_PNL,$TWO_SCENARIOS_WIN_RATE,$TWO_SCENARIOS_GROWTH_PERCENTAGE,$TWO_SCENARIOS_SCORE,$COMMIT_HASH,$BRANCH_NAME,$ENVIRONMENT"
|
||||
|
||||
# Append to two-scenarios CSV file
|
||||
echo "$TWO_SCENARIOS_CSV_ROW" >> "src/Managing.Workers.Tests/performance-benchmarks-two-scenarios.csv"
|
||||
|
||||
Reference in New Issue
Block a user