You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by sm...@apache.org on 2014/07/11 06:17:59 UTC

[19/50] [abbrv] git commit: SLIDER-215 Add functional tests for HBase app package

SLIDER-215 Add functional tests for HBase app package


Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/2d8f68d1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/2d8f68d1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/2d8f68d1

Branch: refs/heads/master
Commit: 2d8f68d1bea3937a5182e8c6149f3c219f034dfa
Parents: 0d0ebe9
Author: tedyu <yu...@gmail.com>
Authored: Mon Jul 7 15:03:17 2014 -0700
Committer: tedyu <yu...@gmail.com>
Committed: Mon Jul 7 15:03:17 2014 -0700

----------------------------------------------------------------------
 app-packages/hbase/appConfig.json               |   7 +-
 app-packages/hbase/pom.xml                      | 162 ++++++++++++++++++-
 app-packages/hbase/resources.json               |   8 +-
 app-packages/hbase/src/assembly/hbase.xml       |   2 +-
 .../hbase/HBaseAgentCommandTestBase.groovy      |  52 ++++++
 .../slider/funtest/hbase/HBaseBasicIT.groovy    | 114 +++++++++++++
 .../funtest/hbase/HBaseMonitorSSLIT.groovy      |  73 +++++++++
 .../hbase/StubToForceGroovyTestsToCompile.java  |  22 +++
 .../test/resources/appConfig_monitor_ssl.json   |  68 ++++++++
 .../hbase/src/test/resources/resources.json     |  21 +++
 10 files changed, 522 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d8f68d1/app-packages/hbase/appConfig.json
