msquic/.azure/azure-pipelines.perf.yml

464 строки
13 KiB
YAML
Исходник Обычный вид История

#
# Continuous Integration (CI)
# This pipeline builds and runs MsQuic performance tests.
#
2022-03-10 21:35:36 +03:00
trigger:
branches:
include:
- main
paths:
include:
- .azure/azure-pipelines.perf.yml
- .azure/templates/run-performance.yml
- .gitmodules
2022-05-10 19:46:58 +03:00
- scripts/performance.ps1
- scripts/performance-helper.ps1
- scripts/prepare-machine.ps1
- scripts/RemoteTests.json
- scripts/xdp-devkit.json
2022-03-26 16:26:55 +03:00
- src/bin/*
2022-03-10 21:35:36 +03:00
- src/core/*
- src/platform/*
- src/perf/*
- submodules/openssl/*
2022-03-10 21:35:36 +03:00
pr:
branches:
include:
- main
paths:
include:
- .azure/azure-pipelines.perf.yml
- .azure/templates/run-performance.yml
- .gitmodules
- scripts/performance.ps1
- scripts/performance-helper.ps1
2022-05-10 19:46:58 +03:00
- scripts/prepare-machine.ps1
- scripts/RemoteTests.json
2022-03-29 23:19:39 +03:00
- src/bin/*
2022-03-10 21:35:36 +03:00
- src/core/*
- src/platform/*
- src/perf/*
- submodules/openssl/*
name: 0.$(Date:yyyy).$(Date:MM).$(DayOfMonth).$(Rev:rr).0
parameters:
2022-03-10 21:35:36 +03:00
- name: winkernel
type: boolean
displayName: Windows Kernel
default: true
- name: winuser_schannel
type: boolean
displayName: Windows (Schannel)
default: true
2022-03-29 23:19:39 +03:00
- name: winuser_xdp
type: boolean
displayName: Windows (XDP, Schannel)
default: true
2022-03-10 21:35:36 +03:00
- name: winuser_openssl
type: boolean
displayName: Windows (OpenSSL)
default: true
2023-02-02 21:43:49 +03:00
- name: winuser_openssl3
type: boolean
displayName: Windows (OpenSSL3)
default: true
2022-03-10 21:35:36 +03:00
- name: linux_openssl
type: boolean
displayName: Linux (OpenSSL)
default: true
2023-02-02 21:43:49 +03:00
- name: linux_openssl3
type: boolean
displayName: Linux (OpenSSL3)
default: true
2022-03-10 21:35:36 +03:00
- name: arch
type: string
2022-03-10 21:35:36 +03:00
displayName: Architecture
default: x64
values:
2022-03-10 21:35:36 +03:00
- x64
- x86
- name: pgo_mode
type: boolean
displayName: PGO Mode
default: false
- name: logging
type: string
displayName: Logging Type
default: None
values:
- None
- Basic.Light
- Basic.Verbose
- Datapath.Light
- Datapath.Verbose
- Full.Light
- Full.Verbose
- Performance.Light
- Performance.Verbose
- RPS.Light
2022-06-16 01:16:17 +03:00
- RPS.Verbose
- Stacks.Light
- Stacks.Verbose
2020-10-15 03:52:43 +03:00
- name: testToRun
type: string
displayName: Run Specific Test
default: all
values:
- all
- ThroughputUp
- ThroughputDown
- RPS
- HPS
- name: testTypes
type: string
displayName: Test Types
default: Remote,Loopback
values:
- Remote,Loopback
- Remote
- Loopback
2021-01-22 22:56:31 +03:00
- name: protocol
type: string
displayName: Protocol
default: QUIC
values:
- QUIC
- TCPTLS
- name: iterations
type: number
displayName: Force Iterations
default: 0
2022-06-09 15:46:23 +03:00
- name: timeout
type: number
displayName: Timeout (minutes)
default: 45
2020-10-13 07:20:57 +03:00
stages:
#
# Builds
#
2022-03-10 21:35:36 +03:00
- ${{ if eq(parameters.winkernel, true) }}:
- stage: build_winkernel
displayName: Build Windows Kernel
dependsOn: []
variables:
runCodesignValidationInjection: false
jobs:
- template: ./templates/build-config-winkernel.yml
parameters:
arch: ${{ parameters.arch }}
config: Release
- ${{ if or(eq(parameters.winkernel, true), eq(parameters.winuser_schannel, true)) }}:
2022-03-10 21:35:36 +03:00
- stage: build_winuser_schannel
displayName: Build Windows (Schannel)
dependsOn: []
variables:
runCodesignValidationInjection: false
jobs:
- template: ./templates/build-config-user.yml
parameters:
2022-03-10 21:35:36 +03:00
image: windows-latest
platform: windows
2020-10-13 07:20:57 +03:00
arch: ${{ parameters.arch }}
2022-03-10 21:35:36 +03:00
tls: schannel
config: Release
2022-03-12 00:08:56 +03:00
extraPrepareArgs: -DisableTest
2022-03-10 21:35:36 +03:00
${{ if eq(parameters.pgo_mode, false) }}:
extraBuildArgs: -DisableTest -DisableTools
${{ if eq(parameters.pgo_mode, true) }}:
extraBuildArgs: -DisableTest -DisableTools -PGO
2022-03-29 23:19:39 +03:00
- ${{ if eq(parameters.winuser_xdp, true) }}:
- stage: build_winuser_xdp
displayName: Build Windows (XDP)
dependsOn: []
variables:
runCodesignValidationInjection: false
jobs:
2022-03-29 23:19:39 +03:00
- template: ./templates/build-config-user.yml
parameters:
image: windows-latest
platform: windows
arch: ${{ parameters.arch }}
tls: schannel
config: Release
extraName: 'xdp'
extraPrepareArgs: -DisableTest -InstallXdpSdk
${{ if eq(parameters.pgo_mode, false) }}:
extraBuildArgs: -DisableTest -DisableTools -UseXdp -ExtraArtifactDir Xdp
${{ if eq(parameters.pgo_mode, true) }}:
extraBuildArgs: -DisableTest -DisableTools -UseXdp -ExtraArtifactDir Xdp -PGO
2022-03-10 21:35:36 +03:00
- ${{ if eq(parameters.winuser_openssl, true) }}:
- stage: build_winuser_openssl
displayName: Build Windows (OpenSSL)
dependsOn: []
variables:
runCodesignValidationInjection: false
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: windows-latest
platform: windows
arch: ${{ parameters.arch }}
tls: openssl
config: Release
2022-03-12 00:08:56 +03:00
extraPrepareArgs: -DisableTest
2022-03-10 21:35:36 +03:00
${{ if eq(parameters.pgo_mode, false) }}:
extraBuildArgs: -DisableTest -DisableTools
2022-03-10 21:35:36 +03:00
${{ if eq(parameters.pgo_mode, true) }}:
extraBuildArgs: -DisableTest -DisableTools -PGO
2023-02-02 21:43:49 +03:00
- ${{ if eq(parameters.winuser_openssl3, true) }}:
- stage: build_winuser_openssl3
displayName: Build Windows (OpenSSL3)
dependsOn: []
variables:
runCodesignValidationInjection: false
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: windows-latest
platform: windows
arch: ${{ parameters.arch }}
tls: openssl3
config: Release
extraPrepareArgs: -DisableTest
${{ if eq(parameters.pgo_mode, false) }}:
extraBuildArgs: -DisableTest -DisableTools
${{ if eq(parameters.pgo_mode, true) }}:
extraBuildArgs: -DisableTest -DisableTools -PGO
2022-03-10 21:35:36 +03:00
- ${{ if eq(parameters.linux_openssl, true) }}:
- stage: build_linux_openssl
displayName: Build Linux (OpenSSL)
dependsOn: []
variables:
runCodesignValidationInjection: false
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
2022-03-10 21:35:36 +03:00
platform: linux
2020-10-13 07:20:57 +03:00
arch: ${{ parameters.arch }}
2022-03-10 21:35:36 +03:00
tls: openssl
config: Release
2022-03-12 00:08:56 +03:00
extraPrepareArgs: -DisableTest
extraBuildArgs: -DisableTest -DisableTools
2023-02-02 21:43:49 +03:00
- ${{ if eq(parameters.linux_openssl, true) }}:
- stage: build_linux_openssl3
displayName: Build Linux (OpenSSL3)
dependsOn: []
variables:
runCodesignValidationInjection: false
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: ${{ parameters.arch }}
tls: openssl3
config: Release
extraPrepareArgs: -DisableTest
extraBuildArgs: -DisableTest -DisableTools
#
2022-03-10 21:35:36 +03:00
# Tests
#
2022-03-10 21:35:36 +03:00
- ${{ if eq(parameters.winkernel, true) }}:
- stage: perf_winkernel
displayName: Performance Testing Windows Kernel
dependsOn:
- build_winkernel
- build_winuser_schannel
2022-03-10 21:35:36 +03:00
jobs:
- template: ./templates/run-performance.yml
parameters:
pool: MsQuic-Win-Perf
platform: windows
localTls: schannel
remoteTls: schannel
iterations: ${{ parameters.iterations }}
2022-03-10 21:35:36 +03:00
arch: ${{ parameters.arch }}
protocol: ${{ parameters.protocol }}
logProfile: ${{ parameters.logging }}
2022-06-09 15:46:23 +03:00
timeout: ${{ parameters.timeout }}
2022-03-10 21:35:36 +03:00
${{ if ne(parameters.testToRun, 'all') }}:
testToRun: ${{ parameters.testToRun }}
kernelMode: -Kernel
extraName: 'Kernel'
testTypes: 'Remote'
2022-03-10 21:35:36 +03:00
${{ if eq(parameters.pgo_mode, true) }}:
extraArgs: -PGO
failOnRegression: 0
2022-03-10 21:35:36 +03:00
- ${{ if eq(parameters.winuser_schannel, true) }}:
- stage: perf_winuser_schannel
displayName: Performance Testing Windows (Schannel)
dependsOn:
- build_winuser_schannel
jobs:
- template: ./templates/run-performance.yml
parameters:
pool: MsQuic-Win-Perf
platform: windows
localTls: schannel
remoteTls: schannel
iterations: ${{ parameters.iterations }}
2022-03-10 21:35:36 +03:00
arch: ${{ parameters.arch }}
protocol: ${{ parameters.protocol }}
logProfile: ${{ parameters.logging }}
2022-06-09 15:46:23 +03:00
timeout: ${{ parameters.timeout }}
2022-03-10 21:35:36 +03:00
${{ if ne(parameters.testToRun, 'all') }}:
testToRun: ${{ parameters.testToRun }}
2020-08-27 20:42:14 +03:00
testTypes: ${{ parameters.testTypes }}
2022-03-10 21:35:36 +03:00
${{ if eq(parameters.pgo_mode, true) }}:
extraArgs: -PGO
failOnRegression: 0
2022-03-10 21:35:36 +03:00
- ${{ if eq(parameters.winuser_xdp, true) }}:
- stage: perf_winuser_xdp
displayName: Performance Testing Windows (XDP)
dependsOn:
- build_winuser_xdp
jobs:
- template: ./templates/run-performance.yml
parameters:
pool: MsQuic-Win-Perf
platform: windows
localTls: schannel
remoteTls: schannel
iterations: ${{ parameters.iterations }}
arch: ${{ parameters.arch }}
protocol: ${{ parameters.protocol }}
logProfile: ${{ parameters.logging }}
2022-06-09 15:46:23 +03:00
timeout: ${{ parameters.timeout }}
extraArtifactDir: '_Xdp'
extraTestArgs: -ExtraArtifactDir _Xdp -XDP
${{ if ne(parameters.testToRun, 'all') }}:
testToRun: ${{ parameters.testToRun }}
testTypes: Remote
${{ if eq(parameters.pgo_mode, false) }}:
extraArgs: -Publish
${{ if eq(parameters.pgo_mode, true) }}:
extraArgs: -PGO
failOnRegression: 0
2022-03-10 21:35:36 +03:00
- ${{ if eq(parameters.winuser_openssl, true) }}:
- stage: perf_winuser_openssl
displayName: Performance Testing Windows (OpenSSL)
dependsOn:
- build_winuser_openssl
jobs:
- template: ./templates/run-performance.yml
parameters:
pool: MsQuic-Win-Perf
platform: windows
localTls: openssl
remoteTls: openssl
iterations: ${{ parameters.iterations }}
2022-03-10 21:35:36 +03:00
arch: ${{ parameters.arch }}
protocol: ${{ parameters.protocol }}
logProfile: ${{ parameters.logging }}
2022-06-09 15:46:23 +03:00
timeout: ${{ parameters.timeout }}
2022-03-10 21:35:36 +03:00
${{ if ne(parameters.testToRun, 'all') }}:
testToRun: ${{ parameters.testToRun }}
testTypes: ${{ parameters.testTypes }}
${{ if eq(parameters.pgo_mode, true) }}:
extraArgs: -PGO
failOnRegression: 0
2022-03-10 21:35:36 +03:00
2023-02-02 21:43:49 +03:00
- ${{ if eq(parameters.winuser_openssl3, true) }}:
- stage: perf_winuser_openssl3
displayName: Performance Testing Windows (OpenSSL3)
dependsOn:
- build_winuser_openssl3
jobs:
- template: ./templates/run-performance.yml
parameters:
pool: MsQuic-Win-Perf
platform: windows
localTls: openssl3
remoteTls: openssl3
iterations: ${{ parameters.iterations }}
arch: ${{ parameters.arch }}
protocol: ${{ parameters.protocol }}
logProfile: ${{ parameters.logging }}
timeout: ${{ parameters.timeout }}
${{ if ne(parameters.testToRun, 'all') }}:
testToRun: ${{ parameters.testToRun }}
testTypes: ${{ parameters.testTypes }}
${{ if eq(parameters.pgo_mode, true) }}:
extraArgs: -PGO
failOnRegression: 0
2022-03-10 21:35:36 +03:00
- ${{ if eq(parameters.linux_openssl, true) }}:
- stage: perf_linux_openssl
displayName: Performance Testing Linux (OpenSSL)
dependsOn:
- build_linux_openssl
jobs:
- template: ./templates/run-performance.yml
parameters:
pool: MsQuic-Linux-Perf
platform: linux
localTls: openssl
remoteTls: openssl
iterations: ${{ parameters.iterations }}
2022-03-10 21:35:36 +03:00
arch: ${{ parameters.arch }}
protocol: ${{ parameters.protocol }}
logProfile: ${{ parameters.logging }}
2022-06-09 15:46:23 +03:00
timeout: ${{ parameters.timeout }}
2022-03-10 21:35:36 +03:00
${{ if ne(parameters.testToRun, 'all') }}:
testToRun: ${{ parameters.testToRun }}
testTypes: ${{ parameters.testTypes }}
${{ if eq(parameters.pgo_mode, true) }}:
extraArgs: -PGO
failOnRegression: 0
2022-03-10 21:35:36 +03:00
2023-02-02 21:43:49 +03:00
- ${{ if eq(parameters.linux_openssl3, true) }}:
- stage: perf_linux_openssl3
displayName: Performance Testing Linux (OpenSSL3)
dependsOn:
- build_linux_openssl3
jobs:
- template: ./templates/run-performance.yml
parameters:
pool: MsQuic-Linux-Perf
platform: linux
localTls: openssl3
remoteTls: openssl3
iterations: ${{ parameters.iterations }}
arch: ${{ parameters.arch }}
protocol: ${{ parameters.protocol }}
logProfile: ${{ parameters.logging }}
timeout: ${{ parameters.timeout }}
${{ if ne(parameters.testToRun, 'all') }}:
testToRun: ${{ parameters.testToRun }}
testTypes: ${{ parameters.testTypes }}
${{ if eq(parameters.pgo_mode, true) }}:
extraArgs: -PGO
failOnRegression: 0
- ${{ if in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}:
- stage: perf_post_process
displayName: Perf Post Processing
condition: succeededOrFailed()
dependsOn:
- perf_winkernel
- perf_winuser_schannel
- perf_winuser_xdp
- perf_winuser_openssl
2023-02-02 21:43:49 +03:00
- perf_winuser_openssl3
- perf_linux_openssl
2023-02-02 21:43:49 +03:00
- perf_linux_openssl3
jobs:
- template: ./templates/post-process-performance.yml