|
@@ -17,6 +17,14 @@
|
|
|
*/
|
|
|
package org.apache.hadoop.io.compress;
|
|
|
|
|
|
+import static org.junit.Assert.assertArrayEquals;
|
|
|
+import static org.junit.Assert.assertEquals;
|
|
|
+import static org.junit.Assert.assertFalse;
|
|
|
+import static org.junit.Assert.assertNotNull;
|
|
|
+import static org.junit.Assert.assertTrue;
|
|
|
+import static org.junit.Assert.fail;
|
|
|
+import static org.junit.Assume.assumeTrue;
|
|
|
+
|
|
|
import java.io.BufferedInputStream;
|
|
|
import java.io.BufferedOutputStream;
|
|
|
import java.io.BufferedReader;
|
|
@@ -40,6 +48,9 @@ import java.util.Random;
|
|
|
import java.util.zip.GZIPInputStream;
|
|
|
import java.util.zip.GZIPOutputStream;
|
|
|
|
|
|
+import org.apache.commons.codec.binary.Base64;
|
|
|
+import org.apache.commons.logging.Log;
|
|
|
+import org.apache.commons.logging.LogFactory;
|
|
|
import org.apache.hadoop.conf.Configuration;
|
|
|
import org.apache.hadoop.fs.CommonConfigurationKeys;
|
|
|
import org.apache.hadoop.fs.FileStatus;
|
|
@@ -51,9 +62,10 @@ import org.apache.hadoop.io.IOUtils;
|
|
|
import org.apache.hadoop.io.MapFile;
|
|
|
import org.apache.hadoop.io.RandomDatum;
|
|
|
import org.apache.hadoop.io.SequenceFile;
|
|
|
+import org.apache.hadoop.io.SequenceFile.CompressionType;
|
|
|
import org.apache.hadoop.io.Text;
|
|
|
import org.apache.hadoop.io.Writable;
|
|
|
-import org.apache.hadoop.io.SequenceFile.CompressionType;
|
|
|
+import org.apache.hadoop.io.compress.bzip2.Bzip2Factory;
|
|
|
import org.apache.hadoop.io.compress.zlib.BuiltInGzipDecompressor;
|
|
|
import org.apache.hadoop.io.compress.zlib.BuiltInZlibDeflater;
|
|
|
import org.apache.hadoop.io.compress.zlib.BuiltInZlibInflater;
|
|
@@ -61,20 +73,13 @@ import org.apache.hadoop.io.compress.zlib.ZlibCompressor;
|
|
|
import org.apache.hadoop.io.compress.zlib.ZlibCompressor.CompressionLevel;
|
|
|
import org.apache.hadoop.io.compress.zlib.ZlibCompressor.CompressionStrategy;
|
|
|
import org.apache.hadoop.io.compress.zlib.ZlibFactory;
|
|
|
-import org.apache.hadoop.io.compress.bzip2.Bzip2Factory;
|
|
|
import org.apache.hadoop.util.LineReader;
|
|
|
import org.apache.hadoop.util.NativeCodeLoader;
|
|
|
import org.apache.hadoop.util.ReflectionUtils;
|
|
|
-
|
|
|
-import org.apache.commons.codec.binary.Base64;
|
|
|
-import org.apache.commons.logging.Log;
|
|
|
-import org.apache.commons.logging.LogFactory;
|
|
|
-
|
|
|
+import org.junit.After;
|
|
|
import org.junit.Assert;
|
|
|
import org.junit.Assume;
|
|
|
import org.junit.Test;
|
|
|
-import static org.junit.Assert.*;
|
|
|
-import static org.junit.Assume.*;
|
|
|
|
|
|
public class TestCodec {
|
|
|
|
|
@@ -84,6 +89,10 @@ public class TestCodec {
|
|
|
private int count = 10000;
|
|
|
private int seed = new Random().nextInt();
|
|
|
|
|
|
+ @After
|
|
|
+ public void after() {
|
|
|
+ ZlibFactory.loadNativeZLib();
|
|
|
+ }
|
|
|
@Test
|
|
|
public void testDefaultCodec() throws IOException {
|
|
|
codecTest(conf, seed, 0, "org.apache.hadoop.io.compress.DefaultCodec");
|
|
@@ -364,7 +373,6 @@ public class TestCodec {
|
|
|
@Test
|
|
|
public void testCodecPoolGzipReuse() throws Exception {
|
|
|
Configuration conf = new Configuration();
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY, true);
|
|
|
assumeTrue(ZlibFactory.isNativeZlibLoaded(conf));
|
|
|
GzipCodec gzc = ReflectionUtils.newInstance(GzipCodec.class, conf);
|
|
|
DefaultCodec dfc = ReflectionUtils.newInstance(DefaultCodec.class, conf);
|
|
@@ -446,7 +454,6 @@ public class TestCodec {
|
|
|
@Test
|
|
|
public void testCodecInitWithCompressionLevel() throws Exception {
|
|
|
Configuration conf = new Configuration();
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY, true);
|
|
|
if (ZlibFactory.isNativeZlibLoaded(conf)) {
|
|
|
LOG.info("testCodecInitWithCompressionLevel with native");
|
|
|
codecTestWithNOCompression(conf,
|
|
@@ -458,7 +465,8 @@ public class TestCodec {
|
|
|
+ ": native libs not loaded");
|
|
|
}
|
|
|
conf = new Configuration();
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY, false);
|
|
|
+ // don't use native libs
|
|
|
+ ZlibFactory.setNativeZlibLoaded(false);
|
|
|
codecTestWithNOCompression( conf,
|
|
|
"org.apache.hadoop.io.compress.DefaultCodec");
|
|
|
}
|
|
@@ -466,14 +474,14 @@ public class TestCodec {
|
|
|
@Test
|
|
|
public void testCodecPoolCompressorReinit() throws Exception {
|
|
|
Configuration conf = new Configuration();
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY, true);
|
|
|
if (ZlibFactory.isNativeZlibLoaded(conf)) {
|
|
|
GzipCodec gzc = ReflectionUtils.newInstance(GzipCodec.class, conf);
|
|
|
gzipReinitTest(conf, gzc);
|
|
|
} else {
|
|
|
LOG.warn("testCodecPoolCompressorReinit skipped: native libs not loaded");
|
|
|
}
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY, false);
|
|
|
+ // don't use native libs
|
|
|
+ ZlibFactory.setNativeZlibLoaded(false);
|
|
|
DefaultCodec dfc = ReflectionUtils.newInstance(DefaultCodec.class, conf);
|
|
|
gzipReinitTest(conf, dfc);
|
|
|
}
|
|
@@ -660,7 +668,8 @@ public class TestCodec {
|
|
|
gzbuf.reset(dflbuf.getData(), dflbuf.getLength());
|
|
|
|
|
|
Configuration conf = new Configuration();
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY, false);
|
|
|
+ // don't use native libs
|
|
|
+ ZlibFactory.setNativeZlibLoaded(false);
|
|
|
CompressionCodec codec = ReflectionUtils.newInstance(GzipCodec.class, conf);
|
|
|
Decompressor decom = codec.createDecompressor();
|
|
|
assertNotNull(decom);
|
|
@@ -713,14 +722,14 @@ public class TestCodec {
|
|
|
@Test
|
|
|
public void testBuiltInGzipConcat() throws IOException {
|
|
|
Configuration conf = new Configuration();
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY, false);
|
|
|
+ // don't use native libs
|
|
|
+ ZlibFactory.setNativeZlibLoaded(false);
|
|
|
GzipConcatTest(conf, BuiltInGzipDecompressor.class);
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void testNativeGzipConcat() throws IOException {
|
|
|
Configuration conf = new Configuration();
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY, true);
|
|
|
assumeTrue(ZlibFactory.isNativeZlibLoaded(conf));
|
|
|
GzipConcatTest(conf, GzipCodec.GzipZlibDecompressor.class);
|
|
|
}
|
|
@@ -732,10 +741,7 @@ public class TestCodec {
|
|
|
|
|
|
// Don't use native libs for this test.
|
|
|
Configuration conf = new Configuration();
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY, false);
|
|
|
- assertFalse("ZlibFactory is using native libs against request",
|
|
|
- ZlibFactory.isNativeZlibLoaded(conf));
|
|
|
-
|
|
|
+ ZlibFactory.setNativeZlibLoaded(false);
|
|
|
// Ensure that the CodecPool has a BuiltInZlibInflater in it.
|
|
|
Decompressor zlibDecompressor = ZlibFactory.getZlibDecompressor(conf);
|
|
|
assertNotNull("zlibDecompressor is null!", zlibDecompressor);
|
|
@@ -784,7 +790,7 @@ public class TestCodec {
|
|
|
|
|
|
// Don't use native libs for this test.
|
|
|
Configuration conf = new Configuration();
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY, false);
|
|
|
+ ZlibFactory.setNativeZlibLoaded(false);
|
|
|
assertFalse("ZlibFactory is using native libs against request",
|
|
|
ZlibFactory.isNativeZlibLoaded(conf));
|
|
|
|
|
@@ -833,7 +839,6 @@ public class TestCodec {
|
|
|
|
|
|
// Use native libs per the parameter
|
|
|
Configuration conf = new Configuration();
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY, useNative);
|
|
|
if (useNative) {
|
|
|
assumeTrue(ZlibFactory.isNativeZlibLoaded(conf));
|
|
|
} else {
|
|
@@ -887,6 +892,8 @@ public class TestCodec {
|
|
|
|
|
|
@Test
|
|
|
public void testGzipCodecWriteJava() throws IOException {
|
|
|
+ // don't use native libs
|
|
|
+ ZlibFactory.setNativeZlibLoaded(false);
|
|
|
testGzipCodecWrite(false);
|
|
|
}
|
|
|
|
|
@@ -901,8 +908,7 @@ public class TestCodec {
|
|
|
|
|
|
// Don't use native libs for this test.
|
|
|
Configuration conf = new Configuration();
|
|
|
- conf.setBoolean(CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY,
|
|
|
- false);
|
|
|
+ ZlibFactory.setNativeZlibLoaded(false);
|
|
|
assertFalse("ZlibFactory is using native libs against request",
|
|
|
ZlibFactory.isNativeZlibLoaded(conf));
|
|
|
|