Skip to content

Commit 060ccfa

Browse files
committed
Merge branch 'main' into more-tls
2 parents 8078763 + 2481f24 commit 060ccfa

File tree

12 files changed

+624
-452
lines changed

12 files changed

+624
-452
lines changed

.github/workflows/generate-summary.ps1

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,24 @@ function Write-HpsRow {
5454
$Script:markdown += $row
5555
}
5656

57+
# Adds a row to the RPS/latency table.
58+
function Write-RpsRow {
59+
param ([string]$FileName, [string]$Transport, [array]$Results)
60+
61+
$header = "`n|"
62+
$parts = Convert-FileName $FileName
63+
foreach ($part in $parts) { $header += " $part |" }
64+
$header += " $Transport |"
65+
66+
for ($i = 0; $i -lt $Results.Count; $i+=9) {
67+
$row = $header
68+
for ($j = 0; $j -lt 9; $j++) {
69+
$row += " $($Results[$i+$j]) |"
70+
}
71+
$Script:markdown += $row
72+
}
73+
}
74+
5775
# Write the Upload table.
5876
$markdown = @"
5977
# Upload Throughput (Gbps)
@@ -92,6 +110,19 @@ foreach ($file in $files) {
92110
try { Write-HpsRow $file.Name "tcp" $json.'hps-conns-100-tcp' } catch { }
93111
}
94112

113+
# Write the RPS table.
114+
$markdown += @"
115+
`n
116+
# Request Per Second (HPS) and Latency (µs)
117+
| Env | OS | Version | Arch | TLS | IO | Transport | Min | P50 | P90 | P99 | P99.9 | P99.99 | P99.999 | P99.9999 | RPS |
118+
| --- | -- | ------- | ---- | --- | -- | --------- | --- | --- | --- | --- | ----- | ------ | ------- | -------- | --- |
119+
"@
120+
foreach ($file in $files) {
121+
$json = Get-Content -Path $file.FullName | ConvertFrom-Json
122+
try { Write-RpsRow $file.Name "quic" $json.'rps-up-512-down-4000-quic' } catch { }
123+
try { Write-RpsRow $file.Name "tcp" $json.'rps-up-512-down-4000-tcp' } catch { }
124+
}
125+
95126
# Write the markdown to the console and to the summary file.
96127
Write-Host "`n$markdown"
97128
$markdown | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append

.github/workflows/quic.yml

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ on:
44
workflow_dispatch:
55
inputs:
66
ref:
7-
description: 'Build Reference'
7+
description: 'MsQuic Branch or Commit'
88
required: false
9-
default: ''
9+
default: 'main'
1010
type: string
1111
filter:
12-
description: 'Test Filter'
12+
description: 'Custom Test Filter'
1313
required: false
1414
default: ''
1515
type: string
1616
logprofile:
17-
description: 'Log Profile'
17+
description: 'Logging WPR Profile'
1818
required: false
1919
default: "NULL"
2020
type: choice
@@ -33,16 +33,22 @@ on:
3333
- Full.Light
3434
- Full.Verbose
3535
commit:
36-
description: 'Commit Results'
36+
description: 'Publish Results'
3737
required: false
3838
default: false
3939
type: boolean
40+
pull_request:
41+
branches:
42+
- main
43+
paths:
44+
- .github/workflows/quic.yml
45+
- .github/workflows/generate-summary.ps1
4046
repository_dispatch:
4147
types: [run-quic]
4248
# Args: { guid, sha, ref, pr, logs, filter }
4349

4450
concurrency:
45-
group: quic-${{ github.event.client_payload.pr || github.event.client_payload.sha || inputs.ref || 'main' }}
51+
group: quic-${{ github.event.client_payload.pr || github.event.client_payload.sha || inputs.ref || github.event.pull_request.number || 'main' }}
4652
cancel-in-progress: true
4753

4854
permissions: read-all
@@ -115,31 +121,36 @@ jobs:
115121
#
116122

