2020-05-13 05:08:05 +03:00
<#
. 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 LogProfile
The name of the profile to use for log collection .
. PARAMETER ConvertLogs
Convert any collected logs to text . Only works when LogProfile is set .
2020-06-06 02:17:10 +03:00
. 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 .
2020-05-13 05:08:05 +03:00
#>
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 " , " stub " , " mitls " ) ]
[ string ] $Tls = " " ,
[ Parameter ( Mandatory = $false ) ]
[ switch ] $KeepOutputOnSuccess = $false ,
[ Parameter ( Mandatory = $false ) ]
[ switch ] $GenerateXmlResults = $false ,
[ Parameter ( Mandatory = $false ) ]
[ switch ] $Debugger = $false ,
[ Parameter ( Mandatory = $false ) ]
[ ValidateSet ( " None " , " Basic.Light " , " Basic.Verbose " , " Full.Light " , " Full.Verbose " , " SpinQuic.Light " ) ]
[ string ] $LogProfile = " None " ,
[ Parameter ( Mandatory = $false ) ]
2020-06-06 02:17:10 +03:00
[ switch ] $ConvertLogs = $false ,
[ Parameter ( Mandatory = $false ) ]
[ string ] $Target = " " ,
[ Parameter ( Mandatory = $false ) ]
[ string ] $Custom = " " ,
[ Parameter ( Mandatory = $false ) ]
[ string ] $Port = " " ,
[ Parameter ( Mandatory = $false ) ]
[ string ] $Test = " "
2020-05-13 05:08:05 +03:00
)
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 " .azure/scripts/run-executable.ps1 "
# Path to the quicinterop exectuable.
$QuicInterop = $null
if ( $IsWindows ) {
$QuicInterop = Join-Path $RootDir " \artifacts\windows\ $( $Arch ) _ $( $Config ) _ $( $Tls ) \quicinterop.exe "
} else {
$QuicInterop = Join-Path $RootDir " /artifacts/linux/ $( $Arch ) _ $( $Config ) _ $( $Tls ) /quicinterop "
}
# Make sure the build is present.
if ( ! ( Test-Path $QuicInterop ) ) {
Write-Error " Build does not exist! `n `n Run 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 ( " None " -ne $LogProfile ) {
$Arguments + = " -LogProfile $( $LogProfile ) "
}
if ( $ConvertLogs ) {
$Arguments + = " -ConvertLogs "
}
2020-06-06 02:17:10 +03:00
$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 ( $ExtraArgs -ne " " ) {
$Arguments + = " -Arguments `" $ExtraArgs `" "
}
2020-05-13 05:08:05 +03:00
# Run the script.
Invoke-Expression ( $RunExecutable + " " + $Arguments )