@InterfaceAudience.Public @InterfaceStability.Evolving public class HBaseTestingUtility extends HBaseCommonTestingUtility
MiniHBaseCluster
, or a deployed cluster of type DistributedHBaseCluster
.
Not all methods work with the real cluster.
Depends on log4j being on classpath and
hbase-site.xml for logging and test-run configuration. It does not set
logging levels nor make changes to configuration parameters.
To preserve test data directories, pass the system property "hbase.testing.preserve.testdir" setting it to true.
Modifier and Type | Class and Description |
---|---|
static class |
HBaseTestingUtility.SeenRowTracker
A tracker for tracking and validating table rows
generated with
HBaseTestingUtility#loadTable(HTable, byte[]) |
Modifier and Type | Field and Description |
---|---|
static java.util.Collection<java.lang.Object[]> |
BLOOM_AND_COMPRESSION_COMBINATIONS |
static java.util.List<java.lang.Object[]> |
BOOLEAN_PARAMETERIZED
This is for unit tests parameterized with a two booleans.
|
static byte[][] |
COLUMNS |
static Compression.Algorithm[] |
COMPRESSION_ALGORITHMS
Compression algorithms to use in testing
|
static java.util.List<java.lang.Object[]> |
COMPRESSION_ALGORITHMS_PARAMETERIZED
Compression algorithms to use in parameterized JUnit 4 tests
|
static int |
DEFAULT_REGIONS_PER_SERVER
The default number of regions per regionserver when creating a pre-split
table.
|
static byte[] |
fam1 |
static byte[] |
fam2 |
static byte[] |
fam3 |
static char |
FIRST_CHAR |
static byte[][] |
KEYS |
static byte[][] |
KEYS_FOR_HBA_CREATE_TABLE |
static char |
LAST_CHAR |
static java.util.List<java.lang.Object[]> |
MEMSTORETS_TAGS_PARAMETRIZED
This is for unit tests parameterized with a single boolean.
|
static java.lang.String |
REGIONS_PER_SERVER_KEY |
static byte[][] |
ROWS
All the row values for the data loaded by
#loadTable(HTable, byte[]) |
static java.lang.String |
START_KEY |
static byte[] |
START_KEY_BYTES |
BASE_TEST_DIRECTORY_KEY, conf, DEFAULT_BASE_TEST_DIRECTORY, LOG
Constructor and Description |
---|
HBaseTestingUtility() |
HBaseTestingUtility(Configuration conf) |
Modifier and Type | Method and Description |
---|---|
static void |
assertKVListsEqual(java.lang.String additionalMsg,
java.util.List<? extends Cell> expected,
java.util.List<? extends Cell> actual) |
void |
assertRegionOnlyOnServer(HRegionInfo hri,
ServerName server,
long timeout)
Check to make sure the region is open on the specified
region server, but not on any other one.
|
void |
assertRegionOnServer(HRegionInfo hri,
ServerName server,
long timeout)
Due to async racing issue, a region may not be in
the online region list of a region server yet, after
the assignment znode is deleted and the new assignment
is recorded in master.
|
static boolean |
available(int port)
Checks to see if a specific port is available.
|
java.lang.String |
checksumRows(Table table)
Return an md5 digest of the entire contents of a table.
|
boolean |
cleanupDataTestDirOnTestFS()
Cleans the test data directory on the test filesystem.
|
boolean |
cleanupDataTestDirOnTestFS(java.lang.String subdirName)
Cleans a subdirectory under the test data directory on the test filesystem.
|
boolean |
cleanupTestDir() |
void |
closeRegion(byte[] regionName)
Closes the named region.
|
static void |
closeRegion(Region r)
Close the Region
r . |
void |
closeRegion(java.lang.String regionName)
Closes the named region.
|
static void |
closeRegionAndWAL(HRegion r)
Close both the HRegion
r and it's underlying WAL. |
static void |
closeRegionAndWAL(Region r)
Close both the region
r and it's underlying WAL. |
void |
closeRegionByRow(byte[] row,
RegionLocator table)
Closes the region containing the given row.
|
void |
closeRegionByRow(java.lang.String row,
RegionLocator table)
Closes the region containing the given row.
|
void |
compact(boolean major)
Compact all regions in the mini hbase cluster
|
void |
compact(TableName tableName,
boolean major)
Compact all of a table's reagion in the mini hbase cluster
|
int |
countRows(Table table)
Return the number of rows in the given table.
|
int |
countRows(Table table,
byte[]... families) |
int |
countRows(TableName tableName)
Return the number of rows in the given table.
|
int |
countRows(Table table,
Scan scan) |
static ZooKeeperWatcher |
createAndForceNodeToOpenedState(HBaseTestingUtility TEST_UTIL,
HRegion region,
ServerName serverName)
Creates a znode with OPENED state.
|
static ZooKeeperWatcher |
createAndForceNodeToOpenedState(HBaseTestingUtility TEST_UTIL,
Region region,
ServerName serverName)
Creates a znode with OPENED state.
|
HRegion |
createHRegion(HRegionInfo info,
Path rootDir,
Configuration conf,
HTableDescriptor htd)
Create an HRegion.
|
HRegion |
createLocalHRegion(byte[] tableName,
byte[] startKey,
byte[] stopKey,
java.lang.String callingMethod,
Configuration conf,
boolean isReadOnly,
Durability durability,
WAL wal,
byte[]... families) |
HRegion |
createLocalHRegion(HRegionInfo info,
HTableDescriptor desc)
Create an HRegion that writes to the local tmp dirs
|
HRegion |
createLocalHRegion(HRegionInfo info,
HTableDescriptor desc,
WAL wal)
Create an HRegion that writes to the local tmp dirs with specified wal
|
HRegion |
createLocalHRegion(HTableDescriptor desc,
byte[] startKey,
byte[] endKey)
Create an HRegion that writes to the local tmp dirs
|
static HBaseTestingUtility |
createLocalHTU()
Create an HBaseTestingUtility where all tmp files are written to the local test data dir.
|
static HBaseTestingUtility |
createLocalHTU(Configuration c)
Create an HBaseTestingUtility where all tmp files are written to the local test data dir.
|
RegionServerServices |
createMockRegionServerService()
Create a stubbed out RegionServerService, mainly for getting FS.
|
RegionServerServices |
createMockRegionServerService(RpcServerInterface rpc)
Create a stubbed out RegionServerService, mainly for getting FS.
|
RegionServerServices |
createMockRegionServerService(ServerName name)
Create a stubbed out RegionServerService, mainly for getting FS.
|
java.util.List<HRegionInfo> |
createMultiRegionsInMeta(Configuration conf,
HTableDescriptor htd,
byte[][] startKeys)
Create rows in hbase:meta for regions of the specified table with the specified
start keys.
|
HTable |
createMultiRegionTable(TableName tableName,
byte[] family)
Create a table with multiple regions.
|
HTable |
createMultiRegionTable(TableName tableName,
byte[][] families)
Create a table with multiple regions.
|
HTable |
createMultiRegionTable(TableName tableName,
byte[][] families,
int numVersions)
Create a table with multiple regions.
|
HTable |
createMultiRegionTable(TableName tableName,
byte[] family,
int numRegions)
Create a table with multiple regions.
|
static int |
createPreSplitLoadTestTable(Configuration conf,
HTableDescriptor desc,
HColumnDescriptor hcd)
Creates a pre-split table for load testing.
|
static int |
createPreSplitLoadTestTable(Configuration conf,
HTableDescriptor desc,
HColumnDescriptor[] hcds,
int numRegionsPerServer)
Creates a pre-split table for load testing.
|
static int |
createPreSplitLoadTestTable(Configuration conf,
HTableDescriptor desc,
HColumnDescriptor hcd,
int numRegionsPerServer)
Creates a pre-split table for load testing.
|
static int |
createPreSplitLoadTestTable(Configuration conf,
TableName tableName,
byte[][] columnFamilies,
Compression.Algorithm compression,
DataBlockEncoding dataBlockEncoding,
int numRegionsPerServer,
int regionReplication,
Durability durability)
Creates a pre-split table for load testing.
|
static int |
createPreSplitLoadTestTable(Configuration conf,
TableName tableName,
byte[] columnFamily,
Compression.Algorithm compression,
DataBlockEncoding dataBlockEncoding)
Creates a pre-split table for load testing.
|
static int |
createPreSplitLoadTestTable(Configuration conf,
TableName tableName,
byte[] columnFamily,
Compression.Algorithm compression,
DataBlockEncoding dataBlockEncoding,
int numRegionsPerServer,
int regionReplication,
Durability durability)
Creates a pre-split table for load testing.
|
HTable |
createRandomTable(java.lang.String tableName,
java.util.Collection<java.lang.String> families,
int maxVersions,
int numColsPerRow,
int numFlushes,
int numRegions,
int numRowsPerFlush)
Creates a random table with the given parameters
|
static HRegion |
createRegionAndWAL(HRegionInfo info,
Path rootDir,
Path walRootDir,
Configuration conf,
HTableDescriptor htd)
Create a region with it's own WAL.
|
static HRegion |
createRegionAndWAL(HRegionInfo info,
Path rootDir,
Path walRootDir,
Configuration conf,
HTableDescriptor htd,
boolean initialize)
Create a region with it's own WAL.
|
Path |
createRootDir()
Same as
createRootDir(boolean create)
except that create flag is false. |
Path |
createRootDir(boolean create)
Creates an hbase rootdir in user home directory.
|
HTable |
createTable(byte[] tableName,
byte[] family)
Create a table.
|
HTable |
createTable(byte[] tableName,
byte[][] families)
Create a table.
|
HTable |
createTable(byte[] tableName,
byte[][] families,
Configuration c)
Create a table.
|
HTable |
createTable(byte[] tableName,
byte[][] families,
Configuration c,
int numVersions)
Create a table.
|
HTable |
createTable(byte[] tableName,
byte[][] families,
int numVersions,
byte[] startKey,
byte[] endKey,
int numRegions) |
HTable |
createTable(byte[] tableName,
byte[] family,
byte[][] splitRows)
Create a table.
|
HTable |
createTable(byte[] tableName,
byte[] family,
int numVersions)
Create a table.
|
HTable |
createTable(HTableDescriptor htd,
byte[][] splitRows)
Create a table.
|
HTable |
createTable(HTableDescriptor htd,
byte[][] families,
byte[][] splitKeys,
Configuration c)
Create a table.
|
HTable |
createTable(HTableDescriptor htd,
byte[][] families,
Configuration c)
Create a table.
|
HTable |
createTable(java.lang.String tableName,
byte[][] families,
int numVersions,
byte[] startKey,
byte[] endKey,
int numRegions) |
HTable |
createTable(TableName tableName,
byte[] family)
Create a table.
|
HTable |
createTable(TableName tableName,
byte[][] families)
Create a table.
|
HTable |
createTable(TableName tableName,
byte[][] families,
byte[][] splitKeys)
Create a table.
|
HTable |
createTable(TableName tableName,
byte[][] families,
byte[][] splitKeys,
Configuration c)
Create a table.
|
HTable |
createTable(TableName tableName,
byte[][] families,
Configuration c)
Create a table.
|
HTable |
createTable(TableName tableName,
byte[][] families,
Configuration c,
int numVersions)
Create a table.
|
HTable |
createTable(TableName tableName,
byte[][] families,
int numVersions,
byte[][] splitKeys)
Create a table.
|
HTable |
createTable(TableName tableName,
byte[][] families,
int numVersions,
byte[] startKey,
byte[] endKey,
int numRegions) |
HTable |
createTable(TableName tableName,
byte[] family,
byte[][] splitRows)
Create a table.
|
HTable |
createTable(TableName tableName,
byte[] family,
int numVersions)
Create a table.
|
Table |
createTable(TableName tableName,
java.lang.String family)
Create a table.
|
Table |
createTable(TableName tableName,
java.lang.String[] families)
Create a table.
|
HTableDescriptor |
createTableDescriptor(java.lang.String name)
Create a table of name
name with COLUMNS for
families. |
HTableDescriptor |
createTableDescriptor(java.lang.String name,
int minVersions,
int versions,
int ttl,
KeepDeletedCells keepDeleted)
Create a table of name
name with COLUMNS for
families. |
HTableDescriptor |
createTableDescriptor(TableName tableName,
byte[] family) |
HTableDescriptor |
createTableDescriptor(TableName tableName,
byte[][] families,
int maxVersions) |
HRegion |
createTestRegion(java.lang.String tableName,
HColumnDescriptor hcd) |
static WAL |
createWal(Configuration conf,
Path rootDir,
Path walRootDir,
HRegionInfo hri)
Create an unmanaged WAL.
|
Path |
createWALRootDir()
Creates a hbase walDir in the user's home directory.
|
void |
deleteNumericRows(HTable t,
byte[] f,
int startRow,
int endRow) |
void |
deleteTable(byte[] tableName)
Drop an existing table
|
void |
deleteTable(java.lang.String tableName)
Drop an existing table
|
void |
deleteTable(TableName tableName)
Drop an existing table
|
HTable |
deleteTableData(byte[] tableName)
Provide an existing table name to truncate.
|
HTable |
deleteTableData(TableName tableName)
Provide an existing table name to truncate.
|
void |
deleteTableIfAny(TableName tableName)
Drop an existing table
|
void |
enableDebug(java.lang.Class<?> clazz)
Switches the logger for the given class to DEBUG level.
|
boolean |
ensureSomeNonStoppedRegionServersAvailable(int num)
Make sure that at least the specified number of region servers
are running.
|
boolean |
ensureSomeRegionServersAvailable(int num)
Make sure that at least the specified number of region servers
are running
|
void |
expireMasterSession()
Expire the Master's session
|
void |
expireRegionServerSession(int index)
Expire a region server's session
|
void |
expireSession(ZooKeeperWatcher nodeZK) |
void |
expireSession(ZooKeeperWatcher nodeZK,
boolean checkStatus)
Expire a ZooKeeper session as recommended in ZooKeeper documentation
http://wiki.apache.org/hadoop/ZooKeeper/FAQ#A4
There are issues when doing this:
[1] http://www.mail-archive.com/dev@zookeeper.apache.org/msg01942.html
[2] https://issues.apache.org/jira/browse/ZOOKEEPER-1105
|
void |
expireSession(ZooKeeperWatcher nodeZK,
Server server)
Deprecated.
|
java.lang.String |
explainTableAvailability(TableName tableName) |
java.lang.String |
explainTableState(TableName tableName) |
void |
flush()
Flushes all caches in the mini hbase cluster
|
void |
flush(TableName tableName)
Flushes all caches in the mini hbase cluster
|
static java.util.List<HColumnDescriptor> |
generateColumnDescriptors()
Create a set of column descriptors with the combination of compression,
encoding, bloom codecs available.
|
static java.util.List<HColumnDescriptor> |
generateColumnDescriptors(java.lang.String prefix)
Create a set of column descriptors with the combination of compression,
encoding, bloom codecs available.
|
static java.util.NavigableSet<java.lang.String> |
getAllOnlineRegions(MiniHBaseCluster cluster) |
java.lang.String |
getClusterKey() |
Configuration |
getConfiguration()
Returns this classes's instance of
Configuration . |
Connection |
getConnection()
Get a Connection to the cluster.
|
Path |
getDataTestDirOnTestFS()
Returns a Path in the test filesystem, obtained from
getTestFileSystem()
to write temporary test data. |
Path |
getDataTestDirOnTestFS(java.lang.String subdirName)
Returns a Path in the test filesystem, obtained from
getTestFileSystem()
to write temporary test data. |
Path |
getDefaultRootDirPath()
Same as {
getDefaultRootDirPath(boolean create)
except that create flag is false. |
Path |
getDefaultRootDirPath(boolean create)
Returns the path to the default root dir the minicluster uses.
|
MiniDFSCluster |
getDFSCluster() |
static User |
getDifferentUser(Configuration c,
java.lang.String differentiatingSuffix)
This method clones the passed
c configuration setting a new
user into the clone. |
static java.util.List<Cell> |
getFromStoreFile(HStore store,
byte[] row,
java.util.NavigableSet<byte[]> columns)
Do a small get/scan against one store.
|
static java.util.List<Cell> |
getFromStoreFile(HStore store,
Get get)
Do a small get/scan against one store.
|
HBaseAdmin |
getHBaseAdmin()
Returns a Admin instance.
|
MiniHBaseCluster |
getHBaseCluster()
Get the Mini HBase cluster.
|
HBaseCluster |
getHBaseClusterInterface()
Returns the HBaseCluster instance.
|
static int |
getMetaRSPort(Configuration conf) |
HTableDescriptor |
getMetaTableDescriptor() |
java.util.List<byte[]> |
getMetaTableRows()
Returns all rows from the hbase:meta table.
|
java.util.List<byte[]> |
getMetaTableRows(TableName tableName)
Returns all rows from the hbase:meta table for a given user table
|
MiniHBaseCluster |
getMiniHBaseCluster() |
byte[][] |
getRegionSplitStartKeys(byte[] startKey,
byte[] endKey,
int numRegions)
Create region split keys between startkey and endKey
|
HRegionServer |
getRSForFirstRegionInTable(TableName tableName)
Tool to get the reference to the region server object that holds the
region of the specified user table.
|
HRegion |
getSplittableRegion(TableName tableName,
int maxAttempts) |
static Compression.Algorithm[] |
getSupportedCompressionAlgorithms()
Get supported compression algorithms.
|
FileSystem |
getTestFileSystem() |
MiniZooKeeperCluster |
getZkCluster() |
ZooKeeperWatcher |
getZooKeeperWatcher()
Returns a ZooKeeperWatcher instance.
|
static ZooKeeperWatcher |
getZooKeeperWatcher(HBaseTestingUtility TEST_UTIL)
Gets a ZooKeeperWatcher.
|
boolean |
isReadShortCircuitOn()
Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.
|
void |
loadNumericRows(Table t,
byte[] f,
int startRow,
int endRow) |
int |
loadRegion(HRegion r,
byte[] f) |
int |
loadRegion(HRegion r,
byte[] f,
boolean flush)
Load region with rows from 'aaa' to 'zzz'.
|
int |
loadRegion(Region r,
byte[] f) |
int |
loadTable(Table t,
byte[] f)
Load table with rows from 'aaa' to 'zzz'.
|
int |
loadTable(Table t,
byte[][] f)
Load table of multiple column families with rows from 'aaa' to 'zzz'.
|
int |
loadTable(Table t,
byte[][] f,
byte[] value)
Load table of multiple column families with rows from 'aaa' to 'zzz'.
|
int |
loadTable(Table t,
byte[][] f,
byte[] value,
boolean writeToWAL)
Load table of multiple column families with rows from 'aaa' to 'zzz'.
|
int |
loadTable(Table t,
byte[] f,
boolean writeToWAL)
Load table with rows from 'aaa' to 'zzz'.
|
static void |
modifyTableSync(Admin admin,
HTableDescriptor desc)
Modify a table, synchronous.
|
void |
moveRegionAndWait(HRegionInfo destRegion,
ServerName destServer)
Move region to destination server and wait till region is completely moved and online
|
Waiter.ExplainingPredicate<java.io.IOException> |
predicateNoRegionsInTransition()
Returns a
Waiter.Predicate for checking that there are no regions in transition in master |
Waiter.Predicate<java.io.IOException> |
predicateTableAvailable(TableName tableName)
Returns a
Waiter.Predicate for checking that table is enabled |
Waiter.Predicate<java.io.IOException> |
predicateTableDisabled(TableName tableName)
Returns a
Waiter.Predicate for checking that table is enabled |
Waiter.Predicate<java.io.IOException> |
predicateTableEnabled(TableName tableName)
Returns a
Waiter.Predicate for checking that table is enabled |
static int |
randomFreePort()
Returns a random free port and marks that port as taken.
|
static java.lang.String |
randomMultiCastAddress() |
static int |
randomPort()
Returns a random port.
|
void |
restartHBaseCluster(int servers)
Starts the hbase cluster up again after shutting it down previously in a
test.
|
static <T> java.lang.String |
safeGetAsStr(java.util.List<T> lst,
int i) |
void |
setDFSCluster(MiniDFSCluster cluster) |
void |
setDFSCluster(MiniDFSCluster cluster,
boolean requireDown)
Set the MiniDFSCluster
|
void |
setFileSystemURI(java.lang.String fsURI) |
void |
setHBaseCluster(HBaseCluster hbaseCluster) |
static void |
setMaxRecoveryErrorCount(java.io.OutputStream stream,
int max)
Set maxRecoveryErrorCount in DFSClient.
|
static void |
setReplicas(Admin admin,
TableName table,
int replicaCount)
Set the number of Region replicas.
|
protected Path |
setupDataTestDir()
Home our data in a dir under
HBaseCommonTestingUtility.DEFAULT_BASE_TEST_DIRECTORY . |
MiniKdc |
setupMiniKdc(java.io.File keytabFile)
Sets up
MiniKdc for testing security. |
void |
setZkCluster(MiniZooKeeperCluster zkCluster) |
void |
shutdownMiniCluster()
Stops mini hbase, zk, and hdfs clusters.
|
void |
shutdownMiniDFSCluster()
Shuts down instance created by call to
startMiniDFSCluster(int)
or does nothing. |
void |
shutdownMiniHBaseCluster()
Shutdown HBase mini cluster.
|
void |
shutdownMiniMapReduceCluster()
Stops the previously started
MiniMRCluster . |
void |
shutdownMiniZKCluster()
Shuts down zk cluster created by call to
startMiniZKCluster(File)
or does nothing. |
MiniHBaseCluster |
startMiniCluster()
Start up a minicluster of hbase, dfs, and zookeeper.
|
MiniHBaseCluster |
startMiniCluster(boolean withWALDir)
Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.
|
MiniHBaseCluster |
startMiniCluster(int numSlaves)
Start up a minicluster of hbase, optionally dfs, and zookeeper.
|
MiniHBaseCluster |
startMiniCluster(int numSlaves,
boolean create)
Start up a minicluster of hbase, dfs, and zookeeper.
|
MiniHBaseCluster |
startMiniCluster(int numSlaves,
boolean create,
boolean withWALDir) |
MiniHBaseCluster |
startMiniCluster(int numMasters,
int numSlaves)
start minicluster
|
MiniHBaseCluster |
startMiniCluster(int numMasters,
int numSlaves,
boolean create)
Start minicluster.
|
MiniHBaseCluster |
startMiniCluster(int numMasters,
int numSlaves,
int numDataNodes)
Same as
startMiniCluster(int, int) , but with custom number of datanodes. |
MiniHBaseCluster |
startMiniCluster(int numMasters,
int numSlaves,
int numDataNodes,
java.lang.String[] dataNodeHosts,
java.lang.Class<? extends HMaster> masterClass,
java.lang.Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> regionserverClass) |
MiniHBaseCluster |
startMiniCluster(int numMasters,
int numSlaves,
int numDataNodes,
java.lang.String[] dataNodeHosts,
java.lang.Class<? extends HMaster> masterClass,
java.lang.Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> regionserverClass,
boolean create,
boolean withWALDir)
Same as
startMiniCluster(int, int, String[], Class, Class) , but with custom
number of datanodes. |
MiniHBaseCluster |
startMiniCluster(int numMasters,
int numSlaves,
java.lang.String[] dataNodeHosts)
Start up a minicluster of hbase, optionally dfs, and zookeeper.
|
MiniHBaseCluster |
startMiniCluster(int numMasters,
int numSlaves,
java.lang.String[] dataNodeHosts,
boolean create) |
MiniHBaseCluster |
startMiniCluster(int numMasters,
int numSlaves,
java.lang.String[] dataNodeHosts,
java.lang.Class<? extends HMaster> masterClass,
java.lang.Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> regionserverClass)
Start up a minicluster of hbase, optionally dfs, and zookeeper.
|
MiniDFSCluster |
startMiniDFSCluster(int servers)
Start a minidfscluster.
|
MiniDFSCluster |
startMiniDFSCluster(int servers,
java.lang.String[] hosts)
Start a minidfscluster.
|
MiniDFSCluster |
startMiniDFSCluster(int servers,
java.lang.String[] racks,
java.lang.String[] hosts) |
MiniDFSCluster |
startMiniDFSCluster(java.lang.String[] hosts)
Start a minidfscluster.
|
MiniDFSCluster |
startMiniDFSClusterForTestWAL(int namenodePort) |
MiniHBaseCluster |
startMiniHBaseCluster(int numMasters,
int numSlaves) |
MiniHBaseCluster |
startMiniHBaseCluster(int numMasters,
int numSlaves,
java.lang.Class<? extends HMaster> masterClass,
java.lang.Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> regionserverClass,
boolean create,
boolean withWALDir)
Starts up mini hbase cluster.
|
MiniMRCluster |
startMiniMapReduceCluster()
Starts a
MiniMRCluster with a default number of
TaskTracker 's. |
MiniZooKeeperCluster |
startMiniZKCluster()
Call this if you only want a zk cluster.
|
MiniZooKeeperCluster |
startMiniZKCluster(int zooKeeperServerNum,
int... clientPortList)
Call this if you only want a zk cluster.
|
HTable |
truncateTable(byte[] tableName)
Truncate a table using the admin command.
|
HTable |
truncateTable(byte[] tableName,
boolean preserveRegions)
Truncate a table using the admin command.
|
HTable |
truncateTable(TableName tableName)
Truncate a table using the admin command.
|
HTable |
truncateTable(TableName tableName,
boolean preserveRegions)
Truncate a table using the admin command.
|
void |
verifyNumericRows(HRegion region,
byte[] f,
int startRow,
int endRow) |
void |
verifyNumericRows(HRegion region,
byte[] f,
int startRow,
int endRow,
boolean present) |
void |
verifyNumericRows(Region region,
byte[] f,
int startRow,
int endRow) |
void |
verifyNumericRows(Region region,
byte[] f,
int startRow,
int endRow,
boolean present) |
void |
verifyNumericRows(Table table,
byte[] f,
int startRow,
int endRow,
int replicaId) |
<E extends java.lang.Exception> |
waitFor(long timeout,
long interval,
boolean failIfTimeout,
Waiter.Predicate<E> predicate)
Wrapper method for
Waiter.waitFor(Configuration, long, long, boolean, Predicate) . |
<E extends java.lang.Exception> |
waitFor(long timeout,
long interval,
Waiter.Predicate<E> predicate)
Wrapper method for
Waiter.waitFor(Configuration, long, long, Predicate) . |
<E extends java.lang.Exception> |
waitFor(long timeout,
Waiter.Predicate<E> predicate)
Wrapper method for
Waiter.waitFor(Configuration, long, Predicate) . |
static void |
waitForHostPort(java.lang.String host,
int port) |
void |
waitLabelAvailable(long timeoutMillis,
java.lang.String... labels)
Wait until labels is ready in VisibilityLabelsCache.
|
void |
waitTableAvailable(Admin admin,
byte[] table,
long timeoutMillis) |
void |
waitTableAvailable(byte[] table,
long timeoutMillis)
Wait until all regions in a table have been assigned
|
void |
waitTableAvailable(TableName table)
Wait until all regions in a table have been assigned.
|
void |
waitTableAvailable(TableName table,
long timeoutMillis) |
void |
waitTableDisabled(Admin admin,
byte[] table) |
void |
waitTableDisabled(Admin admin,
byte[] table,
long timeoutMillis) |
void |
waitTableDisabled(byte[] table)
Waits for a table to be 'disabled'.
|
void |
waitTableDisabled(byte[] table,
long timeoutMillis)
Waits for a table to be 'disabled'.
|
void |
waitTableEnabled(byte[] table,
long timeoutMillis)
Waits for a table to be 'enabled'.
|
void |
waitTableEnabled(TableName table)
Waits for a table to be 'enabled'.
|
void |
waitTableEnabled(TableName table,
long timeoutMillis) |
void |
waitUntilAllRegionsAssigned(TableName tableName)
Wait until all regions for a table in hbase:meta have a non-empty
info:server, up to a configuable timeout value (default is 60 seconds)
This means all regions have been deployed,
master has been informed and updated hbase:meta with the regions deployed
server.
|
void |
waitUntilAllRegionsAssigned(TableName tableName,
long timeout)
Wait until all regions for a table in hbase:meta have a non-empty
info:server, or until timeout.
|
void |
waitUntilAllSystemRegionsAssigned()
Waith until all system table's regions get assigned
|
void |
waitUntilNoRegionsInTransition(long timeout)
Wait until no regions in transition.
|
createSubDir, getDataTestDir, getDataTestDir
public static final java.lang.String REGIONS_PER_SERVER_KEY
public static final int DEFAULT_REGIONS_PER_SERVER
public static final java.util.List<java.lang.Object[]> COMPRESSION_ALGORITHMS_PARAMETERIZED
public static final java.util.List<java.lang.Object[]> BOOLEAN_PARAMETERIZED
public static final java.util.List<java.lang.Object[]> MEMSTORETS_TAGS_PARAMETRIZED
public static final Compression.Algorithm[] COMPRESSION_ALGORITHMS
public static final java.util.Collection<java.lang.Object[]> BLOOM_AND_COMPRESSION_COMBINATIONS
public static final byte[] fam1
public static final byte[] fam2
public static final byte[] fam3
public static final byte[][] COLUMNS
public static final char FIRST_CHAR
public static final char LAST_CHAR
public static final byte[] START_KEY_BYTES
public static final java.lang.String START_KEY
public static final byte[][] ROWS
#loadTable(HTable, byte[])
public static final byte[][] KEYS
public static final byte[][] KEYS_FOR_HBA_CREATE_TABLE
public HBaseTestingUtility()
public HBaseTestingUtility(Configuration conf)
public static boolean available(int port)
port
- the port number to check for availabilitypublic static HBaseTestingUtility createLocalHTU()
public static HBaseTestingUtility createLocalHTU(Configuration c)
c
- Configuration (will be modified)public static void closeRegion(Region r) throws java.io.IOException
r
. For use in tests.java.io.IOException
public Configuration getConfiguration()
Configuration
. Be careful how
you use the returned Configuration since HConnection
instances
can be shared. The Map of HConnections is keyed by the Configuration. If
say, a Connection was being used against a cluster that had been shutdown,
see shutdownMiniCluster()
, then the Connection will no longer
be wholesome. Rather than use the return direct, its usually best to
make a copy and use that. Do
Configuration c = new Configuration(INSTANCE.getConfiguration());
getConfiguration
in class HBaseCommonTestingUtility
public void setHBaseCluster(HBaseCluster hbaseCluster)
protected Path setupDataTestDir()
HBaseCommonTestingUtility.DEFAULT_BASE_TEST_DIRECTORY
.
Give it a random name so can have many concurrent tests running if
we need to. It needs to amend the TEST_DIRECTORY_KEY
System property, as it's what minidfscluster bases
it data dir on. Moding a System property is not the way to do concurrent
instances -- another instance could grab the temporary
value unintentionally -- but not anything can do about it at moment;
single instance only is how the minidfscluster works.
We also create the underlying directory for
hadoop.log.dir, mapreduce.cluster.local.dir and hadoop.tmp.dir, and set the values
in the conf, and as a system property for hadoop.tmp.dirsetupDataTestDir
in class HBaseCommonTestingUtility
public HTableDescriptor getMetaTableDescriptor()
public Path getDataTestDirOnTestFS() throws java.io.IOException
getTestFileSystem()
to write temporary test data. Call this method after setting up the mini dfs cluster
if the test relies on it.java.io.IOException
public Path getDataTestDirOnTestFS(java.lang.String subdirName) throws java.io.IOException
getTestFileSystem()
to write temporary test data. Call this method after setting up the mini dfs cluster
if the test relies on it.subdirName
- name of the subdir to create under the base test dirjava.io.IOException
public boolean cleanupDataTestDirOnTestFS() throws java.io.IOException
java.io.IOException
public boolean cleanupDataTestDirOnTestFS(java.lang.String subdirName) throws java.io.IOException
java.io.IOException
public MiniDFSCluster startMiniDFSCluster(int servers) throws java.lang.Exception
servers
- How many DNs to start.java.lang.Exception
#shutdownMiniDFSCluster()}
public MiniDFSCluster startMiniDFSCluster(java.lang.String[] hosts) throws java.lang.Exception
hosts
- hostnames DNs to run on.java.lang.Exception
#shutdownMiniDFSCluster()}
public MiniDFSCluster startMiniDFSCluster(int servers, java.lang.String[] hosts) throws java.lang.Exception
servers
- How many DNs to start.hosts
- hostnames DNs to run on.java.lang.Exception
#shutdownMiniDFSCluster()}
public MiniDFSCluster startMiniDFSCluster(int servers, java.lang.String[] racks, java.lang.String[] hosts) throws java.lang.Exception
java.lang.Exception
public MiniDFSCluster startMiniDFSClusterForTestWAL(int namenodePort) throws java.io.IOException
java.io.IOException
public boolean isReadShortCircuitOn()
public void shutdownMiniDFSCluster() throws java.io.IOException
startMiniDFSCluster(int)
or does nothing.java.io.IOException
public MiniZooKeeperCluster startMiniZKCluster() throws java.lang.Exception
java.lang.Exception
if you want zk + dfs + hbase mini cluster.
,
shutdownMiniZKCluster()
public MiniZooKeeperCluster startMiniZKCluster(int zooKeeperServerNum, int... clientPortList) throws java.lang.Exception
zooKeeperServerNum
- java.lang.Exception
if you want zk + dfs + hbase mini cluster.
,
shutdownMiniZKCluster()
public void shutdownMiniZKCluster() throws java.io.IOException
startMiniZKCluster(File)
or does nothing.java.io.IOException
startMiniZKCluster()
public MiniHBaseCluster startMiniCluster() throws java.lang.Exception
java.lang.Exception
#shutdownMiniDFSCluster()}
public MiniHBaseCluster startMiniCluster(boolean withWALDir) throws java.lang.Exception
java.lang.Exception
#shutdownMiniDFSCluster()}
public MiniHBaseCluster startMiniCluster(int numSlaves, boolean create) throws java.lang.Exception
create
flag to create root or data directory path or not
(will overwrite if dir already exists)java.lang.Exception
#shutdownMiniDFSCluster()}
public MiniHBaseCluster startMiniCluster(int numSlaves) throws java.lang.Exception
numSlaves
- Number of slaves to start up. We'll start this many
datanodes and regionservers. If numSlaves is > 1, then make sure
hbase.regionserver.info.port is -1 (i.e. no ui per regionserver) otherwise
bind errors.java.lang.Exception
#shutdownMiniCluster()}
public MiniHBaseCluster startMiniCluster(int numSlaves, boolean create, boolean withWALDir) throws java.lang.Exception
java.lang.Exception
public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, boolean create) throws java.lang.Exception
create
java.lang.Exception
#shutdownMiniCluster()}
public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves) throws java.lang.Exception
java.lang.Exception
#shutdownMiniCluster()}
public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, java.lang.String[] dataNodeHosts, boolean create) throws java.lang.Exception
java.lang.Exception
public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, java.lang.String[] dataNodeHosts) throws java.lang.Exception
numMasters
- Number of masters to start up. We'll start this many
hbase masters. If numMasters > 1, you can find the active/primary master
with MiniHBaseCluster.getMaster()
.numSlaves
- Number of slaves to start up. We'll start this many
regionservers. If dataNodeHosts == null, this also indicates the number of
datanodes to start. If dataNodeHosts != null, the number of datanodes is
based on dataNodeHosts.length.
If numSlaves is > 1, then make sure
hbase.regionserver.info.port is -1 (i.e. no ui per regionserver) otherwise
bind errors.dataNodeHosts
- hostnames DNs to run on.
This is useful if you want to run datanode on distinct hosts for things
like HDFS block location verification.
If you start MiniDFSCluster without host names,
all instances of the datanodes will have the same host name.java.lang.Exception
#shutdownMiniCluster()}
public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, int numDataNodes) throws java.lang.Exception
startMiniCluster(int, int)
, but with custom number of datanodes.numDataNodes
- Number of data nodes.java.lang.Exception
public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, java.lang.String[] dataNodeHosts, java.lang.Class<? extends HMaster> masterClass, java.lang.Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> regionserverClass) throws java.lang.Exception
numMasters
- Number of masters to start up. We'll start this many
hbase masters. If numMasters > 1, you can find the active/primary master
with MiniHBaseCluster.getMaster()
.numSlaves
- Number of slaves to start up. We'll start this many
regionservers. If dataNodeHosts == null, this also indicates the number of
datanodes to start. If dataNodeHosts != null, the number of datanodes is
based on dataNodeHosts.length.
If numSlaves is > 1, then make sure
hbase.regionserver.info.port is -1 (i.e. no ui per regionserver) otherwise
bind errors.dataNodeHosts
- hostnames DNs to run on.
This is useful if you want to run datanode on distinct hosts for things
like HDFS block location verification.
If you start MiniDFSCluster without host names,
all instances of the datanodes will have the same host name.masterClass
- The class to use as HMaster, or null for defaultregionserverClass
- The class to use as HRegionServer, or null for
defaultjava.lang.Exception
#shutdownMiniCluster()}
public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, int numDataNodes, java.lang.String[] dataNodeHosts, java.lang.Class<? extends HMaster> masterClass, java.lang.Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> regionserverClass) throws java.lang.Exception
java.lang.Exception
public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, int numDataNodes, java.lang.String[] dataNodeHosts, java.lang.Class<? extends HMaster> masterClass, java.lang.Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> regionserverClass, boolean create, boolean withWALDir) throws java.lang.Exception
startMiniCluster(int, int, String[], Class, Class)
, but with custom
number of datanodes.numDataNodes
- Number of data nodes.create
- Set this flag to create a new
root or data directory path or not (will overwrite if exists already).java.lang.Exception
public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numSlaves) throws java.io.IOException, java.lang.InterruptedException
java.io.IOException
java.lang.InterruptedException
public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numSlaves, java.lang.Class<? extends HMaster> masterClass, java.lang.Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> regionserverClass, boolean create, boolean withWALDir) throws java.io.IOException, java.lang.InterruptedException
startMiniCluster(int, int)
when doing stepped startup of clusters.
Usually you won't want this. You'll usually want startMiniCluster()
.numMasters
- numSlaves
- create
- Whether to create a
root or data directory path or not; will overwrite if exists already.java.io.IOException
java.lang.InterruptedException
#startMiniCluster()}
public void restartHBaseCluster(int servers) throws java.io.IOException, java.lang.InterruptedException
servers
- number of region serversjava.io.IOException
java.lang.InterruptedException
public MiniHBaseCluster getMiniHBaseCluster()
startMiniCluster()
.startMiniCluster()
public void shutdownMiniCluster() throws java.lang.Exception
java.io.IOException
java.lang.Exception
#startMiniCluster(int)}
public boolean cleanupTestDir() throws java.io.IOException
cleanupTestDir
in class HBaseCommonTestingUtility
java.io.IOException
public void shutdownMiniHBaseCluster() throws java.io.IOException
java.io.IOException
public Path getDefaultRootDirPath(boolean create) throws java.io.IOException
create
is true, a new root directory path is fetched irrespective of whether it has been fetched
before or not. If false, previous path is used.
Note: this does not cause the root dir to be created.java.io.IOException
public Path getDefaultRootDirPath() throws java.io.IOException
getDefaultRootDirPath(boolean create)
except that create
flag is false.
Note: this does not cause the root dir to be created.java.io.IOException
public Path createRootDir(boolean create) throws java.io.IOException
create
- This flag decides whether to get a new
root or data directory path or not, if it has been fetched already.
Note : Directory will be made irrespective of whether path has been fetched or not.
If directory already exists, it will be overwrittenjava.io.IOException
public Path createRootDir() throws java.io.IOException
createRootDir(boolean create)
except that create
flag is false.java.io.IOException
public Path createWALRootDir() throws java.io.IOException
java.io.IOException
public void flush() throws java.io.IOException
java.io.IOException
public void flush(TableName tableName) throws java.io.IOException
java.io.IOException
public void compact(boolean major) throws java.io.IOException
java.io.IOException
public void compact(TableName tableName, boolean major) throws java.io.IOException
java.io.IOException
public Table createTable(TableName tableName, java.lang.String family) throws java.io.IOException
tableName
- family
- java.io.IOException
public HTable createTable(byte[] tableName, byte[] family) throws java.io.IOException
tableName
- family
- java.io.IOException
public Table createTable(TableName tableName, java.lang.String[] families) throws java.io.IOException
tableName
- families
- java.io.IOException
public HTable createTable(TableName tableName, byte[] family) throws java.io.IOException
tableName
- family
- java.io.IOException
public HTable createMultiRegionTable(TableName tableName, byte[] family, int numRegions) throws java.io.IOException
tableName
- family
- numRegions
- java.io.IOException
public HTable createTable(byte[] tableName, byte[][] families) throws java.io.IOException
tableName
- families
- java.io.IOException
public HTable createTable(TableName tableName, byte[][] families) throws java.io.IOException
tableName
- families
- java.io.IOException
public HTable createMultiRegionTable(TableName tableName, byte[][] families) throws java.io.IOException
tableName
- families
- java.io.IOException
public HTable createTable(TableName tableName, byte[][] families, byte[][] splitKeys) throws java.io.IOException
tableName
- families
- splitKeys
- java.io.IOException
public HTable createTable(byte[] tableName, byte[][] families, int numVersions, byte[] startKey, byte[] endKey, int numRegions) throws java.io.IOException
java.io.IOException
public HTable createTable(java.lang.String tableName, byte[][] families, int numVersions, byte[] startKey, byte[] endKey, int numRegions) throws java.io.IOException
java.io.IOException
public HTable createTable(TableName tableName, byte[][] families, int numVersions, byte[] startKey, byte[] endKey, int numRegions) throws java.io.IOException
java.io.IOException
public HTable createTable(HTableDescriptor htd, byte[][] families, Configuration c) throws java.io.IOException
htd
- families
- c
- Configuration to usejava.io.IOException
public HTable createTable(HTableDescriptor htd, byte[][] families, byte[][] splitKeys, Configuration c) throws java.io.IOException
htd
- families
- splitKeys
- c
- Configuration to usejava.io.IOException
public HTable createTable(HTableDescriptor htd, byte[][] splitRows) throws java.io.IOException
htd
- splitRows
- java.io.IOException
public HTable createTable(TableName tableName, byte[][] families, Configuration c) throws java.io.IOException
tableName
- families
- c
- Configuration to usejava.io.IOException
public HTable createTable(TableName tableName, byte[][] families, byte[][] splitKeys, Configuration c) throws java.io.IOException
tableName
- families
- splitKeys
- c
- Configuration to usejava.io.IOException
public HTable createTable(byte[] tableName, byte[][] families, Configuration c) throws java.io.IOException
tableName
- families
- c
- Configuration to usejava.io.IOException
public HTable createTable(TableName tableName, byte[][] families, Configuration c, int numVersions) throws java.io.IOException
tableName
- families
- c
- Configuration to usenumVersions
- java.io.IOException
public HTable createTable(byte[] tableName, byte[][] families, Configuration c, int numVersions) throws java.io.IOException
tableName
- families
- c
- Configuration to usenumVersions
- java.io.IOException
public HTable createTable(byte[] tableName, byte[] family, int numVersions) throws java.io.IOException
tableName
- family
- numVersions
- java.io.IOException
public HTable createTable(TableName tableName, byte[] family, int numVersions) throws java.io.IOException
tableName
- family
- numVersions
- java.io.IOException
public HTable createTable(TableName tableName, byte[][] families, int numVersions, byte[][] splitKeys) throws java.io.IOException
tableName
- families
- numVersions
- splitKeys
- java.io.IOException
public HTable createMultiRegionTable(TableName tableName, byte[][] families, int numVersions) throws java.io.IOException
tableName
- families
- numVersions
- java.io.IOException
public HTable createTable(byte[] tableName, byte[] family, byte[][] splitRows) throws java.io.IOException
tableName
- family
- splitRows
- java.io.IOException
public HTable createTable(TableName tableName, byte[] family, byte[][] splitRows) throws java.io.IOException
tableName
- family
- splitRows
- java.io.IOException
public HTable createMultiRegionTable(TableName tableName, byte[] family) throws java.io.IOException
tableName
- family
- java.io.IOException
public static WAL createWal(Configuration conf, Path rootDir, Path walRootDir, HRegionInfo hri) throws java.io.IOException
java.io.IOException
public static HRegion createRegionAndWAL(HRegionInfo info, Path rootDir, Path walRootDir, Configuration conf, HTableDescriptor htd) throws java.io.IOException
closeRegionAndWAL(HRegion)
to clean up all resources.java.io.IOException
public static HRegion createRegionAndWAL(HRegionInfo info, Path rootDir, Path walRootDir, Configuration conf, HTableDescriptor htd, boolean initialize) throws java.io.IOException
closeRegionAndWAL(HRegion)
to clean up all resources.java.io.IOException
public static void closeRegionAndWAL(Region r) throws java.io.IOException
r
and it's underlying WAL. For use in tests.java.io.IOException
public static void closeRegionAndWAL(HRegion r) throws java.io.IOException
r
and it's underlying WAL. For use in tests.java.io.IOException
public static void modifyTableSync(Admin admin, HTableDescriptor desc) throws java.io.IOException, java.lang.InterruptedException
admin.rb#alter_status
.java.io.IOException
java.lang.InterruptedException
public static void setReplicas(Admin admin, TableName table, int replicaCount) throws java.io.IOException, java.lang.InterruptedException
java.io.IOException
java.lang.InterruptedException
public void deleteTable(java.lang.String tableName) throws java.io.IOException
tableName
- existing tablejava.io.IOException
public void deleteTable(byte[] tableName) throws java.io.IOException
tableName
- existing tablejava.io.IOException
public void deleteTable(TableName tableName) throws java.io.IOException
tableName
- existing tablejava.io.IOException
public void deleteTableIfAny(TableName tableName) throws java.io.IOException
tableName
- existing tablejava.io.IOException
public HTableDescriptor createTableDescriptor(java.lang.String name, int minVersions, int versions, int ttl, KeepDeletedCells keepDeleted)
name
with COLUMNS
for
families.name
- Name to give table.versions
- How many versions to allow per column.public HTableDescriptor createTableDescriptor(java.lang.String name)
name
with COLUMNS
for
families.name
- Name to give table.public HRegion createHRegion(HRegionInfo info, Path rootDir, Configuration conf, HTableDescriptor htd) throws java.io.IOException
closeRegion(Region)
when you're finished with it.java.io.IOException
public HTableDescriptor createTableDescriptor(TableName tableName, byte[] family)
public HTableDescriptor createTableDescriptor(TableName tableName, byte[][] families, int maxVersions)
public HRegion createLocalHRegion(HTableDescriptor desc, byte[] startKey, byte[] endKey) throws java.io.IOException
desc
- startKey
- endKey
- java.io.IOException
public HRegion createLocalHRegion(HRegionInfo info, HTableDescriptor desc) throws java.io.IOException
info
- desc
- java.io.IOException
public HRegion createLocalHRegion(HRegionInfo info, HTableDescriptor desc, WAL wal) throws java.io.IOException
info
- regioninfodesc
- table descriptorwal
- wal for this region.java.io.IOException
public HRegion createLocalHRegion(byte[] tableName, byte[] startKey, byte[] stopKey, java.lang.String callingMethod, Configuration conf, boolean isReadOnly, Durability durability, WAL wal, byte[]... families) throws java.io.IOException
tableName
- startKey
- stopKey
- callingMethod
- conf
- isReadOnly
- families
- HRegion.closeHRegion(HRegion)
when done.java.io.IOException
public HTable deleteTableData(byte[] tableName) throws java.io.IOException
tableName
- existing tablejava.io.IOException
public HTable deleteTableData(TableName tableName) throws java.io.IOException
tableName
- existing tablejava.io.IOException
public HTable truncateTable(TableName tableName, boolean preserveRegions) throws java.io.IOException
tableName
- table which must exist.preserveRegions
- keep the existing split pointsjava.io.IOException
public HTable truncateTable(TableName tableName) throws java.io.IOException
tableName
- table which must exist.java.io.IOException
public HTable truncateTable(byte[] tableName, boolean preserveRegions) throws java.io.IOException
tableName
- table which must exist.preserveRegions
- keep the existing split pointsjava.io.IOException
public HTable truncateTable(byte[] tableName) throws java.io.IOException
tableName
- table which must exist.java.io.IOException
public int loadTable(Table t, byte[] f) throws java.io.IOException
t
- Tablef
- Familyjava.io.IOException
public int loadTable(Table t, byte[] f, boolean writeToWAL) throws java.io.IOException
t
- Tablef
- Familyjava.io.IOException
public int loadTable(Table t, byte[][] f) throws java.io.IOException
t
- Tablef
- Array of Families to loadjava.io.IOException
public int loadTable(Table t, byte[][] f, byte[] value) throws java.io.IOException
t
- Tablef
- Array of Families to loadvalue
- the values of the cells. If null is passed, the row key is used as valuejava.io.IOException
public int loadTable(Table t, byte[][] f, byte[] value, boolean writeToWAL) throws java.io.IOException
t
- Tablef
- Array of Families to loadvalue
- the values of the cells. If null is passed, the row key is used as valuejava.io.IOException
public int loadRegion(HRegion r, byte[] f) throws java.io.IOException
java.io.IOException
public int loadRegion(Region r, byte[] f) throws java.io.IOException
java.io.IOException
public int loadRegion(HRegion r, byte[] f, boolean flush) throws java.io.IOException
r
- Regionf
- Familyflush
- flush the cache if truejava.io.IOException
public void loadNumericRows(Table t, byte[] f, int startRow, int endRow) throws java.io.IOException
java.io.IOException
public void verifyNumericRows(Table table, byte[] f, int startRow, int endRow, int replicaId) throws java.io.IOException
java.io.IOException
public void verifyNumericRows(Region region, byte[] f, int startRow, int endRow) throws java.io.IOException
java.io.IOException
public void verifyNumericRows(HRegion region, byte[] f, int startRow, int endRow) throws java.io.IOException
java.io.IOException
public void verifyNumericRows(Region region, byte[] f, int startRow, int endRow, boolean present) throws java.io.IOException
java.io.IOException
public void verifyNumericRows(HRegion region, byte[] f, int startRow, int endRow, boolean present) throws java.io.IOException
java.io.IOException
public void deleteNumericRows(HTable t, byte[] f, int startRow, int endRow) throws java.io.IOException
java.io.IOException
public int countRows(Table table) throws java.io.IOException
java.io.IOException
public int countRows(Table table, Scan scan) throws java.io.IOException
java.io.IOException
public int countRows(Table table, byte[]... families) throws java.io.IOException
java.io.IOException
public int countRows(TableName tableName) throws java.io.IOException
java.io.IOException
public java.lang.String checksumRows(Table table) throws java.lang.Exception
java.lang.Exception
public java.util.List<HRegionInfo> createMultiRegionsInMeta(Configuration conf, HTableDescriptor htd, byte[][] startKeys) throws java.io.IOException
conf
- htd
- startKeys
- java.io.IOException
public java.util.List<byte[]> getMetaTableRows() throws java.io.IOException
java.io.IOException
- When reading the rows fails.public java.util.List<byte[]> getMetaTableRows(TableName tableName) throws java.io.IOException
java.io.IOException
- When reading the rows fails.public HRegionServer getRSForFirstRegionInTable(TableName tableName) throws java.io.IOException, java.lang.InterruptedException
tableName
- user table to lookup in hbase:metajava.io.IOException
java.lang.InterruptedException
public MiniMRCluster startMiniMapReduceCluster() throws java.io.IOException
MiniMRCluster
with a default number of
TaskTracker
's.java.io.IOException
- When starting the cluster fails.public void shutdownMiniMapReduceCluster()
MiniMRCluster
.public RegionServerServices createMockRegionServerService() throws java.io.IOException
java.io.IOException
public RegionServerServices createMockRegionServerService(RpcServerInterface rpc) throws java.io.IOException
java.io.IOException
public RegionServerServices createMockRegionServerService(ServerName name) throws java.io.IOException
java.io.IOException
public void enableDebug(java.lang.Class<?> clazz)
clazz
- The class for which to switch to debug logging.public void expireMasterSession() throws java.lang.Exception
java.lang.Exception
public void expireRegionServerSession(int index) throws java.lang.Exception
index
- which RSjava.lang.Exception
public void expireSession(ZooKeeperWatcher nodeZK) throws java.lang.Exception
java.lang.Exception
@Deprecated public void expireSession(ZooKeeperWatcher nodeZK, Server server) throws java.lang.Exception
java.lang.Exception
public void expireSession(ZooKeeperWatcher nodeZK, boolean checkStatus) throws java.lang.Exception
nodeZK
- - the ZK watcher to expirecheckStatus
- - true to check if we can create an HTable with the
current configuration.java.lang.Exception
public MiniHBaseCluster getHBaseCluster()
getHBaseClusterInterface()
public HBaseCluster getHBaseClusterInterface()
Returned object can be any of the subclasses of HBaseCluster, and the
tests referring this should not assume that the cluster is a mini cluster or a
distributed one. If the test only works on a mini cluster, then specific
method getMiniHBaseCluster()
can be used instead w/o the
need to type-cast.
public Connection getConnection() throws java.io.IOException
java.io.IOException
public HBaseAdmin getHBaseAdmin() throws java.io.IOException
java.io.IOException
public ZooKeeperWatcher getZooKeeperWatcher() throws java.io.IOException
java.io.IOException
public void closeRegion(java.lang.String regionName) throws java.io.IOException
regionName
- The region to close.java.io.IOException
public void closeRegion(byte[] regionName) throws java.io.IOException
regionName
- The region to close.java.io.IOException
public void closeRegionByRow(java.lang.String row, RegionLocator table) throws java.io.IOException
row
- The row to find the containing region.table
- The table to find the region.java.io.IOException
public void closeRegionByRow(byte[] row, RegionLocator table) throws java.io.IOException
row
- The row to find the containing region.table
- The table to find the region.java.io.IOException
public MiniZooKeeperCluster getZkCluster()
public void setZkCluster(MiniZooKeeperCluster zkCluster)
public MiniDFSCluster getDFSCluster()
public void setDFSCluster(MiniDFSCluster cluster) throws java.lang.IllegalStateException, java.io.IOException
java.lang.IllegalStateException
java.io.IOException
public void setDFSCluster(MiniDFSCluster cluster, boolean requireDown) throws java.lang.IllegalStateException, java.io.IOException
cluster
- cluster to userequireDown
- require the that cluster not be "up" (MiniDFSCluster#isClusterUp) before
it is set.java.lang.IllegalStateException
- if the passed cluster is up when it is required to be downjava.io.IOException
- if the FileSystem could not be set from the passed dfs clusterpublic FileSystem getTestFileSystem() throws java.io.IOException
java.io.IOException
public void waitTableAvailable(TableName table) throws java.lang.InterruptedException, java.io.IOException
table
- Table to wait on.java.lang.InterruptedException
java.io.IOException
public void waitTableAvailable(TableName table, long timeoutMillis) throws java.lang.InterruptedException, java.io.IOException
java.lang.InterruptedException
java.io.IOException
public java.lang.String explainTableAvailability(TableName tableName) throws java.io.IOException
java.io.IOException
public java.lang.String explainTableState(TableName tableName) throws java.io.IOException
java.io.IOException
public void waitTableAvailable(byte[] table, long timeoutMillis) throws java.lang.InterruptedException, java.io.IOException
table
- Table to wait on.timeoutMillis
- Timeout.java.lang.InterruptedException
java.io.IOException
public void waitTableAvailable(Admin admin, byte[] table, long timeoutMillis) throws java.lang.InterruptedException, java.io.IOException
java.lang.InterruptedException
java.io.IOException
public void waitTableEnabled(TableName table) throws java.lang.InterruptedException, java.io.IOException
table
- Table to wait on.table
- java.lang.InterruptedException
java.io.IOException
#waitTableAvailable(byte[])
public void waitTableEnabled(byte[] table, long timeoutMillis) throws java.lang.InterruptedException, java.io.IOException
table
- Table to wait on.timeoutMillis
- Time to wait on it being marked enabled.java.lang.InterruptedException
java.io.IOException
#waitTableAvailable(byte[])
public void waitTableEnabled(TableName table, long timeoutMillis) throws java.io.IOException
java.io.IOException
public void waitTableDisabled(byte[] table) throws java.lang.InterruptedException, java.io.IOException
table
- Table to wait on.java.lang.InterruptedException
java.io.IOException
public void waitTableDisabled(Admin admin, byte[] table) throws java.lang.InterruptedException, java.io.IOException
java.lang.InterruptedException
java.io.IOException
public void waitTableDisabled(byte[] table, long timeoutMillis) throws java.lang.InterruptedException, java.io.IOException
table
- Table to wait on.timeoutMillis
- Time to wait on it being marked disabled.java.lang.InterruptedException
java.io.IOException
public void waitTableDisabled(Admin admin, byte[] table, long timeoutMillis) throws java.lang.InterruptedException, java.io.IOException
java.lang.InterruptedException
java.io.IOException
public boolean ensureSomeRegionServersAvailable(int num) throws java.io.IOException
num
- minimum number of region servers that should be runningjava.io.IOException
public boolean ensureSomeNonStoppedRegionServersAvailable(int num) throws java.io.IOException
num
- minimum number of region servers that should be runningjava.io.IOException
public static User getDifferentUser(Configuration c, java.lang.String differentiatingSuffix) throws java.io.IOException
c
configuration setting a new
user into the clone. Use it getting new instances of FileSystem. Only
works for DistributedFileSystem.c
- Initial configurationdifferentiatingSuffix
- Suffix to differentiate this user from others.java.io.IOException
public static java.util.NavigableSet<java.lang.String> getAllOnlineRegions(MiniHBaseCluster cluster) throws java.io.IOException
java.io.IOException
public static void setMaxRecoveryErrorCount(java.io.OutputStream stream, int max)
2010-06-15 11:52:28,511 WARN [DataStreamer for file /hbase/.logs/wal.1276627923013 block blk_928005470262850423_1021] hdfs.DFSClient$DFSOutputStream(2657): Error Recovery for block blk_928005470262850423_1021 failed because recovery from primary datanode 127.0.0.1:53683 failed 4 times. Pipeline was 127.0.0.1:53687, 127.0.0.1:53683. Will retry...
stream
- A DFSClient.DFSOutputStream.max
- java.lang.NoSuchFieldException
java.lang.SecurityException
java.lang.IllegalAccessException
java.lang.IllegalArgumentException
public void moveRegionAndWait(HRegionInfo destRegion, ServerName destServer) throws java.lang.InterruptedException, java.io.IOException
destRegion
- region to movedestServer
- destination server of the regionjava.lang.InterruptedException
java.io.IOException
public void waitUntilAllRegionsAssigned(TableName tableName) throws java.io.IOException
tableName
- the table namejava.io.IOException
public void waitUntilAllSystemRegionsAssigned() throws java.io.IOException
java.io.IOException
public void waitUntilAllRegionsAssigned(TableName tableName, long timeout) throws java.io.IOException
tableName
- the table nametimeout
- timeout, in millisecondsjava.io.IOException
public static java.util.List<Cell> getFromStoreFile(HStore store, Get get) throws java.io.IOException
java.io.IOException
public byte[][] getRegionSplitStartKeys(byte[] startKey, byte[] endKey, int numRegions)
startKey
- endKey
- numRegions
- the number of regions to be created. it has to be greater than 3.public static java.util.List<Cell> getFromStoreFile(HStore store, byte[] row, java.util.NavigableSet<byte[]> columns) throws java.io.IOException
java.io.IOException
public static ZooKeeperWatcher getZooKeeperWatcher(HBaseTestingUtility TEST_UTIL) throws ZooKeeperConnectionException, java.io.IOException
TEST_UTIL
- ZooKeeperConnectionException
java.io.IOException
public static ZooKeeperWatcher createAndForceNodeToOpenedState(HBaseTestingUtility TEST_UTIL, Region region, ServerName serverName) throws ZooKeeperConnectionException, java.io.IOException, KeeperException, NodeExistsException
TEST_UTIL
- region
- serverName
- java.io.IOException
ZooKeeperConnectionException
KeeperException
NodeExistsException
public static ZooKeeperWatcher createAndForceNodeToOpenedState(HBaseTestingUtility TEST_UTIL, HRegion region, ServerName serverName) throws ZooKeeperConnectionException, java.io.IOException, KeeperException, NodeExistsException
TEST_UTIL
- region
- serverName
- java.io.IOException
ZooKeeperConnectionException
KeeperException
NodeExistsException
public static void assertKVListsEqual(java.lang.String additionalMsg, java.util.List<? extends Cell> expected, java.util.List<? extends Cell> actual)
public static <T> java.lang.String safeGetAsStr(java.util.List<T> lst, int i)
public java.lang.String getClusterKey()
public HTable createRandomTable(java.lang.String tableName, java.util.Collection<java.lang.String> families, int maxVersions, int numColsPerRow, int numFlushes, int numRegions, int numRowsPerFlush) throws java.io.IOException, java.lang.InterruptedException
java.io.IOException
java.lang.InterruptedException
public static int randomPort()
public static int randomFreePort()
public static java.lang.String randomMultiCastAddress()
public static void waitForHostPort(java.lang.String host, int port) throws java.io.IOException
java.io.IOException
public static int createPreSplitLoadTestTable(Configuration conf, TableName tableName, byte[] columnFamily, Compression.Algorithm compression, DataBlockEncoding dataBlockEncoding) throws java.io.IOException
java.io.IOException
public static int createPreSplitLoadTestTable(Configuration conf, TableName tableName, byte[] columnFamily, Compression.Algorithm compression, DataBlockEncoding dataBlockEncoding, int numRegionsPerServer, int regionReplication, Durability durability) throws java.io.IOException
java.io.IOException
public static int createPreSplitLoadTestTable(Configuration conf, TableName tableName, byte[][] columnFamilies, Compression.Algorithm compression, DataBlockEncoding dataBlockEncoding, int numRegionsPerServer, int regionReplication, Durability durability) throws java.io.IOException
java.io.IOException
public static int createPreSplitLoadTestTable(Configuration conf, HTableDescriptor desc, HColumnDescriptor hcd) throws java.io.IOException
java.io.IOException
public static int createPreSplitLoadTestTable(Configuration conf, HTableDescriptor desc, HColumnDescriptor hcd, int numRegionsPerServer) throws java.io.IOException
java.io.IOException
public static int createPreSplitLoadTestTable(Configuration conf, HTableDescriptor desc, HColumnDescriptor[] hcds, int numRegionsPerServer) throws java.io.IOException
java.io.IOException
public static int getMetaRSPort(Configuration conf) throws java.io.IOException
java.io.IOException
public void assertRegionOnServer(HRegionInfo hri, ServerName server, long timeout) throws java.io.IOException, java.lang.InterruptedException
java.io.IOException
java.lang.InterruptedException
public void assertRegionOnlyOnServer(HRegionInfo hri, ServerName server, long timeout) throws java.io.IOException, java.lang.InterruptedException
java.io.IOException
java.lang.InterruptedException
public HRegion createTestRegion(java.lang.String tableName, HColumnDescriptor hcd) throws java.io.IOException
java.io.IOException
public void setFileSystemURI(java.lang.String fsURI)
public <E extends java.lang.Exception> long waitFor(long timeout, Waiter.Predicate<E> predicate) throws E extends java.lang.Exception
Waiter.waitFor(Configuration, long, Predicate)
.E extends java.lang.Exception
public <E extends java.lang.Exception> long waitFor(long timeout, long interval, Waiter.Predicate<E> predicate) throws E extends java.lang.Exception
Waiter.waitFor(Configuration, long, long, Predicate)
.E extends java.lang.Exception
public <E extends java.lang.Exception> long waitFor(long timeout, long interval, boolean failIfTimeout, Waiter.Predicate<E> predicate) throws E extends java.lang.Exception
Waiter.waitFor(Configuration, long, long, boolean, Predicate)
.E extends java.lang.Exception
public Waiter.ExplainingPredicate<java.io.IOException> predicateNoRegionsInTransition()
Waiter.Predicate
for checking that there are no regions in transition in masterpublic Waiter.Predicate<java.io.IOException> predicateTableEnabled(TableName tableName)
Waiter.Predicate
for checking that table is enabledpublic Waiter.Predicate<java.io.IOException> predicateTableDisabled(TableName tableName)
Waiter.Predicate
for checking that table is enabledpublic Waiter.Predicate<java.io.IOException> predicateTableAvailable(TableName tableName)
Waiter.Predicate
for checking that table is enabledpublic void waitUntilNoRegionsInTransition(long timeout) throws java.lang.Exception
timeout
- How long to wait.java.lang.Exception
public void waitLabelAvailable(long timeoutMillis, java.lang.String... labels)
timeoutMillis
- labels
- public static java.util.List<HColumnDescriptor> generateColumnDescriptors()
public static java.util.List<HColumnDescriptor> generateColumnDescriptors(java.lang.String prefix)
prefix
- family names prefixpublic static Compression.Algorithm[] getSupportedCompressionAlgorithms()
public MiniKdc setupMiniKdc(java.io.File keytabFile) throws java.lang.Exception
MiniKdc
for testing security.
Uses HBaseKerberosUtils
to set the given keytab file as
HBaseKerberosUtils#KRB_KEYTAB_FILE
.java.lang.Exception