Repository: incubator-apex-core
Updated Branches:
  refs/heads/master 9e30cf86d -> e5512a3b7


APEXCORE-328 Use Maven Embedder to execute maven goals from unit test


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-core/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-apex-core/commit/43711f34
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-core/tree/43711f34
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-core/diff/43711f34

Branch: refs/heads/master
Commit: 43711f34790475323aef4b3ea4fd4374bc9a414c
Parents: 058833c
Author: Vlad Rozov <[email protected]>
Authored: Mon Feb 8 08:31:33 2016 -0800
Committer: Vlad Rozov <[email protected]>
Committed: Tue Feb 9 17:18:47 2016 -0800

----------------------------------------------------------------------
 engine/pom.xml                                  | 40 ++++++++++
 .../stram/support/StramTestSupport.java         | 77 +++++++++++---------
 .../mydtapp/src/assemble/appPackage.xml         | 14 ++--
 3 files changed, 88 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-core/blob/43711f34/engine/pom.xml
----------------------------------------------------------------------
diff --git a/engine/pom.xml b/engine/pom.xml
index ab9ed37..2d9e120 100644
--- a/engine/pom.xml
+++ b/engine/pom.xml
@@ -165,6 +165,16 @@
           </filesets>
         </configuration>
       </plugin>
+      <plugin>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <argLine>-Xmx2048m</argLine>
+          <systemPropertyVariables>
+            <maven.home>${maven.home}</maven.home>
+            
<maven.multiModuleProjectDirectory>${maven.home}</maven.multiModuleProjectDirectory>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
@@ -318,6 +328,36 @@
       <artifactId>xbean-asm5-shaded</artifactId>
       <version>4.3</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-embedder</artifactId>
+      <version>3.3.9</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.aether</groupId>
+      <artifactId>aether-connector-basic</artifactId>
+      <version>1.0.2.v20150114</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.aether</groupId>
+      <artifactId>aether-transport-wagon</artifactId>
+      <version>1.0.2.v20150114</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-http</artifactId>
+      <version>2.10</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-provider-api</artifactId>
+      <version>2.10</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <profiles>
     <profile>

http://git-wip-us.apache.org/repos/asf/incubator-apex-core/blob/43711f34/engine/src/test/java/com/datatorrent/stram/support/StramTestSupport.java
----------------------------------------------------------------------
diff --git 
a/engine/src/test/java/com/datatorrent/stram/support/StramTestSupport.java 
b/engine/src/test/java/com/datatorrent/stram/support/StramTestSupport.java
index cf2a887..823434d 100644
--- a/engine/src/test/java/com/datatorrent/stram/support/StramTestSupport.java
+++ b/engine/src/test/java/com/datatorrent/stram/support/StramTestSupport.java
@@ -33,9 +33,16 @@ import java.util.List;
 import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 
-import net.lingala.zip4j.core.ZipFile;
-import net.lingala.zip4j.model.ZipParameters;
-import org.apache.commons.io.FileUtils;
+import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.logging.BaseLoggerManager;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.nio.SelectChannelConnector;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.websocket.WebSocket;
+import org.eclipse.jetty.websocket.WebSocketServlet;
 import org.hamcrest.BaseMatcher;
 import org.hamcrest.Description;
 import org.junit.Assert;
@@ -43,9 +50,15 @@ import org.junit.rules.TestWatcher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.commons.io.FileUtils;
+import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.util.Clock;
+import org.apache.maven.cli.MavenCli;
+import org.apache.maven.cli.logging.Slf4jLogger;
+
 import com.datatorrent.api.Attribute;
 import com.datatorrent.api.StorageAgent;
-
 import com.datatorrent.bufferserver.packet.MessageType;
 import com.datatorrent.stram.StramAppContext;
 import com.datatorrent.stram.StramLocalCluster;
@@ -59,18 +72,9 @@ import com.datatorrent.stram.plan.physical.PTOperator;
 import com.datatorrent.stram.tuple.EndWindowTuple;
 import com.datatorrent.stram.tuple.Tuple;
 import com.datatorrent.stram.webapp.AppInfo;
-import org.apache.commons.io.IOUtils;
 
