PHOENIX-4404 Fix all unit tests cases(not IT)
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/37200681 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/37200681 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/37200681 Branch: refs/heads/5.x-HBase-2.0 Commit: 372006816245e683746787c1d1a7d6719c232ed3 Parents: 5b9a07d Author: Ankit Singhal <ankitsingha...@gmail.com> Authored: Mon Nov 27 18:29:01 2017 +0530 Committer: Ankit Singhal <ankitsingha...@gmail.com> Committed: Mon Nov 27 18:29:01 2017 +0530 ---------------------------------------------------------------------- .../phoenix/end2end/AggregateQueryIT.java | 2 - .../end2end/ExplainPlanWithStatsEnabledIT.java | 7 +-- .../phoenix/end2end/FlappingLocalIndexIT.java | 3 +- .../end2end/TableSnapshotReadsMapReduceIT.java | 4 +- .../phoenix/end2end/index/ImmutableIndexIT.java | 11 ++-- .../end2end/index/MutableIndexFailureIT.java | 4 +- .../end2end/index/PartialIndexRebuilderIT.java | 4 +- .../end2end/index/txn/TxWriteFailureIT.java | 6 +-- .../apache/phoenix/execute/PartialCommitIT.java | 3 +- .../SystemCatalogWALEntryFilterIT.java | 20 ++++--- .../TestPhoenixIndexRpcSchedulerFactory.java | 23 ++++++-- .../hbase/index/covered/data/IndexMemStore.java | 7 ++- .../TrackingParallelWriterIndexCommitter.java | 5 +- .../phoenix/util/PhoenixKeyValueUtil.java | 5 +- .../phoenix/execute/UnnestArrayPlanTest.java | 3 +- .../CoveredColumnIndexSpecifierBuilder.java | 7 ++- .../index/covered/data/TestIndexMemStore.java | 8 ++- .../hbase/index/write/TestIndexWriter.java | 56 ++++++++++---------- .../index/write/TestParalleIndexWriter.java | 11 ++-- .../write/TestParalleWriterIndexCommitter.java | 31 +++++------ .../index/write/TestWALRecoveryCaching.java | 6 ++- .../query/ConnectionQueryServicesImplTest.java | 2 +- .../schema/stats/StatisticsScannerTest.java | 37 ++++++++----- 23 files changed, 150 insertions(+), 115 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateQueryIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateQueryIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateQueryIT.java index cb892c6..bcfb922 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateQueryIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateQueryIT.java @@ -41,7 +41,6 @@ import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.ClusterConnection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.RegionLocator; -import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.util.ByteUtil; @@ -105,7 +104,6 @@ public class AggregateQueryIT extends BaseQueryIT { TableName tn =TableName.valueOf(tableName); admin = conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin(); - Table htable = conn.unwrap(PhoenixConnection.class).getQueryServices().getTable(tableNameBytes); Configuration configuration = conn.unwrap(PhoenixConnection.class).getQueryServices().getConfiguration(); org.apache.hadoop.hbase.client.Connection hbaseConn = ConnectionFactory.createConnection(configuration); ((ClusterConnection)hbaseConn).clearRegionCache(TableName.valueOf(tableName)); http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java index bfc6819..74f4f34 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java @@ -30,7 +30,8 @@ import java.sql.SQLException; import java.util.Collections; import java.util.List; -import org.apache.hadoop.hbase.client.HBaseAdmin; +import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.jdbc.PhoenixResultSet; @@ -867,10 +868,10 @@ public class ExplainPlanWithStatsEnabledIT extends ParallelStatsEnabledIT { createTestTable(getUrl(), ddl, null, null); try (Connection conn = DriverManager.getConnection(getUrl())) { // split such that some data for view2 resides on region of view1 - try (HBaseAdmin admin = + try (Admin admin = conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) { byte[] splitKey = Bytes.toBytes("00Dabcdetenant200B"); - admin.split(Bytes.toBytes(multiTenantTable), splitKey); + admin.split(TableName.valueOf(multiTenantTable), splitKey); } /** http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingLocalIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingLocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingLocalIndexIT.java index a5aa27e..6ebf344 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingLocalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/FlappingLocalIndexIT.java @@ -29,13 +29,14 @@ import java.util.Properties; import java.util.concurrent.CountDownLatch; import org.apache.hadoop.hbase.DoNotRetryIOException; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.coprocessor.RegionObserver; import org.apache.hadoop.hbase.util.Pair; http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java index 612bf3b..fcf89a0 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java @@ -38,8 +38,8 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.SnapshotDescription; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; -import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; @@ -200,7 +200,7 @@ public class TableSnapshotReadsMapReduceIT extends BaseUniqueNamesOwnClusterIT { // call flush to create new files in the region admin.flush(TableName.valueOf(tableName)); - List<HBaseProtos.SnapshotDescription> snapshots = admin.listSnapshots(); + List<SnapshotDescription> snapshots = admin.listSnapshots(); Assert.assertEquals(tableName, snapshots.get(0).getTable()); // upsert data after snapshot http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java index 9b06955..8894b84 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java @@ -40,13 +40,10 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import org.apache.hadoop.hbase.Cell; -import org.apache.hadoop.hbase.HBaseIOException; import org.apache.hadoop.hbase.client.Durability; import org.apache.hadoop.hbase.client.Put; -import org.apache.hadoop.hbase.coprocessor.ObserverContext; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver; -import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.Pair; import org.apache.phoenix.end2end.BaseUniqueNamesOwnClusterIT; @@ -298,11 +295,9 @@ public class ImmutableIndexIT extends BaseUniqueNamesOwnClusterIT { // used to create an index while a batch of rows are being written public static class CreateIndexRegionObserver extends SimpleRegionObserver { @Override - public void postPut(ObserverContext<RegionCoprocessorEnvironment> c, - Put put, WALEdit edit, final Durability durability) - throws HBaseIOException { - String tableName = c.getEnvironment().getRegion().getRegionInfo() - .getTable().getNameAsString(); + public void postPut(org.apache.hadoop.hbase.coprocessor.ObserverContext<RegionCoprocessorEnvironment> c, + Put put, org.apache.hadoop.hbase.wal.WALEdit edit, Durability durability) throws java.io.IOException { + String tableName = c.getEnvironment().getRegion().getRegionInfo().getTable().getNameAsString(); if (tableName.equalsIgnoreCase(TABLE_NAME) // create the index after the second batch && Bytes.startsWith(put.getRow(), Bytes.toBytes("varchar200_upsert_select"))) { http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java index 1f4526d..8c7fccf 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java @@ -148,10 +148,10 @@ public class MutableIndexFailureIT extends BaseTest { NUM_SLAVES_BASE = 4; setUpTestDriver(new ReadOnlyProps(serverProps.entrySet().iterator()), new ReadOnlyProps(clientProps.entrySet().iterator())); indexRebuildTaskRegionEnvironment = - (RegionCoprocessorEnvironment) getUtility() + getUtility() .getRSForFirstRegionInTable( PhoenixDatabaseMetaData.SYSTEM_CATALOG_HBASE_TABLE_NAME) - .getOnlineRegions(PhoenixDatabaseMetaData.SYSTEM_CATALOG_HBASE_TABLE_NAME) + .getRegions(PhoenixDatabaseMetaData.SYSTEM_CATALOG_HBASE_TABLE_NAME) .get(0).getCoprocessorHost() .findCoprocessorEnvironment(MetaDataRegionObserver.class.getName()); MetaDataRegionObserver.initRebuildIndexConnectionProps( http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java index c2ae7f2..21d1ff0 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java @@ -96,10 +96,10 @@ public class PartialIndexRebuilderIT extends BaseUniqueNamesOwnClusterIT { serverProps.put(QueryServices.INDEX_FAILURE_HANDLING_REBUILD_OVERLAP_FORWARD_TIME_ATTRIB, Long.toString(WAIT_AFTER_DISABLED)); setUpTestDriver(new ReadOnlyProps(serverProps.entrySet().iterator()), ReadOnlyProps.EMPTY_PROPS); indexRebuildTaskRegionEnvironment = - (RegionCoprocessorEnvironment) getUtility() + getUtility() .getRSForFirstRegionInTable( PhoenixDatabaseMetaData.SYSTEM_CATALOG_HBASE_TABLE_NAME) - .getOnlineRegions(PhoenixDatabaseMetaData.SYSTEM_CATALOG_HBASE_TABLE_NAME) + .getRegions(PhoenixDatabaseMetaData.SYSTEM_CATALOG_HBASE_TABLE_NAME) .get(0).getCoprocessorHost() .findCoprocessorEnvironment(MetaDataRegionObserver.class.getName()); MetaDataRegionObserver.initRebuildIndexConnectionProps( http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/TxWriteFailureIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/TxWriteFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/TxWriteFailureIT.java index ec60151..5fae9fd 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/TxWriteFailureIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/txn/TxWriteFailureIT.java @@ -33,13 +33,11 @@ import java.util.Map; import java.util.Properties; import org.apache.hadoop.hbase.DoNotRetryIOException; -import org.apache.hadoop.hbase.HBaseIOException; import org.apache.hadoop.hbase.client.Durability; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.coprocessor.ObserverContext; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver; -import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.end2end.BaseUniqueNamesOwnClusterIT; import org.apache.phoenix.hbase.index.Indexer; @@ -182,8 +180,8 @@ public class TxWriteFailureIT extends BaseUniqueNamesOwnClusterIT { public static class FailingRegionObserver extends SimpleRegionObserver { @Override - public void prePut(ObserverContext<RegionCoprocessorEnvironment> c, Put put, WALEdit edit, - final Durability durability) throws HBaseIOException { + public void prePut(org.apache.hadoop.hbase.coprocessor.ObserverContext<RegionCoprocessorEnvironment> c, Put put, + org.apache.hadoop.hbase.wal.WALEdit edit, Durability durability) throws java.io.IOException { if (shouldFailUpsert(c, put)) { // throwing anything other than instances of IOException result // in this coprocessor being unloaded http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java b/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java index 10fd7f8..2ceac55 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java @@ -33,7 +33,6 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; @@ -49,8 +48,8 @@ import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.coprocessor.ObserverContext; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver; -import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.hbase.wal.WALEdit; import org.apache.phoenix.end2end.BaseOwnClusterIT; import org.apache.phoenix.hbase.index.Indexer; import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr; http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/it/java/org/apache/phoenix/replication/SystemCatalogWALEntryFilterIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/replication/SystemCatalogWALEntryFilterIT.java b/phoenix-core/src/it/java/org/apache/phoenix/replication/SystemCatalogWALEntryFilterIT.java index 776e300..bb10ae0 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/replication/SystemCatalogWALEntryFilterIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/replication/SystemCatalogWALEntryFilterIT.java @@ -17,14 +17,23 @@ */ package org.apache.phoenix.replication; +import java.io.IOException; +import java.util.List; +import java.util.Properties; +import java.util.UUID; + import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.TableName; -import org.apache.hadoop.hbase.client.*; +import org.apache.hadoop.hbase.client.Connection; +import org.apache.hadoop.hbase.client.ConnectionFactory; +import org.apache.hadoop.hbase.client.Get; +import org.apache.hadoop.hbase.client.Result; +import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; -import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.wal.WAL; +import org.apache.hadoop.hbase.wal.WALEdit; import org.apache.hadoop.hbase.wal.WALKey; import org.apache.phoenix.end2end.ParallelStatsDisabledIT; import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData; @@ -39,11 +48,6 @@ import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; -import java.io.IOException; -import java.util.List; -import java.util.Properties; -import java.util.UUID; - public class SystemCatalogWALEntryFilterIT extends ParallelStatsDisabledIT { @@ -112,7 +116,7 @@ public class SystemCatalogWALEntryFilterIT extends ParallelStatsDisabledIT { public void testOtherTablesAutoPass() throws Exception { //Cell is nonsense but we should auto pass because the table name's not System.Catalog WAL.Entry entry = new WAL.Entry(new WALKey(REGION, - TableName.valueOf(TestUtil.ENTITY_HISTORY_TABLE_NAME)), new WALEdit()); + TableName.valueOf(TestUtil.ENTITY_HISTORY_TABLE_NAME), System.currentTimeMillis()), new WALEdit()); entry.getEdit().add(CellUtil.createCell(Bytes.toBytes("foo"))); SystemCatalogWALEntryFilter filter = new SystemCatalogWALEntryFilter(); Assert.assertEquals(1, filter.filter(entry).getEdit().size()); http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/it/java/org/apache/phoenix/rpc/TestPhoenixIndexRpcSchedulerFactory.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/rpc/TestPhoenixIndexRpcSchedulerFactory.java b/phoenix-core/src/it/java/org/apache/phoenix/rpc/TestPhoenixIndexRpcSchedulerFactory.java index fb29985..cc3c1d0 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/rpc/TestPhoenixIndexRpcSchedulerFactory.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/rpc/TestPhoenixIndexRpcSchedulerFactory.java @@ -19,6 +19,7 @@ package org.apache.phoenix.rpc; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Abortable; +import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.ipc.BalancedQueueRpcExecutor; import org.apache.hadoop.hbase.ipc.PhoenixRpcScheduler; import org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory; @@ -28,11 +29,13 @@ import org.apache.hadoop.hbase.ipc.RpcScheduler; import org.mockito.Mockito; public class TestPhoenixIndexRpcSchedulerFactory extends PhoenixRpcSchedulerFactory { - + private static Abortable abortable = new AbortServer(); + private static final Configuration conf = HBaseConfiguration.create(); + private static PriorityFunction qosFunction = Mockito.mock(PriorityFunction.class); private static RpcExecutor indexRpcExecutor = Mockito.spy(new BalancedQueueRpcExecutor("test-index-queue", 30, 1, - 300)); + qosFunction,conf,abortable)); private static RpcExecutor metadataRpcExecutor = Mockito.spy(new BalancedQueueRpcExecutor("test-metataqueue", 30, - 1, 300)); + 1, qosFunction,conf,abortable)); @Override public RpcScheduler create(Configuration conf, PriorityFunction priorityFunction, Abortable abortable) { @@ -47,6 +50,20 @@ public class TestPhoenixIndexRpcSchedulerFactory extends PhoenixRpcSchedulerFact return create(configuration, priorityFunction, null); } + private static class AbortServer implements Abortable { + private boolean aborted = false; + + @Override + public void abort(String why, Throwable e) { + aborted = true; + } + + @Override + public boolean isAborted() { + return aborted; + } + } + public static RpcExecutor getIndexRpcExecutor() { return indexRpcExecutor; } http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/data/IndexMemStore.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/data/IndexMemStore.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/data/IndexMemStore.java index dfd3774..8247496 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/data/IndexMemStore.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/data/IndexMemStore.java @@ -79,7 +79,12 @@ public class IndexMemStore implements KeyValueStore { private CellComparator comparator; public IndexMemStore() { - this(CellComparatorImpl.COMPARATOR); + this(new CellComparatorImpl(){ + @Override + public int compare(Cell a, Cell b) { + return super.compare(a, b, true); + } + }); } /** http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/TrackingParallelWriterIndexCommitter.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/TrackingParallelWriterIndexCommitter.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/TrackingParallelWriterIndexCommitter.java index cf8279a..5fb8b1c 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/TrackingParallelWriterIndexCommitter.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/TrackingParallelWriterIndexCommitter.java @@ -189,8 +189,9 @@ public class TrackingParallelWriterIndexCommitter implements IndexCommitter { } private void throwFailureIfDone() throws SingleIndexWriteFailureException { - if (stopped.isStopped() || env.getConnection() == null || env.getConnection().isClosed() - || env.getConnection().isAborted() + if (stopped.isStopped() + || (env != null && (env.getConnection() == null || env.getConnection().isClosed() + || env.getConnection().isAborted())) || Thread.currentThread().isInterrupted()) { throw new SingleIndexWriteFailureException( "Pool closed, not attempting to write to the index!", null); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixKeyValueUtil.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixKeyValueUtil.java b/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixKeyValueUtil.java index e49865e..ed4104b 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixKeyValueUtil.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixKeyValueUtil.java @@ -25,6 +25,7 @@ import java.util.Map; import java.util.Map.Entry; import org.apache.hadoop.hbase.Cell; +import org.apache.hadoop.hbase.CellBuilder; import org.apache.hadoop.hbase.CellBuilder.DataType; import org.apache.hadoop.hbase.CellBuilderFactory; import org.apache.hadoop.hbase.CellBuilderType; @@ -76,11 +77,11 @@ public class PhoenixKeyValueUtil { public static Cell newKeyValue(byte[] key, int keyOffset, int keyLength, byte[] cf, int cfOffset, int cfLength, byte[] cq, int cqOffset, int cqLength, long ts, byte[] value, - int valueOffset, int valueLength) { + int valueOffset, int valueLength,CellBuilder.DataType type) { return CellBuilderFactory.create(CellBuilderType.DEEP_COPY) .setRow(key, keyOffset, keyLength).setFamily(cf, cfOffset, cfLength) .setQualifier(cq, cqOffset, cqLength).setTimestamp(ts) - .setValue(value, valueOffset, valueLength).build(); + .setValue(value, valueOffset, valueLength).setType(type).build(); } public static Cell newKeyValue(byte[] key, byte[] cf, byte[] cq, long ts, byte[] value) { http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/test/java/org/apache/phoenix/execute/UnnestArrayPlanTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/execute/UnnestArrayPlanTest.java b/phoenix-core/src/test/java/org/apache/phoenix/execute/UnnestArrayPlanTest.java index 5383d9b..f2d9c03 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/execute/UnnestArrayPlanTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/execute/UnnestArrayPlanTest.java @@ -31,6 +31,7 @@ import java.sql.SQLException; import java.util.Arrays; import java.util.List; +import org.apache.hadoop.hbase.CellBuilder; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.phoenix.compile.ColumnResolver; @@ -159,7 +160,7 @@ public class UnnestArrayPlanTest { for (Object[] array : arrays) { PhoenixArray pArray = new PhoenixArray(baseType, array); byte[] bytes = arrayType.toBytes(pArray); - tuples.add(new SingleKeyValueTuple(PhoenixKeyValueUtil.newKeyValue(bytes, 0, bytes.length, bytes, 0, 0, bytes, 0, 0, 0, bytes, 0, 0))); + tuples.add(new SingleKeyValueTuple(PhoenixKeyValueUtil.newKeyValue(bytes, 0, bytes.length, bytes, 0, 0, bytes, 0, 0, 0, bytes, 0, 0,CellBuilder.DataType.Put))); } return tuples; http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/covered/CoveredColumnIndexSpecifierBuilder.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/covered/CoveredColumnIndexSpecifierBuilder.java b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/covered/CoveredColumnIndexSpecifierBuilder.java index 6494db2..6a54b93 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/covered/CoveredColumnIndexSpecifierBuilder.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/covered/CoveredColumnIndexSpecifierBuilder.java @@ -28,10 +28,11 @@ import java.util.Map; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Coprocessor; import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.phoenix.hbase.index.Indexer; /** - * Helper to build the configuration for the {@link NonTxIndexBuilder}. + * Helper to build the configuration for the {@link NonTxIndexker}. * <p> * This class is NOT thread-safe; all concurrent access must be managed externally. */ @@ -135,7 +136,9 @@ public class CoveredColumnIndexSpecifierBuilder { // add the codec for the index to the map of options Map<String, String> opts = this.convertToMap(); opts.put(NonTxIndexBuilder.CODEC_CLASS_NAME_KEY, clazz.getName()); - return Indexer.enableIndexing(desc, NonTxIndexBuilder.class, opts, Coprocessor.PRIORITY_USER); + TableDescriptorBuilder newBuilder = TableDescriptorBuilder.newBuilder(desc); + Indexer.enableIndexing(newBuilder, NonTxIndexBuilder.class, opts, Coprocessor.PRIORITY_USER); + return newBuilder.build(); } public static List<ColumnGroup> getColumns(Configuration conf) { http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/covered/data/TestIndexMemStore.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/covered/data/TestIndexMemStore.java b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/covered/data/TestIndexMemStore.java index bcd5666..0f5f995 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/covered/data/TestIndexMemStore.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/covered/data/TestIndexMemStore.java @@ -20,6 +20,7 @@ package org.apache.phoenix.hbase.index.covered.data; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellComparatorImpl; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.KeyValue.Type; @@ -38,7 +39,12 @@ public class TestIndexMemStore { @Test public void testCorrectOverwritting() throws Exception { - IndexMemStore store = new IndexMemStore(CellComparatorImpl.COMPARATOR); + IndexMemStore store = new IndexMemStore(new CellComparatorImpl(){ + @Override + public int compare(Cell a, Cell b) { + return super.compare(a, b, true); + } + }); long ts = 10; KeyValue kv = new KeyValue(row, family, qual, ts, Type.Put, val); kv.setSequenceId(2); http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestIndexWriter.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestIndexWriter.java b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestIndexWriter.java index 57e3ba1..af45dad 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestIndexWriter.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestIndexWriter.java @@ -39,6 +39,7 @@ import org.apache.hadoop.hbase.Stoppable; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Mutation; import org.apache.hadoop.hbase.client.Put; +import org.apache.hadoop.hbase.client.Row; import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; @@ -111,24 +112,23 @@ public class TestIndexWriter { Table table = Mockito.mock(Table.class); final boolean[] completed = new boolean[] { false }; - Mockito.when(table.batch(Mockito.anyList(), Mockito.anyList())).thenAnswer(new Answer<Void>() { - - @Override - public Void answer(InvocationOnMock invocation) throws Throwable { - // just keep track that it was called - completed[0] = true; - return null; - } - }); + Mockito.doAnswer(new Answer<Void>() { + @Override + public Void answer(InvocationOnMock invocation) throws Throwable { + // just keep track that it was called + completed[0] = true; + return null; + } + }).when(table).batch(Mockito.anyList(), Mockito.any()); Mockito.when(table.getName()).thenReturn(TableName.valueOf(testName.getTableName())); // add the table to the set of tables, so its returned to the writer tables.put(new ImmutableBytesPtr(tableName), table); // setup the writer and failure policy TrackingParallelWriterIndexCommitter committer = new TrackingParallelWriterIndexCommitter(VersionInfo.getVersion()); - committer.setup(factory, exec, abort, stop, e); + committer.setup(factory, exec, stop, e); KillServerOnFailurePolicy policy = new KillServerOnFailurePolicy(); - policy.setup(stop, abort); + policy.setup(stop, e); IndexWriter writer = new IndexWriter(committer, policy); writer.write(indexUpdates); assertTrue("Writer returned before the table batch completed! Likely a race condition tripped", @@ -163,21 +163,21 @@ public class TestIndexWriter { final CountDownLatch writeStartedLatch = new CountDownLatch(1); // latch never gets counted down, so we wait forever final CountDownLatch waitOnAbortedLatch = new CountDownLatch(1); - Mockito.when(table.batch(Mockito.anyList())).thenAnswer(new Answer<Void>() { - @Override - public Void answer(InvocationOnMock invocation) throws Throwable { - LOG.info("Write started"); - writeStartedLatch.countDown(); - // when we interrupt the thread for shutdown, we should see this throw an interrupt too - try { - waitOnAbortedLatch.await(); - } catch (InterruptedException e) { - LOG.info("Correctly interrupted while writing!"); - throw e; - } - return null; - } - }); + Mockito.doAnswer(new Answer<Void>() { + @Override + public Void answer(InvocationOnMock invocation) throws Throwable { + LOG.info("Write started"); + writeStartedLatch.countDown(); + // when we interrupt the thread for shutdown, we should see this throw an interrupt too + try { + waitOnAbortedLatch.await(); + } catch (InterruptedException e) { + LOG.info("Correctly interrupted while writing!"); + throw e; + } + return null; + } + }).when(table).batch(Mockito.anyListOf(Row.class), Mockito.any()); // add the tables to the set of tables, so its returned to the writer tables.put(new ImmutableBytesPtr(tableName), table); @@ -189,9 +189,9 @@ public class TestIndexWriter { // setup the writer TrackingParallelWriterIndexCommitter committer = new TrackingParallelWriterIndexCommitter(VersionInfo.getVersion()); - committer.setup(factory, exec, abort, stop, e ); + committer.setup(factory, exec, stop, e ); KillServerOnFailurePolicy policy = new KillServerOnFailurePolicy(); - policy.setup(stop, abort); + policy.setup(stop, e); final IndexWriter writer = new IndexWriter(committer, policy); final boolean[] failedWrite = new boolean[] { false }; http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleIndexWriter.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleIndexWriter.java b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleIndexWriter.java index 1fe0342..cc185ce 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleIndexWriter.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleIndexWriter.java @@ -67,15 +67,14 @@ public class TestParalleIndexWriter { FakeTableFactory factory = new FakeTableFactory( Collections.<ImmutableBytesPtr, Table> emptyMap()); TrackingParallelWriterIndexCommitter writer = new TrackingParallelWriterIndexCommitter(VersionInfo.getVersion()); - Abortable mockAbort = Mockito.mock(Abortable.class); Stoppable mockStop = Mockito.mock(Stoppable.class); // create a simple writer - writer.setup(factory, exec, mockAbort, mockStop,e); + writer.setup(factory, exec, mockStop,e); // stop the writer writer.stop(this.test.getTableNameString() + " finished"); assertTrue("Factory didn't get shutdown after writer#stop!", factory.shutdown); assertTrue("ExectorService isn't terminated after writer#stop!", exec.isShutdown()); - Mockito.verifyZeroInteractions(mockAbort, mockStop); + Mockito.verifyZeroInteractions(mockStop); } @SuppressWarnings({ "unchecked", "deprecation" }) @@ -102,7 +101,7 @@ public class TestParalleIndexWriter { Table table = Mockito.mock(Table.class); final boolean[] completed = new boolean[] { false }; - Mockito.when(table.batch(Mockito.anyList())).thenAnswer(new Answer<Void>() { + Mockito.doAnswer(new Answer<Void>() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { @@ -110,14 +109,14 @@ public class TestParalleIndexWriter { completed[0] = true; return null; } - }); + }).when(table).batch(Mockito.anyList(),Mockito.any()); Mockito.when(table.getName()).thenReturn(org.apache.hadoop.hbase.TableName.valueOf(test.getTableName())); // add the table to the set of tables, so its returned to the writer tables.put(tableName, table); // setup the writer and failure policy TrackingParallelWriterIndexCommitter writer = new TrackingParallelWriterIndexCommitter(VersionInfo.getVersion()); - writer.setup(factory, exec, abort, stop, e); + writer.setup(factory, exec, stop, e); writer.write(indexUpdates, true); assertTrue("Writer returned before the table batch completed! Likely a race condition tripped", completed[0]); http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleWriterIndexCommitter.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleWriterIndexCommitter.java b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleWriterIndexCommitter.java index 79bc295..d8dde82 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleWriterIndexCommitter.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestParalleWriterIndexCommitter.java @@ -29,7 +29,6 @@ import java.util.concurrent.Executors; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hbase.Abortable; import org.apache.hadoop.hbase.Stoppable; import org.apache.hadoop.hbase.client.Mutation; import org.apache.hadoop.hbase.client.Put; @@ -38,7 +37,6 @@ import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.VersionInfo; import org.apache.phoenix.hbase.index.IndexTableName; -import org.apache.phoenix.hbase.index.StubAbortable; import org.apache.phoenix.hbase.index.table.HTableInterfaceReference; import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr; import org.junit.Rule; @@ -63,27 +61,25 @@ public class TestParalleWriterIndexCommitter { FakeTableFactory factory = new FakeTableFactory( Collections.<ImmutableBytesPtr, Table> emptyMap()); TrackingParallelWriterIndexCommitter writer = new TrackingParallelWriterIndexCommitter(VersionInfo.getVersion()); - Abortable mockAbort = Mockito.mock(Abortable.class); Stoppable mockStop = Mockito.mock(Stoppable.class); RegionCoprocessorEnvironment e =Mockito.mock(RegionCoprocessorEnvironment.class); Configuration conf =new Configuration(); Mockito.when(e.getConfiguration()).thenReturn(conf); Mockito.when(e.getSharedData()).thenReturn(new ConcurrentHashMap<String,Object>()); // create a simple writer - writer.setup(factory, exec, mockAbort, mockStop, e); + writer.setup(factory, exec, mockStop, e); // stop the writer writer.stop(this.test.getTableNameString() + " finished"); assertTrue("Factory didn't get shutdown after writer#stop!", factory.shutdown); assertTrue("ExectorService isn't terminated after writer#stop!", exec.isShutdown()); - Mockito.verifyZeroInteractions(mockAbort, mockStop); + Mockito.verifyZeroInteractions(mockStop); } - @SuppressWarnings({ "unchecked", "deprecation" }) + @SuppressWarnings({ "unchecked"}) @Test public void testSynchronouslyCompletesAllWrites() throws Exception { LOG.info("Starting " + test.getTableNameString()); LOG.info("Current thread is interrupted: " + Thread.interrupted()); - Abortable abort = new StubAbortable(); RegionCoprocessorEnvironment e =Mockito.mock(RegionCoprocessorEnvironment.class); Configuration conf =new Configuration(); Mockito.when(e.getConfiguration()).thenReturn(conf); @@ -103,22 +99,21 @@ public class TestParalleWriterIndexCommitter { Table table = Mockito.mock(Table.class); final boolean[] completed = new boolean[] { false }; - Mockito.when(table.batch(Mockito.anyList())).thenAnswer(new Answer<Void>() { - - @Override - public Void answer(InvocationOnMock invocation) throws Throwable { - // just keep track that it was called - completed[0] = true; - return null; - } - }); - Mockito.when(table.getName()).thenReturn(org.apache.hadoop.hbase.TableName.valueOf(test.getTableName())); + Mockito.doAnswer(new Answer<Void>() { + @Override + public Void answer(InvocationOnMock invocation) throws Throwable { + // just keep track that it was called + completed[0] = true; + return null; + } + }).when(table).batch(Mockito.anyList(), Mockito.any()); + Mockito.when(table.getName()).thenReturn(org.apache.hadoop.hbase.TableName.valueOf(test.getTableName())); // add the table to the set of tables, so its returned to the writer tables.put(tableName, table); // setup the writer and failure policy TrackingParallelWriterIndexCommitter writer = new TrackingParallelWriterIndexCommitter(VersionInfo.getVersion()); - writer.setup(factory, exec, abort, stop, e); + writer.setup(factory, exec, stop, e); writer.write(indexUpdates, true); assertTrue("Writer returned before the table batch completed! Likely a race condition tripped", completed[0]); http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestWALRecoveryCaching.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestWALRecoveryCaching.java b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestWALRecoveryCaching.java index 1ace4c5..f6dd85c 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestWALRecoveryCaching.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/hbase/index/write/TestWALRecoveryCaching.java @@ -47,9 +47,11 @@ import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.coprocessor.RegionObserver; -import org.apache.hadoop.hbase.protobuf.ProtobufUtil; +import org.apache.hadoop.hbase.regionserver.HRegion; import org.apache.hadoop.hbase.regionserver.HRegionServer; import org.apache.hadoop.hbase.regionserver.Region; import org.apache.hadoop.hbase.util.Bytes; @@ -203,7 +205,7 @@ public class TestWALRecoveryCaching { // kill the server where the tables live - this should trigger distributed log splitting // find the regionserver that matches the passed server - List<Region> online = new ArrayList<Region>(); + List<HRegion> online = new ArrayList<HRegion>(); online.addAll(getRegionsFromServerForTable(util.getMiniHBaseCluster(), shared, testTable.getTableName())); online.addAll(getRegionsFromServerForTable(util.getMiniHBaseCluster(), shared, http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionQueryServicesImplTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionQueryServicesImplTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionQueryServicesImplTest.java index 0570826..8a2e2b7 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionQueryServicesImplTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionQueryServicesImplTest.java @@ -49,7 +49,7 @@ public class ConnectionQueryServicesImplTest { when(cqs.createSchema(any(List.class), anyString())).thenCallRealMethod(); doCallRealMethod().when(cqs).ensureSystemTablesMigratedToSystemNamespace(any(ReadOnlyProps.class)); // Do nothing for this method, just check that it was invoked later - doNothing().when(cqs).createSysMutexTable(any(HBaseAdmin.class), any(ReadOnlyProps.class)); + doNothing().when(cqs).createSysMutexTable(any(Admin.class), any(ReadOnlyProps.class)); // Spoof out this call so that ensureSystemTablesUpgrade() will return-fast. when(cqs.getSystemTableNames(any(Admin.class))).thenReturn(Collections.<TableName> emptyList()); http://git-wip-us.apache.org/repos/asf/phoenix/blob/37200681/phoenix-core/src/test/java/org/apache/phoenix/schema/stats/StatisticsScannerTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/schema/stats/StatisticsScannerTest.java b/phoenix-core/src/test/java/org/apache/phoenix/schema/stats/StatisticsScannerTest.java index 177aff3..7ccaa8e 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/schema/stats/StatisticsScannerTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/schema/stats/StatisticsScannerTest.java @@ -28,7 +28,9 @@ import java.io.IOException; import java.util.List; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.RegionInfo; +import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.regionserver.InternalScanner; import org.apache.hadoop.hbase.regionserver.Region; import org.apache.hadoop.hbase.regionserver.RegionServerServices; @@ -37,6 +39,7 @@ import org.apache.phoenix.schema.stats.StatisticsScanner.StatisticsScannerCallab import org.junit.Before; import org.junit.Test; + /** * Test to verify that we don't try to update stats when a RS is stopping. */ @@ -53,6 +56,8 @@ public class StatisticsScannerTest { private RegionInfo regionInfo; private Configuration config; + private RegionCoprocessorEnvironment env; + private Connection conn; @Before public void setupMocks() throws Exception { @@ -68,6 +73,8 @@ public class StatisticsScannerTest { this.tracker = mock(StatisticsCollector.class); this.delegate = mock(InternalScanner.class); this.regionInfo = mock(RegionInfo.class); + this.env = mock(RegionCoprocessorEnvironment.class); + this.conn = mock(Connection.class); // Wire up the mocks to the mock StatisticsScanner when(mockScanner.getStatisticsWriter()).thenReturn(statsWriter); @@ -77,6 +84,8 @@ public class StatisticsScannerTest { when(mockScanner.getConfig()).thenReturn(config); when(mockScanner.getTracker()).thenReturn(tracker); when(mockScanner.getDelegate()).thenReturn(delegate); + when(env.getConnection()).thenReturn(conn); + when(mockScanner.getConnection()).thenReturn(conn); // Wire up the HRegionInfo mock to the Region mock when(region.getRegionInfo()).thenReturn(regionInfo); @@ -87,25 +96,25 @@ public class StatisticsScannerTest { @Test public void testCheckRegionServerStoppingOnClose() throws Exception { - when(rsServices.isStopping()).thenReturn(true); - when(rsServices.isStopped()).thenReturn(false); + when(conn.isClosed()).thenReturn(true); + when(conn.isAborted()).thenReturn(false); mockScanner.close(); - verify(rsServices).isStopping(); + verify(conn).isClosed(); verify(callable, never()).call(); verify(runTracker, never()).runTask(callable); } @Test public void testCheckRegionServerStoppedOnClose() throws Exception { - when(rsServices.isStopping()).thenReturn(false); - when(rsServices.isStopped()).thenReturn(true); + when(conn.isClosed()).thenReturn(false); + when(conn.isAborted()).thenReturn(true); mockScanner.close(); - verify(rsServices).isStopping(); - verify(rsServices).isStopped(); + verify(conn).isClosed(); + verify(conn).isAborted(); verify(callable, never()).call(); verify(runTracker, never()).runTask(callable); } @@ -116,13 +125,13 @@ public class StatisticsScannerTest { StatisticsScannerCallable realCallable = mockScanner.new StatisticsScannerCallable(); doThrow(new IOException()).when(statsWriter).deleteStatsForRegion(any(Region.class), any(StatisticsCollector.class), any(ImmutableBytesPtr.class), any(List.class)); - when(rsServices.isStopping()).thenReturn(true); - when(rsServices.isStopped()).thenReturn(false); + when(conn.isClosed()).thenReturn(true); + when(conn.isAborted()).thenReturn(false); // Should not throw an exception realCallable.call(); - verify(rsServices).isStopping(); + verify(conn).isClosed(); } @SuppressWarnings("unchecked") @@ -131,13 +140,13 @@ public class StatisticsScannerTest { StatisticsScannerCallable realCallable = mockScanner.new StatisticsScannerCallable(); doThrow(new IOException()).when(statsWriter).deleteStatsForRegion(any(Region.class), any(StatisticsCollector.class), any(ImmutableBytesPtr.class), any(List.class)); - when(rsServices.isStopping()).thenReturn(false); - when(rsServices.isStopped()).thenReturn(true); + when(conn.isClosed()).thenReturn(false); + when(conn.isAborted()).thenReturn(true); // Should not throw an exception realCallable.call(); - verify(rsServices).isStopping(); - verify(rsServices).isStopped(); + verify(conn).isClosed(); + verify(conn).isAborted(); } }