|
6 | 6 | # you may not use this file except in compliance with the License. |
7 | 7 | # You may obtain a copy of the License at |
8 | 8 | # |
9 | | -# https://www.apache.org/licenses/LICENSE-2.0 |
| 9 | +# https://www.apache.org/licenses/LICENSE-2.0 |
10 | 10 | # |
11 | 11 | # Unless required by applicable law or agreed to in writing, software |
12 | 12 | # distributed under the License is distributed on an "AS IS" BASIS, |
@@ -62,151 +62,43 @@ if ($LastExitCode) { |
62 | 62 | . ci/kokoro/windows/lib/integration.ps1 |
63 | 63 |
|
64 | 64 | function 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} |
81 | 71 | } |
82 | 72 | } |
83 | 73 |
|
84 | 74 | function 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} |
101 | 81 | } |
102 | 82 | } |
103 | 83 |
|
104 | 84 | if (Test-Integration-Enabled) { |
105 | 85 | Write-Host "`n$(Get-Date -Format o) Running minimal quickstart prorams" |
106 | 86 |
|
107 | | - # 1. Install the certificates |
| 87 | + # Install certificates and set up environment variables for BoringSSL |
108 | 88 | 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 |
112 | 91 | $RawRootsPath = Join-Path $env:KOKORO_GFILE_DIR "roots.pem" |
113 | 92 | $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 '\\', '/' |
117 | 94 |
|
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 |
121 | 95 | $env:GRPC_DEFAULT_SSL_ROOTS_FILE_PATH = $RootsPath |
122 | 96 | $env:CURL_CA_BUNDLE = $RootsPath |
123 | 97 | $env:SSL_CERT_FILE = $RootsPath |
124 | 98 | $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 "`nRunning 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 --- |
207 | 99 |
|
208 | | - Invoke-REST-Quickstart $bazel_bin |
209 | | - Invoke-gRPC-Quickstart $bazel_bin |
| 100 | + Invoke-REST-Quickstart |
| 101 | + Invoke-gRPC-Quickstart |
210 | 102 | } |
211 | 103 |
|
212 | 104 | # Shutdown the Bazel server to release any locks |
|
0 commit comments