Repository: incubator-tephra Updated Branches: refs/heads/hbase12-support 288b9c866 -> aefbc0f01 (forced update)
Support for HBase v1.2 Change unit tests to accomodate multiple HBase versions in ConfigurationProviderTest Fix comment for HBase 1.1 ConfigurationProviderTest Project: http://git-wip-us.apache.org/repos/asf/incubator-tephra/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tephra/commit/aefbc0f0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tephra/tree/aefbc0f0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tephra/diff/aefbc0f0 Branch: refs/heads/hbase12-support Commit: aefbc0f014f5f03587b8dd221e6d12d361e1fe7b Parents: 3918b8a Author: Gokul Gunasekaran <[email protected]> Authored: Thu May 12 18:49:42 2016 -0700 Committer: Gokul Gunasekaran <[email protected]> Committed: Fri May 13 14:05:24 2016 -0700 ---------------------------------------------------------------------- .../org/apache/tephra/util/HBaseVersion.java | 11 ++------- .../util/HBaseVersionSpecificFactory.java | 2 +- .../util/AbstractConfigurationProviderTest.java | 8 +++++-- .../apache/tephra/util/HBaseVersionTest.java | 3 +++ tephra-examples/pom.xml | 25 +++++++------------- .../apache/tephra/examples/BalanceBooks.java | 24 ++++--------------- .../tephra/examples/BalanceBooksTest.java | 5 +--- .../hbase/HBase96ConfigurationProviderTest.java | 7 ++++-- .../hbase/HBase98ConfigurationProviderTest.java | 7 ++++-- .../hbase/HBase10ConfigurationProviderTest.java | 7 ++++-- .../hbase/HBase10ConfigurationProviderTest.java | 7 ++++-- tephra-hbase-compat-1.1/pom.xml | 12 ++++++++++ .../hbase/HBase11ConfigurationProviderTest.java | 9 ++++--- 13 files changed, 63 insertions(+), 64 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-core/src/main/java/org/apache/tephra/util/HBaseVersion.java ---------------------------------------------------------------------- diff --git a/tephra-core/src/main/java/org/apache/tephra/util/HBaseVersion.java b/tephra-core/src/main/java/org/apache/tephra/util/HBaseVersion.java index 687e46d..e868c6b 100644 --- a/tephra-core/src/main/java/org/apache/tephra/util/HBaseVersion.java +++ b/tephra-core/src/main/java/org/apache/tephra/util/HBaseVersion.java @@ -51,7 +51,7 @@ public class HBaseVersion { HBASE_10("1.0"), HBASE_10_CDH("1.0-cdh"), HBASE_11("1.1"), - HBASE_12_CDH("1.2-cdh"), + HBASE_12("1.2"), UNKNOWN("unknown"); final String majorVersion; @@ -88,14 +88,7 @@ public class HBaseVersion { } else if (versionString.startsWith(HBASE_11_VERSION)) { currentVersion = Version.HBASE_11; } else if (versionString.startsWith(HBASE_12_VERSION)) { - VersionNumber ver = VersionNumber.create(versionString); - if (ver.getClassifier() != null && ver.getClassifier().startsWith(CDH_CLASSIFIER)) { - currentVersion = Version.HBASE_12_CDH; - } else { - // CDH 5.7 comes with HBase version 1.2.0-CDH5.7.0. However currently there is no - // other hadoop distribution that uses HBase 1.2, so the version is set here to UNKNOWN. - currentVersion = Version.UNKNOWN; - } + currentVersion = Version.HBASE_12; } else { currentVersion = Version.UNKNOWN; } http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-core/src/main/java/org/apache/tephra/util/HBaseVersionSpecificFactory.java ---------------------------------------------------------------------- diff --git a/tephra-core/src/main/java/org/apache/tephra/util/HBaseVersionSpecificFactory.java b/tephra-core/src/main/java/org/apache/tephra/util/HBaseVersionSpecificFactory.java index ebbbd18..9153296 100644 --- a/tephra-core/src/main/java/org/apache/tephra/util/HBaseVersionSpecificFactory.java +++ b/tephra-core/src/main/java/org/apache/tephra/util/HBaseVersionSpecificFactory.java @@ -49,7 +49,7 @@ public abstract class HBaseVersionSpecificFactory<T> implements Provider<T> { instance = createInstance(getHBase10CDHClassname()); break; case HBASE_11: - case HBASE_12_CDH: + case HBASE_12: instance = createInstance(getHBase11Classname()); break; case UNKNOWN: http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-core/src/test/java/org/apache/tephra/util/AbstractConfigurationProviderTest.java ---------------------------------------------------------------------- diff --git a/tephra-core/src/test/java/org/apache/tephra/util/AbstractConfigurationProviderTest.java b/tephra-core/src/test/java/org/apache/tephra/util/AbstractConfigurationProviderTest.java index 8526b75..5218b7d 100644 --- a/tephra-core/src/test/java/org/apache/tephra/util/AbstractConfigurationProviderTest.java +++ b/tephra-core/src/test/java/org/apache/tephra/util/AbstractConfigurationProviderTest.java @@ -21,8 +21,11 @@ package org.apache.tephra.util; import org.apache.hadoop.conf.Configuration; import org.junit.Test; +import java.util.Collection; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; /** * @@ -31,10 +34,11 @@ public abstract class AbstractConfigurationProviderTest { @Test public void testVersionFactory() { HBaseVersion.Version foundVersion = HBaseVersion.get(); - assertEquals(getExpectedVersion(), foundVersion); + assertTrue(String.format("%s was not part of the expected versions : %s", foundVersion, getExpectedVersions()), + getExpectedVersions().contains(foundVersion)); } - protected abstract HBaseVersion.Version getExpectedVersion(); + protected abstract Collection<HBaseVersion.Version> getExpectedVersions(); @Test public void testConfigurationProvider() { http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-core/src/test/java/org/apache/tephra/util/HBaseVersionTest.java ---------------------------------------------------------------------- diff --git a/tephra-core/src/test/java/org/apache/tephra/util/HBaseVersionTest.java b/tephra-core/src/test/java/org/apache/tephra/util/HBaseVersionTest.java index a2344ba..27f4032 100644 --- a/tephra-core/src/test/java/org/apache/tephra/util/HBaseVersionTest.java +++ b/tephra-core/src/test/java/org/apache/tephra/util/HBaseVersionTest.java @@ -81,6 +81,9 @@ public class HBaseVersionTest { ver = HBaseVersion.VersionNumber.create("1.2.0-CDH5.7.0"); assertVersionNumber(ver, 1, 2, 0, "CDH5.7.0", false); + + ver = HBaseVersion.VersionNumber.create("1.2.1"); + assertVersionNumber(ver, 1, 2, 1, null, false); } private void assertVersionNumber(HBaseVersion.VersionNumber version, Integer expectedMajor, Integer expectedMinor, http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-examples/pom.xml ---------------------------------------------------------------------- diff --git a/tephra-examples/pom.xml b/tephra-examples/pom.xml index af691e5..adfe03e 100644 --- a/tephra-examples/pom.xml +++ b/tephra-examples/pom.xml @@ -30,18 +30,9 @@ <name>Apache Tephra Examples</name> <properties> - <!-- HBase 1.0 only supports Hadoop 2.4 or newer --> <hadoop.version>2.6.0</hadoop.version> - <hbase10cdh.version>1.0.0-cdh5.4.2</hbase10cdh.version> + <hbase12.version>1.2.1</hbase12.version> </properties> - - <repositories> - <repository> - <id>cloudera</id> - <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> - </repository> - </repositories> - <dependencies> <dependency> @@ -56,31 +47,31 @@ </dependency> <dependency> <groupId>org.apache.tephra</groupId> - <artifactId>tephra-hbase-compat-1.0-cdh</artifactId> + <artifactId>tephra-hbase-compat-1.1</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-common</artifactId> - <version>${hbase10cdh.version}</version> + <version>${hbase12.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> - <version>${hbase10cdh.version}</version> + <version>${hbase12.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-protocol</artifactId> - <version>${hbase10cdh.version}</version> + <version>${hbase12.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> - <version>${hbase10cdh.version}</version> + <version>${hbase12.version}</version> <scope>provided</scope> </dependency> @@ -99,14 +90,14 @@ <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> - <version>${hbase10cdh.version}</version> + <version>${hbase12.version}</version> <type>test-jar</type> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-testing-util</artifactId> - <version>${hbase10cdh.version}</version> + <version>${hbase12.version}</version> <scope>test</scope> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-examples/src/main/java/org/apache/tephra/examples/BalanceBooks.java ---------------------------------------------------------------------- diff --git a/tephra-examples/src/main/java/org/apache/tephra/examples/BalanceBooks.java b/tephra-examples/src/main/java/org/apache/tephra/examples/BalanceBooks.java index e191f5c..b2fbf14 100644 --- a/tephra-examples/src/main/java/org/apache/tephra/examples/BalanceBooks.java +++ b/tephra-examples/src/main/java/org/apache/tephra/examples/BalanceBooks.java @@ -153,8 +153,8 @@ public class BalanceBooks implements Closeable { LOG.info("VERIFYING BALANCES"); context.start(); long totalBalance = 0; - ResultScanner scanner = table.getScanner(new Scan()); - try { + + try (ResultScanner scanner = table.getScanner(new Scan())) { for (Result r : scanner) { if (!r.isEmpty()) { int rowId = Bytes.toInt(r.getRow()); @@ -163,10 +163,6 @@ public class BalanceBooks implements Closeable { LOG.info("Client #{}: balance = ${}", rowId, balance); } } - } finally { - if (scanner != null) { - Closeables.closeQuietly(scanner); - } } if (totalBalance == 0) { LOG.info("PASSED!"); @@ -198,8 +194,7 @@ public class BalanceBooks implements Closeable { protected void createTableIfNotExists(Configuration conf, byte[] tableName, byte[][] columnFamilies) throws IOException { - HBaseAdmin admin = new HBaseAdmin(conf); - try { + try (HBaseAdmin admin = new HBaseAdmin(conf)) { HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(tableName)); for (byte[] family : columnFamilies) { HColumnDescriptor columnDesc = new HColumnDescriptor(family); @@ -208,14 +203,6 @@ public class BalanceBooks implements Closeable { } desc.addCoprocessor(TransactionProcessor.class.getName()); admin.createTable(desc); - } finally { - if (admin != null) { - try { - admin.close(); - } catch (IOException ioe) { - LOG.warn("Error closing HBaseAdmin", ioe); - } - } } } @@ -226,15 +213,12 @@ public class BalanceBooks implements Closeable { System.exit(1); } - BalanceBooks bb = new BalanceBooks(Integer.parseInt(args[0]), Integer.parseInt(args[1])); - try { + try (BalanceBooks bb = new BalanceBooks(Integer.parseInt(args[0]), Integer.parseInt(args[1]))) { bb.init(); bb.run(); bb.verify(); } catch (Exception e) { LOG.error("Failed during BalanceBooks run", e); - } finally { - bb.close(); } } http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-examples/src/test/java/org/apache/tephra/examples/BalanceBooksTest.java ---------------------------------------------------------------------- diff --git a/tephra-examples/src/test/java/org/apache/tephra/examples/BalanceBooksTest.java b/tephra-examples/src/test/java/org/apache/tephra/examples/BalanceBooksTest.java index d74a133..533b788 100644 --- a/tephra-examples/src/test/java/org/apache/tephra/examples/BalanceBooksTest.java +++ b/tephra-examples/src/test/java/org/apache/tephra/examples/BalanceBooksTest.java @@ -119,13 +119,10 @@ public class BalanceBooksTest { @Test public void testBalanceBooks() throws Exception { - BalanceBooks bb = new BalanceBooks(5, 100, testUtil.getConfiguration()); - try { + try (BalanceBooks bb = new BalanceBooks(5, 100, testUtil.getConfiguration())) { bb.init(); bb.run(); assertTrue(bb.verify()); - } finally { - bb.close(); } } } http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-hbase-compat-0.96/src/test/java/org/apache/tephra/hbase/HBase96ConfigurationProviderTest.java ---------------------------------------------------------------------- diff --git a/tephra-hbase-compat-0.96/src/test/java/org/apache/tephra/hbase/HBase96ConfigurationProviderTest.java b/tephra-hbase-compat-0.96/src/test/java/org/apache/tephra/hbase/HBase96ConfigurationProviderTest.java index ea1a4e3..5d07a9b 100644 --- a/tephra-hbase-compat-0.96/src/test/java/org/apache/tephra/hbase/HBase96ConfigurationProviderTest.java +++ b/tephra-hbase-compat-0.96/src/test/java/org/apache/tephra/hbase/HBase96ConfigurationProviderTest.java @@ -18,15 +18,18 @@ package org.apache.tephra.hbase; +import com.google.common.collect.ImmutableList; import org.apache.tephra.util.AbstractConfigurationProviderTest; import org.apache.tephra.util.HBaseVersion; +import java.util.Collection; + /** * Test for HBase 0.96 version specific behavior. */ public class HBase96ConfigurationProviderTest extends AbstractConfigurationProviderTest { @Override - protected HBaseVersion.Version getExpectedVersion() { - return HBaseVersion.Version.HBASE_96; + protected Collection<HBaseVersion.Version> getExpectedVersions() { + return ImmutableList.of(HBaseVersion.Version.HBASE_96); } } http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-hbase-compat-0.98/src/test/java/org/apache/tephra/hbase/HBase98ConfigurationProviderTest.java ---------------------------------------------------------------------- diff --git a/tephra-hbase-compat-0.98/src/test/java/org/apache/tephra/hbase/HBase98ConfigurationProviderTest.java b/tephra-hbase-compat-0.98/src/test/java/org/apache/tephra/hbase/HBase98ConfigurationProviderTest.java index 287fd54..02d1819 100644 --- a/tephra-hbase-compat-0.98/src/test/java/org/apache/tephra/hbase/HBase98ConfigurationProviderTest.java +++ b/tephra-hbase-compat-0.98/src/test/java/org/apache/tephra/hbase/HBase98ConfigurationProviderTest.java @@ -18,15 +18,18 @@ package org.apache.tephra.hbase; +import com.google.common.collect.ImmutableList; import org.apache.tephra.util.AbstractConfigurationProviderTest; import org.apache.tephra.util.HBaseVersion; +import java.util.Collection; + /** * Test for HBase 0.98 version specific behavior. */ public class HBase98ConfigurationProviderTest extends AbstractConfigurationProviderTest { @Override - protected HBaseVersion.Version getExpectedVersion() { - return HBaseVersion.Version.HBASE_98; + protected Collection<HBaseVersion.Version> getExpectedVersions() { + return ImmutableList.of(HBaseVersion.Version.HBASE_98); } } http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-hbase-compat-1.0-cdh/src/test/java/org/apache/tephra/hbase/HBase10ConfigurationProviderTest.java ---------------------------------------------------------------------- diff --git a/tephra-hbase-compat-1.0-cdh/src/test/java/org/apache/tephra/hbase/HBase10ConfigurationProviderTest.java b/tephra-hbase-compat-1.0-cdh/src/test/java/org/apache/tephra/hbase/HBase10ConfigurationProviderTest.java index 8a7c49c..95c1593 100644 --- a/tephra-hbase-compat-1.0-cdh/src/test/java/org/apache/tephra/hbase/HBase10ConfigurationProviderTest.java +++ b/tephra-hbase-compat-1.0-cdh/src/test/java/org/apache/tephra/hbase/HBase10ConfigurationProviderTest.java @@ -18,15 +18,18 @@ package org.apache.tephra.hbase; +import com.google.common.collect.ImmutableList; import org.apache.tephra.util.AbstractConfigurationProviderTest; import org.apache.tephra.util.HBaseVersion; +import java.util.Collection; + /** * Test for HBase 1.0 (CDH) version specific behavior. */ public class HBase10ConfigurationProviderTest extends AbstractConfigurationProviderTest { @Override - protected HBaseVersion.Version getExpectedVersion() { - return HBaseVersion.Version.HBASE_10_CDH; + protected Collection<HBaseVersion.Version> getExpectedVersions() { + return ImmutableList.of(HBaseVersion.Version.HBASE_10_CDH); } } http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-hbase-compat-1.0/src/test/java/org/apache/tephra/hbase/HBase10ConfigurationProviderTest.java ---------------------------------------------------------------------- diff --git a/tephra-hbase-compat-1.0/src/test/java/org/apache/tephra/hbase/HBase10ConfigurationProviderTest.java b/tephra-hbase-compat-1.0/src/test/java/org/apache/tephra/hbase/HBase10ConfigurationProviderTest.java index 828f46c..9d1843f 100644 --- a/tephra-hbase-compat-1.0/src/test/java/org/apache/tephra/hbase/HBase10ConfigurationProviderTest.java +++ b/tephra-hbase-compat-1.0/src/test/java/org/apache/tephra/hbase/HBase10ConfigurationProviderTest.java @@ -18,15 +18,18 @@ package org.apache.tephra.hbase; +import com.google.common.collect.ImmutableList; import org.apache.tephra.util.AbstractConfigurationProviderTest; import org.apache.tephra.util.HBaseVersion; +import java.util.Collection; + /** * Test for HBase 1.0 version specific behavior. */ public class HBase10ConfigurationProviderTest extends AbstractConfigurationProviderTest { @Override - protected HBaseVersion.Version getExpectedVersion() { - return HBaseVersion.Version.HBASE_10; + protected Collection<HBaseVersion.Version> getExpectedVersions() { + return ImmutableList.of(HBaseVersion.Version.HBASE_10); } } http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-hbase-compat-1.1/pom.xml ---------------------------------------------------------------------- diff --git a/tephra-hbase-compat-1.1/pom.xml b/tephra-hbase-compat-1.1/pom.xml index 8f80947..aa73670 100644 --- a/tephra-hbase-compat-1.1/pom.xml +++ b/tephra-hbase-compat-1.1/pom.xml @@ -103,4 +103,16 @@ </dependency> </dependencies> + <profiles> + <profile> + <id>hbase1.2</id> + <properties> + <hbase11.version>1.2.1</hbase11.version> + </properties> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + </profile> + </profiles> + </project> http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/aefbc0f0/tephra-hbase-compat-1.1/src/test/java/org/apache/tephra/hbase/HBase11ConfigurationProviderTest.java ---------------------------------------------------------------------- diff --git a/tephra-hbase-compat-1.1/src/test/java/org/apache/tephra/hbase/HBase11ConfigurationProviderTest.java b/tephra-hbase-compat-1.1/src/test/java/org/apache/tephra/hbase/HBase11ConfigurationProviderTest.java index 9ebf80c..cac80ec 100644 --- a/tephra-hbase-compat-1.1/src/test/java/org/apache/tephra/hbase/HBase11ConfigurationProviderTest.java +++ b/tephra-hbase-compat-1.1/src/test/java/org/apache/tephra/hbase/HBase11ConfigurationProviderTest.java @@ -18,15 +18,18 @@ package org.apache.tephra.hbase; +import com.google.common.collect.ImmutableList; import org.apache.tephra.util.AbstractConfigurationProviderTest; import org.apache.tephra.util.HBaseVersion; +import java.util.Collection; + /** - * Test for HBase 1.1 version specific behavior. + * Test for HBase 1.1 and HBase 1.2 versions specific behavior. */ public class HBase11ConfigurationProviderTest extends AbstractConfigurationProviderTest { @Override - protected HBaseVersion.Version getExpectedVersion() { - return HBaseVersion.Version.HBASE_11; + protected Collection<HBaseVersion.Version> getExpectedVersions() { + return ImmutableList.of(HBaseVersion.Version.HBASE_11, HBaseVersion.Version.HBASE_12); } }
