You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2013/07/17 04:09:06 UTC

git commit: ACCUMULO-1030 Shared mini for integration tests, fix plugin package

Updated Branches:
  refs/heads/master db39c354e -> af06b1629


ACCUMULO-1030 Shared mini for integration tests, fix plugin package


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/af06b162
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/af06b162
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/af06b162

Branch: refs/heads/master
Commit: af06b162919fd10d9caca907c84e58c2a0a13247
Parents: db39c35
Author: Christopher Tubbs <ct...@apache.org>
Authored: Mon Jul 15 20:28:21 2013 -0400
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Mon Jul 15 20:28:21 2013 -0400

----------------------------------------------------------------------
 .../maven/plugin/AbstractAccumuloMojo.java      | 42 ----------
 .../org/accumulo/maven/plugin/StartMojo.java    | 67 ---------------
 .../org/accumulo/maven/plugin/StopMojo.java     | 45 ----------
 .../maven/plugin/AbstractAccumuloMojo.java      | 49 +++++++++++
 .../apache/accumulo/maven/plugin/StartMojo.java | 88 ++++++++++++++++++++
 .../apache/accumulo/maven/plugin/StopMojo.java  | 45 ++++++++++
 pom.xml                                         |  5 ++
 test/pom.xml                                    | 59 +++++++++++++
 8 files changed, 246 insertions(+), 154 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/af06b162/maven-plugin/src/main/java/org/accumulo/maven/plugin/AbstractAccumuloMojo.java
