diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-03-18 20:16:07 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-03-19 12:07:32 -0500 |
commit | fbc1a73743368211d5d8c7fc0625adf6eb9ca50c (patch) | |
tree | c314d72b4b25afab7a27be664a1bffa5bdd80b3a /src/test | |
parent | fb54576f1d05e82ba47cd718c4c4f8b3bad624c9 (diff) | |
download | wix-fbc1a73743368211d5d8c7fc0625adf6eb9ca50c.tar.gz wix-fbc1a73743368211d5d8c7fc0625adf6eb9ca50c.tar.bz2 wix-fbc1a73743368211d5d8c7fc0625adf6eb9ca50c.zip |
Add checkpoint so Exe and Msu packages rollback after being cancelled.
Fixes 5950
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/burn/TestBA/TestBA.cs | 25 | ||||
-rw-r--r-- | src/test/burn/WixToolsetTest.BurnE2E/FailureTests.cs | 14 |
2 files changed, 28 insertions, 11 deletions
diff --git a/src/test/burn/TestBA/TestBA.cs b/src/test/burn/TestBA/TestBA.cs index c219ce9c..fdbcc6d4 100644 --- a/src/test/burn/TestBA/TestBA.cs +++ b/src/test/burn/TestBA/TestBA.cs | |||
@@ -4,6 +4,7 @@ namespace WixToolset.Test.BA | |||
4 | { | 4 | { |
5 | using System; | 5 | using System; |
6 | using System.Collections.Generic; | 6 | using System.Collections.Generic; |
7 | using System.Diagnostics; | ||
7 | using System.IO; | 8 | using System.IO; |
8 | using System.Linq; | 9 | using System.Linq; |
9 | using System.Threading; | 10 | using System.Threading; |
@@ -37,6 +38,7 @@ namespace WixToolset.Test.BA | |||
37 | private string cancelExecuteActionName; | 38 | private string cancelExecuteActionName; |
38 | private int cancelOnProgressAtProgress; | 39 | private int cancelOnProgressAtProgress; |
39 | private int retryExecuteFilesInUse; | 40 | private int retryExecuteFilesInUse; |
41 | private bool rollingBack; | ||
40 | 42 | ||
41 | private IBootstrapperCommand Command { get; } | 43 | private IBootstrapperCommand Command { get; } |
42 | 44 | ||
@@ -350,6 +352,8 @@ namespace WixToolset.Test.BA | |||
350 | { | 352 | { |
351 | this.Log("OnExecutePackageBegin() - package: {0}, rollback: {1}", args.PackageId, !args.ShouldExecute); | 353 | this.Log("OnExecutePackageBegin() - package: {0}, rollback: {1}", args.PackageId, !args.ShouldExecute); |
352 | 354 | ||
355 | this.rollingBack = !args.ShouldExecute; | ||
356 | |||
353 | string slowProgress = this.ReadPackageAction(args.PackageId, "SlowExecute"); | 357 | string slowProgress = this.ReadPackageAction(args.PackageId, "SlowExecute"); |
354 | if (String.IsNullOrEmpty(slowProgress) || !Int32.TryParse(slowProgress, out this.sleepDuringExecute)) | 358 | if (String.IsNullOrEmpty(slowProgress) || !Int32.TryParse(slowProgress, out this.sleepDuringExecute)) |
355 | { | 359 | { |
@@ -404,7 +408,7 @@ namespace WixToolset.Test.BA | |||
404 | if (!String.IsNullOrEmpty(recordTestRegistryValue) && Boolean.TryParse(recordTestRegistryValue, out logTestRegistryValue) && logTestRegistryValue) | 408 | if (!String.IsNullOrEmpty(recordTestRegistryValue) && Boolean.TryParse(recordTestRegistryValue, out logTestRegistryValue) && logTestRegistryValue) |
405 | { | 409 | { |
406 | var value = this.ReadTestRegistryValue(args.PackageId); | 410 | var value = this.ReadTestRegistryValue(args.PackageId); |
407 | this.Log("TestRegistryValue: {0}, Version, '{1}'", args.PackageId, value); | 411 | this.Log("TestRegistryValue: {0}, {1}, Version, '{2}'", this.rollingBack ? "Rollback" : "Execute", args.PackageId, value); |
408 | } | 412 | } |
409 | } | 413 | } |
410 | 414 | ||
@@ -419,8 +423,22 @@ namespace WixToolset.Test.BA | |||
419 | 423 | ||
420 | if (args.Action == BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION.Abandon) | 424 | if (args.Action == BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION.Abandon) |
421 | { | 425 | { |
422 | // Give time to the process to start before its files are deleted. | 426 | // Kill process to make sure it doesn't affect other tests. |
423 | Thread.Sleep(2000); | 427 | try |
428 | { | ||
429 | using (Process process = Process.GetProcessById(args.ProcessId)) | ||
430 | { | ||
431 | if (process != null) | ||
432 | { | ||
433 | process.Kill(); | ||
434 | } | ||
435 | } | ||
436 | } | ||
437 | catch (Exception e) | ||
438 | { | ||
439 | this.Log("Failed to kill process {0}: {1}", args.ProcessId, e); | ||
440 | Thread.Sleep(5000); | ||
441 | } | ||
424 | } | 442 | } |
425 | 443 | ||
426 | this.Log("OnExecuteProcessCancel({0})", args.Action); | 444 | this.Log("OnExecuteProcessCancel({0})", args.Action); |
@@ -494,6 +512,7 @@ namespace WixToolset.Test.BA | |||
494 | this.cancelOnProgressAtProgress = -1; | 512 | this.cancelOnProgressAtProgress = -1; |
495 | this.cancelExecuteAtProgress = -1; | 513 | this.cancelExecuteAtProgress = -1; |
496 | this.cancelCacheAtProgress = -1; | 514 | this.cancelCacheAtProgress = -1; |
515 | this.rollingBack = false; | ||
497 | } | 516 | } |
498 | 517 | ||
499 | protected override void OnApplyComplete(ApplyCompleteEventArgs args) | 518 | protected override void OnApplyComplete(ApplyCompleteEventArgs args) |
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/FailureTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/FailureTests.cs index bbc0b387..b50be49a 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/FailureTests.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/FailureTests.cs | |||
@@ -25,12 +25,8 @@ namespace WixToolsetTest.BurnE2E | |||
25 | var logPath = bundleD.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_USEREXIT); | 25 | var logPath = bundleD.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_USEREXIT); |
26 | bundleD.VerifyUnregisteredAndRemovedFromPackageCache(); | 26 | bundleD.VerifyUnregisteredAndRemovedFromPackageCache(); |
27 | 27 | ||
28 | Assert.True(LogVerifier.MessageInLogFile(logPath, "TestRegistryValue: ExeA, Version, ''")); | 28 | Assert.True(LogVerifier.MessageInLogFile(logPath, "TestRegistryValue: Execute, ExeA, Version, ''")); |
29 | 29 | Assert.False(LogVerifier.MessageInLogFile(logPath, "TestRegistryValue: Rollback, ExeA, Version")); | |
30 | // Make sure ExeA finishes running. | ||
31 | Thread.Sleep(3000); | ||
32 | |||
33 | bundleD.VerifyExeTestRegistryValue("ExeA", "1.0.0.0"); | ||
34 | } | 30 | } |
35 | 31 | ||
36 | [Fact] | 32 | [Fact] |
@@ -47,9 +43,11 @@ namespace WixToolsetTest.BurnE2E | |||
47 | var logPath = bundleD.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_USEREXIT); | 43 | var logPath = bundleD.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_USEREXIT); |
48 | bundleD.VerifyUnregisteredAndRemovedFromPackageCache(); | 44 | bundleD.VerifyUnregisteredAndRemovedFromPackageCache(); |
49 | 45 | ||
50 | Assert.True(LogVerifier.MessageInLogFile(logPath, "TestRegistryValue: ExeA, Version, '1.0.0.0'")); | 46 | Assert.True(LogVerifier.MessageInLogFile(logPath, "TestRegistryValue: Execute, ExeA, Version, '1.0.0.0'")); |
47 | Assert.True(LogVerifier.MessageInLogFile(logPath, "TestRegistryValue: Rollback, ExeA, Version, ''")); | ||
51 | 48 | ||
52 | bundleD.VerifyExeTestRegistryValue("ExeA", "1.0.0.0"); | 49 | // The package should have rolled back. |
50 | bundleD.VerifyExeTestRegistryRootDeleted("ExeA"); | ||
53 | } | 51 | } |
54 | 52 | ||
55 | [Fact] | 53 | [Fact] |