Skip to content

Commit 8e9c5cb

Browse files
authored
Merge pull request #2589 from vinitsuri/releases/m106
CLT build tasks fixes on behalf of Vinit Suri.
2 parents 03599e7 + d4c9a7f commit 8e9c5cb

File tree

6 files changed

+40
-157
lines changed

6 files changed

+40
-157
lines changed

Tasks/QuickPerfTest/Invoke-QuickPerfTest.ps1

Lines changed: 21 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ param
2525

2626
$userAgent = "QuickPerfTestBuildTask"
2727

28+
$global:RestTimeout = 60
29+
2830
function InitializeRestHeaders()
2931
{
3032
$restHeaders = New-Object -TypeName "System.Collections.Generic.Dictionary[[String], [String]]"
@@ -72,7 +74,7 @@ function CreateTestDrop($headers, $dropJson)
7274
function GetTestDrop($headers, $drop)
7375
{
7476
$uri = [String]::Format("{0}/_apis/clt/testdrops/{1}?api-version=1.0", $CltAccountUrl, $drop.id)
75-
$testdrop = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers
77+
$testdrop = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -TimeoutSec $global:RestTimeout -Uri $uri -Headers $headers
7678

7779
return $testdrop
7880
}
@@ -89,11 +91,19 @@ function UploadTestDrop($testdrop)
8991
function GetTestRuns($headers)
9092
{
9193
$uri = [String]::Format("{0}/_apis/clt/testruns?api-version=1.0", $CltAccountUrl)
92-
$runs = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers
94+
$runs = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -TimeoutSec $global:RestTimeout -Uri $uri -Headers $headers
9395

9496
return $runs
9597
}
9698

99+
function GetTestRunUri($testRunId, $headers)
100+
{
101+
$uri = [String]::Format("{0}/_apis/clt/testruns/{1}?api-version=1.0", $CltAccountUrl,$testRunId)
102+
$run = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -TimeoutSec $global:RestTimeout -Uri $uri -Headers $headers
103+
104+
return $run.WebResultUrl
105+
}
106+
97107
function RunInProgress($run)
98108
{
99109
return $run.state -eq "queued" -or $run.state -eq "inProgress"
@@ -205,28 +215,10 @@ function UploadSummaryMdReport($summaryMdPath)
205215
{
206216
Write-Verbose "Summary Markdown Path = $summaryMdPath"
207217

208-
if (Test-Path($summaryMdPath))
218+
if (($env:SYSTEM_HOSTTYPE -eq "build") -and (Test-Path($summaryMdPath)))
209219
{
210220
Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=Load test results;]$summaryMdPath"
211221
}
212-
else
213-
{
214-
Write-Warning "Could not find the summary report file $summaryMdPath"
215-
}
216-
}
217-
218-
function GetLastSuccessfulBuild($headers)
219-
{
220-
$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)
221-
$previousBuild = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers
222-
return $previousBuild.Value
223-
}
224-
225-
function GetFilteredTestRuns($headers, $filter)
226-
{
227-
$uri = ("{0}/_apis/clt/testruns?api-version=1.0&detailed=false&{1}" -f $CltAccountUrl, $filter)
228-
$filteredTestRuns = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers
229-
return $filteredTestRuns
230222
}
231223

232224
############################################## PS Script execution starts here ##########################################
@@ -269,46 +261,22 @@ if ($drop.dropType -eq "InPlaceDrop")
269261

270262
$run = QueueTestRun $headers $runJson
271263
MonitorTestRun $headers $run
272-
264+
$webResultsUrl = GetTestRunUri $run.id $headers
265+
273266
Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name)
274-
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)
267+
Write-Output ("To view run details navigate to {0}" -f $webResultsUrl)
275268
Write-Output "To view detailed results navigate to Load Test | Load Test Manager in Visual Studio IDE, and open this run."
276269

