diff --git a/Tasks/QuickPerfTest/Invoke-QuickPerfTest.ps1 b/Tasks/QuickPerfTest/Invoke-QuickPerfTest.ps1
index 4034df3b6d31..7d19fae7d684 100644
--- a/Tasks/QuickPerfTest/Invoke-QuickPerfTest.ps1
+++ b/Tasks/QuickPerfTest/Invoke-QuickPerfTest.ps1
@@ -25,6 +25,8 @@ param
$userAgent = "QuickPerfTestBuildTask"
+$global:RestTimeout = 60
+
function InitializeRestHeaders()
{
$restHeaders = New-Object -TypeName "System.Collections.Generic.Dictionary[[String], [String]]"
@@ -72,7 +74,7 @@ function CreateTestDrop($headers, $dropJson)
function GetTestDrop($headers, $drop)
{
$uri = [String]::Format("{0}/_apis/clt/testdrops/{1}?api-version=1.0", $CltAccountUrl, $drop.id)
- $testdrop = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers
+ $testdrop = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -TimeoutSec $global:RestTimeout -Uri $uri -Headers $headers
return $testdrop
}
@@ -89,11 +91,19 @@ function UploadTestDrop($testdrop)
function GetTestRuns($headers)
{
$uri = [String]::Format("{0}/_apis/clt/testruns?api-version=1.0", $CltAccountUrl)
- $runs = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers
+ $runs = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -TimeoutSec $global:RestTimeout -Uri $uri -Headers $headers
return $runs
}
+function GetTestRunUri($testRunId, $headers)
+{
+ $uri = [String]::Format("{0}/_apis/clt/testruns/{1}?api-version=1.0", $CltAccountUrl,$testRunId)
+ $run = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -TimeoutSec $global:RestTimeout -Uri $uri -Headers $headers
+
+ return $run.WebResultUrl
+}
+
function RunInProgress($run)
{
return $run.state -eq "queued" -or $run.state -eq "inProgress"
@@ -205,28 +215,10 @@ function UploadSummaryMdReport($summaryMdPath)
{
Write-Verbose "Summary Markdown Path = $summaryMdPath"
- if (Test-Path($summaryMdPath))
+ if (($env:SYSTEM_HOSTTYPE -eq "build") -and (Test-Path($summaryMdPath)))
{
Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=Load test results;]$summaryMdPath"
}
- else
- {
- Write-Warning "Could not find the summary report file $summaryMdPath"
- }
-}
-
-function GetLastSuccessfulBuild($headers)
-{
- $uri = ("{0}/{1}/_apis/build/builds?api-version={2}&definitions={3}&statusFilter=completed&resultFilter=succeeded&`$top=1" -f $TFSAccountUrl, $env:System_TeamProjectId, '2.0', $env:SYSTEM_DEFINITIONID)
- $previousBuild = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers
- return $previousBuild.Value
-}
-
-function GetFilteredTestRuns($headers, $filter)
-{
- $uri = ("{0}/_apis/clt/testruns?api-version=1.0&detailed=false&{1}" -f $CltAccountUrl, $filter)
- $filteredTestRuns = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers
- return $filteredTestRuns
}
############################################## PS Script execution starts here ##########################################
@@ -269,46 +261,22 @@ if ($drop.dropType -eq "InPlaceDrop")
$run = QueueTestRun $headers $runJson
MonitorTestRun $headers $run
-
+ $webResultsUrl = GetTestRunUri $run.id $headers
+
Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name)
- Write-Output ("To view run details navigate to {0}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={1}" -f $TFSAccountUrl, $run.id)
+ Write-Output ("To view run details navigate to {0}" -f $webResultsUrl)
Write-Output "To view detailed results navigate to Load Test | Load Test Manager in Visual Studio IDE, and open this run."
$resultsMDFolder = New-Item -ItemType Directory -Force -Path "$env:Temp\LoadTestResultSummary"
+
$resultFilePattern = ("QuickPerfTestResults_{0}_{1}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID)
- $excludeFilePattern = ("QuickPerfTestResults_{0}_{1}_{2}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID)
- Remove-Item $resultsMDFolder\$resultFilePattern -Exclude $excludeFilePattern -Force
- $summaryFile = ("{0}\QuickPerfTestResults_{1}_{2}_{3}_{4}.md" -f $resultsMDFolder, $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID, $run.id)
- $summary = ('[Test Run: {0}]({2}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={3}) using {1}.
' -f $run.runNumber, $run.name, $TFSAccountUrl, $run.id)
-
- $runComparisonAvailable = $false
- $lastSuccessfulBuild = GetLastSuccessfulBuild $headers
+ $excludeFilePattern = ("QuickPerfTestResults_{0}_{1}_{2}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID)
+ Remove-Item $resultsMDFolder\$resultFilePattern -Exclude $excludeFilePattern -Force
+ $summaryFile = ("{0}\QuickPerfTestResults_{1}_{2}_{3}_{4}.md" -f $resultsMDFolder, $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID, $run.id)
- if ($lastSuccessfulBuild)
- {
- $runSourceIdentifierFilter=('runsourceidentifier=build/{0}/{1}' -f $env:SYSTEM_DEFINITIONID, $lastSuccessfulBuild.id)
- $runsInLastBuild = GetFilteredTestRuns $headers $runSourceIdentifierFilter
-
- if ($runsInLastBuild)
- {
- foreach ($previousRun in $runsInLastBuild)
- {
- if ($previousRun.name -eq $run.name)
- {
- $runComparisonAvailable = $true
- $summary += ('[Compare with run {0}]({1}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=compare&runId1={2}&runId2={3}) from [build {4}]({1}/{5}/_build#buildId={4}&_a=summary).' -f $previousRun.runNumber, $global:TFSAccountUrl, $previousRun.id, $run.id, $lastSuccessfulBuild.id, $env:System_TeamProjectId, $env:BUILD_BUILDID)
- break
- }
- }
- }
- }
+ $summary = ('[Test Run: {0}]({1}) using {2}.
' -f $run.runNumber, $webResultsUrl ,$run.name)
- if(!$runComparisonAvailable)
- {
- $summary += ('No previous run found for comparison.')
- }
-
('
{0}
' -f $summary) >> $summaryFile UploadSummaryMdReport $summaryFile } diff --git a/Tasks/QuickPerfTest/task.json b/Tasks/QuickPerfTest/task.json index f338912a3b48..fb16e0a7f663 100644 --- a/Tasks/QuickPerfTest/task.json +++ b/Tasks/QuickPerfTest/task.json @@ -13,7 +13,7 @@ "version": { "Major": 1, "Minor": 0, - "Patch": 8 + "Patch": 9 }, "demands": [ "msbuild", diff --git a/Tasks/RunJMeterLoadTest/Start-ApacheJMeterTest.ps1 b/Tasks/RunJMeterLoadTest/Start-ApacheJMeterTest.ps1 index c0dbbdce6fc1..762fdf3fab63 100644 --- a/Tasks/RunJMeterLoadTest/Start-ApacheJMeterTest.ps1 +++ b/Tasks/RunJMeterLoadTest/Start-ApacheJMeterTest.ps1 @@ -25,7 +25,7 @@ param $userAgent = "ApacheJmeterTestBuildTask" $apiVersion = "api-version=1.0" -$global:RestTimeout = 5 +$global:RestTimeout = 60 $global:ElsAccountUrl = "http://www.visualstudio.com" $global:TFSAccountUrl = "http://www.visualstudio.com" $global:ScopedTestDrop = $TestDrop @@ -270,31 +270,12 @@ function UploadSummaryMdReport($summaryMdPath) { Write-Verbose "Summary Markdown Path = $summaryMdPath" - if (Test-Path($summaryMdPath)) + if (($env:SYSTEM_HOSTTYPE -eq "build") -and (Test-Path($summaryMdPath))) { Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=Load test results;]$summaryMdPath" } - else - { - Write-Warning "Could not find the summary report file $summaryMdPath" - } -} - -function GetLastSuccessfulBuild($headers) -{ - $uri = ("{0}/{1}/_apis/build/builds?api-version={2}&definitions={3}&statusFilter=completed&resultFilter=succeeded&`$top=1" -f $global:TFSAccountUrl, $env:System_TeamProjectId, '2.0', $env:SYSTEM_DEFINITIONID) - $previousBuild = Get $headers $uri - return $previousBuild.Value } -function GetFilteredTestRuns($headers, $filter) -{ - $uri = ("{0}/_apis/clt/testruns?{1}&detailed=false&runType=JMeterLoadTest&{2}" -f $global:ElsAccountUrl, $apiVersion, $filter) - $filteredTestRuns = Get $headers $uri - return $filteredTestRuns -} - - ############################################## PS Script execution starts here ########################################## WriteTaskMessages "Starting Load Test Script" @@ -357,8 +338,10 @@ if ($drop.dropType -eq "TestServiceBlobDrop") WriteTaskMessages "The load test completed successfully." } + $run = GetTestRun $headers $run.id + $webResultsUrl = $run.WebResultUrl Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name) - Write-Output ("To view run details navigate to {0}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={1}" -f $global:TFSAccountUrl, $run.id) + Write-Output ("To view run details navigate to {0}" -f $webResultsUrl) $resultsMDFolder = New-Item -ItemType Directory -Force -Path "$env:Temp\LoadTestResultSummary" $resultFilePattern = ("ApacheJMeterTestResults_{0}_{1}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID) @@ -366,35 +349,8 @@ if ($drop.dropType -eq "TestServiceBlobDrop") Remove-Item $resultsMDFolder\$resultFilePattern -Exclude $excludeFilePattern -Force $summaryFile = ("{0}\ApacheJMeterTestResults_{1}_{2}_{3}_{4}.md" -f $resultsMDFolder, $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID, $run.id) - $summary = ('[Test Run: {0}]({2}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={3}) using {1}.{0}
' -f $summary) >> $summaryFile UploadSummaryMdReport $summaryFile } diff --git a/Tasks/RunJMeterLoadTest/task.json b/Tasks/RunJMeterLoadTest/task.json index 0e2509522d08..474ddb833b94 100644 --- a/Tasks/RunJMeterLoadTest/task.json +++ b/Tasks/RunJMeterLoadTest/task.json @@ -13,7 +13,7 @@ "version": { "Major": 1, "Minor": 0, - "Patch": 4 + "Patch": 5 }, "demands": [ "azureps" diff --git a/Tasks/RunLoadTest/Start-CloudLoadTest.ps1 b/Tasks/RunLoadTest/Start-CloudLoadTest.ps1 index 6b1f533878fd..8a796dab1eb5 100644 --- a/Tasks/RunLoadTest/Start-CloudLoadTest.ps1 +++ b/Tasks/RunLoadTest/Start-CloudLoadTest.ps1 @@ -25,7 +25,7 @@ $userAgent = "CloudLoadTestBuildTask" $apiVersion = "api-version=1.0" $global:ThresholdExceeded = $false -$global:RestTimeout = 5 +$global:RestTimeout = 60 $global:MonitorThresholds = $false $global:ElsAccountUrl = "http://www.visualstudio.com" $global:TFSAccountUrl = "http://www.visualstudio.com" @@ -343,28 +343,10 @@ function UploadSummaryMdReport($summaryMdPath) { Write-Verbose "Summary Markdown Path = $summaryMdPath" - if (Test-Path($summaryMdPath)) + if (($env:SYSTEM_HOSTTYPE -eq "build") -and (Test-Path($summaryMdPath))) { Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=Load test results;]$summaryMdPath" } - else - { - Write-Warning "Could not find the summary report file $summaryMdPath" - } -} - -function GetLastSuccessfulBuild($headers) -{ - $uri = ("{0}/{1}/_apis/build/builds?api-version={2}&definitions={3}&statusFilter=completed&resultFilter=succeeded&`$top=1" -f $global:TFSAccountUrl, $env:System_TeamProjectId, '2.0', $env:SYSTEM_DEFINITIONID) - $previousBuild = Get $headers $uri - return $previousBuild.Value -} - -function GetFilteredTestRuns($headers, $filter) -{ - $uri = ("{0}/_apis/clt/testruns?{1}&detailed=false&{2}" -f $global:ElsAccountUrl, $apiVersion, $filter) - $filteredTestRuns = Get $headers $uri - return $filteredTestRuns } ############################################## PS Script execution starts here ########################################## @@ -441,8 +423,11 @@ if ($drop.dropType -eq "TestServiceBlobDrop") WriteTaskMessages "The load test completed successfully." } - Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name) - Write-Output ("To view run details navigate to {0}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={1}" -f $global:TFSAccountUrl, $run.id) + $run = GetTestRun $headers $run.id + $webResultsUri = $run.WebResultUrl + + Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name) + Write-Output ("To view run details navigate to {0}" -f $webResultsUri) Write-Output "To view detailed results navigate to Load Test | Load Test Manager in Visual Studio IDE, and open this run." $resultsMDFolder = New-Item -ItemType Directory -Force -Path "$env:Temp\LoadTestResultSummary" @@ -472,35 +457,9 @@ if ($drop.dropType -eq "TestServiceBlobDrop") $thresholdImage="bowtie-status-success" } - $summary = (' {5}{0}
' -f $summary) >> $summaryFile UploadSummaryMdReport $summaryFile } diff --git a/Tasks/RunLoadTest/task.json b/Tasks/RunLoadTest/task.json index 54e82b5ac647..16d5ec385372 100644 --- a/Tasks/RunLoadTest/task.json +++ b/Tasks/RunLoadTest/task.json @@ -13,7 +13,7 @@ "version": { "Major": 1, "Minor": 0, - "Patch": 9 + "Patch": 10 }, "demands": [ "msbuild",