From 210ba5882d86e2be952dfcb0ca218839b404a826 Mon Sep 17 00:00:00 2001 From: Jack He Date: Sat, 9 Aug 2025 11:59:58 -0700 Subject: [PATCH 01/27] target ubuntu lab 2404 --- .../auto-reset-parent-or-child-lab-machine.yml | 16 ++-------------- .github/workflows/quic_matrix.json | 12 +----------- 2 files changed, 3 insertions(+), 25 deletions(-) diff --git a/.github/workflows/auto-reset-parent-or-child-lab-machine.yml b/.github/workflows/auto-reset-parent-or-child-lab-machine.yml index 0f5b070f..aa804dc4 100644 --- a/.github/workflows/auto-reset-parent-or-child-lab-machine.yml +++ b/.github/workflows/auto-reset-parent-or-child-lab-machine.yml @@ -83,20 +83,8 @@ jobs: fail-fast: false matrix: vec: [ - { parent-or-child: "parent=rr1-netperf-26\\localadminuser", vm-name: "netperf-windows-2022-client" }, - { parent-or-child: "child=rr1-netperf-25\\localadminuser", vm-name: "netperf-windows-2022-server" }, - { parent-or-child: "child=rr1-netperf-05\\localadminuser", vm-name: "netperf" }, - { parent-or-child: "parent=rr1-netperf-10\\localadminuser", vm-name: "netperf" }, - { parent-or-child: "child=rr1-netperf-11\\localadminuser", vm-name: "netperf-linux-server" }, - { parent-or-child: "parent=rr1-netperf-12\\localadminuser", vm-name: "netperf-linux-client" }, - { parent-or-child: "child=rr1-netperf-01\\localadminuser", vm-name: "netperf-windows-2022-server" }, - { parent-or-child: "parent=rr1-netperf-02\\localadminuser", vm-name: "netperf-windows-2022-client" }, - { parent-or-child: "child=rr1-netperf-03\\localadminuser", vm-name: "netperf-windows-2022-server" }, - { parent-or-child: "parent=rr1-netperf-04\\localadminuser", vm-name: "netperf-windows-2022-client" }, - { parent-or-child: "child=rr1-netperf-06\\localadminuser", vm-name: "netperf-windows-2022-server" }, - { parent-or-child: "parent=rr1-netperf-07\\localadminuser", vm-name: "netperf-windows-2022-client" }, - { parent-or-child: "child=rr1-netperf-08\\localadminuser", vm-name: "netperf-windows-2022-server" }, - { parent-or-child: "parent=rr1-netperf-09\\localadminuser", vm-name: "netperf-windows-2022-client" } + { parent-or-child: "child=rr1-netperf-11\\localadminuser", vm-name: "netperf-ubuntu24-server" }, + { parent-or-child: "parent=rr1-netperf-12\\localadminuser", vm-name: "netperf-ubuntu24-client" }, ] runs-on: - self-hosted diff --git a/.github/workflows/quic_matrix.json b/.github/workflows/quic_matrix.json index 7aafd31c..a73f83c3 100644 --- a/.github/workflows/quic_matrix.json +++ b/.github/workflows/quic_matrix.json @@ -1,13 +1,3 @@ [ - { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "xdp", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "wsk", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "iouring", "iouring": "-UseIoUring", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "iocp", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "xdp", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "wsk", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp" }, - { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "xdp" }, - { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "wsk" } + { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" } ] From eb14388bc065b17e3f66d953e87a8e5c4c13f4d5 Mon Sep 17 00:00:00 2001 From: Jack He Date: Sat, 9 Aug 2025 12:27:24 -0700 Subject: [PATCH 02/27] see if this works --- .github/workflows/quic_matrix.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/quic_matrix.json b/.github/workflows/quic_matrix.json index a73f83c3..09b25057 100644 --- a/.github/workflows/quic_matrix.json +++ b/.github/workflows/quic_matrix.json @@ -1,3 +1,6 @@ [ + { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "iouring", "iouring": "-UseIoUring", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" }, { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" } ] From 5f3f6c0f7ffcd9f58a43adcfa25789eb52337758 Mon Sep 17 00:00:00 2001 From: Jack He Date: Sun, 10 Aug 2025 13:41:18 -0700 Subject: [PATCH 03/27] test if latest msquic broke netperf --- .github/workflows/quic_matrix.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/quic_matrix.json b/.github/workflows/quic_matrix.json index 09b25057..de9a9154 100644 --- a/.github/workflows/quic_matrix.json +++ b/.github/workflows/quic_matrix.json @@ -1,6 +1,7 @@ + [ { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll", "preferred_pool_sku": "Experimental_Boost4" }, { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "iouring", "iouring": "-UseIoUring", "preferred_pool_sku": "Experimental_Boost4" }, { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" }, - { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" } + { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp" }, ] From 86eb4c3c2186f7dfdfaacb7553d31f1649662457 Mon Sep 17 00:00:00 2001 From: Jack He Date: Sun, 10 Aug 2025 13:51:13 -0700 Subject: [PATCH 04/27] test if latest msquic broke netperf --- .github/workflows/quic_matrix.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/quic_matrix.json b/.github/workflows/quic_matrix.json index de9a9154..b5d4eb73 100644 --- a/.github/workflows/quic_matrix.json +++ b/.github/workflows/quic_matrix.json @@ -3,5 +3,5 @@ { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll", "preferred_pool_sku": "Experimental_Boost4" }, { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "iouring", "iouring": "-UseIoUring", "preferred_pool_sku": "Experimental_Boost4" }, { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" }, - { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp" }, + { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp" } ] From 3ba2ecdbc759c67ee83819e082eac68210cdc959 Mon Sep 17 00:00:00 2001 From: Jack He Date: Sun, 10 Aug 2025 13:57:30 -0700 Subject: [PATCH 05/27] test if latest msquic broke netperf --- .github/workflows/quic_matrix.json | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/quic_matrix.json b/.github/workflows/quic_matrix.json index b5d4eb73..e930915d 100644 --- a/.github/workflows/quic_matrix.json +++ b/.github/workflows/quic_matrix.json @@ -1,4 +1,3 @@ - [ { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll", "preferred_pool_sku": "Experimental_Boost4" }, { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "iouring", "iouring": "-UseIoUring", "preferred_pool_sku": "Experimental_Boost4" }, From d3dbe292dafee74c30dc56a5b75a486b245250af Mon Sep 17 00:00:00 2001 From: Jack He Date: Thu, 14 Aug 2025 17:59:13 -0700 Subject: [PATCH 06/27] workaround --- .github/workflows/quic_matrix.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/quic_matrix.json b/.github/workflows/quic_matrix.json index e930915d..bf5c6284 100644 --- a/.github/workflows/quic_matrix.json +++ b/.github/workflows/quic_matrix.json @@ -1,6 +1,4 @@ [ - { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "iouring", "iouring": "-UseIoUring", "preferred_pool_sku": "Experimental_Boost4" }, { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" }, - { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp" } + { "env": "not_lab_not_azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" } ] From 3dd6f52856d4abc684c97dd344a06f9420e06903 Mon Sep 17 00:00:00 2001 From: Jack He Date: Thu, 14 Aug 2025 18:04:30 -0700 Subject: [PATCH 07/27] workaround 2 --- .github/workflows/quic_matrix.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/quic_matrix.json b/.github/workflows/quic_matrix.json index bf5c6284..69c4be69 100644 --- a/.github/workflows/quic_matrix.json +++ b/.github/workflows/quic_matrix.json @@ -1,4 +1,4 @@ [ { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" }, - { "env": "not_lab_not_azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" } + { "env": "lab", "os": "invalid_os", "arch": "x64", "tls": "quictls", "io": "epoll" } ] From b6e8cb72736980dfdfae50dd3eb14b12ae596e85 Mon Sep 17 00:00:00 2001 From: Jack He Date: Thu, 14 Aug 2025 18:31:54 -0700 Subject: [PATCH 08/27] what's going on? --- .github/workflows/quic.yml | 14 +++++++------- netperf-lib.psm1 | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/quic.yml b/.github/workflows/quic.yml index e5395e57..57bdbeed 100644 --- a/.github/workflows/quic.yml +++ b/.github/workflows/quic.yml @@ -350,13 +350,13 @@ jobs: path: latency.txt if-no-files-found: ignore - attempt-reset-lab: - name: Attempting to reset lab. Status of this job does not indicate result of lab reset. Look at job details. - needs: [run-secnetperf] - if: ${{ always() }} - uses: microsoft/netperf/.github/workflows/schedule-lab-reset.yml@main - with: - workflowId: ${{ github.run_id }} + # attempt-reset-lab: + # name: Attempting to reset lab. Status of this job does not indicate result of lab reset. Look at job details. + # needs: [run-secnetperf] + # if: ${{ always() }} + # uses: microsoft/netperf/.github/workflows/schedule-lab-reset.yml@main + # with: + # workflowId: ${{ github.run_id }} cleanup-cache: name: Cleanup Remote Cache Metadata diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index 3258b13a..8947cdc7 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -19,9 +19,9 @@ function NetperfSendCommand { ) if ($Session -and $Session -ne "NOT_SUPPORTED") { - Write-Host "Sending command (via remote powershell): $Command" $CallBackName = $env:CallBackName $RemoteDir = $env:RemoteDir + Write-Host "Sending command (via remote powershell): $RemoteDir/scripts/$CallBackName -Command $Command -WorkingDir $RemoteDir" Invoke-Command -Session $Session -ScriptBlock { & "$Using:RemoteDir/scripts/$Using:CallBackName" -Command $Using:Command -WorkingDir $Using:RemoteDir } From 45961c9de43947587e999a98372db374d549d6f8 Mon Sep 17 00:00:00 2001 From: Jack He Date: Thu, 14 Aug 2025 18:51:36 -0700 Subject: [PATCH 09/27] more diagnostics --- .github/workflows/quic_matrix.json | 2 +- netperf-lib.psm1 | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/quic_matrix.json b/.github/workflows/quic_matrix.json index 69c4be69..2688e469 100644 --- a/.github/workflows/quic_matrix.json +++ b/.github/workflows/quic_matrix.json @@ -1,4 +1,4 @@ [ { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" }, - { "env": "lab", "os": "invalid_os", "arch": "x64", "tls": "quictls", "io": "epoll" } + { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp" } ] diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index 8947cdc7..e0e2472c 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -126,6 +126,7 @@ function InitNetperfLib { # Set up the connection to the peer over remote powershell. Write-Host "Connecting to $RemoteName" + Write-Host "Using Callback Script: $RemoteDir/scripts/$CallbackName" $Attempts = 0 while ($Attempts -lt 5) { try { From 9efa359b123f54c10fa5f633a73cc500821950b6 Mon Sep 17 00:00:00 2001 From: Jack He Date: Thu, 14 Aug 2025 19:12:38 -0700 Subject: [PATCH 10/27] why...linux case sensitivity... --- netperf-lib.psm1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index e0e2472c..0a69546b 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -112,12 +112,12 @@ function NetperfWaitServerFinishExecution { function InitNetperfLib { param ( - $CallbackName, + $CallBackName, $RemoteDir, $RemoteName, $UserNameOnLinux ) - $env:CallbackName = $CallbackName + $env:CallBackName = $CallBackName $env:RemoteDir = $RemoteDir $env:RemoteName = $RemoteName $env:UserNameOnLinux = $UserNameOnLinux @@ -126,7 +126,7 @@ function InitNetperfLib { # Set up the connection to the peer over remote powershell. Write-Host "Connecting to $RemoteName" - Write-Host "Using Callback Script: $RemoteDir/scripts/$CallbackName" + Write-Host "Using Callback Script: $RemoteDir/scripts/$CallBackName" $Attempts = 0 while ($Attempts -lt 5) { try { From 3d313e8bf3c25718cc7fd45e0737794321f8c611 Mon Sep 17 00:00:00 2001 From: Jack He Date: Thu, 14 Aug 2025 20:22:26 -0700 Subject: [PATCH 11/27] add sudo to callback script call --- netperf-lib.psm1 | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index 0a69546b..f49abf75 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -21,9 +21,19 @@ function NetperfSendCommand { if ($Session -and $Session -ne "NOT_SUPPORTED") { $CallBackName = $env:CallBackName $RemoteDir = $env:RemoteDir - Write-Host "Sending command (via remote powershell): $RemoteDir/scripts/$CallBackName -Command $Command -WorkingDir $RemoteDir" - Invoke-Command -Session $Session -ScriptBlock { - & "$Using:RemoteDir/scripts/$Using:CallBackName" -Command $Using:Command -WorkingDir $Using:RemoteDir + if ($isWindows) { + Write-Host "Sending command (via remote powershell): $RemoteDir/scripts/$CallBackName -Command $Command -WorkingDir $RemoteDir" + Invoke-Command -Session $Session -ScriptBlock { + & "$Using:RemoteDir/scripts/$Using:CallBackName" -Command $Using:Command -WorkingDir $Using:RemoteDir + } + } else { + Write-Host "Sending command (via remote powershell): sudo -n pwsh -NoProfile -NonInteractive -File $RemoteDir/scripts/$CallBackName -Command $Command -WorkingDir $RemoteDir" + Invoke-Command -Session $Session -ScriptBlock { + & sudo -n pwsh -NoProfile -NonInteractive -File ` + "$Using:RemoteDir/scripts/$Using:CallBackName" ` + -Command $Using:Command ` + -WorkingDir $Using:RemoteDir + } } return } From fb4a5c1df6c3b49b33c5ed348dc9fd4b87eb5149 Mon Sep 17 00:00:00 2001 From: Jack He Date: Fri, 15 Aug 2025 11:55:10 -0700 Subject: [PATCH 12/27] copy everything --- netperf-lib.psm1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index f49abf75..0551b60a 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -180,7 +180,7 @@ function Copy-RepoToPeer { } New-Item -ItemType Directory -Path $Using:RemoteDir -Force | Out-Null } - Copy-Item -ToSession $Session -Path ./* -Destination "$RemoteDir" -Recurse + Copy-Item -Path . -Destination "$RemoteDir" -Recurse -Force -ToSession $Session } else { Write-Host "Not using remote powershell, assuming peer has checked out the repo." } From db26977b85ab62e7192d54168e55d6cefe5d50a9 Mon Sep 17 00:00:00 2001 From: Jack He Date: Fri, 15 Aug 2025 12:16:27 -0700 Subject: [PATCH 13/27] copy everything --- netperf-lib.psm1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index 0551b60a..1f0e4b2c 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -180,7 +180,7 @@ function Copy-RepoToPeer { } New-Item -ItemType Directory -Path $Using:RemoteDir -Force | Out-Null } - Copy-Item -Path . -Destination "$RemoteDir" -Recurse -Force -ToSession $Session + Copy-Item -ToSession $Session -Path ./*, ./.* -Destination "$RemoteDir" -Recurse -Force } else { Write-Host "Not using remote powershell, assuming peer has checked out the repo." } From 3f9e679211fd19fd6d6132e9ce5d03217f513c5e Mon Sep 17 00:00:00 2001 From: Jack He Date: Sat, 16 Aug 2025 20:22:32 -0700 Subject: [PATCH 14/27] hopefully this works... --- netperf-lib.psm1 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index 1f0e4b2c..44b21ca3 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -24,12 +24,15 @@ function NetperfSendCommand { if ($isWindows) { Write-Host "Sending command (via remote powershell): $RemoteDir/scripts/$CallBackName -Command $Command -WorkingDir $RemoteDir" Invoke-Command -Session $Session -ScriptBlock { - & "$Using:RemoteDir/scripts/$Using:CallBackName" -Command $Using:Command -WorkingDir $Using:RemoteDir + & pwsh -NoProfile -NonInteractive -WorkingDirectory $Using:RemoteDir -File ` + "$Using:RemoteDir/scripts/$Using:CallBackName" ` + -Command $Using:Command ` + -WorkingDir $Using:RemoteDir } } else { Write-Host "Sending command (via remote powershell): sudo -n pwsh -NoProfile -NonInteractive -File $RemoteDir/scripts/$CallBackName -Command $Command -WorkingDir $RemoteDir" Invoke-Command -Session $Session -ScriptBlock { - & sudo -n pwsh -NoProfile -NonInteractive -File ` + & sudo -n pwsh -NoProfile -NonInteractive -WorkingDirectory $Using:RemoteDir -File ` "$Using:RemoteDir/scripts/$Using:CallBackName" ` -Command $Using:Command ` -WorkingDir $Using:RemoteDir From 4f3febcc7519a826f8eddddff9ca8e024eb7e7cb Mon Sep 17 00:00:00 2001 From: Jack He Date: Tue, 19 Aug 2025 13:11:30 -0700 Subject: [PATCH 15/27] hopefully sudo works now --- netperf-lib.psm1 | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index 44b21ca3..e13f52e8 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -177,12 +177,26 @@ function Copy-RepoToPeer { if (!($Session -eq "NOT_SUPPORTED")) { # Copy the artifacts to the peer. Write-Host "Copying files to peer" - Invoke-Command -Session $Session -ScriptBlock { - if (Test-Path $Using:RemoteDir) { - Remove-Item -Force -Recurse $Using:RemoteDir | Out-Null + if ($isWindows) { + Invoke-Command -Session $Session -ScriptBlock { + if (Test-Path $Using:RemoteDir) { + Remove-Item -Force -Recurse $Using:RemoteDir | Out-Null + } + New-Item -ItemType Directory -Path $Using:RemoteDir -Force | Out-Null + } + } else { + Invoke-Command -Session $Session -ScriptBlock { + $dir = $Using:RemoteDir + & sudo -n pwsh -NoProfile -NonInteractive -WorkingDirectory $Using:RemoteDir -Command { + param ($p) + if (Test-Path $p) { + Remove-Item -Force -Recurse $p | Out-Null + } + New-Item -ItemType Directory -Path $p -Force | Out-Null + } $dir } - New-Item -ItemType Directory -Path $Using:RemoteDir -Force | Out-Null } + Copy-Item -ToSession $Session -Path ./*, ./.* -Destination "$RemoteDir" -Recurse -Force } else { Write-Host "Not using remote powershell, assuming peer has checked out the repo." From c258ab9f08e1e9af653c7344b5357eea2144a004 Mon Sep 17 00:00:00 2001 From: Jack He Date: Tue, 19 Aug 2025 14:36:52 -0700 Subject: [PATCH 16/27] copy-item already overwrites stuff --- netperf-lib.psm1 | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index e13f52e8..29a370aa 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -177,26 +177,6 @@ function Copy-RepoToPeer { if (!($Session -eq "NOT_SUPPORTED")) { # Copy the artifacts to the peer. Write-Host "Copying files to peer" - if ($isWindows) { - Invoke-Command -Session $Session -ScriptBlock { - if (Test-Path $Using:RemoteDir) { - Remove-Item -Force -Recurse $Using:RemoteDir | Out-Null - } - New-Item -ItemType Directory -Path $Using:RemoteDir -Force | Out-Null - } - } else { - Invoke-Command -Session $Session -ScriptBlock { - $dir = $Using:RemoteDir - & sudo -n pwsh -NoProfile -NonInteractive -WorkingDirectory $Using:RemoteDir -Command { - param ($p) - if (Test-Path $p) { - Remove-Item -Force -Recurse $p | Out-Null - } - New-Item -ItemType Directory -Path $p -Force | Out-Null - } $dir - } - } - Copy-Item -ToSession $Session -Path ./*, ./.* -Destination "$RemoteDir" -Recurse -Force } else { Write-Host "Not using remote powershell, assuming peer has checked out the repo." From b444b76e5236c8e2bd8f8e2b29d2ca87316820df Mon Sep 17 00:00:00 2001 From: Jack He Date: Tue, 19 Aug 2025 15:28:48 -0700 Subject: [PATCH 17/27] try sudo once more --- netperf-lib.psm1 | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index 29a370aa..69d59822 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -177,6 +177,25 @@ function Copy-RepoToPeer { if (!($Session -eq "NOT_SUPPORTED")) { # Copy the artifacts to the peer. Write-Host "Copying files to peer" + if ($isWindows) { + Invoke-Command -Session $Session -ScriptBlock { + if (Test-Path $Using:RemoteDir) { + Remove-Item -Force -Recurse $Using:RemoteDir | Out-Null + } + New-Item -ItemType Directory -Path $Using:RemoteDir -Force | Out-Null + } + } else { + Invoke-Command -Session $Session -ScriptBlock { + $dir = $Using:RemoteDir + & sudo -n -- pwsh -NoProfile -NonInteractive -Command { + param($p) + Set-Location -Path $p + if (Test-Path $p) { Remove-Item -Force -Recurse $p | Out-Null } + New-Item -ItemType Directory -Path $p -Force | Out-Null + } -- $dir # the second `--` makes pwsh stop parsing before `$dir` (purely defensive) + } + } + Copy-Item -ToSession $Session -Path ./*, ./.* -Destination "$RemoteDir" -Recurse -Force } else { Write-Host "Not using remote powershell, assuming peer has checked out the repo." From 012c5c11f2715e8b37f2fe24eb1eef42dcd77327 Mon Sep 17 00:00:00 2001 From: Jack He Date: Tue, 19 Aug 2025 16:53:43 -0700 Subject: [PATCH 18/27] wip --- netperf-lib.psm1 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index 69d59822..910e3840 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -186,13 +186,12 @@ function Copy-RepoToPeer { } } else { Invoke-Command -Session $Session -ScriptBlock { - $dir = $Using:RemoteDir - & sudo -n -- pwsh -NoProfile -NonInteractive -Command { + & sudo -n pwsh -NoProfile -NonInteractive -Command { param($p) Set-Location -Path $p if (Test-Path $p) { Remove-Item -Force -Recurse $p | Out-Null } New-Item -ItemType Directory -Path $p -Force | Out-Null - } -- $dir # the second `--` makes pwsh stop parsing before `$dir` (purely defensive) + } $dir } } From 57352b37119e54940d059263f7a07b539d0116f4 Mon Sep 17 00:00:00 2001 From: Jack He Date: Tue, 19 Aug 2025 17:42:20 -0700 Subject: [PATCH 19/27] use the temporary file method... --- netperf-lib.psm1 | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index 910e3840..416743c4 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -186,12 +186,16 @@ function Copy-RepoToPeer { } } else { Invoke-Command -Session $Session -ScriptBlock { - & sudo -n pwsh -NoProfile -NonInteractive -Command { - param($p) - Set-Location -Path $p - if (Test-Path $p) { Remove-Item -Force -Recurse $p | Out-Null } - New-Item -ItemType Directory -Path $p -Force | Out-Null - } $dir + # Create tmp script + $Script = @" + if (Test-Path $Using:RemoteDir) { + Remove-Item -Force -Recurse $Using:RemoteDir | Out-Null + } + New-Item -ItemType Directory -Path $Using:RemoteDir -Force | Out-Null +"@ + Set-Content -Path "$Using:RemoteDir/tmp_script.ps1" -Value $Script -Force + & sudo -n pwsh -NoProfile -NonInteractive -WorkingDirectory $Using:RemoteDir -File ` + "$Using:RemoteDir/tmp_script.ps1" } } From 3da2cee1e2d1240f2ad1d9fe66d74e7e578fb164 Mon Sep 17 00:00:00 2001 From: Jack He Date: Tue, 19 Aug 2025 18:05:00 -0700 Subject: [PATCH 20/27] put it into parent dir --- netperf-lib.psm1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index 416743c4..d7ea0599 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -193,9 +193,9 @@ function Copy-RepoToPeer { } New-Item -ItemType Directory -Path $Using:RemoteDir -Force | Out-Null "@ - Set-Content -Path "$Using:RemoteDir/tmp_script.ps1" -Value $Script -Force + Set-Content -Path "$Using:RemoteDir/../tmp_script.ps1" -Value $Script -Force & sudo -n pwsh -NoProfile -NonInteractive -WorkingDirectory $Using:RemoteDir -File ` - "$Using:RemoteDir/tmp_script.ps1" + "$Using:RemoteDir/../tmp_script.ps1" } } From a3bf188e036f313c3d735ed0ad1299d6fe09e5aa Mon Sep 17 00:00:00 2001 From: Jack He Date: Tue, 19 Aug 2025 18:24:52 -0700 Subject: [PATCH 21/27] get rid of workingdirectory... --- netperf-lib.psm1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index d7ea0599..19c62d1c 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -194,7 +194,7 @@ function Copy-RepoToPeer { New-Item -ItemType Directory -Path $Using:RemoteDir -Force | Out-Null "@ Set-Content -Path "$Using:RemoteDir/../tmp_script.ps1" -Value $Script -Force - & sudo -n pwsh -NoProfile -NonInteractive -WorkingDirectory $Using:RemoteDir -File ` + & sudo -n pwsh -NoProfile -NonInteractive -File ` "$Using:RemoteDir/../tmp_script.ps1" } } From 15b209dc581ed668a7b56c5500c4c9fc5ee1b001 Mon Sep 17 00:00:00 2001 From: Jack He Date: Tue, 19 Aug 2025 18:45:12 -0700 Subject: [PATCH 22/27] set chown and chmod stuff --- netperf-lib.psm1 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index 19c62d1c..da77e719 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -174,6 +174,7 @@ function InitNetperfLib { function Copy-RepoToPeer { param($Session) $RemoteDir = $env:RemoteDir + $UserNameOnLinux = $env:UserNameOnLinux if (!($Session -eq "NOT_SUPPORTED")) { # Copy the artifacts to the peer. Write-Host "Copying files to peer" @@ -192,6 +193,8 @@ function Copy-RepoToPeer { Remove-Item -Force -Recurse $Using:RemoteDir | Out-Null } New-Item -ItemType Directory -Path $Using:RemoteDir -Force | Out-Null + chown $Using:UserNameOnLinux:$Using:UserNameOnLinux $Using:RemoteDir + chmod 755 $Using:RemoteDir "@ Set-Content -Path "$Using:RemoteDir/../tmp_script.ps1" -Value $Script -Force & sudo -n pwsh -NoProfile -NonInteractive -File ` From 3bc4aca09862a51015124b0e3b649538086585ef Mon Sep 17 00:00:00 2001 From: Jack He Date: Wed, 20 Aug 2025 17:09:27 -0700 Subject: [PATCH 23/27] make sure it's all working --- .../auto-reset-parent-or-child-lab-machine.yml | 14 +++++++++++++- .github/workflows/quic.yml | 14 +++++++------- .github/workflows/quic_matrix.json | 14 ++++++++++++-- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/.github/workflows/auto-reset-parent-or-child-lab-machine.yml b/.github/workflows/auto-reset-parent-or-child-lab-machine.yml index aa804dc4..7c68b9b6 100644 --- a/.github/workflows/auto-reset-parent-or-child-lab-machine.yml +++ b/.github/workflows/auto-reset-parent-or-child-lab-machine.yml @@ -83,8 +83,20 @@ jobs: fail-fast: false matrix: vec: [ + { parent-or-child: "parent=rr1-netperf-26\\localadminuser", vm-name: "netperf-windows-2022-client" }, + { parent-or-child: "child=rr1-netperf-25\\localadminuser", vm-name: "netperf-windows-2022-server" }, + { parent-or-child: "child=rr1-netperf-05\\localadminuser", vm-name: "netperf" }, + { parent-or-child: "parent=rr1-netperf-10\\localadminuser", vm-name: "netperf" }, { parent-or-child: "child=rr1-netperf-11\\localadminuser", vm-name: "netperf-ubuntu24-server" }, { parent-or-child: "parent=rr1-netperf-12\\localadminuser", vm-name: "netperf-ubuntu24-client" }, + { parent-or-child: "child=rr1-netperf-01\\localadminuser", vm-name: "netperf-windows-2022-server" }, + { parent-or-child: "parent=rr1-netperf-02\\localadminuser", vm-name: "netperf-windows-2022-client" }, + { parent-or-child: "child=rr1-netperf-03\\localadminuser", vm-name: "netperf-windows-2022-server" }, + { parent-or-child: "parent=rr1-netperf-04\\localadminuser", vm-name: "netperf-windows-2022-client" }, + { parent-or-child: "child=rr1-netperf-06\\localadminuser", vm-name: "netperf-windows-2022-server" }, + { parent-or-child: "parent=rr1-netperf-07\\localadminuser", vm-name: "netperf-windows-2022-client" }, + { parent-or-child: "child=rr1-netperf-08\\localadminuser", vm-name: "netperf-windows-2022-server" }, + { parent-or-child: "parent=rr1-netperf-09\\localadminuser", vm-name: "netperf-windows-2022-client" } ] runs-on: - self-hosted @@ -127,7 +139,7 @@ jobs: - name: Start VM, wait for online status, alert observer. run: | $vmName = "${{ inputs.vm-name }}" - if ($vmName.Contains("linux")) { + if ($vmName.Contains("linux") -or $vmName.Contains("ubuntu")) { Restart-VM -Name $vmName -Force } else { Start-VM -Name $vmName diff --git a/.github/workflows/quic.yml b/.github/workflows/quic.yml index 57bdbeed..e5395e57 100644 --- a/.github/workflows/quic.yml +++ b/.github/workflows/quic.yml @@ -350,13 +350,13 @@ jobs: path: latency.txt if-no-files-found: ignore - # attempt-reset-lab: - # name: Attempting to reset lab. Status of this job does not indicate result of lab reset. Look at job details. - # needs: [run-secnetperf] - # if: ${{ always() }} - # uses: microsoft/netperf/.github/workflows/schedule-lab-reset.yml@main - # with: - # workflowId: ${{ github.run_id }} + attempt-reset-lab: + name: Attempting to reset lab. Status of this job does not indicate result of lab reset. Look at job details. + needs: [run-secnetperf] + if: ${{ always() }} + uses: microsoft/netperf/.github/workflows/schedule-lab-reset.yml@main + with: + workflowId: ${{ github.run_id }} cleanup-cache: name: Cleanup Remote Cache Metadata diff --git a/.github/workflows/quic_matrix.json b/.github/workflows/quic_matrix.json index 2688e469..291a3f3a 100644 --- a/.github/workflows/quic_matrix.json +++ b/.github/workflows/quic_matrix.json @@ -1,4 +1,14 @@ [ - { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" }, - { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp" } + { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "xdp", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "wsk", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "iouring", "iouring": "-UseIoUring", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "iocp", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "xdp", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "wsk", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp" }, + { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "xdp" }, + { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "wsk" }, + { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" } ] From a4c2af3b36ae9466f68f54160b1dc53c091a2147 Mon Sep 17 00:00:00 2001 From: Jack He Date: Wed, 20 Aug 2025 17:12:48 -0700 Subject: [PATCH 24/27] wip --- .github/workflows/auto-reset-parent-or-child-lab-machine.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-reset-parent-or-child-lab-machine.yml b/.github/workflows/auto-reset-parent-or-child-lab-machine.yml index 7c68b9b6..e5c38b15 100644 --- a/.github/workflows/auto-reset-parent-or-child-lab-machine.yml +++ b/.github/workflows/auto-reset-parent-or-child-lab-machine.yml @@ -111,7 +111,7 @@ jobs: - name: Start VM, wait for online status, alert observer. run: | $vmName = "${{ matrix.vec.vm-name }}" - if ($vmName.Contains("linux")) { + if ($vmName.Contains("linux") -or $vmName.Contains("ubuntu")) { Restart-VM -Name $vmName -Force } else { Start-VM -Name $vmName From a889c7db5de58a9199e0a2a064538ddb939b8fff Mon Sep 17 00:00:00 2001 From: Jack He Date: Wed, 20 Aug 2025 18:28:13 -0700 Subject: [PATCH 25/27] create tmp file --- docs/machines.md | 3 +++ netperf-lib.psm1 | 2 ++ 2 files changed, 5 insertions(+) diff --git a/docs/machines.md b/docs/machines.md index 289c8314..b33e578e 100644 --- a/docs/machines.md +++ b/docs/machines.md @@ -175,6 +175,9 @@ curl https://raw.githubusercontent.com/microsoft/netperf/main/setup-runner-linux CLIENTIP='192.168.0.XXX/24' sudo apt install net-tools -y +# if eth1 does not exist +sudo ip link set eth1 up + ifconfig # From the output of ifconfig, look for the netadapter (eth0 or eth1 ...) WITHOUT an inet ipv4 address. Usually, this will be eth1. sudo ip addr add $CLIENTIP dev eth1 # make sure eth1 is indeed the netadapter without an inet ipv4 address. # Also create a startup script that runs "sudo ip addr add $CLIENTIP dev eth_" so when the VM restarts, the ip persists. diff --git a/netperf-lib.psm1 b/netperf-lib.psm1 index da77e719..c7001c68 100644 --- a/netperf-lib.psm1 +++ b/netperf-lib.psm1 @@ -196,6 +196,8 @@ function Copy-RepoToPeer { chown $Using:UserNameOnLinux:$Using:UserNameOnLinux $Using:RemoteDir chmod 755 $Using:RemoteDir "@ + # Create file + New-Item -ItemType File -Path "$Using:RemoteDir/../tmp_script.ps1" -Force | Out-Null Set-Content -Path "$Using:RemoteDir/../tmp_script.ps1" -Value $Script -Force & sudo -n pwsh -NoProfile -NonInteractive -File ` "$Using:RemoteDir/../tmp_script.ps1" From 54730f2c142ce8bc49a145e48d662bcbacf3fdd2 Mon Sep 17 00:00:00 2001 From: Jack He Date: Wed, 10 Sep 2025 14:58:26 -0700 Subject: [PATCH 26/27] wip --- .github/workflows/quic.yml | 14 +++++++------- .github/workflows/quic_matrix.json | 10 ---------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/.github/workflows/quic.yml b/.github/workflows/quic.yml index e5395e57..57bdbeed 100644 --- a/.github/workflows/quic.yml +++ b/.github/workflows/quic.yml @@ -350,13 +350,13 @@ jobs: path: latency.txt if-no-files-found: ignore - attempt-reset-lab: - name: Attempting to reset lab. Status of this job does not indicate result of lab reset. Look at job details. - needs: [run-secnetperf] - if: ${{ always() }} - uses: microsoft/netperf/.github/workflows/schedule-lab-reset.yml@main - with: - workflowId: ${{ github.run_id }} + # attempt-reset-lab: + # name: Attempting to reset lab. Status of this job does not indicate result of lab reset. Look at job details. + # needs: [run-secnetperf] + # if: ${{ always() }} + # uses: microsoft/netperf/.github/workflows/schedule-lab-reset.yml@main + # with: + # workflowId: ${{ github.run_id }} cleanup-cache: name: Cleanup Remote Cache Metadata diff --git a/.github/workflows/quic_matrix.json b/.github/workflows/quic_matrix.json index 291a3f3a..32cd59e7 100644 --- a/.github/workflows/quic_matrix.json +++ b/.github/workflows/quic_matrix.json @@ -1,14 +1,4 @@ [ - { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "xdp", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "wsk", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "iouring", "iouring": "-UseIoUring", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "iocp", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "xdp", "preferred_pool_sku": "Experimental_Boost4" }, - { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "wsk", "preferred_pool_sku": "Experimental_Boost4" }, { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp" }, - { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "xdp" }, - { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "wsk" }, { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" } ] From 52e132f54baaaad809ee23e1f27b4fcb30c31470 Mon Sep 17 00:00:00 2001 From: Jack He Date: Thu, 11 Sep 2025 15:17:39 -0700 Subject: [PATCH 27/27] add back the things --- .github/workflows/quic.yml | 14 +++++++------- .github/workflows/quic_matrix.json | 10 ++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/.github/workflows/quic.yml b/.github/workflows/quic.yml index 57bdbeed..e5395e57 100644 --- a/.github/workflows/quic.yml +++ b/.github/workflows/quic.yml @@ -350,13 +350,13 @@ jobs: path: latency.txt if-no-files-found: ignore - # attempt-reset-lab: - # name: Attempting to reset lab. Status of this job does not indicate result of lab reset. Look at job details. - # needs: [run-secnetperf] - # if: ${{ always() }} - # uses: microsoft/netperf/.github/workflows/schedule-lab-reset.yml@main - # with: - # workflowId: ${{ github.run_id }} + attempt-reset-lab: + name: Attempting to reset lab. Status of this job does not indicate result of lab reset. Look at job details. + needs: [run-secnetperf] + if: ${{ always() }} + uses: microsoft/netperf/.github/workflows/schedule-lab-reset.yml@main + with: + workflowId: ${{ github.run_id }} cleanup-cache: name: Cleanup Remote Cache Metadata diff --git a/.github/workflows/quic_matrix.json b/.github/workflows/quic_matrix.json index 32cd59e7..291a3f3a 100644 --- a/.github/workflows/quic_matrix.json +++ b/.github/workflows/quic_matrix.json @@ -1,4 +1,14 @@ [ + { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "xdp", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "wsk", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "iouring", "iouring": "-UseIoUring", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "iocp", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "xdp", "preferred_pool_sku": "Experimental_Boost4" }, + { "env": "azure", "os": "windows-2025", "arch": "x64", "tls": "schannel", "io": "wsk", "preferred_pool_sku": "Experimental_Boost4" }, { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "iocp" }, + { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "xdp" }, + { "env": "lab", "os": "windows-2022", "arch": "x64", "tls": "schannel", "io": "wsk" }, { "env": "lab", "os": "ubuntu-24.04", "arch": "x64", "tls": "quictls", "io": "epoll" } ]