277270
$resultsMDFolder = New-Item -ItemType Directory -Force -Path "$env:Temp\LoadTestResultSummary"
271+
278272
$resultFilePattern = ("QuickPerfTestResults_{0}_{1}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID)
279-
$excludeFilePattern = ("QuickPerfTestResults_{0}_{1}_{2}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID)
280-
Remove-Item $resultsMDFolder\$resultFilePattern -Exclude $excludeFilePattern -Force
281-
$summaryFile = ("{0}\QuickPerfTestResults_{1}_{2}_{3}_{4}.md" -f $resultsMDFolder, $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID, $run.id)
282273

283-
$summary = ('[Test Run: {0}]({2}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={3}) using {1}.<br/>' -f $run.runNumber, $run.name, $TFSAccountUrl, $run.id)
284-
285-
$runComparisonAvailable = $false
286-
$lastSuccessfulBuild = GetLastSuccessfulBuild $headers
274+
$excludeFilePattern = ("QuickPerfTestResults_{0}_{1}_{2}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID)
275+
Remove-Item $resultsMDFolder\$resultFilePattern -Exclude $excludeFilePattern -Force
276+
$summaryFile = ("{0}\QuickPerfTestResults_{1}_{2}_{3}_{4}.md" -f $resultsMDFolder, $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID, $run.id)
287277

288-
if ($lastSuccessfulBuild)
289-
{
290-
$runSourceIdentifierFilter=('runsourceidentifier=build/{0}/{1}' -f $env:SYSTEM_DEFINITIONID, $lastSuccessfulBuild.id)
291-
$runsInLastBuild = GetFilteredTestRuns $headers $runSourceIdentifierFilter
292-
293-
if ($runsInLastBuild)
294-
{
295-
foreach ($previousRun in $runsInLastBuild)
296-
{
297-
if ($previousRun.name -eq $run.name)
298-
{
299-
$runComparisonAvailable = $true
300-
$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)
301-
break
302-
}
303-
}
304-
}
305-
}
278+
$summary = ('[Test Run: {0}]({1}) using {2}.<br/>' -f $run.runNumber, $webResultsUrl ,$run.name)
306279

307-
if(!$runComparisonAvailable)
308-
{
309-
$summary += ('No previous run found for comparison.')
310-
}
311-
312280
('<p>{0}</p>' -f $summary) >> $summaryFile
313281
UploadSummaryMdReport $summaryFile
314282
}

Tasks/QuickPerfTest/task.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"version": {
1414
"Major": 1,
1515
"Minor": 0,
16-
"Patch": 8
16+
"Patch": 9
1717
},
1818
"demands": [
1919
"msbuild",

Tasks/RunJMeterLoadTest/Start-ApacheJMeterTest.ps1

Lines changed: 7 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ param
2525
$userAgent = "ApacheJmeterTestBuildTask"
2626
$apiVersion = "api-version=1.0"
2727

28-
$global:RestTimeout = 5
28+
$global:RestTimeout = 60
2929
$global:ElsAccountUrl = "http://www.visualstudio.com"
3030
$global:TFSAccountUrl = "http://www.visualstudio.com"
3131
$global:ScopedTestDrop = $TestDrop
@@ -270,31 +270,12 @@ function UploadSummaryMdReport($summaryMdPath)
270270
{
271271
Write-Verbose "Summary Markdown Path = $summaryMdPath"
272272

273-
if (Test-Path($summaryMdPath))
273+
if (($env:SYSTEM_HOSTTYPE -eq "build") -and (Test-Path($summaryMdPath)))
274274
{
275275
Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=Load test results;]$summaryMdPath"
276276
}
277-
else
278-
{
279-
Write-Warning "Could not find the summary report file $summaryMdPath"
280-
}
281-
}
282-
283-
function GetLastSuccessfulBuild($headers)
284-
{
285-
$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)
286-
$previousBuild = Get $headers $uri
287-
return $previousBuild.Value
288277
}
289278

