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>


Reply via email to