You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2015/09/10 06:25:20 UTC
hbase git commit: HBASE-14393 Have TestHFileEncryption clean up after
itself so it don't go all zombie on us
Repository: hbase
Updated Branches:
refs/heads/master a11bb2a93 -> 7d018ec78
HBASE-14393 Have TestHFileEncryption clean up after itself so it don't go all zombie on us
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/7d018ec7
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/7d018ec7
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/7d018ec7
Branch: refs/heads/master
Commit: 7d018ec7892e1567d7457b1aa1188c5ae3d5f263
Parents: a11bb2a
Author: stack <st...@apache.org>
Authored: Wed Sep 9 21:25:12 2015 -0700
Committer: stack <st...@apache.org>
Committed: Wed Sep 9 21:25:12 2015 -0700
----------------------------------------------------------------------
.../hbase/io/hfile/TestHFileEncryption.java | 98 ++++++++++++--------
1 file changed, 59 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/7d018ec7/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileEncryption.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileEncryption.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileEncryption.java
index 14f0639..ba3a344 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileEncryption.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileEncryption.java
@@ -63,6 +63,8 @@ public class TestHFileEncryption {
@BeforeClass
public static void setUp() throws Exception {
Configuration conf = TEST_UTIL.getConfiguration();
+ // Disable block cache in this test.
+ conf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);
conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());
conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");
conf.setInt("hfile.format.version", 3);
@@ -156,32 +158,38 @@ public class TestHFileEncryption {
public void testHFileEncryptionMetadata() throws Exception {
Configuration conf = TEST_UTIL.getConfiguration();
CacheConfig cacheConf = new CacheConfig(conf);
-
HFileContext fileContext = new HFileContextBuilder()
- .withEncryptionContext(cryptoContext)
- .build();
+ .withEncryptionContext(cryptoContext)
+ .build();
// write a simple encrypted hfile
Path path = new Path(TEST_UTIL.getDataTestDir(), "cryptometa.hfile");
FSDataOutputStream out = fs.create(path);
HFile.Writer writer = HFile.getWriterFactory(conf, cacheConf)
- .withOutputStream(out)
- .withFileContext(fileContext)
- .create();
- KeyValue kv = new KeyValue("foo".getBytes(), "f1".getBytes(), null, "value".getBytes());
- writer.append(kv);
- writer.close();
- out.close();
+ .withOutputStream(out)
+ .withFileContext(fileContext)
+ .create();
+ try {
+ KeyValue kv = new KeyValue("foo".getBytes(), "f1".getBytes(), null, "value".getBytes());
+ writer.append(kv);
+ } finally {
+ writer.close();
+ out.close();
+ }
// read it back in and validate correct crypto metadata
HFile.Reader reader = HFile.createReader(fs, path, cacheConf, conf);
- reader.loadFileInfo();
- FixedFileTrailer trailer = reader.getTrailer();
- assertNotNull(trailer.getEncryptionKey());
- Encryption.Context readerContext = reader.getFileContext().getEncryptionContext();
- assertEquals(readerContext.getCipher().getName(), cryptoContext.getCipher().getName());
- assertTrue(Bytes.equals(readerContext.getKeyBytes(),
- cryptoContext.getKeyBytes()));
+ try {
+ reader.loadFileInfo();
+ FixedFileTrailer trailer = reader.getTrailer();
+ assertNotNull(trailer.getEncryptionKey());
+ Encryption.Context readerContext = reader.getFileContext().getEncryptionContext();
+ assertEquals(readerContext.getCipher().getName(), cryptoContext.getCipher().getName());
+ assertTrue(Bytes.equals(readerContext.getKeyBytes(),
+ cryptoContext.getKeyBytes()));
+ } finally {
+ reader.close();
+ }
}
@Test(timeout=6000000)
@@ -209,41 +217,53 @@ public class TestHFileEncryption {
.withOutputStream(out)
.withFileContext(fileContext)
.create();
- for (KeyValue kv: testKvs) {
- writer.append(kv);
+ try {
+ for (KeyValue kv: testKvs) {
+ writer.append(kv);
+ }
+ } finally {
+ writer.close();
+ out.close();
}
- writer.close();
- out.close();
// read it back in
LOG.info("Reading with " + fileContext);
- HFile.Reader reader = HFile.createReader(fs, path, cacheConf, conf);
- reader.loadFileInfo();
- FixedFileTrailer trailer = reader.getTrailer();
- assertNotNull(trailer.getEncryptionKey());
- HFileScanner scanner = reader.getScanner(false, false);
- assertTrue("Initial seekTo failed", scanner.seekTo());
int i = 0;
- do {
- Cell kv = scanner.getCell();
- assertTrue("Read back an unexpected or invalid KV",
+ HFileScanner scanner = null;
+ HFile.Reader reader = HFile.createReader(fs, path, cacheConf, conf);
+ try {
+ reader.loadFileInfo();
+ FixedFileTrailer trailer = reader.getTrailer();
+ assertNotNull(trailer.getEncryptionKey());
+ scanner = reader.getScanner(false, false);
+ assertTrue("Initial seekTo failed", scanner.seekTo());
+ do {
+ Cell kv = scanner.getCell();
+ assertTrue("Read back an unexpected or invalid KV",
testKvs.contains(KeyValueUtil.ensureKeyValue(kv)));
- i++;
- } while (scanner.next());
- reader.close();
+ i++;
+ } while (scanner.next());
+ } finally {
+ reader.close();
+ scanner.close();
+ }
assertEquals("Did not read back as many KVs as written", i, testKvs.size());
// Test random seeks with pread
LOG.info("Random seeking with " + fileContext);
reader = HFile.createReader(fs, path, cacheConf, conf);
- scanner = reader.getScanner(false, true);
- assertTrue("Initial seekTo failed", scanner.seekTo());
- for (i = 0; i < 100; i++) {
- KeyValue kv = testKvs.get(RNG.nextInt(testKvs.size()));
- assertEquals("Unable to find KV as expected: " + kv, scanner.seekTo(kv), 0);
+ try {
+ scanner = reader.getScanner(false, true);
+ assertTrue("Initial seekTo failed", scanner.seekTo());
+ for (i = 0; i < 100; i++) {
+ KeyValue kv = testKvs.get(RNG.nextInt(testKvs.size()));
+ assertEquals("Unable to find KV as expected: " + kv, scanner.seekTo(kv), 0);
+ }
+ } finally {
+ scanner.close();
+ reader.close();
}
- reader.close();
}
}
}