@@ -62,151 +62,43 @@ if ($LastExitCode) {
6262. ci/ kokoro/ windows/ lib/ integration.ps1
6363
6464function Invoke-REST-Quickstart {
65- param ($bazel_bin )
66- try {
67- $executable = Join-Path $bazel_bin " google/cloud/storage/quickstart/quickstart.exe"
68- Write-Host " Running REST Quickstart, attempting to run: $executable "
69- if (-not (Test-Path $executable )) {
70- Write-Host - ForegroundColor Red " Executable not found at the specified path."
71- Exit 1
72- }
73- & $executable " ${env: GOOGLE_CLOUD_CPP_STORAGE_TEST_BUCKET_NAME} "
74- if ($LastExitCode ) {
75- Write-Host - ForegroundColor Red " Execution of (storage/quickstart) failed with exit code ${LastExitCode} ."
76- Exit ${LastExitCode}
77- }
78- } catch {
79- Write-Host - ForegroundColor Red " Caught exception while trying to run storage/quickstart: $_ "
80- Exit 1
65+ bazelisk $common_flags run $build_flags `
66+ // google/ cloud/ storage/ quickstart:quickstart -- `
67+ " ${env: GOOGLE_CLOUD_CPP_STORAGE_TEST_BUCKET_NAME} "
68+ if ($LastExitCode ) {
69+ Write-Host - ForegroundColor Red " bazel run (storage/quickstart) failed with exit code ${LastExitCode} ."
70+ Exit ${LastExitCode}
8171 }
8272}
8373
8474function Invoke-gRPC-Quickstart {
85- param ($bazel_bin )
86- try {
87- $executable = Join-Path $bazel_bin " google/cloud/pubsub/quickstart/quickstart.exe"
88- Write-Host " Running gRPC Quickstart, attempting to run: $executable "
89- if (-not (Test-Path $executable )) {
90- Write-Host - ForegroundColor Red " Executable not found at the specified path."
91- Exit 1
92- }
93- & $executable " ${env: GOOGLE_CLOUD_PROJECT} " " ${env: GOOGLE_CLOUD_CPP_PUBSUB_TEST_QUICKSTART_TOPIC} "
94- if ($LastExitCode ) {
95- Write-Host - ForegroundColor Red " Execution of (pubsub/quickstart) failed with exit code ${LastExitCode} ."
96- Exit ${LastExitCode}
97- }
98- } catch {
99- Write-Host - ForegroundColor Red " Caught exception while trying to run pubsub/quickstart: $_ "
100- Exit 1
75+ bazelisk $common_flags run $build_flags `
76+ // google/ cloud/ pubsub/ quickstart:quickstart -- `
77+ " ${env: GOOGLE_CLOUD_PROJECT} " " ${env: GOOGLE_CLOUD_CPP_PUBSUB_TEST_QUICKSTART_TOPIC} "
78+ if ($LastExitCode ) {
79+ Write-Host - ForegroundColor Red " bazel run (pubsub/quickstart) failed with exit code ${LastExitCode} ."
80+ Exit ${LastExitCode}
10181 }
10282}
10383
10484if (Test-Integration - Enabled) {
10585 Write-Host " `n $ ( Get-Date - Format o) Running minimal quickstart prorams"
10686
107- # 1. Install the certificates
87+ # Install certificates and set up environment variables for BoringSSL
10888 Install-Roots - Pem
109-
110- # 2. Normalize paths to use Forward Slashes (/)
111- # This is critical for C++ binaries (BoringSSL/libcurl) to parse paths correctly on Windows.
89+
90+ # BoringSSL prefers forward slashes for paths, even on Windows
11291 $RawRootsPath = Join-Path $env: KOKORO_GFILE_DIR " roots.pem"
11392 $RootsPath = $RawRootsPath -replace ' \\' , ' /'
114-
115- $RawKeyPath = Join-Path $env: KOKORO_GFILE_DIR " kokoro-run-key.json"
116- $KeyPath = $RawKeyPath -replace ' \\' , ' /'
93+ $KeyPath = (Join-Path $env: KOKORO_GFILE_DIR " kokoro-run-key.json" ) -replace ' \\' , ' /'
11794
118- # 3. Set ALL SSL Environment Variables
119- # OpenSSL/BoringSSL may look at SSL_CERT_FILE before CURL_CA_BUNDLE
120- # Use Forward Slashes ($RootsPath) for BoringSSL
12195 $env: GRPC_DEFAULT_SSL_ROOTS_FILE_PATH = $RootsPath
12296 $env: CURL_CA_BUNDLE = $RootsPath
12397 $env: SSL_CERT_FILE = $RootsPath
12498 $env: GOOGLE_APPLICATION_CREDENTIALS = $KeyPath
125-
126- # 4. Enable Deep Library Logging
127- $env: GOOGLE_CLOUD_CPP_ENABLE_TRACING = " http"
128- $env: CURL_VERBOSE = " 1"
129-
130- # --- DEBUG CHECKS ---
131- Write-Host - ForegroundColor Cyan " `n --- DEBUG: Environment & File Check ---"
132- Write-Host " Roots Path: $RootsPath "
133-
134- Write-Host " `n [Check 1] Environment Variables:"
135- Get-ChildItem Env: | Where-Object { $_.Name -match ' CURL_|GOOGLE_|GRPC_|SSL_' } | Format-Table - AutoSize | Out-Host
136-
137- Write-Host " `n [Check 2] File Verify:"
138- if (Test-Path $RootsPath ) {
139- Write-Host - ForegroundColor Green " File exists."
140- Get-Item $RootsPath | Select-Object Length, LastWriteTime
141- } else {
142- Write-Host - ForegroundColor Red " CRITICAL: File not found at $RootsPath "
143- }
144- Write-Host " --- DEBUG END ---`n "
145-
146- bazelisk $common_flags build $build_flags `
147- // google/ cloud/ storage/ quickstart:quickstart `
148- // google/ cloud/ pubsub/ quickstart:quickstart
149-
150- $bazel_bin = (bazelisk $common_flags info $build_flags bazel- bin).Trim()
151- # Fix bazel-bin path for PowerShell invocation just in case
152- $bazel_bin = $bazel_bin.Replace (' /' , ' \' )
153- Write-Host " bazel-bin directory: $bazel_bin "
154-
155- # --- VERIFICATION EXPERIMENT START ---
156- Write-Host - ForegroundColor Cyan " `n --- EXPERIMENT: The 'Strip & Retry' Test ---"
157-
158- # Define paths
159- $DirtyFile = $RawRootsPath
160- $CleanFile = Join-Path $env: KOKORO_GFILE_DIR " roots_clean.pem"
161- $CleanFileForward = $CleanFile -replace ' \\' , ' /'
162-
163- # Check for the "Poison" (\r)
164- $text = [System.IO.File ]::ReadAllText($DirtyFile )
165- if ($text.Contains (" `r " )) {
166- Write-Host - ForegroundColor Red " [CONFIRMED] 'roots.pem' contains Carriage Returns (\r)."
167- Write-Host " Attempting to sanitize and run binary..."
168-
169- # Create the Antidote (Remove all \r)
170- $cleanText = $text.Replace (" `r " , " " )
171- [System.IO.File ]::WriteAllText($CleanFile , $cleanText )
172- Write-Host " Created sanitized file: $CleanFileForward "
173-
174- # Run the Binary against the CLEAN file
175- Write-Host " `n Running quickstart.exe using CLEAN file..."
176-
177- # Temporarily override the env var just for this test
178- $env: CURL_CA_BUNDLE = $CleanFileForward
179- $env: SSL_CERT_FILE = $CleanFileForward
180- $env: GRPC_DEFAULT_SSL_ROOTS_FILE_PATH = $CleanFileForward
181-
182- # Construct executable path
183- $QuickstartExe = Join-Path $bazel_bin " google/cloud/storage/quickstart/quickstart.exe"
184-
185- try {
186- & $QuickstartExe " ${env: GOOGLE_CLOUD_CPP_STORAGE_TEST_BUCKET_NAME} "
187- if ($LastExitCode -eq 0 ) {
188- Write-Host - ForegroundColor Green " `n [SUCCESS] The binary worked with the clean file!"
189- Write-Host - ForegroundColor Green " CONCLUSION: Carriage Returns were the root cause."
190- } else {
191- Write-Host - ForegroundColor Red " `n [FAILURE] The binary still failed ($LastExitCode ) even with the clean file."
192- Write-Host - ForegroundColor Red " CONCLUSION: The issue is NOT carriage returns."
193- }
194- } catch {
195- Write-Host " Execution failed: $_ "
196- }
197-
198- # Restore Env Vars for standard test flow
199- $env: CURL_CA_BUNDLE = $RootsPath
200- $env: SSL_CERT_FILE = $RootsPath
201- $env: GRPC_DEFAULT_SSL_ROOTS_FILE_PATH = $RootsPath
202- } else {
203- Write-Host - ForegroundColor Green " [INFO] 'roots.pem' is already clean (No \r). Experiment skipped."
204- }
205- Write-Host " ------------------------------------------------"
206- # --- VERIFICATION EXPERIMENT END ---
20799
208- Invoke-REST - Quickstart $bazel_bin
209- Invoke-gRPC - Quickstart $bazel_bin
100+ Invoke-REST - Quickstart
101+ Invoke-gRPC - Quickstart
210102}
211103
212104# Shutdown the Bazel server to release any locks
0 commit comments