290-
function GetFilteredTestRuns($headers, $filter)
291-
{
292-
$uri = ("{0}/_apis/clt/testruns?{1}&detailed=false&runType=JMeterLoadTest&{2}" -f $global:ElsAccountUrl, $apiVersion, $filter)
293-
$filteredTestRuns = Get $headers $uri
294-
return $filteredTestRuns
295-
}
296-
297-
298279
############################################## PS Script execution starts here ##########################################
299280
WriteTaskMessages "Starting Load Test Script"
300281

@@ -357,44 +338,19 @@ if ($drop.dropType -eq "TestServiceBlobDrop")
357338
WriteTaskMessages "The load test completed successfully."
358339
}
359340

341+
$run = GetTestRun $headers $run.id
342+
$webResultsUrl = $run.WebResultUrl
360343
Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name)
361-
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)
344+
Write-Output ("To view run details navigate to {0}" -f $webResultsUrl)
362345

363346
$resultsMDFolder = New-Item -ItemType Directory -Force -Path "$env:Temp\LoadTestResultSummary"
364347
$resultFilePattern = ("ApacheJMeterTestResults_{0}_{1}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID)
365348
$excludeFilePattern = ("ApacheJMeterTestResults_{0}_{1}_{2}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID)
366349
Remove-Item $resultsMDFolder\$resultFilePattern -Exclude $excludeFilePattern -Force
367350
$summaryFile = ("{0}\ApacheJMeterTestResults_{1}_{2}_{3}_{4}.md" -f $resultsMDFolder, $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID, $run.id)
368351

369-
$summary = ('[Test Run: {0}]({2}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={3}) using {1}.<br/>' -f $run.runNumber, $run.name, $global:TFSAccountUrl, $run.id)
370-
371-
$runComparisonAvailable = $false
372-
$lastSuccessfulBuild = GetLastSuccessfulBuild $headers
373-
374-
if ($lastSuccessfulBuild)
375-
{
376-
$runSourceIdentifierFilter=('runsourceidentifier=build/{0}/{1}' -f $env:SYSTEM_DEFINITIONID, $lastSuccessfulBuild.id)
377-
$runsInLastBuild = GetFilteredTestRuns $headers $runSourceIdentifierFilter
378-
379-
if ($runsInLastBuild)
380-
{
381-
foreach ($previousRun in $runsInLastBuild)
382-
{
383-
if ($previousRun.name -eq $run.name)
384-
{
385-
$runComparisonAvailable = $true
386-
$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)
387-
break
388-
}
389-
}
390-
}
391-
}
392-
393-
if(!$runComparisonAvailable)
394-
{
395-
$summary += ('No previous run found for comparison.')
396-
}
397-
352+
$summary = ('[Test Run: {0}]({1}) using {2}.<br/>' -f $run.runNumber, $webResultsUrl , $run.name)
353+
398354
('<p>{0}</p>' -f $summary) >> $summaryFile
399355
UploadSummaryMdReport $summaryFile
400356
}

