From 84160f9b34367d7ac987a48be33557d61983b88f Mon Sep 17 00:00:00 2001 From: Apekshit Sharma Date: Thu, 19 Oct 2017 13:25:17 -0700 Subject: [PATCH] HBASE-19053 Split out o.a.h.h.http from hbase-server into a separate module Change-Id: If72db28053cbe5e1cec23ef40045f51e599f3944 --- hbase-common/pom.xml | 4 + .../org/apache/hadoop/hbase/util/JSONBean.java | 30 -- .../apache/hadoop/hbase/util/JSONMetricUtil.java | 0 hbase-endpoint/pom.xml | 6 + hbase-http/pom.xml | 492 +++++++++++++++++++++ .../hadoop/hbase/http/AdminAuthorizedServlet.java | 0 .../hbase/http/ClickjackingPreventionFilter.java | 0 .../apache/hadoop/hbase/http/FilterContainer.java | 0 .../hadoop/hbase/http/FilterInitializer.java | 0 .../org/apache/hadoop/hbase/http/HtmlQuoting.java | 0 .../org/apache/hadoop/hbase/http/HttpConfig.java | 0 .../apache/hadoop/hbase/http/HttpRequestLog.java | 0 .../hadoop/hbase/http/HttpRequestLogAppender.java | 0 .../org/apache/hadoop/hbase/http/HttpServer.java | 0 .../apache/hadoop/hbase/http}/HttpServerUtil.java | 2 +- .../org/apache/hadoop/hbase/http/InfoServer.java | 0 .../apache/hadoop/hbase/http/NoCacheFilter.java | 0 .../hadoop/hbase/http/ServerConfigurationKeys.java | 0 .../apache/hadoop/hbase/http/conf/ConfServlet.java | 0 .../hadoop/hbase/http/jmx/JMXJsonServlet.java | 0 .../apache/hadoop/hbase/http/jmx/package-info.java | 0 .../hadoop/hbase/http/lib/StaticUserWebFilter.java | 0 .../apache/hadoop/hbase/http/lib/package-info.java | 0 .../org/apache/hadoop/hbase/http/log/LogLevel.java | 0 .../org/apache/hadoop/hbase/http/package-info.java | 0 .../hbase/http/HttpServerFunctionalTest.java | 0 .../apache/hadoop/hbase/http/TestGlobalFilter.java | 0 .../apache/hadoop/hbase/http/TestHtmlQuoting.java | 0 .../hadoop/hbase/http/TestHttpRequestLog.java | 0 .../hbase/http/TestHttpRequestLogAppender.java | 0 .../apache/hadoop/hbase/http/TestHttpServer.java | 0 .../hadoop/hbase/http/TestHttpServerLifecycle.java | 0 .../hadoop/hbase/http/TestHttpServerWebapps.java | 0 .../apache/hadoop/hbase/http/TestPathFilter.java | 0 .../hadoop/hbase/http/TestSSLHttpServer.java | 0 .../hadoop/hbase/http/TestServletFilter.java | 31 +- .../hadoop/hbase/http/TestSpnegoHttpServer.java | 0 .../hadoop/hbase/http/conf/TestConfServlet.java | 0 .../hadoop/hbase/http/jmx/TestJMXJsonServlet.java | 0 .../hbase/http/lib/TestStaticUserWebFilter.java | 0 .../apache/hadoop/hbase/http/log/TestLogLevel.java | 0 .../hadoop/hbase/http/resource/JerseyResource.java | 0 .../hadoop/hbase/http/ssl/KeyStoreTestUtil.java | 0 .../org/apache/hadoop/hbase/rest/RESTServer.java | 4 +- .../hadoop/hbase/rest/HBaseRESTTestingUtility.java | 4 +- hbase-server/pom.xml | 45 +- .../regionserver/DumpRegionServerMetrics.java | 60 +++ .../hadoop/hbase/regionserver/HRegionServer.java | 3 +- .../org/apache/hadoop/hbase/GenericTestUtils.java | 74 ++-- pom.xml | 23 + 50 files changed, 652 insertions(+), 126 deletions(-) rename {hbase-server => hbase-common}/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java (91%) rename {hbase-server => hbase-common}/src/main/java/org/apache/hadoop/hbase/util/JSONMetricUtil.java (100%) create mode 100644 hbase-http/pom.xml rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/AdminAuthorizedServlet.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/ClickjackingPreventionFilter.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/FilterContainer.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/FilterInitializer.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/HtmlQuoting.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/HttpConfig.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLog.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLogAppender.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java (100%) rename {hbase-server/src/main/java/org/apache/hadoop/hbase/util => hbase-http/src/main/java/org/apache/hadoop/hbase/http}/HttpServerUtil.java (98%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/InfoServer.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/NoCacheFilter.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/ServerConfigurationKeys.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/conf/ConfServlet.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/jmx/JMXJsonServlet.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/jmx/package-info.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/lib/StaticUserWebFilter.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/lib/package-info.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/log/LogLevel.java (100%) rename {hbase-server => hbase-http}/src/main/java/org/apache/hadoop/hbase/http/package-info.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/TestGlobalFilter.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/TestHtmlQuoting.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLog.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLogAppender.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/TestHttpServer.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/TestHttpServerLifecycle.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/TestHttpServerWebapps.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/TestPathFilter.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/TestSSLHttpServer.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/TestServletFilter.java (91%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/TestSpnegoHttpServer.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/conf/TestConfServlet.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/jmx/TestJMXJsonServlet.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/lib/TestStaticUserWebFilter.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/resource/JerseyResource.java (100%) rename {hbase-server => hbase-http}/src/test/java/org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.java (100%) create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DumpRegionServerMetrics.java diff --git a/hbase-common/pom.xml b/hbase-common/pom.xml index 9bf40324a3..135e720557 100644 --- a/hbase-common/pom.xml +++ b/hbase-common/pom.xml @@ -263,6 +263,10 @@ com.github.stephenc.findbugs findbugs-annotations + + com.fasterxml.jackson.core + jackson-databind + org.mockito mockito-all diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java similarity index 91% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java rename to hbase-common/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java index f4a146ecdb..23759b5ff5 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java @@ -340,31 +340,6 @@ public class JSONBean { } } - /** - * Dump out a subset of regionserver mbeans only, not all of them, as json on System.out. - * @throws MalformedObjectNameException - * @throws IOException - */ - public static String dumpRegionServerMetrics() throws MalformedObjectNameException, IOException { - StringWriter sw = new StringWriter(1024 * 100); // Guess this size - try (PrintWriter writer = new PrintWriter(sw)) { - JSONBean dumper = new JSONBean(); - try (JSONBean.Writer jsonBeanWriter = dumper.open(writer)) { - MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer(); - jsonBeanWriter.write(mbeanServer, - new ObjectName("java.lang:type=Memory"), null, false); - jsonBeanWriter.write(mbeanServer, - new ObjectName("Hadoop:service=HBase,name=RegionServer,sub=IPC"), null, false); - jsonBeanWriter.write(mbeanServer, - new ObjectName("Hadoop:service=HBase,name=RegionServer,sub=Replication"), null, false); - jsonBeanWriter.write(mbeanServer, - new ObjectName("Hadoop:service=HBase,name=RegionServer,sub=Server"), null, false); - } - } - sw.close(); - return sw.toString(); - } - /** * Dump out all registered mbeans as json on System.out. * @throws IOException @@ -379,9 +354,4 @@ public class JSONBean { } } } - - public static void main(String[] args) throws IOException, MalformedObjectNameException { - String str = dumpRegionServerMetrics(); - System.out.println(str); - } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JSONMetricUtil.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/JSONMetricUtil.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/util/JSONMetricUtil.java rename to hbase-common/src/main/java/org/apache/hadoop/hbase/util/JSONMetricUtil.java diff --git a/hbase-endpoint/pom.xml b/hbase-endpoint/pom.xml index fdb4784fcc..ef2584c1ec 100644 --- a/hbase-endpoint/pom.xml +++ b/hbase-endpoint/pom.xml @@ -174,6 +174,12 @@ test-jar test + + org.apache.hbase + hbase-http + test-jar + test + diff --git a/hbase-http/pom.xml b/hbase-http/pom.xml new file mode 100644 index 0000000000..cc0b14bd4c --- /dev/null +++ b/hbase-http/pom.xml @@ -0,0 +1,492 @@ + + + + 4.0.0 + + hbase-build-configuration + org.apache.hbase + 3.0.0-SNAPSHOT + ../hbase-build-configuration + + hbase-http + Apache HBase - HTTP + HTTP functionality for HBase Servers + + + + + + + src/test/resources/META-INF/ + META-INF/ + + NOTICE + + true + + + + + org.apache.maven.plugins + maven-site-plugin + + true + + + + + org.apache.maven.plugins + maven-remote-resources-plugin + 1.5 + + + default + + false + + ${build.year} + ${license.debug.print.included} + ${license.bundles.dependencies} + ${license.bundles.jquery} + ${license.bundles.logo} + ${license.bundles.bootstrap} + + + ${project.groupId}:hbase-resource-bundle:${project.version} + + + ${project.groupId}:hbase-resource-bundle:${project.version} + + + supplemental-models.xml + + + + + + + + + maven-assembly-plugin + + true + + + + + org.apache.maven.plugins + maven-source-plugin + + + package + + jar + test-jar + + + + + + + org.codehaus.mojo + findbugs-maven-plugin + + + + maven-surefire-plugin + + + + listener + org.apache.hadoop.hbase.ServerResourceCheckerJUnitListener + + + + target/test-classes/webapps + org.apache.hadoop.hbase.shaded. + + + + + + + + + + org.eclipse.m2e + lifecycle-mapping + + + + + + org.apache.maven.plugins + maven-antrun-plugin + [1.6,) + + run + + + + + false + true + + + + + + org.apache.maven.plugins + maven-dependency-plugin + [2.8,) + + build-classpath + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + [3.2,) + + compile + + + + + + + + + + + + + + + + org.apache.hbase.thirdparty + hbase-shaded-miscellaneous + + + + org.apache.hbase + hbase-common + + + org.apache.hbase + hbase-annotations + test-jar + test + + + + org.apache.hbase + hbase-resource-bundle + ${project.version} + true + + + org.eclipse.jetty + jetty-server + + + org.eclipse.jetty + jetty-servlet + + + org.eclipse.jetty + jetty-util + + + org.eclipse.jetty + jetty-util-ajax + + + org.eclipse.jetty + jetty-webapp + + + org.eclipse.jetty + jetty-http + + + org.eclipse.jetty + jetty-security + + + org.glassfish.jersey.core + jersey-server + + + org.glassfish.jersey.containers + jersey-container-servlet-core + + + + commons-logging + commons-logging + + + log4j + log4j + + + javax.servlet + javax.servlet-api + + + javax.ws.rs + javax.ws.rs-api + + + + + org.apache.kerby + kerb-simplekdc + test + + + org.bouncycastle + bcprov-jdk16 + test + + + org.apache.kerby + kerb-core + test + + + org.apache.httpcomponents + httpclient + test + + + org.apache.httpcomponents + httpcore + test + + + junit + junit + test + + + org.mockito + mockito-all + test + + + + + + apache-release + + + + org.apache.maven.plugins + maven-resources-plugin + + + license-javadocs + prepare-package + + copy-resources + + + ${project.build.directory}/apidocs + + + src/main/javadoc/META-INF/ + META-INF/ + + LICENSE + NOTICE + + true + + + + + + + + + + + + skipServerTests + + + skipServerTests + + + + true + true + + + + + native + + false + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + make + compile + run + + + + + + + + + + + + + + + + + + + + + + + hadoop-2.0 + + + + !hadoop.profile + + + + + org.apache.hadoop + hadoop-common + + + org.apache.hadoop + hadoop-auth + + + + + + maven-dependency-plugin + + + create-mrapp-generated-classpath + generate-test-resources + + build-classpath + + + + ${project.build.directory}/test-classes/mrapp-generated-classpath + + + + + + + + + + hadoop-3.0 + + + hadoop.profile + 3.0 + + + + ${hadoop-three.version} + + + + org.apache.hadoop + hadoop-common + + + org.apache.hadoop + hadoop-minicluster + + + com.google.guava + guava + + + + + + + + maven-dependency-plugin + + + create-mrapp-generated-classpath + generate-test-resources + + build-classpath + + + + ${project.build.directory}/test-classes/mrapp-generated-classpath + + + + + + + + + diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/AdminAuthorizedServlet.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/AdminAuthorizedServlet.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/AdminAuthorizedServlet.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/AdminAuthorizedServlet.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/ClickjackingPreventionFilter.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ClickjackingPreventionFilter.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/ClickjackingPreventionFilter.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/ClickjackingPreventionFilter.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/FilterContainer.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/FilterContainer.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/FilterContainer.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/FilterContainer.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/FilterInitializer.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/FilterInitializer.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/FilterInitializer.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/FilterInitializer.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HtmlQuoting.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HtmlQuoting.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/HtmlQuoting.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/HtmlQuoting.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpConfig.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpConfig.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpConfig.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpConfig.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLog.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLog.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLog.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLog.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLogAppender.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLogAppender.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLogAppender.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLogAppender.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HttpServerUtil.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServerUtil.java similarity index 98% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/util/HttpServerUtil.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServerUtil.java index 59c6ad6a72..0b33fd124c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HttpServerUtil.java +++ b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServerUtil.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.hadoop.hbase.util; +package org.apache.hadoop.hbase.http; import org.eclipse.jetty.security.ConstraintSecurityHandler; import org.eclipse.jetty.util.security.Constraint; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/InfoServer.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/InfoServer.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/InfoServer.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/InfoServer.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/NoCacheFilter.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/NoCacheFilter.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/NoCacheFilter.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/NoCacheFilter.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/ServerConfigurationKeys.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ServerConfigurationKeys.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/ServerConfigurationKeys.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/ServerConfigurationKeys.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/conf/ConfServlet.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/conf/ConfServlet.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/conf/ConfServlet.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/conf/ConfServlet.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/jmx/JMXJsonServlet.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/jmx/JMXJsonServlet.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/jmx/JMXJsonServlet.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/jmx/JMXJsonServlet.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/jmx/package-info.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/jmx/package-info.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/jmx/package-info.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/jmx/package-info.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/lib/StaticUserWebFilter.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/lib/StaticUserWebFilter.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/lib/StaticUserWebFilter.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/lib/StaticUserWebFilter.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/lib/package-info.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/lib/package-info.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/lib/package-info.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/lib/package-info.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/log/LogLevel.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/log/LogLevel.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/log/LogLevel.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/log/LogLevel.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/package-info.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/package-info.java similarity index 100% rename from hbase-server/src/main/java/org/apache/hadoop/hbase/http/package-info.java rename to hbase-http/src/main/java/org/apache/hadoop/hbase/http/package-info.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestGlobalFilter.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestGlobalFilter.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestGlobalFilter.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestGlobalFilter.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHtmlQuoting.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHtmlQuoting.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHtmlQuoting.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHtmlQuoting.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLog.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLog.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLog.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLog.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLogAppender.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLogAppender.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLogAppender.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLogAppender.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHttpServer.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpServer.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHttpServer.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpServer.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHttpServerLifecycle.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpServerLifecycle.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHttpServerLifecycle.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpServerLifecycle.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHttpServerWebapps.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpServerWebapps.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestHttpServerWebapps.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpServerWebapps.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestPathFilter.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestPathFilter.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestPathFilter.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestPathFilter.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestSSLHttpServer.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestSSLHttpServer.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestSSLHttpServer.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestSSLHttpServer.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestServletFilter.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestServletFilter.java similarity index 91% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestServletFilter.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestServletFilter.java index 1d24ec21a2..32bc03ed2b 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestServletFilter.java +++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestServletFilter.java @@ -35,10 +35,11 @@ import javax.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hbase.GenericTestUtils; import org.apache.hadoop.hbase.testclassification.MiscTests; import org.apache.hadoop.hbase.testclassification.SmallTests; import org.apache.hadoop.net.NetUtils; +import org.apache.hadoop.util.StringUtils; +import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -46,7 +47,7 @@ import org.junit.experimental.categories.Category; @Category({MiscTests.class, SmallTests.class}) public class TestServletFilter extends HttpServerFunctionalTest { private static final Log LOG = LogFactory.getLog(HttpServer.class); - static volatile String uri = null; + static volatile String uri = null; /** A very simple filter which record the uri filtered. */ static public class SimpleFilter implements Filter { @@ -83,15 +84,21 @@ public class TestServletFilter extends HttpServerFunctionalTest { } } } - - + + public static void assertExceptionContains(String string, Throwable t) { + String msg = t.getMessage(); + Assert.assertTrue( + "Expected to find '" + string + "' but got unexpected exception:" + + StringUtils.stringifyException(t), msg.contains(string)); + } + /** access a url, ignoring some IOException such as the page does not exist */ static void access(String urlstring) throws IOException { LOG.warn("access " + urlstring); URL url = new URL(urlstring); URLConnection connection = url.openConnection(); connection.connect(); - + try { BufferedReader in = new BufferedReader(new InputStreamReader( connection.getInputStream())); @@ -112,7 +119,7 @@ public class TestServletFilter extends HttpServerFunctionalTest { // It's second class. Could comment it out if only failing test (as per @nkeywal – sort of) public void testServletFilter() throws Exception { Configuration conf = new Configuration(); - + //start a http server with CountingFilter conf.set(HttpServer.FILTER_INITIALIZERS_PROPERTY, SimpleFilter.Initializer.class.getName()); @@ -124,12 +131,12 @@ public class TestServletFilter extends HttpServerFunctionalTest { final String ajspURL = "/a.jsp"; final String logURL = "/logs/a.log"; final String hadooplogoURL = "/static/hadoop-logo.jpg"; - + final String[] urls = {fsckURL, stacksURL, ajspURL, logURL, hadooplogoURL}; final Random ran = new Random(); final int[] sequence = new int[50]; - //generate a random sequence and update counts + //generate a random sequence and update counts for(int i = 0; i < sequence.length; i++) { sequence[i] = ran.nextInt(urls.length); } @@ -153,7 +160,7 @@ public class TestServletFilter extends HttpServerFunctionalTest { http.stop(); } } - + static public class ErrorFilter extends SimpleFilter { @Override public void init(FilterConfig arg0) throws ServletException { @@ -183,10 +190,10 @@ public class TestServletFilter extends HttpServerFunctionalTest { http.start(); fail("expecting exception"); } catch (IOException e) { - GenericTestUtils.assertExceptionContains("Problem starting http server", e); + assertExceptionContains("Problem starting http server", e); } } - + /** * Similar to the above test case, except that it uses a different API to add the * filter. Regression test for HADOOP-8786. @@ -203,7 +210,7 @@ public class TestServletFilter extends HttpServerFunctionalTest { http.start(); fail("expecting exception"); } catch (IOException e) { - GenericTestUtils.assertExceptionContains("Unable to initialize WebAppContext", e); + assertExceptionContains("Unable to initialize WebAppContext", e); } } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestSpnegoHttpServer.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestSpnegoHttpServer.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestSpnegoHttpServer.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestSpnegoHttpServer.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/conf/TestConfServlet.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/conf/TestConfServlet.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/conf/TestConfServlet.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/conf/TestConfServlet.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/jmx/TestJMXJsonServlet.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/jmx/TestJMXJsonServlet.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/jmx/TestJMXJsonServlet.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/jmx/TestJMXJsonServlet.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/lib/TestStaticUserWebFilter.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/lib/TestStaticUserWebFilter.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/lib/TestStaticUserWebFilter.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/lib/TestStaticUserWebFilter.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/resource/JerseyResource.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/resource/JerseyResource.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/resource/JerseyResource.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/resource/JerseyResource.java diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.java similarity index 100% rename from hbase-server/src/test/java/org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.java rename to hbase-http/src/test/java/org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.java diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java index c2f6cf6a61..360ab9d5e6 100644 --- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java +++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java @@ -20,10 +20,8 @@ package org.apache.hadoop.hbase.rest; import java.lang.management.ManagementFactory; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.EnumSet; import java.util.concurrent.ArrayBlockingQueue; @@ -46,7 +44,7 @@ import org.apache.hadoop.hbase.rest.filter.GzipFilter; import org.apache.hadoop.hbase.rest.filter.RestCsrfPreventionFilter; import org.apache.hadoop.hbase.security.UserProvider; import org.apache.hadoop.hbase.util.DNS; -import org.apache.hadoop.hbase.util.HttpServerUtil; +import org.apache.hadoop.hbase.http.HttpServerUtil; import org.apache.hadoop.hbase.util.Pair; import org.apache.hadoop.hbase.util.Strings; import org.apache.hadoop.hbase.util.VersionInfo; diff --git a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.java b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.java index 0714c7bcc8..4c977fd1f7 100644 --- a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.java +++ b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.java @@ -24,7 +24,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.security.UserProvider; -import org.apache.hadoop.hbase.util.HttpServerUtil; +import org.apache.hadoop.hbase.http.HttpServerUtil; import org.apache.hadoop.util.StringUtils; import org.eclipse.jetty.server.HttpConfiguration; @@ -99,7 +99,7 @@ public class HBaseRESTTestingUtility { // get the port testServletPort = ((ServerConnector)server.getConnectors()[0]).getLocalPort(); - LOG.info("started " + server.getClass().getName() + " on port " + + LOG.info("started " + server.getClass().getName() + " on port " + testServletPort); } diff --git a/hbase-server/pom.xml b/hbase-server/pom.xml index 3a025d1b13..ea02f26efc 100644 --- a/hbase-server/pom.xml +++ b/hbase-server/pom.xml @@ -359,6 +359,16 @@ org.apache.hbase hbase-common + + org.apache.hbase + hbase-http + + + org.apache.hbase + hbase-http + test-jar + test + org.glassfish.web javax.servlet.jsp - - - org.glassfish - javax.el - org.codehaus.jettison jettison diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DumpRegionServerMetrics.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DumpRegionServerMetrics.java new file mode 100644 index 0000000000..2b07a64253 --- /dev/null +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DumpRegionServerMetrics.java @@ -0,0 +1,60 @@ +/* + * 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.hadoop.hbase.regionserver; + +import org.apache.hadoop.hbase.util.JSONBean; + +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.lang.management.ManagementFactory; +import javax.management.MBeanServer; +import javax.management.MalformedObjectNameException; +import javax.management.ObjectName; + +/** + * Utility for doing JSON and MBeans. + */ +public class DumpRegionServerMetrics { + /** + * Dump out a subset of regionserver mbeans only, not all of them, as json on System.out. + */ + public static String dumpMetrics() throws MalformedObjectNameException, IOException { + StringWriter sw = new StringWriter(1024 * 100); // Guess this size + try (PrintWriter writer = new PrintWriter(sw)) { + JSONBean dumper = new JSONBean(); + try (JSONBean.Writer jsonBeanWriter = dumper.open(writer)) { + MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer(); + jsonBeanWriter.write(mbeanServer, + new ObjectName("java.lang:type=Memory"), null, false); + jsonBeanWriter.write(mbeanServer, + new ObjectName("Hadoop:service=HBase,name=RegionServer,sub=IPC"), null, false); + jsonBeanWriter.write(mbeanServer, + new ObjectName("Hadoop:service=HBase,name=RegionServer,sub=Replication"), null, false); + jsonBeanWriter.write(mbeanServer, + new ObjectName("Hadoop:service=HBase,name=RegionServer,sub=Server"), null, false); + } + } + sw.close(); + return sw.toString(); + } + + public static void main(String[] args) throws IOException, MalformedObjectNameException { + String str = dumpMetrics(); + System.out.println(str); + } +} diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 60f4e14e79..e838e7c91b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -147,7 +147,6 @@ import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; import org.apache.hadoop.hbase.util.FSTableDescriptors; import org.apache.hadoop.hbase.util.FSUtils; import org.apache.hadoop.hbase.util.HasThread; -import org.apache.hadoop.hbase.util.JSONBean; import org.apache.hadoop.hbase.util.JvmPauseMonitor; import org.apache.hadoop.hbase.util.NettyEventLoopGroupConfig; import org.apache.hadoop.hbase.util.Pair; @@ -2347,7 +2346,7 @@ public class HRegionServer extends HasThread implements CoprocessorHost.getLoadedCoprocessors()); // Try and dump metrics if abort -- might give clue as to how fatal came about.... try { - LOG.info("Dump of metrics as JSON on abort: " + JSONBean.dumpRegionServerMetrics()); + LOG.info("Dump of metrics as JSON on abort: " + DumpRegionServerMetrics.dumpMetrics()); } catch (MalformedObjectNameException | IOException e) { LOG.warn("Failed dumping metrics", e); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/GenericTestUtils.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/GenericTestUtils.java index 2014b5b23a..08565e07af 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/GenericTestUtils.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/GenericTestUtils.java @@ -35,7 +35,6 @@ import java.util.regex.Pattern; import org.apache.commons.logging.Log; import org.apache.commons.logging.impl.Log4JLogger; import org.apache.hadoop.fs.FileUtil; -import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.util.Time; import org.apache.log4j.Layout; import org.apache.log4j.Logger; @@ -70,14 +69,14 @@ public abstract class GenericTestUtils { public static int uniqueSequenceId() { return sequence.incrementAndGet(); } - + /** * Assert that a given file exists. */ public static void assertExists(File f) { Assert.assertTrue("File " + f + " should exist", f.exists()); } - + /** * List all of the files in 'dir' that match the regex 'pattern'. * Then check that this list is identical to 'expectedMatches'. @@ -85,7 +84,7 @@ public abstract class GenericTestUtils { */ public static void assertGlobEquals(File dir, String pattern, String ... expectedMatches) throws IOException { - + Set found = Sets.newTreeSet(); for (File f : FileUtil.listFiles(dir)) { if (f.getName().matches(pattern)) { @@ -98,13 +97,6 @@ public abstract class GenericTestUtils { Joiner.on(",").join(expectedSet), Joiner.on(",").join(found)); } - - public static void assertExceptionContains(String string, Throwable t) { - String msg = t.getMessage(); - Assert.assertTrue( - "Expected to find '" + string + "' but got unexpected exception:" - + StringUtils.stringifyException(t), msg.contains(string)); - } public static void waitFor(Supplier check, int checkEveryMillis, int waitForMillis) @@ -116,26 +108,26 @@ public abstract class GenericTestUtils { if (result) { return; } - + Thread.sleep(checkEveryMillis); } while (Time.now() - st < waitForMillis); - + throw new TimeoutException("Timed out waiting for condition. " + "Thread diagnostics:\n" + TimedOutTestsListener.buildThreadDiagnosticString()); } - + public static class LogCapturer { private StringWriter sw = new StringWriter(); private WriterAppender appender; private Logger logger; - + public static LogCapturer captureLogs(Log l) { Logger logger = ((Log4JLogger)l).getLogger(); LogCapturer c = new LogCapturer(logger); return c; } - + private LogCapturer(Logger logger) { this.logger = logger; @@ -143,36 +135,36 @@ public abstract class GenericTestUtils { WriterAppender wa = new WriterAppender(layout, sw); logger.addAppender(wa); } - + public String getOutput() { return sw.toString(); } - + public void stopCapturing() { logger.removeAppender(appender); } } - - + + /** * Mockito answer helper that triggers one latch as soon as the * method is called, then waits on another before continuing. */ public static class DelayAnswer implements Answer { private final Log LOG; - + private final CountDownLatch fireLatch = new CountDownLatch(1); private final CountDownLatch waitLatch = new CountDownLatch(1); private final CountDownLatch resultLatch = new CountDownLatch(1); - + private final AtomicInteger fireCounter = new AtomicInteger(0); private final AtomicInteger resultCounter = new AtomicInteger(0); - + // Result fields set after proceed() is called. private volatile Throwable thrown; private volatile Object returnValue; - + public DelayAnswer(Log log) { this.LOG = log; } @@ -183,7 +175,7 @@ public abstract class GenericTestUtils { public void waitForCall() throws InterruptedException { fireLatch.await(); } - + /** * Tell the method to proceed. * This should only be called after waitForCall() @@ -191,7 +183,7 @@ public abstract class GenericTestUtils { public void proceed() { waitLatch.countDown(); } - + @Override public Object answer(InvocationOnMock invocation) throws Throwable { LOG.info("DelayAnswer firing fireLatch"); @@ -220,7 +212,7 @@ public abstract class GenericTestUtils { resultLatch.countDown(); } } - + /** * After calling proceed(), this will wait until the call has * completed and a result has been returned to the caller. @@ -228,7 +220,7 @@ public abstract class GenericTestUtils { public void waitForResult() throws InterruptedException { resultLatch.await(); } - + /** * After the call has gone through, return any exception that * was thrown, or null if no exception was thrown. @@ -236,7 +228,7 @@ public abstract class GenericTestUtils { public Throwable getThrown() { return thrown; } - + /** * After the call has gone through, return the call's return value, * or null in case it was void or an exception was thrown. @@ -244,20 +236,20 @@ public abstract class GenericTestUtils { public Object getReturnValue() { return returnValue; } - + public int getFireCount() { return fireCounter.get(); } - + public int getResultCount() { return resultCounter.get(); } } - + /** * An Answer implementation that simply forwards all calls through * to a delegate. - * + * * This is useful as the default Answer for a mock object, to create * something like a spy on an RPC proxy. For example: * @@ -268,14 +260,14 @@ public abstract class GenericTestUtils { * ... * */ - public static class DelegateAnswer implements Answer { + public static class DelegateAnswer implements Answer { private final Object delegate; private final Log log; - + public DelegateAnswer(Object delegate) { this(null, delegate); } - + public DelegateAnswer(Log log, Object delegate) { this.log = log; this.delegate = delegate; @@ -305,11 +297,11 @@ public abstract class GenericTestUtils { public static class SleepAnswer implements Answer { private final int maxSleepTime; private static Random r = new Random(); - + public SleepAnswer(int maxSleepTime) { this.maxSleepTime = maxSleepTime; } - + @Override public Object answer(InvocationOnMock invocation) throws Throwable { boolean interrupted = false; @@ -333,11 +325,11 @@ public abstract class GenericTestUtils { " but got:\n" + output, Pattern.compile(pattern).matcher(output).find()); } - + public static void assertValueNear(long expected, long actual, long allowedError) { assertValueWithinRange(expected - allowedError, expected + allowedError, actual); } - + public static void assertValueWithinRange(long expectedMin, long expectedMax, long actual) { Assert.assertTrue("Expected " + actual + " to be in range (" + expectedMin + "," @@ -352,7 +344,7 @@ public abstract class GenericTestUtils { public static void assertNoThreadsMatching(String regex) { Pattern pattern = Pattern.compile(regex); ThreadMXBean threadBean = ManagementFactory.getThreadMXBean(); - + ThreadInfo[] infos = threadBean.getThreadInfo(threadBean.getAllThreadIds(), 20); for (ThreadInfo info : infos) { if (info == null) continue; diff --git a/pom.xml b/pom.xml index d7cbca2766..c6794c3e6f 100755 --- a/pom.xml +++ b/pom.xml @@ -66,6 +66,7 @@ hbase-replication hbase-mapreduce hbase-resource-bundle + hbase-http hbase-server hbase-thrift hbase-shell @@ -1624,6 +1625,18 @@ org.apache.hbase ${project.version} + + hbase-http + org.apache.hbase + ${project.version} + + + hbase-http + org.apache.hbase + ${project.version} + test-jar + test + hbase-server org.apache.hbase @@ -1967,6 +1980,11 @@ jersey-client ${jersey.version} + + org.glassfish.jersey.core + jersey-server + ${jersey.version} + org.glassfish.web @@ -2028,6 +2046,11 @@ ${bouncycastle.version} test + + org.apache.kerby + kerb-core + ${kerby.version} + org.apache.kerby kerb-client -- 2.14.1