-
Notifications
You must be signed in to change notification settings - Fork 0
64 lines (50 loc) · 2.55 KB
/
Copy pathci.yml
File metadata and controls
64 lines (50 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
name: CI
on:
push:
branches: ["**"]
pull_request:
workflow_dispatch:
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"
- name: Restore
run: dotnet restore MarketDataSimulator.sln
- name: Build
run: dotnet build MarketDataSimulator.sln -c Release --no-restore
- name: Verify committed market data
run: sha256sum --check data/sample/SHA256SUMS
- name: Test
run: dotnet test Tests/Tests.csproj -c Release --no-build --no-restore --verbosity normal
- name: Matching engine micro-benchmark (smoke)
run: dotnet run --project Bench/Bench.csproj -c Release --no-build -- matching --sizes 1000
- name: Order book micro-benchmark (smoke)
# Not a performance gate - CI runners are far too noisy for that. This only proves the
# benchmark still builds and runs, so it cannot rot between measurement sessions.
run: dotnet run --project Bench/Bench.csproj -c Release --no-build -- books --depths 10
- name: Protocol benchmark (smoke)
run: dotnet run --project Bench/Bench.csproj -c Release --no-build -- protocol --iterations 10000 --trials 3
- name: Durability benchmark (smoke)
run: dotnet run --project Bench/Bench.csproj -c Release --no-build -- durability --records 100 --payload 64 --trials 3 --range-queries 10
- name: Feed smoke test
run: ./scripts/smoke.sh
- name: Documentation matches the recorded measurements
# The tables in README.md and BENCHMARKS.md are generated from
# bench/results/*.json. This fails if any of them has been edited by hand
# or left behind by a re-measurement, which is how a published figure came
# to disagree with its own results file by a factor of six.
run: python3 bench/docgen.py --check
- name: Vectorized book agrees with the reference on every hardware path
# The AVX-512, AVX2 and scalar lower-bound paths are selected at JIT time,
# so one process only ever exercises one of them. Disabling the intrinsics
# forces the others through the same differential comparison.
run: |
for disable in DOTNET_EnableAVX512F DOTNET_EnableAVX2 DOTNET_EnableHWIntrinsic; do
echo "=== $disable=0 ==="
env "$disable=0" dotnet test Tests/Tests.csproj -c Release --no-build \
--filter "FullyQualifiedName~BookDepthTests|FullyQualifiedName~OrderBookTests"
done