----------------------------------------------------------------------
diff --git a/app-packages/hbase/appConfig.json b/app-packages/hbase/appConfig.json
index 81fcf2c..3a810f7 100644
--- a/app-packages/hbase/appConfig.json
+++ b/app-packages/hbase/appConfig.json
@@ -3,8 +3,8 @@
   "metadata": {
   },
   "global": {
-    "agent.conf": "/slider/agent/conf/agent.ini",
-    "application.def": "/slider/${app.package.name}.zip",
+    "agent.conf": "agent.ini",
+    "application.def": "${app.package.name}.zip",
     "create.default.zookeeper.node": "true",
     "config_types": "core-site,hdfs-site,hbase-site",
     "java_home": "/usr/jdk64/jdk1.7.0_45",
@@ -16,8 +16,11 @@
     "site.global.app_install_dir": "${AGENT_WORK_ROOT}/app/install",
     "site.global.hbase_master_heapsize": "1024m",
     "site.global.hbase_regionserver_heapsize": "1024m",
+    "site.global.hbase_instance_name": "instancename",
+    "site.global.hbase_root_password": "secret",
     "site.global.user_group": "hadoop",
     "site.global.security_enabled": "false",
+    "site.global.monitor_protocol": "http",
     "site.global.ganglia_server_host": "${NN_HOST}",
     "site.global.ganglia_server_port": "8667",
     "site.global.ganglia_server_id": "Application1",

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d8f68d1/app-packages/hbase/pom.xml
----------------------------------------------------------------------
diff --git a/app-packages/hbase/pom.xml b/app-packages/hbase/pom.xml
index 6872ac8..3854496 100644
--- a/app-packages/hbase/pom.xml
+++ b/app-packages/hbase/pom.xml
@@ -24,7 +24,7 @@
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>slider-hbase-app-package</artifactId>
-  <packaging>pom</packaging>
+  <packaging>jar</packaging>
   <name>Slider HBase App Package</name>
   <description>Slider HBase App Package</description>
   <properties>
@@ -70,16 +70,90 @@
                 <configuration>
                   <includeArtifactIds>hbase</includeArtifactIds>
                   <includeTypes>tar.gz</includeTypes>
+                  <excludeTransitive>true</excludeTransitive>
                   <outputDirectory>${project.build.directory}/${work.dir}</outputDirectory>
                 </configuration>
               </execution>
             </executions>
           </plugin>
+
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-failsafe-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>run-integration-tests</id>
+                <goals>
+                  <goal>integration-test</goal>
+                  <goal>verify</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <systemPropertyVariables>
+                <java.net.preferIPv4Stack>true</java.net.preferIPv4Stack>
+                <java.awt.headless>true</java.awt.headless>
+                <!-- this property must be supplied-->
+                <slider.conf.dir>${slider.conf.dir}</slider.conf.dir>
+                <slider.bin.dir>../../slider-assembly/target/slider-${project.version}-all/slider-${project.version}</slider.bin.dir>
+                <test.app.pkg.dir>target</test.app.pkg.dir>
+                <test.app.pkg.file>${app.package.name}.zip</test.app.pkg.file>
+                <test.app.resource>target/test-config/resources.json</test.app.resource>
+                <test.app.template>target/${app.package.name}/appConfig.json</test.app.template>
+              </systemPropertyVariables>
+            </configuration>
+          </plugin>
         </plugins>
       </build>
     </profile>
   </profiles>
 
+  <build>
+    <!-- resources are filtered for dynamic updates. This gets build info in-->
+    <resources>
+      <resource>
+        <directory>src/test/resources</directory>
+        <filtering>true</filtering>
+        <targetPath>${project.build.directory}/test-config</targetPath>
+      </resource>
+    </resources>
+
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>${maven-compiler-plugin.version}</version>
+        <configuration>
+          <compilerId>groovy-eclipse-compiler</compilerId>
+          <!-- set verbose to be true if you want lots of uninteresting messages -->
+          <!-- <verbose>true</verbose> -->
+          <source>${project.java.src.version}</source>
+          <target>${project.java.src.version}</target>
+        </configuration>
+        <dependencies>
+          <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-eclipse-compiler</artifactId>
+            <version>${groovy-eclipse-compiler.version}</version>
+          </dependency>
+          <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-eclipse-batch</artifactId>
+            <version>${groovy-eclipse-batch.version}</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <!-- can't figure out how to get the surefire plugin not to pick up the ITs, so skip it entirely -->
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.hbase</groupId>
@@ -88,6 +162,92 @@
       <classifier>bin</classifier>
       <type>tar.gz</type>
     </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+       <groupId>org.apache.hbase</groupId>
+       <artifactId>hbase-client</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-minicluster</artifactId>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-server</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-protocol</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-common</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-common</artifactId>
+      <classifier>tests</classifier>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-it</artifactId>
+      <classifier>tests</classifier>
+        <exclusions>
+          <exclusion>
+            <groupId>org.apache.hadoop</groupId>
+            <artifactId>hadoop-client</artifactId>
+          </exclusion>
+        </exclusions>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-hadoop-compat</artifactId>
+      <classifier>tests</classifier>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-hadoop2-compat</artifactId>
+      <classifier>tests</classifier>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-server</artifactId>
+      <classifier>tests</classifier>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.slider</groupId>
+      <artifactId>slider-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.slider</groupId>
+      <artifactId>slider-funtest</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.groovy</groupId>
+      <artifactId>groovy-all</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d8f68d1/app-packages/hbase/resources.json
----------------------------------------------------------------------
diff --git a/app-packages/hbase/resources.json b/app-packages/hbase/resources.json
index 9cc1b47..e0ff26f 100644
--- a/app-packages/hbase/resources.json
+++ b/app-packages/hbase/resources.json
@@ -7,13 +7,15 @@
   "components": {
     "HBASE_MASTER": {
       "yarn.role.priority": "1",
-      "yarn.component.instances": "1"
+      "yarn.component.instances": "1",
+      "yarn.memory": "256"
     },
     "slider-appmaster": {
     },
     "HBASE_REGIONSERVER": {
       "yarn.role.priority": "2",
-      "yarn.component.instances": "1"
+      "yarn.component.instances": "1",
+      "yarn.memory": "256"
     }
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d8f68d1/app-packages/hbase/src/assembly/hbase.xml
----------------------------------------------------------------------
diff --git a/app-packages/hbase/src/assembly/hbase.xml b/app-packages/hbase/src/assembly/hbase.xml
index 00b69ff..143c88f 100644
--- a/app-packages/hbase/src/assembly/hbase.xml
+++ b/app-packages/hbase/src/assembly/hbase.xml
@@ -23,7 +23,7 @@
   xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
   <id>hbase_v${hbase.version}</id>
   <formats>
-    <format>zip</format>
+    <format>dir</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
 

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d8f68d1/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseAgentCommandTestBase.groovy
----------------------------------------------------------------------
diff --git a/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseAgentCommandTestBase.groovy b/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseAgentCommandTestBase.groovy
new file mode 100644
index 0000000..0026b62
--- /dev/null
+++ b/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseAgentCommandTestBase.groovy
@@ -0,0 +1,52 @@
+/*
+ * 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.slider.funtest.hbase
+
+import groovy.util.logging.Slf4j
+import org.apache.slider.funtest.framework.AgentCommandTestBase
+import org.junit.After
+import org.junit.Before
+
+@Slf4j
+abstract class AccumuloAgentCommandTestBase extends AgentCommandTestBase {
+  protected static final int HBASE_LAUNCH_WAIT_TIME
+  protected static final int HBASE_GO_LIVE_TIME = 60000
+
+  // parameters must match those found in the default appConfig.json
+  protected static final String INSTANCE_NAME = "instancename"
+  protected static final String USER = "root"
+  protected static final String PASSWORD = "secret"
+
+  static {
+    HBASE_LAUNCH_WAIT_TIME = getTimeOptionMillis(SLIDER_CONFIG,
+      KEY_HBASE_LAUNCH_TIME,
+      1000 * DEFAULT_HBASE_LAUNCH_TIME_SECONDS)
+  }
+
+  abstract public String getClusterName();
+
+  @Before
+  public void prepareCluster() {
+    setupCluster(getClusterName())
+  }
+
+  @After
+  public void destroyCluster() {
+    cleanup(getClusterName())
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d8f68d1/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseBasicIT.groovy
----------------------------------------------------------------------
diff --git a/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseBasicIT.groovy b/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseBasicIT.groovy
new file mode 100644
index 0000000..52e19cd
--- /dev/null
+++ b/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseBasicIT.groovy
@@ -0,0 +1,114 @@
+/*
+ * 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.slider.funtest.hbase
+
+import groovy.util.logging.Slf4j
+import org.apache.slider.api.ClusterDescription
+import org.apache.slider.client.SliderClient
+import org.apache.slider.common.SliderKeys
+import org.apache.slider.core.registry.docstore.PublishedConfiguration
+import org.apache.slider.core.registry.info.ServiceInstanceData
+import org.apache.slider.core.registry.retrieve.RegistryRetriever
+import org.apache.slider.funtest.framework.SliderShell
+import org.apache.slider.server.services.curator.CuratorServiceInstance
+import org.junit.Test
+
+@Slf4j
+class HBaseBasicIT extends HBaseAgentCommandTestBase {
+
+  @Override
+  public String getClusterName() {
+    return "test_hbase_basic"
+  }
+
+  @Test
+  public void testHBaseClusterCreate() throws Throwable {
+
+    describe getDescription()
+
+    def path = buildClusterPath(getClusterName())
+    assert !clusterFS.exists(path)
+
+    SliderShell shell = slider(EXIT_SUCCESS,
+      [
+        ACTION_CREATE, getClusterName(),
+        ARG_IMAGE, agentTarballPath.toString(),
+        ARG_TEMPLATE, APP_TEMPLATE,
+        ARG_RESOURCES, APP_RESOURCE
+      ])
+
+    logShell(shell)
+
+    ensureApplicationIsUp(getClusterName())
+
+    // must match the values in src/test/resources/resources.json
+    Map<String, Integer> roleMap = [
+      "HBASE_MASTER" : 1,
+      "HBASE_REGIONSERVER" : 1
+    ];
+
+    //get a slider client against the cluster
+    SliderClient sliderClient = bondToCluster(SLIDER_CONFIG, getClusterName())
+    ClusterDescription cd = sliderClient.clusterDescription
+    assert getClusterName() == cd.name
+
+    log.info("Connected via Client {}", sliderClient.toString())
+
+    //wait for the role counts to be reached
+    waitForRoleCount(sliderClient, roleMap, HBASE_LAUNCH_WAIT_TIME)
+
+    sleep(HBASE_GO_LIVE_TIME)
+
+    clusterLoadOperations(cd, sliderClient)
+  }
+
+
+  public String getDescription() {
+    return "Create a working HBase cluster $clusterName"
+  }
+
+  public static String getMonitorUrl(SliderClient sliderClient, String clusterName) {
+    CuratorServiceInstance<ServiceInstanceData> instance =
+      sliderClient.getRegistry().queryForInstance(SliderKeys.APP_TYPE, clusterName)
+    ServiceInstanceData serviceInstanceData = instance.payload
+    RegistryRetriever retriever = new RegistryRetriever(serviceInstanceData)
+    PublishedConfiguration configuration = retriever.retrieveConfiguration(
+      retriever.getConfigurations(true), "quicklinks", true)
+
+    // must match name set in metainfo.xml
+    String monitorUrl = configuration.entries.get("org.apache.slider.monitor")
+
+    assertNotNull monitorUrl
+    return monitorUrl
+  }
+
+  public static void checkMonitorPage(String monitorUrl) {
+    String monitor = fetchWebPageWithoutError(monitorUrl);
+    assume monitor != null, "Monitor page null"
+    assume monitor.length() > 100, "Monitor page too short"
+    assume monitor.contains("Table Name"), "Monitor page didn't contain expected text"
+  }
+
+  /**
+   * Override point for any cluster load operations
+   */
+  public void clusterLoadOperations(ClusterDescription cd, SliderClient sliderClient) {
+    String monitorUrl = getMonitorUrl(sliderClient, getClusterName())
+    assert monitorUrl.startsWith("http://"), "Monitor URL didn't have expected protocol"
+    checkMonitorPage(monitorUrl)
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d8f68d1/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseMonitorSSLIT.groovy
----------------------------------------------------------------------
diff --git a/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseMonitorSSLIT.groovy b/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseMonitorSSLIT.groovy
new file mode 100644
index 0000000..12bf7ea
--- /dev/null
+++ b/app-packages/hbase/src/test/groovy/org/apache/slider/funtest/hbase/HBaseMonitorSSLIT.groovy
@@ -0,0 +1,73 @@
+/*
+ * 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.slider.funtest.hbase
+
+import groovy.util.logging.Slf4j
+import org.apache.slider.api.ClusterDescription
+import org.apache.slider.client.SliderClient
+
+import javax.net.ssl.KeyManager
+import javax.net.ssl.SSLContext
+import javax.net.ssl.TrustManager
+import javax.net.ssl.X509TrustManager
+import java.security.SecureRandom
+import java.security.cert.CertificateException
+import java.security.cert.X509Certificate
+
+@Slf4j
+class HBaseMonitorSSLIT extends HBaseBasicIT {
+  HBaseMonitorSSLIT() {
+    APP_TEMPLATE = "target/test-config/appConfig_monitor_ssl.json"
+  }
+
+  @Override
+  public String getClusterName() {
+    return "test_monitor_ssl";
+  }
+
+  @Override
+  public String getDescription() {
+    return "Test enable monitor SSL $clusterName"
+  }
+
+  @Override
+  public void clusterLoadOperations(ClusterDescription cd, SliderClient sliderClient) {
+    String monitorUrl = getMonitorUrl(sliderClient, getClusterName())
+    assert monitorUrl.startsWith("https://"), "Monitor URL didn't have expected protocol"
+
+    SSLContext ctx = SSLContext.getInstance("SSL");
+    TrustManager[] t = new TrustManager[1];
+    t[0] = new DefaultTrustManager();
+    ctx.init(new KeyManager[0], t, new SecureRandom());
+    SSLContext.setDefault(ctx);
+    checkMonitorPage(monitorUrl)
+  }
+
+  private static class DefaultTrustManager implements X509TrustManager {
+    @Override
+    public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
+
+    @Override
+    public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
+
+    @Override
+    public X509Certificate[] getAcceptedIssuers() {
+      return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d8f68d1/app-packages/hbase/src/test/java/org/apache/slider/funtest/hbase/StubToForceGroovyTestsToCompile.java
----------------------------------------------------------------------
diff --git a/app-packages/hbase/src/test/java/org/apache/slider/funtest/hbase/StubToForceGroovyTestsToCompile.java b/app-packages/hbase/src/test/java/org/apache/slider/funtest/hbase/StubToForceGroovyTestsToCompile.java
new file mode 100644
index 0000000..8143fcf
--- /dev/null
+++ b/app-packages/hbase/src/test/java/org/apache/slider/funtest/hbase/StubToForceGroovyTestsToCompile.java
@@ -0,0 +1,22 @@
+/*
+ * 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.slider.funtest.hbase;
+
+public class StubToForceGroovyTestsToCompile {
+}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d8f68d1/app-packages/hbase/src/test/resources/appConfig_monitor_ssl.json
----------------------------------------------------------------------
diff --git a/app-packages/hbase/src/test/resources/appConfig_monitor_ssl.json b/app-packages/hbase/src/test/resources/appConfig_monitor_ssl.json
new file mode 100644
index 0000000..37d72d0
--- /dev/null
+++ b/app-packages/hbase/src/test/resources/appConfig_monitor_ssl.json
@@ -0,0 +1,68 @@
+{
+  "schema": "http://example.org/specification/v2.0.0",
+  "metadata": {
+  },
+  "global": {
+    "agent.conf": "agent.ini",
+    "application.def": "${app.package.name}.zip",
+    "create.default.zookeeper.node": "true",
+    "config_types": "core-site,hdfs-site,hbase-site",
+    "java_home": "/usr/jdk64/jdk1.7.0_45",
+    "package_list": "files/hbase-${hbase.version}-bin.tar.gz",
+    "site.global.app_user": "yarn",
+    "site.global.app_log_dir": "app/log",
+    "site.global.app_pid_dir": "${AGENT_WORK_ROOT}/app/run",
+    "site.global.app_root": "${AGENT_WORK_ROOT}/app/install/hbase-${hbase.version}",
+    "site.global.app_install_dir": "${AGENT_WORK_ROOT}/app/install",
+    "site.global.hbase_master_heapsize": "1024m",
+    "site.global.hbase_regionserver_heapsize": "1024m",
+    "site.global.hbase_instance_name": "instancename",
+    "site.global.hbase_root_password": "secret",
+    "site.global.user_group": "hadoop",
+    "site.global.security_enabled": "false",
+    "site.global.monitor_protocol": "https",
+    "site.global.ganglia_server_host": "${NN_HOST}",
+    "site.global.ganglia_server_port": "8667",
+    "site.global.ganglia_server_id": "Application1",
+    "site.hbase-site.hbase.hstore.flush.retries.number": "120",
+    "site.hbase-site.hbase.client.keyvalue.maxsize": "10485760",
+    "site.hbase-site.hbase.hstore.compactionThreshold": "3",
+    "site.hbase-site.hbase.rootdir": "${DEFAULT_DATA_DIR}/data",
+    "site.hbase-site.hbase.stagingdir": "${DEFAULT_DATA_DIR}/staging",
+    "site.hbase-site.hbase.regionserver.handler.count": "60",
+    "site.hbase-site.hbase.regionserver.global.memstore.lowerLimit": "0.38",
+    "site.hbase-site.hbase.hregion.memstore.block.multiplier": "2",
+    "site.hbase-site.hbase.hregion.memstore.flush.size": "134217728",
+    "site.hbase-site.hbase.superuser": "yarn",
+    "site.hbase-site.hbase.zookeeper.property.clientPort": "2181",
+    "site.hbase-site.hbase.regionserver.global.memstore.upperLimit": "0.4",
+    "site.hbase-site.zookeeper.session.timeout": "30000",
+    "site.hbase-site.hbase.tmp.dir": "${AGENT_WORK_ROOT}/work/app/tmp",
+    "site.hbase-site.hbase.local.dir": "${hbase.tmp.dir}/local",
+    "site.hbase-site.hbase.hregion.max.filesize": "10737418240",
+    "site.hbase-site.hfile.block.cache.size": "0.40",
+    "site.hbase-site.hbase.security.authentication": "simple",
+    "site.hbase-site.hbase.defaults.for.version.skip": "true",
+    "site.hbase-site.hbase.zookeeper.quorum": "${ZK_HOST}",
+    "site.hbase-site.zookeeper.znode.parent": "/hbase-unsecure",
+    "site.hbase-site.hbase.hstore.blockingStoreFiles": "10",
+    "site.hbase-site.hbase.hregion.majorcompaction": "86400000",
+    "site.hbase-site.hbase.security.authorization": "false",
+    "site.hbase-site.hbase.cluster.distributed": "true",
+    "site.hbase-site.hbase.hregion.memstore.mslab.enabled": "true",
+    "site.hbase-site.hbase.client.scanner.caching": "100",
+    "site.hbase-site.hbase.zookeeper.useMulti": "true",
+    "site.hbase-site.hbase.regionserver.info.port": "0",
+    "site.hbase-site.hbase.master.info.port": "${HBASE_MASTER.ALLOCATED_PORT}",
+    "site.hbase-site.hbase.regionserver.port": "0"
+  },
+  "components": {
+    "HBASE_MASTER": {
+    },
+    "slider-appmaster": {
+      "jvm.heapsize": "256M"
+    },
+    "HBASE_REGIONSERVER": {
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2d8f68d1/app-packages/hbase/src/test/resources/resources.json
----------------------------------------------------------------------
diff --git a/app-packages/hbase/src/test/resources/resources.json b/app-packages/hbase/src/test/resources/resources.json
new file mode 100644
index 0000000..e0ff26f
--- /dev/null
+++ b/app-packages/hbase/src/test/resources/resources.json
@@ -0,0 +1,21 @@
+{
+  "schema": "http://example.org/specification/v2.0.0",
+  "metadata": {
+  },
+  "global": {
+  },
+  "components": {
+    "HBASE_MASTER": {
+      "yarn.role.priority": "1",
+      "yarn.component.instances": "1",
+      "yarn.memory": "256"
+    },
+    "slider-appmaster": {
+    },
+    "HBASE_REGIONSERVER": {
+      "yarn.role.priority": "2",
+      "yarn.component.instances": "1",
+      "yarn.memory": "256"
+    }
+  }
+}