Repository: incubator-blur Updated Branches: refs/heads/apache-blur-0.2 88a61dfd1 -> cd2673f8a
Adding a test suite to the console to make the units tests reuse the minicluster. Project: http://git-wip-us.apache.org/repos/asf/incubator-blur/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-blur/commit/397bc0d3 Tree: http://git-wip-us.apache.org/repos/asf/incubator-blur/tree/397bc0d3 Diff: http://git-wip-us.apache.org/repos/asf/incubator-blur/diff/397bc0d3 Branch: refs/heads/apache-blur-0.2 Commit: 397bc0d3bd4a375affe6a4089104b1dda7258d21 Parents: 871f526 Author: Aaron McCurry <[email protected]> Authored: Thu Jun 19 11:28:13 2014 -0400 Committer: Aaron McCurry <[email protected]> Committed: Thu Jun 19 11:28:13 2014 -0400 ---------------------------------------------------------------------- blur-console/pom.xml | 272 ++++++++++--------- .../org/apache/blur/console/util/Config.java | 239 ++++++++-------- .../apache/blur/console/ConsoleTestBase.java | 41 +-- .../apache/blur/console/ConsoleTestSuite.java | 66 +++++ pom.xml | 4 +- 5 files changed, 355 insertions(+), 267 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/397bc0d3/blur-console/pom.xml ---------------------------------------------------------------------- diff --git a/blur-console/pom.xml b/blur-console/pom.xml index 6d16975..7951f31 100644 --- a/blur-console/pom.xml +++ b/blur-console/pom.xml @@ -27,16 +27,17 @@ <packaging>jar</packaging> <name>Blur Console</name> - <properties> - <!-- Grunt Execution Target. Valid values are [ development | production ] --> - <grunt.target>development</grunt.target> + <properties> + <!-- Grunt Execution Target. Valid values are [ development | production + ] --> + <grunt.target>development</grunt.target> - <!-- Maven Plugin Versions --> - <plugin.maven.exec.version>1.2.1</plugin.maven.exec.version> - </properties> + <!-- Maven Plugin Versions --> + <plugin.maven.exec.version>1.2.1</plugin.maven.exec.version> + </properties> <dependencies> - <!-- Blur Dependencies --> + <!-- Blur Dependencies --> <dependency> <groupId>org.apache.blur</groupId> <artifactId>blur-thrift</artifactId> @@ -48,7 +49,7 @@ <version>${project.version}</version> </dependency> - <!-- Development and Runtime Libraries --> + <!-- Development and Runtime Libraries --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> @@ -78,44 +79,49 @@ </dependencies> <build> - <resources> - <resource> - <directory>src/main/resources</directory> - <filtering>true</filtering> - <includes> - <include>**/blur-console-build.properties</include> - </includes> - </resource> - <resource> - <directory>src/main/resources</directory> - <filtering>false</filtering> - <excludes> - <exclude>**/blur-console-build.properties</exclude> - </excludes> - </resource> - </resources> + <resources> + <resource> + <directory>src/main/resources</directory> + <filtering>true</filtering> + <includes> + <include>**/blur-console-build.properties</include> + </includes> + </resource> + <resource> + <directory>src/main/resources</directory> + <filtering>false</filtering> + <excludes> + <exclude>**/blur-console-build.properties</exclude> + </excludes> + </resource> + </resources> <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-clean-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-source-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-resources-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-clean-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <includes> + <include>**/ConsoleTestSuite.*</include> + </includes> + </configuration> + </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> @@ -126,50 +132,50 @@ <target>1.6</target> </configuration> </plugin> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <archive> - <manifest> - <mainClass>org.apache.blur.console.Main</mainClass> - </manifest> - </archive> - <descriptors> - <descriptor>src/assemble/webapp.xml</descriptor> - </descriptors> - </configuration> - <executions> - <execution> - <id>make-assembly</id> - <phase>package</phase> - <goals> - <goal>single</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-checkstyle-plugin</artifactId> - <version>2.12.1</version> - <configuration> - <configLocation>checkstyle.xml</configLocation> - </configuration> - </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <archive> + <manifest> + <mainClass>org.apache.blur.console.Main</mainClass> + </manifest> + </archive> + <descriptors> + <descriptor>src/assemble/webapp.xml</descriptor> + </descriptors> + </configuration> + <executions> + <execution> + <id>make-assembly</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <version>2.12.1</version> + <configuration> + <configLocation>checkstyle.xml</configLocation> + </configuration> + </plugin> </plugins> </build> - <profiles> - <profile> - <id>hadoop-1x</id> - <activation> - <property> - <name>hadoop1</name> - </property> - </activation> - <properties> - <projectVersion>${project.parent.version}-hadoop1</projectVersion> - </properties> + <profiles> + <profile> + <id>hadoop-1x</id> + <activation> + <property> + <name>hadoop1</name> + </property> + </activation> + <properties> + <projectVersion>${project.parent.version}-hadoop1</projectVersion> + </properties> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> @@ -178,17 +184,17 @@ <scope>test</scope> </dependency> </dependencies> - </profile> - <profile> - <id>hadoop-2.2</id> - <activation> - <property> - <name>hadoop2</name> - </property> - </activation> - <properties> - <projectVersion>${project.parent.version}-hadoop2</projectVersion> - </properties> + </profile> + <profile> + <id>hadoop-2.2</id> + <activation> + <property> + <name>hadoop2</name> + </property> + </activation> + <properties> + <projectVersion>${project.parent.version}-hadoop2</projectVersion> + </properties> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> @@ -202,39 +208,43 @@ <scope>test</scope> </dependency> </dependencies> - </profile> - <profile> - <id>web-war</id> - <properties> - <grunt.target>production</grunt.target> - </properties> - </profile> - <profile> - <id>grunt</id> - <activation><property><name>env.BLUR_CONSOLE_DEV</name></property></activation> - <build> - <plugins> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>${plugin.maven.exec.version}</version> - <executions> - <!-- Install all webapp dependencies --> - <execution> - <id>WebApp Dependencies and Minification</id> - <phase>generate-resources</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>${basedir}/src/main/scripts/grunt.sh</executable> - <commandlineArgs>${grunt.target}</commandlineArgs> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> + </profile> + <profile> + <id>web-war</id> + <properties> + <grunt.target>production</grunt.target> + </properties> + </profile> + <profile> + <id>grunt</id> + <activation> + <property> + <name>env.BLUR_CONSOLE_DEV</name> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>${plugin.maven.exec.version}</version> + <executions> + <!-- Install all webapp dependencies --> + <execution> + <id>WebApp Dependencies and Minification</id> + <phase>generate-resources</phase> + <goals> + <goal>exec</goal> + </goals> + <configuration> + <executable>${basedir}/src/main/scripts/grunt.sh</executable> + <commandlineArgs>${grunt.target}</commandlineArgs> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project> http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/397bc0d3/blur-console/src/main/java/org/apache/blur/console/util/Config.java ---------------------------------------------------------------------- diff --git a/blur-console/src/main/java/org/apache/blur/console/util/Config.java b/blur-console/src/main/java/org/apache/blur/console/util/Config.java index 784440b..59cc0f6 100644 --- a/blur-console/src/main/java/org/apache/blur/console/util/Config.java +++ b/blur-console/src/main/java/org/apache/blur/console/util/Config.java @@ -39,121 +39,126 @@ import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; public class Config { - private static final File TMPDIR = new File(System.getProperty("blur.tmp.dir", "./target/mini-cluster")); - private static final Log log = LogFactory.getLog(Config.class); - - private static int port; - private static BlurConfiguration blurConfig; - private static ZookeeperClusterStatus zk; - private static String blurConnection; - private static Object cluster; - private static Map<String, String> globalUserProperties; - - public static int getConsolePort() { - return port; - } - public static BlurConfiguration getBlurConfig() { - return blurConfig; - } - - public static void setupConfig() throws IOException { - if (cluster == null) { - blurConfig = new BlurConfiguration(); - } else { - blurConfig = new BlurConfiguration(false); - - String zkConnection = ""; - try { - Method zkMethod = cluster.getClass().getMethod("getZkConnectionString"); - zkConnection = (String) zkMethod.invoke(cluster); - } catch (Exception e) { - log.fatal("Unable get zookeeper connection string", e); - } - - blurConfig.set("blur.zookeeper.connection", zkConnection); - } - zk = new ZookeeperClusterStatus(blurConfig.get("blur.zookeeper.connection"), blurConfig); - blurConnection = buildConnectionString(); - port = blurConfig.getInt("blur.console.port", 8080); - parseSecurity(); - } - - private static void parseSecurity() { - String securityFile = blurConfig.get("blur.console.security.file"); - - if (securityFile != null) { - JsonFactory factory = new JsonFactory(); - ObjectMapper mapper = new ObjectMapper(factory); - File from = new File(securityFile); - TypeReference<Map<String,String>> typeRef - = new TypeReference<Map<String,String>>() {}; - - try { - globalUserProperties = mapper.readValue(from, typeRef); - } catch (Exception e) { - log.error("Unable to parse security file. Search may not work right.", e); - globalUserProperties = null; - } - } - } - - public static String getConnectionString() throws IOException { - return blurConnection; - } - - public static ZookeeperClusterStatus getZookeeper() { - return zk; - } - - private static String buildConnectionString() { - List<String> allControllers = new ArrayList<String>(); - allControllers = zk.getControllerServerList(); - return StringUtils.join(allControllers, ","); - } - - public static void shutdownMiniCluster() throws IOException { - if (cluster != null) { - try { - Method method = cluster.getClass().getMethod("shutdownBlurCluster"); - method.invoke(cluster); - } catch (Exception e) { - log.fatal("Unable to stop mini cluster through reflection.", e); - } - File file = new File(TMPDIR, "blur-cluster-test"); - if (file.exists()) { - FileUtils.deleteDirectory(file); - } - } - } - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - public static void setupMiniCluster() throws IOException { - File testDirectory = new File(TMPDIR, "blur-cluster-test").getAbsoluteFile(); - testDirectory.mkdirs(); - - testDirectory.delete(); - try { - Class clusterClass = Class.forName("org.apache.blur.MiniCluster", false, Config.class.getClassLoader()); - - if (clusterClass != null) { - cluster = clusterClass.newInstance(); - Method startBlurCluster = clusterClass.getDeclaredMethod("startBlurCluster", String.class, int.class, int.class, boolean.class); - startBlurCluster.invoke(cluster, new File(testDirectory, "cluster").getAbsolutePath(), 2, 3, true); - } - } catch (Exception e) { - log.fatal("Unable to start in dev mode because MiniCluster isn't in classpath", e); - cluster = null; - } - } - - public static Iface getClient(String username) throws IOException { - Iface client = BlurClient.getClient(getConnectionString()); - - if (globalUserProperties != null) { - UserContext.setUser(new User(username, globalUserProperties)); - } - - return client; - } + private static final File TMPDIR = new File(System.getProperty("blur.tmp.dir", "./target/mini-cluster")); + private static final Log log = LogFactory.getLog(Config.class); + + private static int port; + private static BlurConfiguration blurConfig; + private static ZookeeperClusterStatus zk; + private static String blurConnection; + private static Object cluster; + private static Map<String, String> globalUserProperties; + + public static int getConsolePort() { + return port; + } + + public static BlurConfiguration getBlurConfig() { + return blurConfig; + } + + public static void setupConfig() throws IOException { + if (cluster == null) { + blurConfig = new BlurConfiguration(); + } else { + blurConfig = new BlurConfiguration(false); + + String zkConnection = ""; + try { + Method zkMethod = cluster.getClass().getMethod("getZkConnectionString"); + zkConnection = (String) zkMethod.invoke(cluster); + } catch (Exception e) { + log.fatal("Unable get zookeeper connection string", e); + } + + blurConfig.set("blur.zookeeper.connection", zkConnection); + } + zk = new ZookeeperClusterStatus(blurConfig.get("blur.zookeeper.connection"), blurConfig); + blurConnection = buildConnectionString(); + port = blurConfig.getInt("blur.console.port", 8080); + parseSecurity(); + } + + private static void parseSecurity() { + String securityFile = blurConfig.get("blur.console.security.file"); + + if (securityFile != null) { + JsonFactory factory = new JsonFactory(); + ObjectMapper mapper = new ObjectMapper(factory); + File from = new File(securityFile); + TypeReference<Map<String, String>> typeRef = new TypeReference<Map<String, String>>() { + }; + + try { + globalUserProperties = mapper.readValue(from, typeRef); + } catch (Exception e) { + log.error("Unable to parse security file. Search may not work right.", e); + globalUserProperties = null; + } + } + } + + public static String getConnectionString() throws IOException { + return blurConnection; + } + + public static ZookeeperClusterStatus getZookeeper() { + return zk; + } + + private static String buildConnectionString() { + List<String> allControllers = new ArrayList<String>(); + allControllers = zk.getControllerServerList(); + return StringUtils.join(allControllers, ","); + } + + public static void shutdownMiniCluster() throws IOException { + if (cluster != null) { + try { + Method method = cluster.getClass().getMethod("shutdownBlurCluster"); + method.invoke(cluster); + } catch (Exception e) { + log.fatal("Unable to stop mini cluster through reflection.", e); + } + File file = new File(TMPDIR, "blur-cluster-test"); + if (file.exists()) { + FileUtils.deleteDirectory(file); + } + } + } + + public static boolean isClusterSetup() { + return cluster != null; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static void setupMiniCluster() throws IOException { + File testDirectory = new File(TMPDIR, "blur-cluster-test").getAbsoluteFile(); + testDirectory.mkdirs(); + + testDirectory.delete(); + try { + Class clusterClass = Class.forName("org.apache.blur.MiniCluster", false, Config.class.getClassLoader()); + + if (clusterClass != null) { + cluster = clusterClass.newInstance(); + Method startBlurCluster = clusterClass.getDeclaredMethod("startBlurCluster", String.class, int.class, + int.class, boolean.class); + startBlurCluster.invoke(cluster, new File(testDirectory, "cluster").getAbsolutePath(), 2, 3, true); + } + } catch (Exception e) { + log.fatal("Unable to start in dev mode because MiniCluster isn't in classpath", e); + cluster = null; + } + } + + public static Iface getClient(String username) throws IOException { + Iface client = BlurClient.getClient(getConnectionString()); + + if (globalUserProperties != null) { + UserContext.setUser(new User(username, globalUserProperties)); + } + + return client; + } } http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/397bc0d3/blur-console/src/test/java/org/apache/blur/console/ConsoleTestBase.java ---------------------------------------------------------------------- diff --git a/blur-console/src/test/java/org/apache/blur/console/ConsoleTestBase.java b/blur-console/src/test/java/org/apache/blur/console/ConsoleTestBase.java index 0aeebaf..aabe047 100644 --- a/blur-console/src/test/java/org/apache/blur/console/ConsoleTestBase.java +++ b/blur-console/src/test/java/org/apache/blur/console/ConsoleTestBase.java @@ -25,21 +25,28 @@ import org.junit.AfterClass; import org.junit.BeforeClass; public class ConsoleTestBase { - protected static String TABLE_PATH = new File("./test-data/test-tables").getAbsolutePath(); - - @BeforeClass - public static void startup() throws IOException { - Config.setupMiniCluster(); - } - - @AfterClass - public static void shutdown() throws IOException { - Config.shutdownMiniCluster(); - } - - protected void setupConfigIfNeeded() throws IOException { - if (Config.getBlurConfig() == null) { - Config.setupConfig(); - } - } + protected static String TABLE_PATH = new File("./target/tmp/test-data/test-tables").getAbsolutePath(); + private static boolean _managing; + + @BeforeClass + public static void startup() throws IOException { + if (!Config.isClusterSetup()) { + Config.setupMiniCluster(); + _managing = true; + } + + } + + @AfterClass + public static void shutdown() throws IOException { + if (_managing) { + Config.shutdownMiniCluster(); + } + } + + protected void setupConfigIfNeeded() throws IOException { + if (Config.getBlurConfig() == null) { + Config.setupConfig(); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/397bc0d3/blur-console/src/test/java/org/apache/blur/console/ConsoleTestSuite.java ---------------------------------------------------------------------- diff --git a/blur-console/src/test/java/org/apache/blur/console/ConsoleTestSuite.java b/blur-console/src/test/java/org/apache/blur/console/ConsoleTestSuite.java new file mode 100644 index 0000000..095673b --- /dev/null +++ b/blur-console/src/test/java/org/apache/blur/console/ConsoleTestSuite.java @@ -0,0 +1,66 @@ +package org.apache.blur.console; + +import java.io.IOException; + +import org.apache.blur.console.util.Config; +import org.apache.blur.console.util.ConfigTest; +import org.apache.blur.console.util.NodeUtilTest; +import org.apache.blur.console.util.QueryUtilTest; +import org.apache.blur.console.util.TableUtilTest; +import org.junit.*; +import org.junit.rules.ExternalResource; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +/** + * 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. + */ + +@RunWith(Suite.class) [email protected]({ ConfigTest.class, NodeUtilTest.class, QueryUtilTest.class, TableUtilTest.class }) +public class ConsoleTestSuite { + + @ClassRule + public static ExternalResource testCluster = new ExternalResource() { + + private boolean _managing; + + @Override + protected void after() { + if (_managing) { + try { + Config.shutdownMiniCluster(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + @Override + protected void before() throws Throwable { + if (!Config.isClusterSetup()) { + _managing = true; + try { + Config.setupMiniCluster(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + }; + +} http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/397bc0d3/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 75e9fe5..77c3375 100644 --- a/pom.xml +++ b/pom.xml @@ -178,7 +178,7 @@ under the License. <log4j.version>1.2.15</log4j.version> <jersey.version>1.14</jersey.version> <lucene.version>4.3.0</lucene.version> - <junit.version>4.7</junit.version> + <junit.version>4.9</junit.version> <slf4j.version>1.6.1</slf4j.version> <commons-cli.version>1.2</commons-cli.version> <concurrentlinkedhashmap-lru.version>1.3.2</concurrentlinkedhashmap-lru.version> @@ -198,7 +198,7 @@ under the License. <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> - <version>4.7</version> + <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies>