-import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
-import org.apache.hadoop.yarn.api.records.ApplicationId;
-import org.apache.hadoop.yarn.util.Clock;
-import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.nio.SelectChannelConnector;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.websocket.WebSocket;
-import org.eclipse.jetty.websocket.WebSocketServlet;
+import net.lingala.zip4j.core.ZipFile;
+import net.lingala.zip4j.model.ZipParameters;
 
 /**
  * Bunch of utilities shared between tests.
@@ -78,6 +82,24 @@ import org.eclipse.jetty.websocket.WebSocketServlet;
 abstract public class StramTestSupport
 {
   private static final Logger LOG = 
LoggerFactory.getLogger(StramTestSupport.class);
+  private static MavenCli mavenCli = new MavenCli()
+  {
+    @Override
+    protected void customizeContainer(PlexusContainer container)
+    {
+      ((DefaultPlexusContainer)container).setLoggerManager(
+          new BaseLoggerManager()
+          {
+            @Override
+            protected org.codehaus.plexus.logging.Logger createLogger(String s)
+            {
+              return new Slf4jLogger(LOG);
+            }
+          }
+      );
+    }
+  };
+  private static final String workingDirectory = 
"src/test/resources/testAppPackage/mydtapp/";
   public static final long DEFAULT_TIMEOUT_MILLIS = 30000;
 
   public static Object generateTuple(Object payload, int windowId)
@@ -136,31 +158,14 @@ abstract public class StramTestSupport
    */
   public static File createAppPackageFile()
   {
-    String appPackageDir = "src/test/resources/testAppPackage/mydtapp";
-    String command = "mvn clean package -DskipTests";
-    try {
-      Process p = Runtime.getRuntime().exec(command, null, new 
File(appPackageDir));
-      IOUtils.copy(p.getInputStream(), System.out);
-      IOUtils.copy(p.getErrorStream(), System.err);
-      Assert.assertEquals(0, p.waitFor());
-    } catch (Exception ex) {
-      throw new RuntimeException(ex);
-    }
-    return new File(appPackageDir, "target/mydtapp-1.0-SNAPSHOT.apa");
+    Assert.assertEquals(0, mavenCli.doMain(new String[] {"clean", "package", 
"-DskipTests"},
+        workingDirectory, System.out, System.err));
+    return new File(workingDirectory, "target/mydtapp-1.0-SNAPSHOT.apa");
   }
 
   public static void removeAppPackageFile()
   {
-    String appPackageDir = "src/test/resources/testAppPackage/mydtapp";
-    String command = "mvn clean";
-    try {
-      Process p = Runtime.getRuntime().exec(command, null, new 
File(appPackageDir));
-      IOUtils.copy(p.getInputStream(), System.out);
-      IOUtils.copy(p.getErrorStream(), System.err);
-      Assert.assertEquals(0, p.waitFor());
-    } catch (Exception ex) {
-      throw new RuntimeException(ex);
-    }
+    Assert.assertEquals(0, mavenCli.doMain(new String[]{"clean"}, 
workingDirectory, System.out, System.err));
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-apex-core/blob/43711f34/engine/src/test/resources/testAppPackage/mydtapp/src/assemble/appPackage.xml
----------------------------------------------------------------------
diff --git 
a/engine/src/test/resources/testAppPackage/mydtapp/src/assemble/appPackage.xml 
b/engine/src/test/resources/testAppPackage/mydtapp/src/assemble/appPackage.xml
index a870807..5231bef 100644
--- 
a/engine/src/test/resources/testAppPackage/mydtapp/src/assemble/appPackage.xml
+++ 
b/engine/src/test/resources/testAppPackage/mydtapp/src/assemble/appPackage.xml
@@ -28,33 +28,33 @@
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
-      <directory>${basedir}/target/</directory>
+      <directory>${project.build.directory}</directory>
       <outputDirectory>/app</outputDirectory>
       <includes>
-        <include>${project.artifactId}-${project.version}.jar</include>
+        <include>${artifact.artifactId}-${artifact.version}.jar</include>
       </includes>
     </fileSet>
     <fileSet>
-      <directory>${basedir}/target/deps</directory>
+      <directory>${project.build.directory}/deps</directory>
       <outputDirectory>/lib</outputDirectory>
     </fileSet>
     <fileSet>
-      <directory>${basedir}/src/site/conf</directory>
+      <directory>${project.basedir}/src/site/conf</directory>
       <outputDirectory>/conf</outputDirectory>
       <includes>
         <include>*.xml</include>
       </includes>
     </fileSet>
     <fileSet>
-      <directory>${basedir}/src/main/resources/META-INF</directory>
+      <directory>${project.basedir}/src/main/resources/META-INF</directory>
       <outputDirectory>/META-INF</outputDirectory>
     </fileSet>
     <fileSet>
-      <directory>${basedir}/src/main/resources/app</directory>
+      <directory>${project.basedir}/src/main/resources/app</directory>
       <outputDirectory>/app</outputDirectory>
     </fileSet>
     <fileSet>
-      <directory>${basedir}/src/main/resources/resources</directory>
+      <directory>${project.basedir}/src/main/resources/resources</directory>
       <outputDirectory>/resources</outputDirectory>
     </fileSet>
   </fileSets>

Reply via email to