forked from microsoft/msquic
-
Notifications
You must be signed in to change notification settings - Fork 0
133 lines (129 loc) · 4.92 KB
/
wan-perf.yml
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
name: WAN Perf
on:
push:
branches:
- main
paths:
- .github/workflows/wan-perf.yml
- src/core/*
- src/platform/*
- src/perf/*
pull_request:
branches:
- main
paths:
- .github/workflows/wan-perf.yml
- src/core/*
- src/platform/*
- src/perf/*
- submodules/openssl/*
concurrency:
# Cancel any workflow currently in progress for the same PR.
# Allow running concurrently with any other commits.
group: wanperf-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
permissions: read-all
jobs:
build-perf:
permissions:
contents: read # for actions/checkout to fetch code
name: Build Perf
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
- name: Prepare Machine
shell: pwsh
run: scripts/prepare-machine.ps1 -ForBuild -DisableTest
- name: Prepare Machine
shell: pwsh
run: scripts/build.ps1 -Config Release -DisableTest -DisableTools
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32
with:
name: bin
path: |
artifacts/bin
!artifacts/bin/**/*.ilk
!artifacts/bin/**/*.cer
!artifacts/bin/**/*.exp
!artifacts/bin/**/*.lastcodeanalysissucceeded
!artifacts/bin/**/*.pgd
!artifacts/bin/**/*.lib
wan-perf:
permissions:
contents: read # for actions/checkout to fetch code
name: Run Tests
runs-on: windows-2022
needs: build-perf
env:
seed: 41473a2e60b6958500ec0add7dcfb9 # TODO - Randomize?
iterations: 3
duration: 10000
pacing: 1
reorder: "(0,1000)"
delay: "(0,5,10)"
congestionControl: "(\"cubic\", \"bbr\")"
loss: "(0,1000,10000)"
strategy:
fail-fast: false
matrix:
rate: [10, 50, 100, 1000]
rtt: [5, 50, 200]
queueRatio: [0.2, 1, 5]
exclude:
- rate: 5
rtt: 5
queueRatio: 0.2 # Results in sub-packet limit
- rate: 1000
rtt: 500
queueRatio: 5 # Exceeds QueueLimitPackets limit of 100000
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
- name: Prepare Machine
shell: pwsh
run: scripts/prepare-machine.ps1 -ForTest -InstallDuoNic
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a
with:
name: bin
path: artifacts/bin
- name: Run WAN Perf (QUIC only)
if: ${{ github.event_name == 'pull_request' }}
shell: pwsh
run: scripts/emulated-performance.ps1 -Debug -Protocol QUIC -LogProfile Performance.Light -NoDateLogDir -NumIterations ${{ env.iterations }} -DurationMs ${{ env.duration }} -Pacing ${{ env.pacing }} -BottleneckMbps ${{ matrix.rate }} -RttMs ${{ matrix.rtt }} -BottleneckQueueRatio ${{ matrix.queueRatio }} -RandomLossDenominator ${{ env.loss }} -RandomReorderDenominator ${{ env.reorder }} -ReorderDelayDeltaMs ${{ env.delay }} -BaseRandomSeed ${{ env.seed }} -CongestionControl ${{ env.congestionControl }}
- name: Run WAN Perf (QUIC + TCP)
if: ${{ github.event_name != 'pull_request' }}
shell: pwsh
run: scripts/emulated-performance.ps1 -Debug -Protocol ('QUIC','TCPTLS') -LogProfile Performance.Light -NoDateLogDir -NumIterations ${{ env.iterations }} -DurationMs ${{ env.duration }} -Pacing ${{ env.pacing }} -BottleneckMbps ${{ matrix.rate }} -RttMs ${{ matrix.rtt }} -BottleneckQueueRatio ${{ matrix.queueRatio }} -RandomLossDenominator ${{ env.loss }} -RandomReorderDenominator ${{ env.reorder }} -ReorderDelayDeltaMs ${{ env.delay }} -BaseRandomSeed ${{ env.seed }} -CongestionControl ${{ env.congestionControl }}
- name: Upload Results
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32
with:
name: data
path: artifacts/PerfDataResults/windows/x64_Release_schannel/WAN/*.json
- name: Upload Logs
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32
with:
name: ${{ format('logs.{0}mbps.{1}ms', matrix.rate, matrix.rtt) }}
path: artifacts/logs/wanperf/*.etl
merge-data:
permissions: write-all
name: Merge Results
runs-on: windows-2022
needs: wan-perf
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
with:
fetch-depth: 0
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a
with:
name: data
path: artifacts/PerfDataResults/windows/x64_Release_schannel/WAN
- name: Merge Data Files
shell: pwsh
run: scripts/emulated-performance.ps1 -MergeDataFiles
- name: Upload CSV
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32
with:
name: csv
path: artifacts\PerfDataResults\windows\x64_Release_schannel\WAN\wan_data.csv