You are viewing a plain text version of this content. The canonical link for it is here.
Posted to npanday-commits@incubator.apache.org by br...@apache.org on 2012/01/04 12:38:40 UTC

svn commit: r1227136 - in /incubator/npanday/branches/npanday-1.4.x: ./ dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/ dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/csharp/ dotnet/assemblies/NPanday.P...

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>