Tasks/RunJMeterLoadTest/task.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"version": {
1414
"Major": 1,
1515
"Minor": 0,
16-
"Patch": 4
16+
"Patch": 5
1717
},
1818
"demands": [
1919
"azureps"

Tasks/RunLoadTest/Start-CloudLoadTest.ps1

Lines changed: 9 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ $userAgent = "CloudLoadTestBuildTask"
2525
$apiVersion = "api-version=1.0"
2626

2727
$global:ThresholdExceeded = $false
28-
$global:RestTimeout = 5
28+
$global:RestTimeout = 60
2929
$global:MonitorThresholds = $false
3030
$global:ElsAccountUrl = "http://www.visualstudio.com"
3131
$global:TFSAccountUrl = "http://www.visualstudio.com"
@@ -343,28 +343,10 @@ function UploadSummaryMdReport($summaryMdPath)
343343
{
344344
Write-Verbose "Summary Markdown Path = $summaryMdPath"
345345

346-
if (Test-Path($summaryMdPath))
346+
if (($env:SYSTEM_HOSTTYPE -eq "build") -and (Test-Path($summaryMdPath)))
347347
{
348348
Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=Load test results;]$summaryMdPath"
349349
}
350-
else
351-
{
352-
Write-Warning "Could not find the summary report file $summaryMdPath"
353-
}
354-
}
355-
356-
function GetLastSuccessfulBuild($headers)
357-
{
358-
$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)
359-
$previousBuild = Get $headers $uri
360-
return $previousBuild.Value
361-
}
362-
363-
function GetFilteredTestRuns($headers, $filter)
364-
{
365-
$uri = ("{0}/_apis/clt/testruns?{1}&detailed=false&{2}" -f $global:ElsAccountUrl, $apiVersion, $filter)
366-
$filteredTestRuns = Get $headers $uri
367-
return $filteredTestRuns
368350
}
369351

370352
############################################## PS Script execution starts here ##########################################
@@ -441,8 +423,11 @@ if ($drop.dropType -eq "TestServiceBlobDrop")
441423
WriteTaskMessages "The load test completed successfully."
442424
}
443425

444-
Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name)
445-
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)
426+
$run = GetTestRun $headers $run.id
427+
$webResultsUri = $run.WebResultUrl
428+
429+
Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name)
430+
Write-Output ("To view run details navigate to {0}" -f $webResultsUri)
446431
Write-Output "To view detailed results navigate to Load Test | Load Test Manager in Visual Studio IDE, and open this run."
447432

448433
$resultsMDFolder = New-Item -ItemType Directory -Force -Path "$env:Temp\LoadTestResultSummary"
@@ -472,35 +457,9 @@ if ($drop.dropType -eq "TestServiceBlobDrop")
472457
$thresholdImage="bowtie-status-success"
473458
}
474459

475-
$summary = ('<span class="bowtie-icon {4}" /> {5}<br/>[Test Run: {0}]({2}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={3}) using {1}.<br/>' -f $run.runNumber, $run.name, $global:TFSAccountUrl, $run.id, $thresholdImage, $thresholdMessage)
476-
477-
$runComparisonAvailable = $false
478-
$lastSuccessfulBuild = GetLastSuccessfulBuild $headers
479-
480-
if ($lastSuccessfulBuild)
481-
{
482-
$runSourceIdentifierFilter=('runsourceidentifier=build/{0}/{1}' -f $env:SYSTEM_DEFINITIONID, $lastSuccessfulBuild.id)
483-
$runsInLastBuild = GetFilteredTestRuns $headers $runSourceIdentifierFilter
484-
485-
if ($runsInLastBuild)
486-
{
487-
foreach ($previousRun in $runsInLastBuild)
488-
{
489-
if ($previousRun.name -eq $run.name)
490-
{
491-
$runComparisonAvailable = $true
492-
$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)
493-
break
494-
}
495-
}
496-
}
497-
}
498-
499-
if(!$runComparisonAvailable)
500-
{
501-
$summary += ('No previous run found for comparison.')
502-
}
503460

461+
$summary = ('<span class="bowtie-icon {3}" /> {4}<br/>[Test Run: {0}]({1}) using {2}.<br/>' -f $run.runNumber, $webResultsUri , $run.name, $thresholdImage, $thresholdMessage)
462+
504463
('<p>{0}</p>' -f $summary) >> $summaryFile
505464
UploadSummaryMdReport $summaryFile
506465
}

Tasks/RunLoadTest/task.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"version": {
1414
"Major": 1,
1515
"Minor": 0,
16-
"Patch": 9
16+
"Patch": 10
1717
},
1818
"demands": [
1919
"msbuild",

0 commit comments

Comments
 (0)