summaryrefslogtreecommitdiff
path: root/tests/helixperftasks.targets
diff options
context:
space:
mode:
Diffstat (limited to 'tests/helixperftasks.targets')
-rw-r--r--tests/helixperftasks.targets86
1 files changed, 74 insertions, 12 deletions
diff --git a/tests/helixperftasks.targets b/tests/helixperftasks.targets
index 73046cf341..52fb7f7ff4 100644
--- a/tests/helixperftasks.targets
+++ b/tests/helixperftasks.targets
@@ -1,4 +1,43 @@
-<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <UsingTask TaskName="RemoveDuplicateAssemblies" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
+ <ParameterGroup>
+ <DuplicateAssemblies ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
+ <AssemblyPaths ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
+ <UniqueAssemblyPaths ParameterType="Microsoft.Build.Framework.ITaskItem[]" Output="true" />
+ </ParameterGroup>
+ <Task>
+ <Using Namespace="System"/>
+ <Using Namespace="System.IO"/>
+ <Using Namespace="System.Collections.Generic"/>
+ <Code Type="Fragment" Language="cs">
+ <![CDATA[
+ var uniqueAssemblyPathsList = new List<Microsoft.Build.Framework.ITaskItem>();
+ var dupeSet = new HashSet<string>();
+ foreach(var dupe in DuplicateAssemblies)
+ {
+ dupeSet.Add(dupe.GetMetadata("Identity"));
+ }
+ foreach(var assemPath in AssemblyPaths)
+ {
+ if((dupeSet.Contains(assemPath.GetMetadata("FileName")+assemPath.GetMetadata("Extension")) &&
+ !(assemPath.GetMetadata("Identity").StartsWith("runtime"))))
+ {
+ Log.LogMessage("Duplicate assembly filtered: {0}", assemPath.GetMetadata("Identity"));
+ }
+ else
+ {
+ uniqueAssemblyPathsList.Add(assemPath);
+ }
+
+ }
+ uniqueAssemblyPaths = uniqueAssemblyPathsList.ToArray();
+ ]]>
+ </Code>
+ </Task>
+ </UsingTask>
+
+
<UsingTask TaskName="GetPerfTestAssemblies" AssemblyFile="$(ToolsDir)net45/Microsoft.DotNet.Build.CloudTestTasks.dll"/>
<Import Project="$(ToolsDir)publishtest.targets" />
<Import Project="$(ToolsDir)CloudTest.targets" />
@@ -8,7 +47,6 @@
<TestBinary Include="$(BinDir)**/*.dll" />
<TestBinary Include="$(BinDir)**/*.exe" />
</ItemGroup>
-
<!-- Get full paths to each of the perf test directories -->
<GetPerfTestAssemblies TestBinaries="@(TestBinary)" GetFullPaths="true">
<Output TaskParameter="PerfTestAssemblies" ItemName="CoreCLRPerfTest" />
@@ -33,6 +71,30 @@
</Target>
+ <Target Name="RunTestsForProject">
+ <Message Text="This is a dummy target to appease DependsOnTargets for ArchiveTestBuild in publishtest.targets" Importance="Low" />
+ </Target>
+
+ <!-- CoreCLR builds do not generate dependency lists yet, we need to archive the whole packages dir so that tests can find dependencies -->
+ <!-- compress the required files from the packages dir in preparation for uploading -->
+ <Target Name="CompressPackagesDir">
+ <ItemGroup>
+ <ExcludeFromArchive Include="nupkg$" />
+ <ExcludeFromArchive Include="Microsoft.DotNet.BuildTools" />
+ <ExcludeFromArchive Include="TestData" />
+ </ItemGroup>
+ <ZipFileCreateFromDirectory
+ SourceDirectory="$(PackagesDir)"
+ DestinationArchive="$(PackagesArchiveFile)"
+ ExcludePatterns="@(ExcludeFromArchive)"
+ OverwriteDestination="true" />
+ <ItemGroup>
+ <ForUpload Include="$(PackagesArchiveFile)">
+ <RelativeBlobPath>$(Platform)$(ConfigurationGroup)/$(PackagesArchiveFilename)</RelativeBlobPath>
+ </ForUpload>
+ </ItemGroup>
+ </Target>
+
<Target Name="_zipSingleProject">
<PropertyGroup>
<OutDir>$([System.IO.Path]::GetDirectoryName($(CurrPerfAssembly)))/</OutDir>
@@ -57,18 +119,18 @@
TargetMonikers="@(TestTargetFramework)">
<Output TaskParameter="ResolvedCopyLocalItems" ItemName="RequiredAssemblies" />
</PrereleaseResolveNuGetPackageAssets>
+
+
<ItemGroup>
<AssemblyPaths Include="$([MSBuild]::MakeRelative($(PackagesDir), %(RequiredAssemblies.FullPath)))" />
+ <AssemblyFiles Include="@(RequiredAssemblies->'%(FileName)%(Extension)')"></AssemblyFiles>
+ <DupeAssemblies Include="%(AssemblyFiles.Identity)" Condition="'@(AssemblyFiles->Count())' &gt; 1"> </DupeAssemblies>
</ItemGroup>
- <RemoveDuplicatesWithLastOneWinsPolicy Inputs="@(AssemblyPaths)">
- <Output TaskParameter="Filtered" ItemName="UniqueAssemblyPaths" />
- </RemoveDuplicatesWithLastOneWinsPolicy>
- <PropertyGroup>
- <_TestCopyLocalByFileNameWithoutDuplicates></_TestCopyLocalByFileNameWithoutDuplicates>
- </PropertyGroup>
- <ItemGroup>
- <UniqueAssemblyPaths Include="$([System.String]::Copy('%(_TestCopyLocalByFileNameWithoutDuplicates.SourcePath)').Replace('$(PackagesDir)',''))" Condition="'%(_TestCopyLocalByFileNameWithoutDuplicates.NugetPackageId)' != ''" />
- </ItemGroup>
+ <!-- There are duplicate dependency assemblies calculated for some projects that we need to fix, this is check/fix to weed out duplicates -->
+ <RemoveDuplicateAssemblies AssemblyPaths="@(AssemblyPaths)" DuplicateAssemblies="@(DupeAssemblies)">
+ <Output TaskParameter="UniqueAssemblyPaths" ItemName="UniqueAssemblyPaths" />
+ </RemoveDuplicateAssemblies>
+
<WriteLinesToFile
File="$(OutDir)/assemblylist.flat.txt"
Lines="@(UniqueAssemblyPaths)"
@@ -81,6 +143,6 @@
/>
<Message Text="Archiving Perf test assemblies for project: $(OutDir)" Importance="High" />
- <MSBuild Projects="$(MSBuildProjectFile)" Properties="OutDir=$(OutDir);TestArchiveDir=$(TestArchiveDir);TestProjectName=$(TestProjectName);DisableCopyTestToTestDirectory=true" Targets="ArchiveTestBuild"/>
+ <MSBuild Projects="$(MSBuildProjectFile)" Properties="OutDir=$(OutDir);TestArchiveDir=$(TestArchiveDir);TestProjectName=$(TestProjectName)" Targets="ArchiveTestBuild"/>
</Target>
</Project> \ No newline at end of file