blob: 14c20f24d5c6726fce16cfaae92e80653ac61ae8 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.bigtop.itest.hbase.smoke
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.HColumnDescriptor
import org.apache.hadoop.hbase.HTableDescriptor
import org.apache.hadoop.hbase.client.Get
import org.apache.hadoop.hbase.client.HBaseAdmin
import org.apache.hadoop.hbase.client.HTable
import org.apache.hadoop.hbase.client.Put
import org.apache.hadoop.hbase.client.Result
import org.apache.hadoop.hbase.util.Bytes
import org.junit.Assert
import org.junit.BeforeClass
import org.junit.AfterClass
import org.junit.Test
import static org.junit.Assert.assertTrue
import org.apache.bigtop.itest.shell.Shell
import org.apache.bigtop.itest.hbase.util.HBaseTestUtil
import static org.apache.bigtop.itest.LogErrorsUtils.logError
/**
* Validates the Import and Export utilities.
*/
class TestHBaseImportExport {
private static Shell sh = new Shell("/bin/bash -s")
private static final byte[] TEST_FAMILY = Bytes.toBytes("f1")
private static final byte[] TEST_QUALIFIER = Bytes.toBytes("q1")
private static final byte[] TEST_VALUE = Bytes.toBytes("v1")
private static String orig
private static String export
private static HTable origTable
private static HTable exportTable
private static String importCmd =
"hbase org.apache.hadoop.hbase.mapreduce.Import"
private static String exportCmd =
"hbase org.apache.hadoop.hbase.mapreduce.Export"
private static int NUM_ROWS = 5000
private static Configuration conf
private static HBaseAdmin admin
@BeforeClass
public static void setUp() throws Exception {
conf = HBaseConfiguration.create()
admin = new HBaseAdmin(conf)
HTableDescriptor htd_orig =
HBaseTestUtil.createTestTableDescriptor("orig", TEST_FAMILY)
admin.createTable(htd_orig)
orig = new String(htd_orig.getName())
origTable = new HTable(conf, orig)
HTableDescriptor htd_export =
HBaseTestUtil.createTestTableDescriptor("export", TEST_FAMILY)
admin.createTable(htd_export)
export = new String(htd_export.getName())
exportTable = new HTable(conf, export)
// Write some rows to the table.
for (int i = 0; i < NUM_ROWS; i++) {
byte[] row = Bytes.toBytes("row_" + i)
Put p = new Put(row)
for (HColumnDescriptor hcd : htd_orig.getFamilies()) {
p.add(hcd.getName(), TEST_QUALIFIER, TEST_VALUE)
}
origTable.put(p)
}
origTable.flushCommits()
}
@AfterClass
public static void tearDown() throws Exception {
admin.disableTable(orig)
admin.deleteTable(orig)
admin.disableTable(export)
admin.deleteTable(export)
}
@Test
public void testImportExport() throws Exception {
// Export
sh.exec(exportCmd + " " + orig + " " + orig)
logError(sh)
assertTrue(sh.getRet() == 0)
// Import
sh.exec(importCmd + " " + export + " " + orig)
logError(sh)
assertTrue(sh.getRet() == 0)
// Verify both tables' contents are equal
String origDigest = HBaseTestUtil.checksumRows(origTable)
String exportDigest = HBaseTestUtil.checksumRows(exportTable)
assertTrue("Original and exported tables contain different data",
origDigest.equals(exportDigest))
}
}