Author: brett
Date: Wed Jan 4 12:38:40 2012
New Revision: 1227136
URL: http://svn.apache.org/viewvc?rev=1227136&view=rev
Log:
improve performance of unit tests, as it cuts build time by more than half
(Back-ported from trunk)
Added:
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/ImporterTests/AbstractAzureImportTest.cs
- copied unchanged from r1227127,
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/ImporterTests/AbstractAzureImportTest.cs
Modified:
incubator/npanday/branches/npanday-1.4.x/ (props changed)
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/ImporterTests/AbstractProjectImportTest.cs
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/NPanday.ProjectImporterEngine-Test.csproj
Propchange: incubator/npanday/branches/npanday-1.4.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 4 12:38:40 2012
@@ -1,4 +1,4 @@
/incubator/npanday/branches/NPANDAY-410:1210743-1210765
/incubator/npanday/branches/npanday-uac-removed:1002005-1024539
/incubator/npanday/branches/npanday-vs2010-support:1002029-1025477
-/incubator/npanday/trunk:1221087,1221092,1221101,1221116-1221117,1221159,1222098-1222180,1222459-1222547,1226035,1227061
+/incubator/npanday/trunk:1221087,1221092,1221101,1221116-1221117,1221159,1222098-1222180,1222459-1222547,1226035,1227061,1227127
Modified:
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs
URL:
http://svn.apache.org/viewvc/incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs?rev=1227136&r1=1227135&r2=1227136&view=diff
==============================================================================
---
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs
(original)
+++
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs
Wed Jan 4 12:38:40 2012
@@ -58,6 +58,7 @@ namespace NPanday.ProjectImporter.Conver
}
protected NPanday.Model.Pom.Model model;
+ private static List<Artifact.Artifact> testingArtifacts;
public NPanday.Model.Pom.Model Model
{
@@ -67,9 +68,7 @@ namespace NPanday.ProjectImporter.Conver
public AbstractPomConverter(ProjectDigest projectDigest, string
mainPomFile, NPanday.Model.Pom.Model parent, string groupId)
{
-
artifactContext = new ArtifactContext();
- this.localArtifacts =
artifactContext.GetArtifactRepository().GetArtifacts();
this.projectDigest = projectDigest;
this.mainPomFile = mainPomFile;
this.parent = parent;
@@ -82,6 +81,12 @@ namespace NPanday.ProjectImporter.Conver
// Add build Tag
this.model.build = new NPanday.Model.Pom.Build();
+
+ // TODO: this is a hack because of bad design. The things that
talk to the local repository should be pulled out of here, and able to be
stubbed/mocked instead
+ if (testingArtifacts != null)
+ {
+ this.localArtifacts = testingArtifacts;
+ }
}
#region AddEmbeddedResources
@@ -758,15 +763,15 @@ namespace NPanday.ProjectImporter.Conver
refs =
GacUtility.GetInstance().GetAssemblyInfo(reference.Name, reference.Version,
null);
System.Reflection.Assembly a =
System.Reflection.Assembly.ReflectionOnlyLoad(new
System.Reflection.AssemblyName(refs[0]).FullName);
-
+
Dependency refDependency = new Dependency();
refDependency.artifactId = reference.Name;
refDependency.groupId = reference.Name;
refDependency.type = GacUtility.GetNPandayGacType(a,
reference.PublicKeyToken);
-
+
refDependency.version = reference.Version ?? "1.0.0.0";
-
+
if (reference.PublicKeyToken != null)
{
refDependency.classifier = reference.PublicKeyToken;
@@ -774,13 +779,12 @@ namespace NPanday.ProjectImporter.Conver
else
{
int start = a.FullName.IndexOf("PublicKeyToken=");
- int length = (a.FullName.Length)-start;
- refDependency.classifier =
a.FullName.Substring(start,length);
+ int length = (a.FullName.Length) - start;
+ refDependency.classifier = a.FullName.Substring(start,
length);
refDependency.classifier =
refDependency.classifier.Replace("PublicKeyToken=", "");
}
return refDependency;
-
}
bool isPathReference = false;
@@ -852,6 +856,12 @@ namespace NPanday.ProjectImporter.Conver
Artifact.Artifact
GetArtifactFromRepoUsingEmbeddedAssemblyVersionNumber(Reference reference)
{
+ if (localArtifacts == null)
+ {
+ // TODO: this is a horribly slow operation on the local
repository. We should consider alternatives (e.g. maven repository index, cache
+ querying remote repos)
+ localArtifacts =
artifactContext.GetArtifactRepository().GetArtifacts();
+ }
+
foreach (Artifact.Artifact artifact in localArtifacts)
{
if (artifact.ArtifactId.Equals(reference.Name,
StringComparison.OrdinalIgnoreCase)
@@ -974,8 +984,10 @@ namespace NPanday.ProjectImporter.Conver
return string.Join(",", defines.ToArray());
}
-
-
+ // useful for unit testing rather than grabbing them from the local
repository
+ public static void UseTestingArtifacts(List<Artifact.Artifact>
artifacts)
+ {
+ testingArtifacts = artifacts;
+ }
}
-
}
Modified:
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/ImporterTests/AbstractProjectImportTest.cs
URL:
http://svn.apache.org/viewvc/incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/ImporterTests/AbstractProjectImportTest.cs?rev=1227136&r1=1227135&r2=1227136&view=diff
==============================================================================
---
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/ImporterTests/AbstractProjectImportTest.cs
(original)
+++
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/ImporterTests/AbstractProjectImportTest.cs
Wed Jan 4 12:38:40 2012
@@ -18,13 +18,10 @@
//
using System;
using System.Collections.Generic;
-using System.Reflection;
-using System.Text;
using System.IO;
using NUnit.Framework;
-using NPanday.ProjectImporter;
namespace NPanday.ProjectImporter.ImporterTests
{
@@ -52,6 +49,8 @@ namespace NPanday.ProjectImporter.Import
[TestFixtureSetUp]
public void ShouldBeAbleImportProject()
{
+
NPanday.ProjectImporter.Converter.Algorithms.AbstractPomConverter.UseTestingArtifacts(GetTestArtifacts());
+
// would be nicer if this could just be a setup check that ran
first - if this method weren't a setup itself
CheckFrameworkVersion();
@@ -162,5 +161,25 @@ namespace NPanday.ProjectImporter.Import
{
// designed to override
}
+
+ public virtual List<Artifact.Artifact> GetTestArtifacts()
+ {
+ return new List<Artifact.Artifact>();
+ }
+
+ protected Artifact.Artifact createArtifact(string name, string version)
+ {
+ Artifact.Artifact artifact = new Artifact.Artifact();
+ artifact.GroupId = name;
+ artifact.ArtifactId = name;
+ artifact.Version = version;
+ artifact.Extension = "dll";
+ return artifact;
+ }
+
+ protected Artifact.Artifact createArtifact(string name)
+ {
+ return createArtifact(name, "1.0.0.0");
+ }
}
}
Modified:
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/NPanday.ProjectImporterEngine-Test.csproj
URL:
http://svn.apache.org/viewvc/incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/NPanday.ProjectImporterEngine-Test.csproj?rev=1227136&r1=1227135&r2=1227136&view=diff
==============================================================================
---
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/NPanday.ProjectImporterEngine-Test.csproj
(original)
+++
incubator/npanday/branches/npanday-1.4.x/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/NPanday.ProjectImporterEngine-Test.csproj
Wed Jan 4 12:38:40 2012
@@ -68,6 +68,10 @@
<Compile Include="ImporterTests\WebSiteWithCSharpProjectFile.cs" />
</ItemGroup>
<ItemGroup>
+ <ProjectReference
Include="..\..\..\..\..\NPanday.Artifact\src\main\csharp\NPanday.Artifact.csproj">
+ <Project>{701803D4-90F5-44D7-919D-4844FEB7F936}</Project>
+ <Name>NPanday.Artifact</Name>
+ </ProjectReference>
<ProjectReference
Include="..\..\..\..\..\NPanday.Utils\src\main\csharp\NPanday.Utils.csproj">
<Project>{CAA4864F-F4C8-4024-8535-8B8C112307CE}</Project>
<Name>NPanday.Utils</Name>
@@ -78,4 +82,4 @@
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
-</Project>
\ No newline at end of file
+</Project>