Skip to content

Add: functional test results summary #8894

Add: functional test results summary

Add: functional test results summary #8894

Workflow file for this run

name: tests
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
# For detect flaky tests
schedule:
- cron: "45 * * * *"
jobs:
ydb-sdk-tests:
strategy:
matrix:
ydb-version: [ 'latest', '25.1' ]
dotnet-version: [ 8.0.x, 9.0.x ]
runs-on: ubuntu-22.04
services:
ydb:
image: ydbplatform/local-ydb:${{ matrix.ydb-version }}
ports: [ "2135:2135", "2136:2136", "8765:8765" ]
env:
YDB_LOCAL_SURVIVE_RESTART: true
options: '--name ydb-local -h localhost'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ matrix.dotnet-version }}
- name: Run ADO.NET Tests
working-directory: ./src/Ydb.Sdk/test/Ydb.Sdk.Ado.Tests
run: |
docker cp ydb-local:/ydb_certs/ca.pem ~/
dotnet test \
--logger "GitHubActions;report-warnings=false" \
--logger "trx;LogFileName=ado.trx" \
--results-directory "$PWD"
continue-on-error: true
- name: Run ADO.NET Specification Tests
working-directory: ./src/Ydb.Sdk/test/Ydb.Sdk.Ado.Specification.Tests
run: |
dotnet test \
--logger "GitHubActions;report-warnings=false" \
--logger "trx;LogFileName=spec.trx" \
--results-directory "$PWD"
continue-on-error: true
- name: Run ADO.NET Dapper Tests
working-directory: ./src/Ydb.Sdk/test/Ydb.Sdk.Ado.Dapper.Tests
run: |
dotnet test \
--logger "GitHubActions;report-warnings=false" \
--logger "trx;LogFileName=dapper.trx" \
--results-directory "$PWD"
continue-on-error: true
- name: Run Topic Tests
working-directory: ./src/Ydb.Sdk/test/Ydb.Sdk.Topic.Tests
run: |
dotnet test \
--logger "GitHubActions;report-warnings=false" \
--logger "trx;LogFileName=topic.trx" \
--results-directory "$PWD"
continue-on-error: true
- name: Publish combined test summary table
if: always()
run: |
echo '| Test Suite | ✓ Passed | ✗ Failed | ↻ Skipped | ∑ Total | ⏱ Elapsed |' >> $GITHUB_STEP_SUMMARY
echo '|:---------- | -------: | -------: | --------: | ------: | --------: |' >> $GITHUB_STEP_SUMMARY
summarize () {
local name="$1"; local expected="$2"
local path="$expected"
# если точного файла нет, ищем любой *.trx в каталоге проекта (включая TestResults)
if [ ! -f "$path" ]; then
local base_dir; base_dir="$(dirname "$expected")"
local found
found=$(find "$base_dir" -maxdepth 3 -type f -name '*.trx' -print -quit 2>/dev/null || true)
if [ -n "$found" ]; then path="$found"; fi
fi
if [ -f "$path" ]; then
local counters passed failed skipped total duration
counters=$(grep '<Counters' "$path" | head -1 || true)
passed=$(echo "$counters" | sed -n 's/.*passed="\([0-9]*\)".*/\1/p'); [ -z "$passed" ] && passed=0
failed=$(echo "$counters" | sed -n 's/.*failed="\([0-9]*\)".*/\1/p'); [ -z "$failed" ] && failed=0
skipped=$(echo "$counters" | sed -n 's/.*skipped="\([0-9]*\)".*/\1/p'); [ -z "$skipped" ] && skipped=0
total=$(echo "$counters" | sed -n 's/.*total="\([0-9]*\)".*/\1/p'); [ -z "$total" ] && total=0
duration=$(grep -oP 'duration="\K[0-9\.]+' "$path" | head -1 || true); [ -z "$duration" ] && duration='-'
echo "| $name | $passed | $failed | $skipped | $total | ${duration}s |" >> $GITHUB_STEP_SUMMARY
else
echo "| $name | N/A | N/A | N/A | N/A | N/A |" >> $GITHUB_STEP_SUMMARY
fi
}
summarize 'ADO.NET' './src/Ydb.Sdk/test/Ydb.Sdk.Ado.Tests/ado.trx'
summarize 'Specification' './src/Ydb.Sdk/test/Ydb.Sdk.Ado.Specification.Tests/spec.trx'
summarize 'Dapper' './src/Ydb.Sdk/test/Ydb.Sdk.Ado.Dapper.Tests/dapper.trx'
summarize 'Topic' './src/Ydb.Sdk/test/Ydb.Sdk.Topic.Tests/topic.trx'
run-examples:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
ydb-version: [ 'latest', 'trunk' ]
dotnet-version: [ 8.0.x, 9.0.x ]
services:
ydb:
image: ydbplatform/local-ydb:${{ matrix.ydb-version }}
ports:
- 2135:2135
- 2136:2136
- 8765:8765
env:
YDB_LOCAL_SURVIVE_RESTART: true
YDB_USE_IN_MEMORY_PDISKS: true
options: '--name ydb-local -h localhost'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ matrix.dotnet-version }}
- name: Run Ydb.Sdk.AdoNet.QuickStart
run: |
docker cp ydb-local:/ydb_certs/ca.pem ~/
cd ./examples/Ydb.Sdk.AdoNet.QuickStart
dotnet run
- name: Run Ydb.Sdk.AdoNet.Dapper.QuickStart
run: |
cd ./examples/Ydb.Sdk.AdoNet.Dapper.QuickStart
dotnet run
- name: Run Ydb.Sdk.Topic.QuickStart
run: |
cd ./examples/Ydb.Sdk.Topic.QuickStart
dotnet run
- name: Run EntityFrameworkCore.Ydb.QuickStart
run: |
cd ./examples/EntityFrameworkCore.Ydb.QuickStart
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet ef migrations add InitialCreate
dotnet ef database update
dotnet run
- name: Run EntityFrameworkCore.Ydb.Samples/Database.Operations.Tutorial
run: |
cd ./examples/EntityFrameworkCore.Ydb.Samples/Database.Operations.Tutorial
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet ef migrations add InitialCreate
dotnet ef database update
dotnet run