Author: todd
Date: Wed Sep 7 18:57:51 2011
New Revision: 1166316
URL: http://svn.apache.org/viewvc?rev=1166316&view=rev
Log:
HBASE-4302 Only run Snappy compression tests if Snappy is available
Modified:
hbase/trunk/CHANGES.txt
hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java
Modified: hbase/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1166316&r1=1166315&r2=1166316&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Wed Sep 7 18:57:51 2011
@@ -241,6 +241,8 @@ Release 0.91.0 - Unreleased
while table is being disabled (Ming Ma)
HBASE-4338 Package build for rpm and deb are broken (Eric Yang)
HBASE-4309 slow query log metrics spewing warnings (Riley Patterson)
+ HBASE-4302 Only run Snappy compression tests if Snappy is available
+ (Alejandro Abdelnur via todd)
IMPROVEMENTS
HBASE-3290 Max Compaction Size (Nicolas Spiegelberg via Stack)
Modified:
hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java
URL:
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java?rev=1166316&r1=1166315&r2=1166316&view=diff
==============================================================================
---
hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java
(original)
+++
hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java
Wed Sep 7 18:57:51 2011
@@ -20,9 +20,17 @@
package org.apache.hadoop.hbase.util;
+import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.io.hfile.Compression;
+import org.apache.hadoop.io.DataOutputBuffer;
+import org.apache.hadoop.io.compress.CompressionCodec;
+import org.apache.hadoop.io.compress.CompressionOutputStream;
+import org.apache.hadoop.util.NativeCodeLoader;
+import org.apache.hadoop.util.ReflectionUtils;
import org.junit.Test;
+import java.io.BufferedOutputStream;
+import java.io.DataOutputStream;
import java.io.IOException;
import static org.junit.Assert.*;
@@ -56,9 +64,53 @@ public class TestCompressionTest {
assertTrue(CompressionTest.testCompression("GZ"));
if (isCompressionAvailable("org.apache.hadoop.io.compress.SnappyCodec")) {
- assertTrue(CompressionTest.testCompression("SNAPPY"));
+ if (NativeCodeLoader.isNativeCodeLoaded()) {
+ try {
+ System.loadLibrary("snappy");
+
+ try {
+ Configuration conf = new Configuration();
+ CompressionCodec codec = (CompressionCodec)
+ ReflectionUtils.newInstance(
+
conf.getClassByName("org.apache.hadoop.io.compress.SnappyCodec"), conf);
+
+ DataOutputBuffer compressedDataBuffer = new DataOutputBuffer();
+ CompressionOutputStream deflateFilter =
+ codec.createOutputStream(compressedDataBuffer);
+
+ byte[] data = new byte[1024];
+ DataOutputStream deflateOut = new DataOutputStream(
+ new BufferedOutputStream(deflateFilter));
+ deflateOut.write(data, 0, data.length);
+ deflateOut.flush();
+ deflateFilter.finish();
+
+ // Snappy Codec class, Snappy nativelib and Hadoop nativelib with
+ // Snappy JNIs are present
+ assertTrue(CompressionTest.testCompression("SNAPPY"));
+ }
+ catch (UnsatisfiedLinkError ex) {
+ // Hadoop nativelib does not have Snappy JNIs
+
+ // cannot assert the codec here because the current logic of
+ // CompressionTest checks only classloading, not the codec
+ // usage.
+ }
+ catch (Exception ex) {
+ }
+ }
+ catch (UnsatisfiedLinkError ex) {
+ // Snappy nativelib is not available
+ assertFalse(CompressionTest.testCompression("SNAPPY"));
+ }
+ }
+ else {
+ // Hadoop nativelib is not available
+ assertFalse(CompressionTest.testCompression("SNAPPY"));
+ }
}
else {
+ // Snappy Codec class is not available
assertFalse(CompressionTest.testCompression("SNAPPY"));
}
}