Some checks failed
Build Test Deploy / authority-container (push) Has been cancelled
Build Test Deploy / docs (push) Has been cancelled
Build Test Deploy / deploy (push) Has been cancelled
Build Test Deploy / build-test (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
88 lines
2.8 KiB
Plaintext
88 lines
2.8 KiB
Plaintext
name: Feedser Tests CI
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- 'StellaOps.Feedser/**'
|
|
- '.gitea/workflows/feedser-tests.yml'
|
|
pull_request:
|
|
paths:
|
|
- 'StellaOps.Feedser/**'
|
|
- '.gitea/workflows/feedser-tests.yml'
|
|
|
|
jobs:
|
|
advisory-store-performance:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up .NET SDK
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: 10.0.100-rc.1
|
|
|
|
- name: Restore dependencies
|
|
working-directory: StellaOps.Feedser
|
|
run: dotnet restore StellaOps.Feedser.Tests/StellaOps.Feedser.Tests.csproj
|
|
|
|
- name: Run advisory store performance test
|
|
working-directory: StellaOps.Feedser
|
|
run: |
|
|
set -euo pipefail
|
|
dotnet test \
|
|
StellaOps.Feedser.Tests/StellaOps.Feedser.Tests.csproj \
|
|
--filter "FullyQualifiedName~AdvisoryStorePerformanceTests" \
|
|
--logger:"console;verbosity=detailed" | tee performance.log
|
|
|
|
- name: Upload performance log
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: advisory-store-performance-log
|
|
path: StellaOps.Feedser/performance.log
|
|
|
|
full-test-suite:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up .NET SDK
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: 10.0.100-rc.1
|
|
|
|
- name: Restore dependencies
|
|
working-directory: StellaOps.Feedser
|
|
run: dotnet restore StellaOps.Feedser.Tests/StellaOps.Feedser.Tests.csproj
|
|
|
|
- name: Run full test suite with baseline guard
|
|
working-directory: StellaOps.Feedser
|
|
env:
|
|
BASELINE_SECONDS: "19.8"
|
|
TOLERANCE_PERCENT: "25"
|
|
run: |
|
|
set -euo pipefail
|
|
start=$(date +%s)
|
|
dotnet test StellaOps.Feedser.Tests/StellaOps.Feedser.Tests.csproj --no-build | tee full-tests.log
|
|
end=$(date +%s)
|
|
duration=$((end-start))
|
|
echo "Full test duration: ${duration}s"
|
|
export DURATION_SECONDS="$duration"
|
|
python - <<'PY'
|
|
import os, sys
|
|
duration = float(os.environ["DURATION_SECONDS"])
|
|
baseline = float(os.environ["BASELINE_SECONDS"])
|
|
tolerance = float(os.environ["TOLERANCE_PERCENT"])
|
|
threshold = baseline * (1 + tolerance / 100)
|
|
print(f"Baseline {baseline:.1f}s, threshold {threshold:.1f}s, observed {duration:.1f}s")
|
|
if duration > threshold:
|
|
sys.exit(f"Full test duration {duration:.1f}s exceeded threshold {threshold:.1f}s")
|
|
PY
|
|
|
|
- name: Upload full test log
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: full-test-suite-log
|
|
path: StellaOps.Feedser/full-tests.log
|