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/burn/TestBA | |
| 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/burn/TestBA')
| -rw-r--r-- | src/test/burn/TestBA/TestBA.cs | 25 |
1 files changed, 22 insertions, 3 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) |
