aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-06-09 11:30:46 -0500
committerSean Hall <r.sean.hall@gmail.com>2021-06-09 13:47:53 -0500
commit56105916271ff9a7c0bfa237b45b9b3fab9c570b (patch)
tree828aff9543e541b42ed45198e6bd3e0aa065c137 /src/test
parentd47c73dbcd0a314cf3346b9b1294063ed4a124c4 (diff)
downloadwix-56105916271ff9a7c0bfa237b45b9b3fab9c570b.tar.gz
wix-56105916271ff9a7c0bfa237b45b9b3fab9c570b.tar.bz2
wix-56105916271ff9a7c0bfa237b45b9b3fab9c570b.zip
Fix building and perf for bundles with 1000s of package and BA payloads
Fixes other half of #5300
Diffstat (limited to 'src/test')
-rw-r--r--src/test/burn/TestData/Manual/BundleB/Bundle.wxs56
-rw-r--r--src/test/burn/TestData/Manual/BundleB/BundleB.wixproj32
-rw-r--r--src/test/burn/TestData/Manual/BundleB/BundleB.wxs15
-rw-r--r--src/test/burn/TestData/Manual/BundleB/ba.xslt21
-rw-r--r--src/test/burn/TestData/Manual/BundleB/package.xslt21
-rw-r--r--src/test/burn/TestExe/Task.cs22
6 files changed, 167 insertions, 0 deletions
diff --git a/src/test/burn/TestData/Manual/BundleB/Bundle.wxs b/src/test/burn/TestData/Manual/BundleB/Bundle.wxs
new file mode 100644
index 00000000..615d4b1d
--- /dev/null
+++ b/src/test/burn/TestData/Manual/BundleB/Bundle.wxs
@@ -0,0 +1,56 @@
1<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2
3<?ifndef Version?>
4<?define Version = 1.0.0.0?>
5<?endif?>
6
7<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
8 <!-- The only difference from the template should be the SplashScreen -->
9 <Bundle Name="~$(var.TestGroupName) - $(var.BundleName)" Version="$(var.Version)" UpgradeCode="$(var.UpgradeCode)" Compressed="yes" SplashScreenSourceFile="..\BafThmutilTesting\theme\star_transparent.bmp">
10 <Log Prefix="~$(var.TestGroupName)_$(var.BundleName)" />
11
12 <Variable Name="TestGroupName" Value="$(var.TestGroupName)" />
13
14 <?ifdef SoftwareTag?>
15 <SoftwareTag Regid="regid.1995-08.com.example" InstallPath="[CommonAppDataFolder]regid.1995-08.com.example" />
16 <?endif?>
17
18 <?ifndef BA?>
19 <!-- pulled in through the PackageGroupRef below -->
20 <?elseif $(var.BA) = "TestBAdnc"?>
21 <!-- pulled in through the PackageGroupRef below -->
22 <?elseif $(var.BA) = "TestBA_x64"?>
23 <!-- pulled in through the PackageGroupRef below -->
24 <?elseif $(var.BA) = "TestBAdnc_x64"?>
25 <!-- pulled in through the PackageGroupRef below -->
26 <?elseif $(var.BA) = "WixBA"?>
27 <!-- pulled in through the PackageGroupRef below -->
28 <?elseif $(var.BA) = "WixBAdnc_x64"?>
29 <!-- pulled in through the PackageGroupRef below -->
30 <?elseif $(var.BA) = "hyperlinkLicense"?>
31 <BootstrapperApplication>
32 <bal:WixStandardBootstrapperApplication LicenseUrl="" Theme="hyperlinkLicense" />
33 </BootstrapperApplication>
34 <?else?>
35 <BootstrapperApplicationRef Id="$(var.BA)" />
36 <?endif?>
37
38 <Chain>
39 <?ifndef BA?>
40 <PackageGroupRef Id="TestBA" />
41 <?elseif $(var.BA) = "TestBAdnc"?>
42 <PackageGroupRef Id="TestBAdnc" />
43 <?elseif $(var.BA) = "TestBA_x64"?>
44 <PackageGroupRef Id="TestBA_x64" />
45 <?elseif $(var.BA) = "TestBAdnc_x64"?>
46 <PackageGroupRef Id="TestBAdnc_x64" />
47 <?elseif $(var.BA) = "WixBA"?>
48 <PackageGroupRef Id="WixBA" />
49 <?elseif $(var.BA) = "WixBAdnc_x64"?>
50 <PackageGroupRef Id="WixBAdnc_x64" />
51 <?endif?>
52
53 <PackageGroupRef Id="BundlePackages" />
54 </Chain>
55 </Bundle>
56</Wix>
diff --git a/src/test/burn/TestData/Manual/BundleB/BundleB.wixproj b/src/test/burn/TestData/Manual/BundleB/BundleB.wixproj
new file mode 100644
index 00000000..35c92246
--- /dev/null
+++ b/src/test/burn/TestData/Manual/BundleB/BundleB.wixproj
@@ -0,0 +1,32 @@
1<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2<Project Sdk="WixToolset.Sdk">
3 <PropertyGroup>
4 <OutputType>Bundle</OutputType>
5 <BA>hyperlinkLicense</BA>
6 <UpgradeCode>{5DE2F206-3C37-4265-81F7-095284E16B08}</UpgradeCode>
7 <HarvestDirectoryAdditionalOptions>-generate payloadgroup</HarvestDirectoryAdditionalOptions>
8 </PropertyGroup>
9 <ItemGroup>
10 <HarvestDirectory Include="BAPayloads">
11 <ComponentGroupName>BAPayloads</ComponentGroupName>
12 <DirectoryRefId>BAPayloads</DirectoryRefId>
13 <Transforms>ba.xslt</Transforms>
14 </HarvestDirectory>
15 <HarvestDirectory Include="PackagePayloads">
16 <ComponentGroupName>PackagePayloads</ComponentGroupName>
17 <DirectoryRefId>PackagePayloads</DirectoryRefId>
18 <Transforms>package.xslt</Transforms>
19 </HarvestDirectory>
20 </ItemGroup>
21 <ItemGroup>
22 <ProjectReference Include="..\PackageA\PackageA.wixproj" />
23 </ItemGroup>
24 <ItemGroup>
25 <PackageReference Include="WixToolset.Bal.wixext" />
26 </ItemGroup>
27 <!-- We do this dynamically to avoid committing so many files to source control. -->
28 <Target Name="CreateThousandsOfFiles" AfterTargets="BeforeBuild">
29 <Exec Command='"$(BaseOutputPath)$(Configuration)\netcoreapp3.1\win-x86\testexe.exe" /gf "BAPayloads|10000' WorkingDirectory="$(MSBuildProjectDirectory)" />
30 <Exec Command='"$(BaseOutputPath)$(Configuration)\netcoreapp3.1\win-x86\testexe.exe" /gf "PackagePayloads|10000' WorkingDirectory="$(MSBuildProjectDirectory)" />
31 </Target>
32</Project> \ No newline at end of file
diff --git a/src/test/burn/TestData/Manual/BundleB/BundleB.wxs b/src/test/burn/TestData/Manual/BundleB/BundleB.wxs
new file mode 100644
index 00000000..3b189b15
--- /dev/null
+++ b/src/test/burn/TestData/Manual/BundleB/BundleB.wxs
@@ -0,0 +1,15 @@
1<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2
3
4<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
5 <Fragment>
6 <BootstrapperApplication>
7 <PayloadGroupRef Id="BAPayloads" />
8 </BootstrapperApplication>
9 <PackageGroup Id="BundlePackages">
10 <MsiPackage Id="PackageA" SourceFile="$(var.PackageA.TargetPath)">
11 <PayloadGroupRef Id="PackagePayloads" />
12 </MsiPackage>
13 </PackageGroup>
14 </Fragment>
15</Wix>
diff --git a/src/test/burn/TestData/Manual/BundleB/ba.xslt b/src/test/burn/TestData/Manual/BundleB/ba.xslt
new file mode 100644
index 00000000..54bc7fe6
--- /dev/null
+++ b/src/test/burn/TestData/Manual/BundleB/ba.xslt
@@ -0,0 +1,21 @@
1<?xml version="1.0" encoding="utf-8"?>
2<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
4 xmlns:wix="http://wixtoolset.org/schemas/v4/wxs"
5>
6 <xsl:output method="xml" indent="yes"/>
7
8 <xsl:template match="@* | node()">
9 <xsl:copy>
10 <xsl:apply-templates select="@* | node()"/>
11 </xsl:copy>
12 </xsl:template>
13
14 <xsl:template match="wix:Payload" >
15 <xsl:copy>
16 <xsl:apply-templates select="@* | node()"/>
17 <xsl:attribute name="Id">ba_<xsl:value-of select="substring(@SourceFile, 11)" /></xsl:attribute>
18 <xsl:attribute name="SourceFile">BAPayloads<xsl:value-of select="substring(@SourceFile, 10)" /></xsl:attribute>
19 </xsl:copy>
20 </xsl:template>
21</xsl:stylesheet>
diff --git a/src/test/burn/TestData/Manual/BundleB/package.xslt b/src/test/burn/TestData/Manual/BundleB/package.xslt
new file mode 100644
index 00000000..304ff78b
--- /dev/null
+++ b/src/test/burn/TestData/Manual/BundleB/package.xslt
@@ -0,0 +1,21 @@
1<?xml version="1.0" encoding="utf-8"?>
2<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
4 xmlns:wix="http://wixtoolset.org/schemas/v4/wxs"
5>
6 <xsl:output method="xml" indent="yes"/>
7
8 <xsl:template match="@* | node()">
9 <xsl:copy>
10 <xsl:apply-templates select="@* | node()"/>
11 </xsl:copy>
12 </xsl:template>
13
14 <xsl:template match="wix:Payload" >
15 <xsl:copy>
16 <xsl:apply-templates select="@* | node()"/>
17 <xsl:attribute name="Id">package_<xsl:value-of select="substring(@SourceFile, 11)" /></xsl:attribute>
18 <xsl:attribute name="SourceFile">PackagePayloads<xsl:value-of select="substring(@SourceFile, 10)" /></xsl:attribute>
19 </xsl:copy>
20 </xsl:template>
21</xsl:stylesheet>
diff --git a/src/test/burn/TestExe/Task.cs b/src/test/burn/TestExe/Task.cs
index 7d39bfd9..59f774fb 100644
--- a/src/test/burn/TestExe/Task.cs
+++ b/src/test/burn/TestExe/Task.cs
@@ -59,6 +59,24 @@ namespace TestExe
59 } 59 }
60 } 60 }
61 61
62 public class GenerateFilesTask : Task
63 {
64 public GenerateFilesTask(string Data) : base(Data) { }
65
66 public override void RunTask()
67 {
68 string[] tokens = this.data.Split(new char[] { '|' }, 2);
69 string folderPath = System.Environment.ExpandEnvironmentVariables(tokens[0]);
70 long size = long.Parse(tokens[1]);
71 Directory.CreateDirectory(folderPath);
72 var bytes = new byte[0];
73 for (long i = 1; i <= size; i++)
74 {
75 File.WriteAllBytes(Path.Combine(folderPath, $"{i}.txt"), bytes);
76 }
77 }
78 }
79
62 public class LargeFileTask : Task 80 public class LargeFileTask : Task
63 { 81 {
64 public LargeFileTask(string Data) : base(Data) { } 82 public LargeFileTask(string Data) : base(Data) { }
@@ -163,6 +181,10 @@ namespace TestExe
163 t = new SleepRandomTask(args[i + 1]); 181 t = new SleepRandomTask(args[i + 1]);
164 tasks.Add(t); 182 tasks.Add(t);
165 break; 183 break;
184 case "/gf":
185 t = new GenerateFilesTask(args[i + 1]);
186 tasks.Add(t);
187 break;
166 case "/lf": 188 case "/lf":
167 t = new LargeFileTask(args[i + 1]); 189 t = new LargeFileTask(args[i + 1]);
168 tasks.Add(t); 190 tasks.Add(t);