Просмотр исходного кода

Automatically capture crashdumps for C++ client tests (#7940)

BrennanConroy 7 лет назад
Родитель
Сommit
a936d77845

+ 6 - 0
.azure/pipelines/ci.yml

@@ -297,6 +297,12 @@ jobs:
     beforeBuild:
     - powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1"
       displayName: Setup IISExpress test certificates and schema
+    - powershell: "& ./.azure/pipelines/tools/SetupTestEnvironment.ps1 Setup signalrclienttests.exe"
+      displayName: Start AppVerifier
+    afterBuild:
+    - powershell: "& ./.azure/pipelines/tools/SetupTestEnvironment.ps1 Shutdown signalrclienttests.exe"
+      displayName: Stop AppVerifier
+      condition: always()
     artifacts:
     - name: Windows_Test_Logs
       path: artifacts/logs/

+ 7 - 0
.azure/pipelines/signalr-daily-tests.yml

@@ -14,4 +14,11 @@ jobs:
     agentOs: Windows
     jobName: SignalRDailyTests
     jobDisplayName: "SignalR Daily Tests"
+    beforeBuild:
+    - powershell: "& ./.azure/pipelines/tools/SetupTestEnvironment.ps1 Setup signalrclienttests.exe"
+      displayName: Start AppVerifier
+    afterBuild:
+    - powershell: "& ./.azure/pipelines/tools/SetupTestEnvironment.ps1 Shutdown signalrclienttests.exe"
+      displayName: Stop AppVerifier
+      condition: always()
 

+ 15 - 23
src/Servers/IIS/tools/SetupTestEnvironment.ps1 → .azure/pipelines/tools/SetupTestEnvironment.ps1

@@ -1,14 +1,11 @@
-param($Mode)
-
-# TEMP TEMP TEMP
-# While doing https://github.com/aspnet/AspNetCore/pull/5705 I accidentally disabled ANCM on CI machines using
-# the registy key. Remove it to allow tests to pass
-
-Remove-Item "HKLM:\SOFTWARE\Microsoft\IIS Extensions\IIS AspNetCore Module V2\Parameters" -ErrorAction Ignore;
+param(
+    [string]$Mode,
+    [string[]]$exes
+)
 
 if (!($DumpFolder))
 {
-    $DumpFolder = "$PSScriptRoot\..\..\..\..\artifacts\logs\dumps"
+    $DumpFolder = "$PSScriptRoot\..\..\..\artifacts\logs\dumps"
 }
 if (!(Test-Path $DumpFolder))
 {
@@ -16,17 +13,9 @@ if (!(Test-Path $DumpFolder))
 }
 $DumpFolder = Resolve-Path $DumpFolder
 
-$LogsFolder = "$PSScriptRoot\..\artifacts\logs"
-if (!(Test-Path $LogsFolder))
-{
-    New-Item $LogsFolder -ItemType Directory;
-}
-$LogsFolder = Resolve-Path $LogsFolder
-
 $werHive = "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting";
 $ldHive = "$werHive\LocalDumps";
 
-
 function Setup-appverif($application)
 {
     appverif.exe -enable Exceptions Handles Heaps Leak Locks Memory Threadpool TLS SRWLock -for $application
@@ -70,7 +59,7 @@ function Shutdown-appverif($application)
 
 function Setup-Dumps()
 {
-    if (!(Test-Path $ldHive ))
+    if (!(Test-Path $ldHive))
     {
         New-Item -Path $werHive -Name LocalDumps
     }
@@ -116,24 +105,27 @@ function Shutdown-Dumps()
 
 if ($Mode -eq "Setup")
 {
-    Setup-appverif w3wp.exe
-    Setup-appverif iisexpress.exe
+    foreach ($element in $exes) {
+        Setup-appverif $element
+    }
 
     Setup-Dumps;
 }
 
 if ($Mode -eq "SetupDumps")
 {
-    Shutdown-appverif w3wp.exe
-    Shutdown-appverif iisexpress.exe
+    foreach ($element in $exes) {
+        Shutdown-appverif $element
+    }
 
     Setup-Dumps;
 }
 
 if ($Mode -eq "Shutdown")
 {
-    Shutdown-appverif w3wp.exe
-    Shutdown-appverif iisexpress.exe
+    foreach ($element in $exes) {
+        Shutdown-appverif $element
+    }
 
     Shutdown-Dumps;
 }