msquic/scripts/interop.ps1

199 строки
4.5 KiB
PowerShell

<#
.SYNOPSIS
This script runs quicinterop locally.
.PARAMETER Config
Specifies the build configuration to use.
.PARAMETER Arch
The CPU architecture to use.
.PARAMETER Tls
The TLS library use.
.PARAMETER KeepOutputOnSuccess
Don't discard console output or logs on success.
.PARAMETER GenerateXmlResults
Generates an xml Test report for the run.
.PARAMETER Debugger
Attaches the debugger to the process.
.PARAMETER InitialBreak
Debugger starts broken into the process to allow setting breakpoints, etc.
.PARAMETER LogProfile
The name of the profile to use for log collection.
.PARAMETER Target
A target to connect to.
.PARAMETER Custom
A custom hostname to connect to.
.PARAMETER Port
A UDP port to connect to.
.PARAMETER Test
A particular test case to run.
.PARAMETER Version
The initial version to use for the connection.
.PARAMETER Serial
Runs the test cases serially.
.PARAMETER UrlPath
Path to resource on the server to download.
#>
param (
[Parameter(Mandatory = $false)]
[ValidateSet("Debug", "Release")]
[string]$Config = "Debug",
[Parameter(Mandatory = $false)]
[ValidateSet("x86", "x64", "arm", "arm64")]
[string]$Arch = "x64",
[Parameter(Mandatory = $false)]
[ValidateSet("schannel", "openssl", "openssl3")]
[string]$Tls = "",
[Parameter(Mandatory = $false)]
[switch]$KeepOutputOnSuccess = $false,
[Parameter(Mandatory = $false)]
[switch]$GenerateXmlResults = $false,
[Parameter(Mandatory = $false)]
[switch]$Debugger = $false,
[Parameter(Mandatory = $false)]
[switch]$InitialBreak = $false,
[Parameter(Mandatory = $false)]
[ValidateSet("None", "Basic.Light", "Basic.Verbose", "Full.Light", "Full.Verbose", "SpinQuic.Light")]
[string]$LogProfile = "None",
[Parameter(Mandatory = $false)]
[string]$Target = "",
[Parameter(Mandatory = $false)]
[string]$Custom = "",
[Parameter(Mandatory = $false)]
[string]$Port = "",
[Parameter(Mandatory = $false)]
[string]$Test = "",
[Parameter(Mandatory = $false)]
[string]$Version = "",
[Parameter(Mandatory = $false)]
[switch]$Serial = $false,
[Parameter(Mandatory = $false)]
[string]$UrlPath = "",
[Parameter(Mandatory = $false)]
[switch]$AZP = $false,
[Parameter(Mandatory = $false)]
[switch]$GHA = $false
)
Set-StrictMode -Version 'Latest'
$PSDefaultParameterValues['*:ErrorAction'] = 'Stop'
# Default TLS based on current platform.
if ("" -eq $Tls) {
if ($IsWindows) {
$Tls = "schannel"
} else {
$Tls = "openssl"
}
}
# Root directory of the project.
$RootDir = Split-Path $PSScriptRoot -Parent
# Path to the run-executable Powershell script.
$RunExecutable = Join-Path $RootDir "scripts/run-executable.ps1"
# Path to the quicinterop exectuable.
$QuicInterop = $null
if ($IsWindows) {
$QuicInterop = Join-Path $RootDir "\artifacts\bin\windows\$($Arch)_$($Config)_$($Tls)\quicinterop.exe"
} elseif ($IsLinux) {
$QuicInterop = Join-Path $RootDir "/artifacts/bin/linux/$($Arch)_$($Config)_$($Tls)/quicinterop"
} elseif ($IsMacOS) {
$QuicInterop = Join-Path $RootDir "/artifacts/bin/macos/$($Arch)_$($Config)_$($Tls)/quicinterop"
} else {
Write-Error "Unsupported platform type!"
}
# Make sure the build is present.
if (!(Test-Path $QuicInterop)) {
Write-Error "Build does not exist!`n `nRun the following to generate it:`n `n $(Join-Path $RootDir "scripts" "build.ps1") -Config $Config -Arch $Arch -Tls $Tls`n"
}
# Build up all the arguments to pass to the Powershell script.
$Arguments = "-Path $($QuicInterop) -ShowOutput"
if ($KeepOutputOnSuccess) {
$Arguments += " -KeepOutputOnSuccess"
}
if ($GenerateXmlResults) {
$Arguments += " -GenerateXmlResults"
}
if ($Debugger) {
$Arguments += " -Debugger"
}
if ($InitialBreak) {
$Arguments += " -InitialBreak"
}
if ("None" -ne $LogProfile) {
$Arguments += " -LogProfile $($LogProfile)"
}
if ($AZP) {
$Arguments += " -AZP"
}
if ($GHA) {
$Arguments += " -GHA"
}
$ExtraArgs = ""
if ($Target -ne "") {
$ExtraArgs += " -target:$Target"
}
if ($Custom -ne "") {
$ExtraArgs += " -custom:$Custom"
}
if ($Port -ne "") {
$ExtraArgs += " -port:$Port"
}
if ($Test -ne "") {
$ExtraArgs += " -test:$Test"
}
if ($Version -ne "") {
$ExtraArgs += " -version:$Version"
}
if ($Serial) {
$ExtraArgs += " -serial"
}
if ($UrlPath -ne "") {
$ExtraArgs += " -urlpath:$UrlPath"
}
if ($ExtraArgs -ne "") {
$Arguments += " -Arguments `"$ExtraArgs`""
}
# Run the script.
Invoke-Expression ($RunExecutable + " " + $Arguments)