Skip to content

Add: functional test results summary #8896

Add: functional test results summary

Add: functional test results summary #8896

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"
[ ! -f "$path" ] && \
path=$(find "$(dirname "$expected")" -maxdepth 3 -name '*.trx' -print -quit)
if [ -f "$path" ]; then
local passed failed total executed skipped duration
passed=$(grep -oP 'passed="\K\d+' "$path" | head -1 || echo 0)
failed=$(grep -oP 'failed="\K\d+' "$path" | head -1 || echo 0)
total=$(grep -oP 'total="\K\d+' "$path" | head -1 || echo 0)
executed=$(grep -oP 'executed="\K\d+' "$path" | head -1 || echo 0)
[ -z "$executed" ] && executed=$((passed+failed))
skipped=$((total-executed))
duration=$(grep -oP 'duration="\K[0-9\.]+' "$path" | head -1)
if [ -z "$duration" ]; then
local start finish
start=$(grep -oP '<Times[^>]*start="\K[^"]+' "$path" | head -1)
finish=$(grep -oP '<Times[^>]*finish="\K[^"]+' "$path" | head -1)
if [ -n "$start" ] && [ -n "$finish" ]; then
start=${start%%.*}; finish=${finish%%.*}
local ds df
ds=$(date -u -d "$start" +%s 2>/dev/null || true)
df=$(date -u -d "$finish" +%s 2>/dev/null || true)
[ -n "$ds" ] && [ -n "$df" ] && duration=$((df-ds))
fi
fi
[ -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