117123
run-secnetperf: # This would be 1 enumeration, after CTS has setup the environment with the correct OS type and version.
118-
name: Run secnetperf
124+
name: secnetperf
119125
needs: [build-unix, build-windows, build-windows-kernel]
120126
strategy:
121127
fail-fast: false
122128
matrix:
123129
vec: [
130+
# Azure Ubuntu 20.04
124131
{ env: "azure", plat: "linux", os: "ubuntu-20.04", arch: "x64", tls: "openssl", io: "epoll" },
125132
{ env: "azure", plat: "linux", os: "ubuntu-20.04", arch: "x64", tls: "openssl3", io: "epoll" },
133+
# Azure Windows Server 2022
126134
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "iocp" },
127135
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl", io: "iocp" },
128136
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl3", io: "iocp" },
129137
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "xdp" },
130-
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl", io: "xdp" },
131-
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl3", io: "xdp" },
138+
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "rio" },
132139
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "wsk" },
140+
# Azure Windows Server 2025 (preview)
133141
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "schannel", io: "iocp" },
134-
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "openssl", io: "iocp" },
135-
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "openssl3", io: "iocp" },
142+
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "schannel", io: "rio" },
143+
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "schannel", io: "xdp" },
144+
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "schannel", io: "wsk" },
145+
# Lab Windows Server 2022
136146
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "iocp" },
137147
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl", io: "iocp" },
138148
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl3", io: "iocp" },
139149
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "xdp" },
140-
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl", io: "xdp" },
141-
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl3", io: "xdp" },
142150
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "wsk" },
151+
# Lab Ubuntu Server 20.04 LTS
152+
{ env: "lab", plat: "linux", os: "ubuntu-20.04", arch: "x64", tls: "openssl", io: "epoll" },
153+
{ env: "lab", plat: "linux", os: "ubuntu-20.04", arch: "x64", tls: "openssl3", io: "epoll" },
143154
]
144155
runs-on:
145156
- self-hosted
@@ -165,7 +176,7 @@ jobs:
165176
path: artifacts
166177
- name: Run secnetperf
167178
shell: pwsh
168-
timeout-minutes: 15 # TODO: Increase as necessary
179+
timeout-minutes: 20
169180
run: ./scripts/secnetperf.ps1 `
170181
-LogProfile ${{ github.event.client_payload.logs || inputs.logprofile || 'NULL' }} `
171182
-MsQuicCommit ${{ github.event.client_payload.sha || github.event.client_payload.ref || inputs.ref || 'main' }} `
@@ -182,7 +193,7 @@ jobs:
182193
with:
183194
name: test-results-${{ matrix.vec.env }}-${{ matrix.vec.plat }}-${{ matrix.vec.os }}-${{ matrix.vec.arch }}-${{ matrix.vec.tls }}-${{ matrix.vec.io }}.sql
184195
path: test-results-${{ matrix.vec.env }}-${{ matrix.vec.plat }}-${{ matrix.vec.os }}-${{ matrix.vec.arch }}-${{ matrix.vec.tls }}-${{ matrix.vec.io }}.sql
185-
- name: Upload Test Results JSON # Data to populate the various pages of the dashboard. Callers of the Netperf API should specify if we want to update this or not.
196+
- name: Upload Test Results JSON
186197
if: ${{ always() }}
187198
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
188199
with:
@@ -230,7 +241,9 @@ jobs:
230241
with:
231242
repository: microsoft/netperf
232243
ref: sqlite
233-
- uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # Specify no 'name' to download all uploaded artifacts
244+
- uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe
245+
with:
246+
pattern: test-results-*
234247
- run: ls
235248
- run: python sql.py
236249
- name: Git commit # TODO: Squash history for this branch to keep size small
@@ -250,7 +263,9 @@ jobs:
250263
repository: microsoft/netperf
251264
ref: deploy
252265
- run: 'rm -rf *.json'
253-
- uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # Specify no 'name' to download all uploaded artifacts. TODO: Refactor this "download-all" models to instead filter for specific artifacts slices.
266+
- uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe
267+
with:
268+
pattern: "json-test-results-*"
254269
- run: python generate_historical_data.py
255270
- name: Git commit
256271
run: 'git config user.name "QUIC Dev[bot]" && git config user.email "[email protected]" && git pull && git add *.json && git commit -m "Update intermediary dashboard files" && git push'
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Set Regression Bounds
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- sqlite
8+
9+
jobs:
10+
set-regression-bounds:
11+
name: Set Regression Bounds
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Checkout netperf repo
15+
uses: actions/checkout@v2
16+
with:
17+
repository: microsoft/netperf
18+
ref: sqlite
19+
- name: Calculate regression bounds
20+
run: python regression.py

.github/workflows/xdp.yml

Lines changed: 28 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,21 @@ on:
44
workflow_dispatch:
55
inputs:
66
ref:
7+
description: 'XDP Branch or Commit'
78
required: false
8-
default: ''
9+
default: 'main'
910
type: string
11+
pull_request:
12+
branches:
13+
- main
14+
paths:
15+
- .github/workflows/xdp.yml
1016
repository_dispatch:
1117
types: [run-xdp]
1218
# Args: { guid, sha, ref, pr }
1319

1420
concurrency:
15-
group: xdp-${{ github.event.client_payload.pr || github.event.client_payload.sha || inputs.ref || 'main' }}
21+
group: xdp-${{ github.event.client_payload.pr || github.event.client_payload.sha || inputs.ref || github.event.pull_request.number || 'main' }}
1622
cancel-in-progress: true
1723

1824
permissions: read-all
@@ -32,76 +38,36 @@ jobs:
3238
echo "pr: ${{ github.event.client_payload.pr }}"
3339
3440
build:
35-
name: Build Windows
41+
name: Build XDP
3642
needs: []
3743
strategy:
38-
fail-fast: false
3944
matrix:
4045
os: ['2022']
41-
platform: [x64]
42-
runs-on: windows-${{ matrix.os }}
43-
steps:
44-
- name: Checkout repository
45-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
46-
with:
47-
repository: microsoft/xdp-for-windows
48-
ref: ${{ github.event.client_payload.sha || github.event.client_payload.ref || inputs.ref || 'main' }}
49-
submodules: recursive
50-
- name: Setup MSBuild.exe
51-
uses: microsoft/setup-msbuild@ab534842b4bdf384b8aaf93765dc6f721d9f5fab
52-
- name: Prepare Machine
53-
shell: PowerShell
54-
run: tools/prepare-machine.ps1 -ForBuild -Verbose
55-
- name: Install LLVM 11.0
56-
run: |
57-
choco install -y llvm --version 11.0.1 --allow-downgrade
58-
echo "C:\Program Files\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
59-
- name: Nuget Restore
60-
run: nuget.exe restore xdp.sln -ConfigFile src/nuget.config
61-
- name: Prepare for compiling eBPF programs
62-
run: tools/prepare-machine.ps1 -ForEbpfBuild -Verbose
63-
- name: Build
64-
run: msbuild xdp.sln /m /p:configuration=Release /p:platform=${{ matrix.platform }}
65-
- name: Sign Binaries
66-
shell: PowerShell
67-
run: tools/sign.ps1 -Config Release -Arch ${{ matrix.platform }}
68-
- name: Build Installer
69-
shell: PowerShell
70-
run: tools/create-installer.ps1 -Config Release -Platform ${{ matrix.platform }}
71-
- name: Filter Artifacts
72-
shell: pwsh
73-
run: |
74-
$src = "artifacts/bin/${{ matrix.platform }}_Release"
75-
$dest = "artifacts/bin2/${{ matrix.platform }}_Release"
76-
mkdir $dest | Out-Null
77-
copy -Recurse $src/xdp $dest
78-
copy -Recurse $src/xdpinstaller $dest
79-
copy $src/xdppcw.man $dest
80-
copy $src/xdp.pdb $dest
81-
copy $src/xdpapi.pdb $dest
82-
copy $src/pktcmd.exe $dest
83-
copy $src/pktcmd.pdb $dest
84-
copy $src/xskbench.exe $dest
85-
copy $src/xskbench.pdb $dest
86-
- name: Upload Artifacts
87-
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
88-
with:
89-
name: bin_Release_${{ matrix.os }}_${{ matrix.platform }}
90-
path: artifacts/bin2
46+
arch: [x64]
47+
fail-fast: false
48+
uses: microsoft/xdp-for-windows/.github/workflows/build.yml@main
49+
with:
50+
ref: ${{ github.event.client_payload.sha || github.event.client_payload.ref || inputs.ref || 'main' }}
51+
os: ${{ matrix.os }}
52+
arch: ${{ matrix.arch }}
53+
upload_artifacts: true
9154

9255
test:
9356
name: Test Windows
9457
needs: [build]
9558
strategy:
9659
fail-fast: false
9760
matrix:
98-
os: ['2022']
99-
arch: [x64]
61+
vec: [
62+
{ env: "azure", os: "2022", arch: "x64" },
63+
{ env: "azure", os: "2025", arch: "x64" },
64+
{ env: "lab", os: "2022", arch: "x64" },
65+
]
10066
runs-on:
10167
- self-hosted
102-
- os-windows-${{ matrix.os }}
103-
- ${{ matrix.arch }}
104-
- azure
68+
- ${{ matrix.vec.env }}
69+
- os-windows-${{ matrix.vec.os }}
70+
- ${{ matrix.vec.arch }}
10571
steps:
10672
- name: Checkout repository
10773
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
@@ -112,14 +78,14 @@ jobs:
11278
- name: Download Artifacts
11379
uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe
11480
with:
115-
name: bin_Release_${{ matrix.os }}_${{ matrix.arch }}
81+
name: bin_Release_${{ matrix.vec.arch }} # Build always comes from 2022 for now
11682
path: artifacts/bin
11783
- name: Run Tests
11884
shell: pwsh
119-
run: tools/two-machine-perf.ps1 -Config Release -Arch ${{ matrix.arch }}
85+
run: tools/two-machine-perf.ps1 -Config Release -Arch ${{ matrix.vec.arch }}
12086
- name: Upload Logs
12187
if: ${{ always() }}
12288
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
12389
with:
124-
name: logs_Release_${{ matrix.os }}_${{ matrix.arch }}
90+
name: logs_${{ matrix.vec.env }}_${{ matrix.vec.os }}_${{ matrix.vec.arch }}
12591
path: artifacts/logs

0 commit comments

Comments
 (0)