----------------------------------------------------------------------
diff --git a/maven-plugin/src/main/java/org/accumulo/maven/plugin/AbstractAccumuloMojo.java b/maven-plugin/src/main/java/org/accumulo/maven/plugin/AbstractAccumuloMojo.java
deleted file mode 100644
index 2ffcd29..0000000
--- a/maven-plugin/src/main/java/org/accumulo/maven/plugin/AbstractAccumuloMojo.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.accumulo.maven.plugin;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.util.List;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugins.annotations.Parameter;
-
-public abstract class AbstractAccumuloMojo extends AbstractMojo {
-  
-  @Parameter(defaultValue = "${plugin.artifacts}", readonly = true, required = true)
-  private List<Artifact> pluginArtifacts;
-  
-  void configureMiniClasspath() {
-    for (Artifact artifact : pluginArtifacts) {
-      try {
-        System.setProperty("java.class.path", System.getProperty("java.class.path", "") + File.pathSeparator + artifact.getFile().toURI().toURL());
-      } catch (MalformedURLException e) {
-        e.printStackTrace();
-      }
-    }
-    
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/af06b162/maven-plugin/src/main/java/org/accumulo/maven/plugin/StartMojo.java
----------------------------------------------------------------------
diff --git a/maven-plugin/src/main/java/org/accumulo/maven/plugin/StartMojo.java b/maven-plugin/src/main/java/org/accumulo/maven/plugin/StartMojo.java
deleted file mode 100644
index fc0d716..0000000
--- a/maven-plugin/src/main/java/org/accumulo/maven/plugin/StartMojo.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.accumulo.maven.plugin;
-
-import java.io.File;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.accumulo.minicluster.MiniAccumuloCluster;
-import org.apache.accumulo.minicluster.MiniAccumuloConfig;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.plugins.annotations.ResolutionScope;
-
-/**
- * Goal which starts an instance of {@link MiniAccumuloCluster}.
- */
-@Mojo(name = "start", defaultPhase = LifecyclePhase.PRE_INTEGRATION_TEST, requiresDependencyResolution = ResolutionScope.TEST)
-public class StartMojo extends AbstractAccumuloMojo {
-  
-  @Parameter(defaultValue = "${project.build.directory}", property = "outputDir", required = true)
-  private File outputDirectory;
-  
-  @Parameter(defaultValue = "testInstance", property = "instanceName", required = true)
-  private String instanceName;
-  
-  @Parameter(defaultValue = "secret", property = "rootPassword", required = true)
-  private String rootPassword = "secret";
-  
-  static Set<MiniAccumuloCluster> runningClusters = Collections.synchronizedSet(new HashSet<MiniAccumuloCluster>());
-  
-  @Override
-  public void execute() throws MojoExecutionException {
-    File subdir = new File(new File(outputDirectory, "accumulo-maven-plugin"), instanceName);
-    subdir.mkdirs();
-    
-    try {
-      configureMiniClasspath();
-      MiniAccumuloConfig cfg = new MiniAccumuloConfig(subdir, rootPassword);
-      cfg.setInstanceName(instanceName);
-      MiniAccumuloCluster mac = new MiniAccumuloCluster(cfg);
-      System.out.println("Starting MiniAccumuloCluster: " + mac.getInstanceName());
-      mac.start();
-      runningClusters.add(mac);
-    } catch (Exception e) {
-      throw new MojoExecutionException("Unable to start " + MiniAccumuloCluster.class.getSimpleName(), e);
-    }
-    
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/af06b162/maven-plugin/src/main/java/org/accumulo/maven/plugin/StopMojo.java
----------------------------------------------------------------------
diff --git a/maven-plugin/src/main/java/org/accumulo/maven/plugin/StopMojo.java b/maven-plugin/src/main/java/org/accumulo/maven/plugin/StopMojo.java
deleted file mode 100644
index 84c2a6c..0000000
--- a/maven-plugin/src/main/java/org/accumulo/maven/plugin/StopMojo.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.accumulo.maven.plugin;
-
-import org.apache.accumulo.minicluster.MiniAccumuloCluster;
-import org.apache.accumulo.minicluster.MiniAccumuloCluster.LogWriter;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.ResolutionScope;
-
-/**
- * Goal which stops all instances of {@link MiniAccumuloCluster} started with the start mojo.
- */
-@Mojo(name = "stop", defaultPhase = LifecyclePhase.POST_INTEGRATION_TEST, requiresDependencyResolution = ResolutionScope.TEST)
-public class StopMojo extends AbstractAccumuloMojo {
-  
-  @Override
-  public void execute() throws MojoExecutionException {
-    for (MiniAccumuloCluster mac : StartMojo.runningClusters) {
-      System.out.println("Stopping MiniAccumuloCluster: " + mac.getInstanceName());
-      try {
-        mac.stop();
-        for (LogWriter log : mac.getLogWriters())
-          log.flush();
-      } catch (Exception e) {
-        throw new MojoExecutionException("Unable to start " + MiniAccumuloCluster.class.getSimpleName(), e);
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/af06b162/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/AbstractAccumuloMojo.java
----------------------------------------------------------------------
diff --git a/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/AbstractAccumuloMojo.java b/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/AbstractAccumuloMojo.java
new file mode 100644
index 0000000..7eb4acb
--- /dev/null
+++ b/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/AbstractAccumuloMojo.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.accumulo.maven.plugin;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+public abstract class AbstractAccumuloMojo extends AbstractMojo {
+  
+  @Parameter(defaultValue = "${plugin.artifacts}", readonly = true, required = true)
+  private List<Artifact> pluginArtifacts;
+  
+  void configureMiniClasspath(String miniClasspath) {
+    String classpath = "";
+    if (miniClasspath == null && pluginArtifacts != null) {
+      String sep = "";
+      for (Artifact artifact : pluginArtifacts) {
+        try {
+          classpath += sep + artifact.getFile().toURI().toURL();
+          sep = File.pathSeparator;
+        } catch (MalformedURLException e) {
+          e.printStackTrace();
+        }
+      }
+    } else if (miniClasspath != null && !miniClasspath.isEmpty()) {
+      classpath = miniClasspath;
+    }
+    System.setProperty("java.class.path", System.getProperty("java.class.path", "") + File.pathSeparator + classpath);
+  }
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/af06b162/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/StartMojo.java
----------------------------------------------------------------------
diff --git a/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/StartMojo.java b/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/StartMojo.java
new file mode 100644
index 0000000..075ba8e
--- /dev/null
+++ b/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/StartMojo.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.accumulo.maven.plugin;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.accumulo.minicluster.MiniAccumuloCluster;
+import org.apache.accumulo.minicluster.MiniAccumuloConfig;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
+
+/**
+ * Goal which starts an instance of {@link MiniAccumuloCluster}.
+ */
+@Mojo(name = "start", defaultPhase = LifecyclePhase.PRE_INTEGRATION_TEST, requiresDependencyResolution = ResolutionScope.TEST)
+public class StartMojo extends AbstractAccumuloMojo {
+  
+  @Parameter(defaultValue = "${project.build.directory}", property = "outputDir", required = true)
+  private File outputDirectory;
+  
+  @Parameter(defaultValue = "testInstance", property = "instanceName", required = true)
+  private String instanceName;
+  
+  @Parameter(defaultValue = "secret", property = "rootPassword", required = true)
+  private String rootPassword;
+  
+  private String miniClasspath;
+  
+  static Set<MiniAccumuloCluster> runningClusters = Collections.synchronizedSet(new HashSet<MiniAccumuloCluster>());
+  
+  @Override
+  public void execute() throws MojoExecutionException {
+    File subdir = new File(new File(outputDirectory, "accumulo-maven-plugin"), instanceName);
+    
+    try {
+      subdir = subdir.getCanonicalFile();
+      subdir.mkdirs();
+      configureMiniClasspath(miniClasspath);
+      MiniAccumuloConfig cfg = new MiniAccumuloConfig(subdir, rootPassword);
+      cfg.setInstanceName(instanceName);
+      MiniAccumuloCluster mac = new MiniAccumuloCluster(cfg);
+      System.out.println("Starting MiniAccumuloCluster: " + mac.getInstanceName() + " in " + mac.getConfig().getDir());
+      mac.start();
+      runningClusters.add(mac);
+    } catch (Exception e) {
+      throw new MojoExecutionException("Unable to start " + MiniAccumuloCluster.class.getSimpleName(), e);
+    }
+    
+  }
+  
+  public static void main(String[] args) throws MojoExecutionException {
+    int a = 0;
+    for (String arg : args) {
+      if (a < 2) {
+        // skip the first two args
+        a++;
+        continue;
+      }
+      StartMojo starter = new StartMojo();
+      starter.outputDirectory = new File(args[0]);
+      String[] instArgs = arg.split(" ");
+      starter.instanceName = instArgs[0];
+      starter.rootPassword = instArgs[1];
+      starter.miniClasspath = args[1];
+      starter.execute();
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/af06b162/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/StopMojo.java
----------------------------------------------------------------------
diff --git a/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/StopMojo.java b/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/StopMojo.java
new file mode 100644
index 0000000..ae1b7c0
--- /dev/null
+++ b/maven-plugin/src/main/java/org/apache/accumulo/maven/plugin/StopMojo.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.accumulo.maven.plugin;
+
+import org.apache.accumulo.minicluster.MiniAccumuloCluster;
+import org.apache.accumulo.minicluster.MiniAccumuloCluster.LogWriter;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.ResolutionScope;
+
+/**
+ * Goal which stops all instances of {@link MiniAccumuloCluster} started with the start mojo.
+ */
+@Mojo(name = "stop", defaultPhase = LifecyclePhase.POST_INTEGRATION_TEST, requiresDependencyResolution = ResolutionScope.TEST)
+public class StopMojo extends AbstractAccumuloMojo {
+  
+  @Override
+  public void execute() throws MojoExecutionException {
+    for (MiniAccumuloCluster mac : StartMojo.runningClusters) {
+      System.out.println("Stopping MiniAccumuloCluster: " + mac.getInstanceName());
+      try {
+        mac.stop();
+        for (LogWriter log : mac.getLogWriters())
+          log.flush();
+      } catch (Exception e) {
+        throw new MojoExecutionException("Unable to start " + MiniAccumuloCluster.class.getSimpleName(), e);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/af06b162/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 905e4e7..73f8454 100644
--- a/pom.xml
+++ b/pom.xml
@@ -229,6 +229,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.accumulo</groupId>
+        <artifactId>accumulo-maven-plugin</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.accumulo</groupId>
         <artifactId>accumulo-minicluster</artifactId>
         <version>${project.version}</version>
       </dependency>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/af06b162/test/pom.xml
----------------------------------------------------------------------
diff --git a/test/pom.xml b/test/pom.xml
index 18ee842..9bf9dcf 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -122,6 +122,11 @@
       <scope>test</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.accumulo</groupId>
+      <artifactId>accumulo-maven-plugin</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>org.mortbay.jetty</groupId>
       <artifactId>jetty</artifactId>
       <scope>test</scope>
@@ -145,6 +150,60 @@
   </build>
   <profiles>
     <profile>
+      <id>shared-mini-for-it</id>
+      <activation>
+        <property>
+          <name>!skipITs</name>
+        </property>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-dependency-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>setup-mini-classpath</id>
+                <goals>
+                  <goal>build-classpath</goal>
+                </goals>
+                <phase>pre-integration-test</phase>
+                <configuration>
+                  <includeScope>test</includeScope>
+                  <outputProperty>accumulo-it-mini-classpath</outputProperty>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>exec-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>run-mini-for-integration-tests</id>
+                <goals>
+                  <goal>java</goal>
+                </goals>
+                <phase>pre-integration-test</phase>
+                <configuration>
+                  <mainClass>org.apache.accumulo.maven.plugin.StartMojo</mainClass>
+                  <classpathScope>test</classpathScope>
+                  <arguments>
+                    <!-- These first two should stay static -->
+                    <argument>${project.build.directory}</argument>
+                    <argument>${accumulo-it-mini-classpath}</argument>
+                    <!-- InstanceName RootPassword, one pair per MiniAccumuloCluster -->
+                    <argument>testInstance1 rootPassword1</argument>
+                    <argument>testInstance2 rootPassword2</argument>
+                  </arguments>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
       <!-- profile for building against Hadoop 1.0.x
       Activate by not specifying hadoop.profile -->
       <id>hadoop-1.0</id>