Run promtool windows_exporter on non-default port

Prevents conflicts when promtool & test jobs are run concurrently in
CI.

Signed-off-by: Ben Reedy <breed808@breed808.com>
This commit is contained in:
Ben Reedy 2022-02-26 18:40:05 +10:00
parent 5a9711dc90
commit 6941ee7ab2
No known key found for this signature in database
GPG Key ID: 235C15B6086C9D7E
2 changed files with 9 additions and 8 deletions

View File

@ -24,19 +24,19 @@ $skip_re = "^(go_|windows_exporter_build_info|windows_exporter_collector_duratio
# Use default collectors, port and address: http://localhost:9182/metrics # Use default collectors, port and address: http://localhost:9182/metrics
$exporter_proc = Start-Process ` $exporter_proc = Start-Process `
-PassThru ` -PassThru `
-FilePath .\windows_exporter.exe ` -FilePath ..\windows_exporter.exe `
-ArgumentList "--log.level=debug --collector.textfile.directory=$($textfile_dir)" ` -ArgumentList "--log.level=debug --collector.textfile.directory=$($textfile_dir)" `
-WindowStyle Hidden ` -WindowStyle Hidden `
-RedirectStandardOutput "$($temp_dir)/windows_exporter.log" ` -RedirectStandardOutput "$($temp_dir)/windows_exporter.log" `
-RedirectStandardError "$($temp_dir)/windows_exporter_error.log" -RedirectStandardError "$($temp_dir)/windows_exporter_error.log"
# Give exporter some time to start # Give exporter some time to start
Start-Sleep 3 Start-Sleep 15
$response = Invoke-WebRequest -UseBasicParsing -URI http://127.0.0.1:9182/metrics $response = Invoke-WebRequest -UseBasicParsing -URI http://127.0.0.1:9182/metrics
# Response output must be split and saved as UTF-8. # Response output must be split and saved as UTF-8.
$response.content -split "[`r`n]"| Select-String -NotMatch $skip_re | Set-Content -Encoding utf8 "$($temp_dir)/e2e-output.txt" $response.content -split "[`r`n]"| Select-String -NotMatch $skip_re | Set-Content -Encoding utf8 "$($temp_dir)/e2e-output.txt"
Stop-Process $exporter_proc Stop-Process -Id $exporter_proc.Id
$output_diff = Compare-Object (Get-Content 'e2e-output.txt') (Get-Content "$($temp_dir)/e2e-output.txt") $output_diff = Compare-Object (Get-Content 'e2e-output.txt') (Get-Content "$($temp_dir)/e2e-output.txt")
# Fail if differences in output are detected # Fail if differences in output are detected

View File

@ -88,23 +88,24 @@ Push-Location $working_dir
$temp_dir = Join-Path $env:TEMP $(New-Guid) | ForEach-Object { mkdir $_ } $temp_dir = Join-Path $env:TEMP $(New-Guid) | ForEach-Object { mkdir $_ }
# Start process in background, awaiting HTTP requests. # Start process in background, awaiting HTTP requests.
# Use default collectors, port and address: http://localhost:9182/metrics # Listen on 9183/TCP, preventing conflicts with 9182/TCP used by end-to-end-test.ps1
# Not an issue when run individually, but will cause failures when run concurrently in CI.
$exporter_proc = Start-Process ` $exporter_proc = Start-Process `
-PassThru ` -PassThru `
-FilePath .\windows_exporter.exe ` -FilePath ..\windows_exporter.exe `
-ArgumentList "--log.level=debug" ` -ArgumentList '--telemetry.addr="127.0.0.1:9183" --log.level=debug' `
-WindowStyle Hidden ` -WindowStyle Hidden `
-RedirectStandardOutput "$($temp_dir)/windows_exporter.log" ` -RedirectStandardOutput "$($temp_dir)/windows_exporter.log" `
-RedirectStandardError "$($temp_dir)/windows_exporter_error.log" -RedirectStandardError "$($temp_dir)/windows_exporter_error.log"
# Give exporter some time to start # Give exporter some time to start
Start-Sleep 3 Start-Sleep 15
# Omit metrics from client_golang library; we're not responsible for these # Omit metrics from client_golang library; we're not responsible for these
$skip_re = "^[#]?\s*(HELP|TYPE)?\s*go_" $skip_re = "^[#]?\s*(HELP|TYPE)?\s*go_"
# Need to remove carriage returns, as promtool expects LF line endings # Need to remove carriage returns, as promtool expects LF line endings
$output = ((Invoke-WebRequest -UseBasicParsing -URI http://127.0.0.1:9182/metrics).Content) -Split "`r?`n" | Select-String -NotMatch $skip_re | Join-String -Separator "`n" $output = ((Invoke-WebRequest -UseBasicParsing -URI http://127.0.0.1:9183/metrics).Content) -Split "`r?`n" | Select-String -NotMatch $skip_re | Join-String -Separator "`n"
# Join the split lines back to a single String (with LF line endings!) # Join the split lines back to a single String (with LF line endings!)
$output = $output -Join "`n" $output = $output -Join "`n"
Stop-Process -Id $exporter_proc.Id Stop-Process -Id $exporter_proc.Id