aboutsummaryrefslogtreecommitdiff
path: root/src/burn/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/test')
-rw-r--r--src/burn/test/BurnUnitTest/PlanTest.cpp179
1 files changed, 116 insertions, 63 deletions
diff --git a/src/burn/test/BurnUnitTest/PlanTest.cpp b/src/burn/test/BurnUnitTest/PlanTest.cpp
index 2135d9f5..37027ada 100644
--- a/src/burn/test/BurnUnitTest/PlanTest.cpp
+++ b/src/burn/test/BurnUnitTest/PlanTest.cpp
@@ -87,8 +87,8 @@ namespace Bootstrapper
87 fRollback = FALSE; 87 fRollback = FALSE;
88 dwIndex = 0; 88 dwIndex = 0;
89 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 89 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
90 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"TestExe"); 90 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"TestExe", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
91 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 91 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"TestExe");
92 Assert::Equal(dwIndex, pPlan->cCacheActions); 92 Assert::Equal(dwIndex, pPlan->cCacheActions);
93 93
94 fRollback = TRUE; 94 fRollback = TRUE;
@@ -259,19 +259,24 @@ namespace Bootstrapper
259 259
260 fRollback = FALSE; 260 fRollback = FALSE;
261 dwIndex = 0; 261 dwIndex = 0;
262 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
263 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"TestExe", FALSE, BURN_CACHE_PACKAGE_TYPE_NONE, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
264 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"TestExe");
262 Assert::Equal(dwIndex, pPlan->cCacheActions); 265 Assert::Equal(dwIndex, pPlan->cCacheActions);
263 266
264 fRollback = TRUE; 267 fRollback = TRUE;
265 dwIndex = 0; 268 dwIndex = 0;
266 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions); 269 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions);
267 270
268 Assert::Equal(0ull, pPlan->qwCacheSizeTotal); 271 Assert::Equal(143724ull, pPlan->qwCacheSizeTotal);
269 272
270 fRollback = FALSE; 273 fRollback = FALSE;
271 dwIndex = 0; 274 dwIndex = 0;
272 DWORD dwExecuteCheckpointId = 1; 275 DWORD dwExecuteCheckpointId = 2;
273 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 276 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
274 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 277 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
278 ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"TestExe");
279 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
275 ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"TestExe", BOOTSTRAPPER_ACTION_STATE_UNINSTALL); 280 ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"TestExe", BOOTSTRAPPER_ACTION_STATE_UNINSTALL);
276 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 281 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
277 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 282 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
@@ -280,8 +285,9 @@ namespace Bootstrapper
280 285
281 fRollback = TRUE; 286 fRollback = TRUE;
282 dwIndex = 0; 287 dwIndex = 0;
283 dwExecuteCheckpointId = 1; 288 dwExecuteCheckpointId = 2;
284 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 289 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
290 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
285 ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"TestExe", BOOTSTRAPPER_ACTION_STATE_INSTALL); 291 ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"TestExe", BOOTSTRAPPER_ACTION_STATE_INSTALL);
286 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 292 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
287 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 293 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
@@ -290,7 +296,7 @@ namespace Bootstrapper
290 Assert::Equal(dwIndex, pPlan->cRollbackActions); 296 Assert::Equal(dwIndex, pPlan->cRollbackActions);
291 297
292 Assert::Equal(1ul, pPlan->cExecutePackagesTotal); 298 Assert::Equal(1ul, pPlan->cExecutePackagesTotal);
293 Assert::Equal(1ul, pPlan->cOverallProgressTicksTotal); 299 Assert::Equal(2ul, pPlan->cOverallProgressTicksTotal);
294 300
295 dwIndex = 0; 301 dwIndex = 0;
296 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions); 302 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions);
@@ -347,14 +353,14 @@ namespace Bootstrapper
347 fRollback = FALSE; 353 fRollback = FALSE;
348 dwIndex = 0; 354 dwIndex = 0;
349 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 355 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
350 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); 356 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
351 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 357 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
352 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 9); 358 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 9);
353 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageB"); 359 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageB", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
354 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 360 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageB");
355 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 14); 361 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 14);
356 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageC"); 362 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageC", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
357 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 363 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageC");
358 Assert::Equal(dwIndex, pPlan->cCacheActions); 364 Assert::Equal(dwIndex, pPlan->cCacheActions);
359 365
360 fRollback = TRUE; 366 fRollback = TRUE;
@@ -506,13 +512,16 @@ namespace Bootstrapper
506 512
507 fRollback = FALSE; 513 fRollback = FALSE;
508 dwIndex = 0; 514 dwIndex = 0;
515 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 9);
516 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", FALSE, BURN_CACHE_PACKAGE_TYPE_NONE, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
517 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
509 Assert::Equal(dwIndex, pPlan->cCacheActions); 518 Assert::Equal(dwIndex, pPlan->cCacheActions);
510 519
511 fRollback = TRUE; 520 fRollback = TRUE;
512 dwIndex = 0; 521 dwIndex = 0;
513 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions); 522 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions);
514 523
515 Assert::Equal(0ull, pPlan->qwCacheSizeTotal); 524 Assert::Equal(185118ull, pPlan->qwCacheSizeTotal);
516 525
517 fRollback = FALSE; 526 fRollback = FALSE;
518 dwIndex = 0; 527 dwIndex = 0;
@@ -536,6 +545,9 @@ namespace Bootstrapper
536 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 545 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
537 ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); 546 ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++);
538 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 547 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
548 dwExecuteCheckpointId += 1; // cache checkpoints
549 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
550 ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA");
539 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 551 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
540 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", unregisterActions1, 1); 552 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", unregisterActions1, 1);
541 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 553 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
@@ -565,6 +577,8 @@ namespace Bootstrapper
565 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 577 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
566 ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); 578 ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++);
567 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 579 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
580 dwExecuteCheckpointId += 1; // cache checkpoints
581 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
568 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", registerActions1, 1); 582 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", registerActions1, 1);
569 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 583 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
570 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); 584 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1);
@@ -577,7 +591,7 @@ namespace Bootstrapper
577 Assert::Equal(dwIndex, pPlan->cRollbackActions); 591 Assert::Equal(dwIndex, pPlan->cRollbackActions);
578 592
579 Assert::Equal(3ul, pPlan->cExecutePackagesTotal); 593 Assert::Equal(3ul, pPlan->cExecutePackagesTotal);
580 Assert::Equal(3ul, pPlan->cOverallProgressTicksTotal); 594 Assert::Equal(4ul, pPlan->cOverallProgressTicksTotal);
581 595
582 dwIndex = 0; 596 dwIndex = 0;
583 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions); 597 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions);
@@ -640,11 +654,11 @@ namespace Bootstrapper
640 fRollback = FALSE; 654 fRollback = FALSE;
641 dwIndex = 0; 655 dwIndex = 0;
642 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 656 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
643 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); 657 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
644 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 658 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
645 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 6); 659 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 6);
646 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageB"); 660 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageB", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
647 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 661 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageB");
648 Assert::Equal(dwIndex, pPlan->cCacheActions); 662 Assert::Equal(dwIndex, pPlan->cCacheActions);
649 663
650 fRollback = TRUE; 664 fRollback = TRUE;
@@ -753,8 +767,8 @@ namespace Bootstrapper
753 fRollback = FALSE; 767 fRollback = FALSE;
754 dwIndex = 0; 768 dwIndex = 0;
755 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 2); 769 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 2);
756 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageB"); 770 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageB", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
757 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 771 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageB");
758 Assert::Equal(dwIndex, pPlan->cCacheActions); 772 Assert::Equal(dwIndex, pPlan->cCacheActions);
759 773
760 fRollback = TRUE; 774 fRollback = TRUE;
@@ -949,8 +963,8 @@ namespace Bootstrapper
949 fRollback = FALSE; 963 fRollback = FALSE;
950 dwIndex = 0; 964 dwIndex = 0;
951 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 965 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
952 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); 966 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
953 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 967 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
954 Assert::Equal(dwIndex, pPlan->cCacheActions); 968 Assert::Equal(dwIndex, pPlan->cCacheActions);
955 969
956 fRollback = TRUE; 970 fRollback = TRUE;
@@ -1068,8 +1082,8 @@ namespace Bootstrapper
1068 fRollback = FALSE; 1082 fRollback = FALSE;
1069 dwIndex = 0; 1083 dwIndex = 0;
1070 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 1084 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
1071 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); 1085 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
1072 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 1086 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
1073 Assert::Equal(dwIndex, pPlan->cCacheActions); 1087 Assert::Equal(dwIndex, pPlan->cCacheActions);
1074 1088
1075 fRollback = TRUE; 1089 fRollback = TRUE;
@@ -1170,8 +1184,8 @@ namespace Bootstrapper
1170 fRollback = FALSE; 1184 fRollback = FALSE;
1171 dwIndex = 0; 1185 dwIndex = 0;
1172 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 1186 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
1173 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"ExeA"); 1187 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"ExeA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
1174 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 1188 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"ExeA");
1175 Assert::Equal(dwIndex, pPlan->cCacheActions); 1189 Assert::Equal(dwIndex, pPlan->cCacheActions);
1176 1190
1177 fRollback = TRUE; 1191 fRollback = TRUE;
@@ -1264,8 +1278,8 @@ namespace Bootstrapper
1264 fRollback = FALSE; 1278 fRollback = FALSE;
1265 dwIndex = 0; 1279 dwIndex = 0;
1266 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 1280 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
1267 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); 1281 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
1268 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 1282 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
1269 Assert::Equal(dwIndex, pPlan->cCacheActions); 1283 Assert::Equal(dwIndex, pPlan->cCacheActions);
1270 1284
1271 fRollback = TRUE; 1285 fRollback = TRUE;
@@ -1515,8 +1529,8 @@ namespace Bootstrapper
1515 fRollback = FALSE; 1529 fRollback = FALSE;
1516 dwIndex = 0; 1530 dwIndex = 0;
1517 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 1531 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
1518 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); 1532 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
1519 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 1533 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
1520 Assert::Equal(dwIndex, pPlan->cCacheActions); 1534 Assert::Equal(dwIndex, pPlan->cCacheActions);
1521 1535
1522 fRollback = TRUE; 1536 fRollback = TRUE;
@@ -1610,8 +1624,8 @@ namespace Bootstrapper
1610 fRollback = FALSE; 1624 fRollback = FALSE;
1611 dwIndex = 0; 1625 dwIndex = 0;
1612 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 1626 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
1613 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); 1627 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
1614 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 1628 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
1615 Assert::Equal(dwIndex, pPlan->cCacheActions); 1629 Assert::Equal(dwIndex, pPlan->cCacheActions);
1616 1630
1617 fRollback = TRUE; 1631 fRollback = TRUE;
@@ -1794,19 +1808,24 @@ namespace Bootstrapper
1794 1808
1795 fRollback = FALSE; 1809 fRollback = FALSE;
1796 dwIndex = 0; 1810 dwIndex = 0;
1811 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
1812 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", FALSE, BURN_CACHE_PACKAGE_TYPE_NONE, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
1813 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
1797 Assert::Equal(dwIndex, pPlan->cCacheActions); 1814 Assert::Equal(dwIndex, pPlan->cCacheActions);
1798 1815
1799 fRollback = TRUE; 1816 fRollback = TRUE;
1800 dwIndex = 0; 1817 dwIndex = 0;
1801 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions); 1818 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions);
1802 1819
1803 Assert::Equal(0ull, pPlan->qwCacheSizeTotal); 1820 Assert::Equal(175674ull, pPlan->qwCacheSizeTotal);
1804 1821
1805 fRollback = FALSE; 1822 fRollback = FALSE;
1806 dwIndex = 0; 1823 dwIndex = 0;
1807 DWORD dwExecuteCheckpointId = 1; 1824 DWORD dwExecuteCheckpointId = 2;
1808 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 1825 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
1809 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 1826 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1827 ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA");
1828 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1810 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", unregisterActions1, 1); 1829 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", unregisterActions1, 1);
1811 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 1830 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1812 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); 1831 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1);
@@ -1819,8 +1838,9 @@ namespace Bootstrapper
1819 1838
1820 fRollback = TRUE; 1839 fRollback = TRUE;
1821 dwIndex = 0; 1840 dwIndex = 0;
1822 dwExecuteCheckpointId = 1; 1841 dwExecuteCheckpointId = 2;
1823 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 1842 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
1843 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1824 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", registerActions1, 1); 1844 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", registerActions1, 1);
1825 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 1845 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1826 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); 1846 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1);
@@ -1833,7 +1853,7 @@ namespace Bootstrapper
1833 Assert::Equal(dwIndex, pPlan->cRollbackActions); 1853 Assert::Equal(dwIndex, pPlan->cRollbackActions);
1834 1854
1835 Assert::Equal(1ul, pPlan->cExecutePackagesTotal); 1855 Assert::Equal(1ul, pPlan->cExecutePackagesTotal);
1836 Assert::Equal(1ul, pPlan->cOverallProgressTicksTotal); 1856 Assert::Equal(2ul, pPlan->cOverallProgressTicksTotal);
1837 1857
1838 dwIndex = 0; 1858 dwIndex = 0;
1839 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions); 1859 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions);
@@ -2043,19 +2063,24 @@ namespace Bootstrapper
2043 2063
2044 fRollback = FALSE; 2064 fRollback = FALSE;
2045 dwIndex = 0; 2065 dwIndex = 0;
2066 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
2067 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", FALSE, BURN_CACHE_PACKAGE_TYPE_NONE, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
2068 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
2046 Assert::Equal(dwIndex, pPlan->cCacheActions); 2069 Assert::Equal(dwIndex, pPlan->cCacheActions);
2047 2070
2048 fRollback = TRUE; 2071 fRollback = TRUE;
2049 dwIndex = 0; 2072 dwIndex = 0;
2050 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions); 2073 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions);
2051 2074
2052 Assert::Equal(0ull, pPlan->qwCacheSizeTotal); 2075 Assert::Equal(175674ull, pPlan->qwCacheSizeTotal);
2053 2076
2054 fRollback = FALSE; 2077 fRollback = FALSE;
2055 dwIndex = 0; 2078 dwIndex = 0;
2056 DWORD dwExecuteCheckpointId = 1; 2079 DWORD dwExecuteCheckpointId = 2;
2057 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 2080 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
2058 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2081 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2082 ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA");
2083 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2059 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", unregisterActions1, 1); 2084 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", unregisterActions1, 1);
2060 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2085 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2061 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); 2086 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1);
@@ -2068,8 +2093,9 @@ namespace Bootstrapper
2068 2093
2069 fRollback = TRUE; 2094 fRollback = TRUE;
2070 dwIndex = 0; 2095 dwIndex = 0;
2071 dwExecuteCheckpointId = 1; 2096 dwExecuteCheckpointId = 2;
2072 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 2097 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
2098 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2073 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", registerActions1, 1); 2099 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", registerActions1, 1);
2074 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2100 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2075 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); 2101 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1);
@@ -2082,7 +2108,7 @@ namespace Bootstrapper
2082 Assert::Equal(dwIndex, pPlan->cRollbackActions); 2108 Assert::Equal(dwIndex, pPlan->cRollbackActions);
2083 2109
2084 Assert::Equal(1ul, pPlan->cExecutePackagesTotal); 2110 Assert::Equal(1ul, pPlan->cExecutePackagesTotal);
2085 Assert::Equal(1ul, pPlan->cOverallProgressTicksTotal); 2111 Assert::Equal(2ul, pPlan->cOverallProgressTicksTotal);
2086 2112
2087 dwIndex = 0; 2113 dwIndex = 0;
2088 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions); 2114 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions);
@@ -2139,8 +2165,8 @@ namespace Bootstrapper
2139 fRollback = FALSE; 2165 fRollback = FALSE;
2140 dwIndex = 0; 2166 dwIndex = 0;
2141 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 2167 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
2142 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"test.msu"); 2168 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"test.msu", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
2143 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 2169 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"test.msu");
2144 Assert::Equal(dwIndex, pPlan->cCacheActions); 2170 Assert::Equal(dwIndex, pPlan->cCacheActions);
2145 2171
2146 fRollback = TRUE; 2172 fRollback = TRUE;
@@ -2233,14 +2259,14 @@ namespace Bootstrapper
2233 fRollback = FALSE; 2259 fRollback = FALSE;
2234 dwIndex = 0; 2260 dwIndex = 0;
2235 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 2261 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
2236 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"NetFx48Web"); 2262 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"NetFx48Web", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
2237 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 2263 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"NetFx48Web");
2238 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 3); 2264 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 3);
2239 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PatchA"); 2265 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PatchA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
2240 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 2266 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PatchA");
2241 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 5); 2267 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 5);
2242 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); 2268 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
2243 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 2269 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
2244 Assert::Equal(dwIndex, pPlan->cCacheActions); 2270 Assert::Equal(dwIndex, pPlan->cCacheActions);
2245 2271
2246 fRollback = TRUE; 2272 fRollback = TRUE;
@@ -2363,26 +2389,37 @@ namespace Bootstrapper
2363 2389
2364 fRollback = FALSE; 2390 fRollback = FALSE;
2365 dwIndex = 0; 2391 dwIndex = 0;
2392 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
2393 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PatchA", FALSE, BURN_CACHE_PACKAGE_TYPE_NONE, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
2394 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PatchA");
2395 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 6);
2396 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", FALSE, BURN_CACHE_PACKAGE_TYPE_NONE, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
2397 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
2366 Assert::Equal(dwIndex, pPlan->cCacheActions); 2398 Assert::Equal(dwIndex, pPlan->cCacheActions);
2367 2399
2368 fRollback = TRUE; 2400 fRollback = TRUE;
2369 dwIndex = 0; 2401 dwIndex = 0;
2370 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions); 2402 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions);
2371 2403
2372 Assert::Equal(0ull, pPlan->qwCacheSizeTotal); 2404 Assert::Equal(212992ull, pPlan->qwCacheSizeTotal);
2373 2405
2374 fRollback = FALSE; 2406 fRollback = FALSE;
2375 dwIndex = 0; 2407 dwIndex = 0;
2376 DWORD dwExecuteCheckpointId = 1; 2408 DWORD dwExecuteCheckpointId = 2;
2377 BURN_EXECUTE_ACTION* pExecuteAction = NULL; 2409 BURN_EXECUTE_ACTION* pExecuteAction = NULL;
2378 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 2410 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
2379 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2411 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2412 ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PatchA");
2413 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2380 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", unregisterActions1, 1); 2414 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", unregisterActions1, 1);
2381 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2415 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2382 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", unregisterActions1, 1); 2416 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", unregisterActions1, 1);
2383 pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE); 2417 pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE);
2384 ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); 2418 ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA");
2385 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2419 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2420 dwExecuteCheckpointId += 1; // cache checkpoints
2421 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2422 ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA");
2386 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2423 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2387 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", unregisterActions1, 1); 2424 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", unregisterActions1, 1);
2388 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2425 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
@@ -2396,8 +2433,9 @@ namespace Bootstrapper
2396 2433
2397 fRollback = TRUE; 2434 fRollback = TRUE;
2398 dwIndex = 0; 2435 dwIndex = 0;
2399 dwExecuteCheckpointId = 1; 2436 dwExecuteCheckpointId = 2;
2400 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 2437 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
2438 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2401 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", registerActions1, 1); 2439 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", registerActions1, 1);
2402 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2440 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2403 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", registerActions1, 1); 2441 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", registerActions1, 1);
@@ -2405,6 +2443,8 @@ namespace Bootstrapper
2405 pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_INSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE); 2443 pExecuteAction = ValidateDeletedExecuteMspTarget(pPlan, fRollback, dwIndex++, L"PatchA", BOOTSTRAPPER_ACTION_STATE_INSTALL, L"{5FF7F534-3FFC-41E0-80CD-E6361E5E7B7B}", TRUE, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, TRUE);
2406 ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA"); 2444 ValidateExecuteMspTargetPatch(pExecuteAction, 0, L"PatchA");
2407 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2445 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2446 dwExecuteCheckpointId += 1; // cache checkpoints
2447 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2408 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", registerActions1, 1); 2448 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", registerActions1, 1);
2409 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2449 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2410 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); 2450 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1);
@@ -2417,7 +2457,7 @@ namespace Bootstrapper
2417 Assert::Equal(dwIndex, pPlan->cRollbackActions); 2457 Assert::Equal(dwIndex, pPlan->cRollbackActions);
2418 2458
2419 Assert::Equal(2ul, pPlan->cExecutePackagesTotal); 2459 Assert::Equal(2ul, pPlan->cExecutePackagesTotal);
2420 Assert::Equal(2ul, pPlan->cOverallProgressTicksTotal); 2460 Assert::Equal(4ul, pPlan->cOverallProgressTicksTotal);
2421 2461
2422 dwIndex = 0; 2462 dwIndex = 0;
2423 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions); 2463 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions);
@@ -2479,19 +2519,24 @@ namespace Bootstrapper
2479 2519
2480 fRollback = FALSE; 2520 fRollback = FALSE;
2481 dwIndex = 0; 2521 dwIndex = 0;
2522 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
2523 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", FALSE, BURN_CACHE_PACKAGE_TYPE_NONE, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
2524 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
2482 Assert::Equal(dwIndex, pPlan->cCacheActions); 2525 Assert::Equal(dwIndex, pPlan->cCacheActions);
2483 2526
2484 fRollback = TRUE; 2527 fRollback = TRUE;
2485 dwIndex = 0; 2528 dwIndex = 0;
2486 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions); 2529 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions);
2487 2530
2488 Assert::Equal(0ull, pPlan->qwCacheSizeTotal); 2531 Assert::Equal(131072ull, pPlan->qwCacheSizeTotal);
2489 2532
2490 fRollback = FALSE; 2533 fRollback = FALSE;
2491 dwIndex = 0; 2534 dwIndex = 0;
2492 DWORD dwExecuteCheckpointId = 1; 2535 DWORD dwExecuteCheckpointId = 2;
2493 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 2536 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
2494 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2537 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2538 ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA");
2539 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2495 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", unregisterActions1, 1); 2540 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", unregisterActions1, 1);
2496 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2541 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2497 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1); 2542 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1);
@@ -2504,8 +2549,9 @@ namespace Bootstrapper
2504 2549
2505 fRollback = TRUE; 2550 fRollback = TRUE;
2506 dwIndex = 0; 2551 dwIndex = 0;
2507 dwExecuteCheckpointId = 1; 2552 dwExecuteCheckpointId = 2;
2508 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); 2553 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
2554 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2509 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", registerActions1, 1); 2555 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", registerActions1, 1);
2510 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); 2556 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
2511 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1); 2557 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1);
@@ -2518,7 +2564,7 @@ namespace Bootstrapper
2518 Assert::Equal(dwIndex, pPlan->cRollbackActions); 2564 Assert::Equal(dwIndex, pPlan->cRollbackActions);
2519 2565
2520 Assert::Equal(1ul, pPlan->cExecutePackagesTotal); 2566 Assert::Equal(1ul, pPlan->cExecutePackagesTotal);
2521 Assert::Equal(1ul, pPlan->cOverallProgressTicksTotal); 2567 Assert::Equal(2ul, pPlan->cOverallProgressTicksTotal);
2522 2568
2523 dwIndex = 0; 2569 dwIndex = 0;
2524 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions); 2570 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions);
@@ -2575,11 +2621,11 @@ namespace Bootstrapper
2575 fRollback = FALSE; 2621 fRollback = FALSE;
2576 dwIndex = 0; 2622 dwIndex = 0;
2577 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 2623 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
2578 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"NetFx48Web"); 2624 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"NetFx48Web", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
2579 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 2625 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"NetFx48Web");
2580 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 4); 2626 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 4);
2581 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); 2627 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_NONE);
2582 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++); 2628 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
2583 Assert::Equal(dwIndex, pPlan->cCacheActions); 2629 Assert::Equal(dwIndex, pPlan->cCacheActions);
2584 2630
2585 fRollback = TRUE; 2631 fRollback = TRUE;
@@ -3008,12 +3054,18 @@ namespace Bootstrapper
3008 __in BURN_PLAN* pPlan, 3054 __in BURN_PLAN* pPlan,
3009 __in BOOL fRollback, 3055 __in BOOL fRollback,
3010 __in DWORD dwIndex, 3056 __in DWORD dwIndex,
3011 __in LPCWSTR wzPackageId 3057 __in LPCWSTR wzPackageId,
3058 __in BOOL fVital,
3059 __in BURN_CACHE_PACKAGE_TYPE executeCacheType,
3060 __in BURN_CACHE_PACKAGE_TYPE rollbackCacheType
3012 ) 3061 )
3013 { 3062 {
3014 BURN_CACHE_ACTION* pAction = ValidateCacheActionExists(pPlan, fRollback, dwIndex); 3063 BURN_CACHE_ACTION* pAction = ValidateCacheActionExists(pPlan, fRollback, dwIndex);
3015 Assert::Equal<DWORD>(BURN_CACHE_ACTION_TYPE_PACKAGE, pAction->type); 3064 Assert::Equal<DWORD>(BURN_CACHE_ACTION_TYPE_PACKAGE, pAction->type);
3016 NativeAssert::StringEqual(wzPackageId, pAction->package.pPackage->sczId); 3065 NativeAssert::StringEqual(wzPackageId, pAction->package.pPackage->sczId);
3066 Assert::Equal<BOOL>(fVital, pAction->package.pPackage->fCacheVital);
3067 Assert::Equal<DWORD>(executeCacheType, pAction->package.pPackage->executeCacheType);
3068 Assert::Equal<DWORD>(rollbackCacheType, pAction->package.pPackage->rollbackCacheType);
3017 return dwIndex + 1; 3069 return dwIndex + 1;
3018 } 3070 }
3019 3071
@@ -3032,12 +3084,13 @@ namespace Bootstrapper
3032 void ValidateCacheSignalSyncpoint( 3084 void ValidateCacheSignalSyncpoint(
3033 __in BURN_PLAN* pPlan, 3085 __in BURN_PLAN* pPlan,
3034 __in BOOL fRollback, 3086 __in BOOL fRollback,
3035 __in DWORD dwIndex 3087 __in DWORD dwIndex,
3088 __in LPCWSTR wzPackageId
3036 ) 3089 )
3037 { 3090 {
3038 BURN_CACHE_ACTION* pAction = ValidateCacheActionExists(pPlan, fRollback, dwIndex); 3091 BURN_CACHE_ACTION* pAction = ValidateCacheActionExists(pPlan, fRollback, dwIndex);
3039 Assert::Equal<DWORD>(BURN_CACHE_ACTION_TYPE_SIGNAL_SYNCPOINT, pAction->type); 3092 Assert::Equal<DWORD>(BURN_CACHE_ACTION_TYPE_SIGNAL_SYNCPOINT, pAction->type);
3040 Assert::NotEqual((DWORD_PTR)NULL, (DWORD_PTR)pAction->syncpoint.hEvent); 3093 NativeAssert::StringEqual(wzPackageId, pAction->syncpoint.pPackage->sczId);
3041 } 3094 }
3042 3095
3043 void ValidateCleanAction( 3096 void ValidateCleanAction(