|
@@ -29,6 +29,7 @@ import org.apache.hadoop.conf.Configuration;
|
|
|
|
|
|
import org.junit.Test;
|
|
import org.junit.Test;
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertEquals;
|
|
|
|
+import static org.junit.Assert.assertNull;
|
|
import static org.junit.Assert.fail;
|
|
import static org.junit.Assert.fail;
|
|
|
|
|
|
public class TestCodecFactory {
|
|
public class TestCodecFactory {
|
|
@@ -45,8 +46,8 @@ public class TestCodecFactory {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public CompressionOutputStream createOutputStream(OutputStream out)
|
|
|
|
- throws IOException {
|
|
|
|
|
|
+ public CompressionOutputStream createOutputStream(OutputStream out)
|
|
|
|
+ throws IOException {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -62,21 +63,21 @@ public class TestCodecFactory {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public CompressionInputStream createInputStream(InputStream in,
|
|
public CompressionInputStream createInputStream(InputStream in,
|
|
- Decompressor decompressor)
|
|
|
|
- throws IOException {
|
|
|
|
|
|
+ Decompressor decompressor)
|
|
|
|
+ throws IOException {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public CompressionInputStream createInputStream(InputStream in)
|
|
|
|
- throws IOException {
|
|
|
|
|
|
+ public CompressionInputStream createInputStream(InputStream in)
|
|
|
|
+ throws IOException {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public CompressionOutputStream createOutputStream(OutputStream out,
|
|
public CompressionOutputStream createOutputStream(OutputStream out,
|
|
- Compressor compressor)
|
|
|
|
- throws IOException {
|
|
|
|
|
|
+ Compressor compressor)
|
|
|
|
+ throws IOException {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -125,7 +126,7 @@ public class TestCodecFactory {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * Returns a factory for a given set of codecs
|
|
|
|
|
|
+ * Returns a factory for a given set of codecs.
|
|
* @param classes the codec classes to include
|
|
* @param classes the codec classes to include
|
|
* @return a new factory
|
|
* @return a new factory
|
|
*/
|
|
*/
|
|
@@ -137,15 +138,21 @@ public class TestCodecFactory {
|
|
|
|
|
|
private static void checkCodec(String msg,
|
|
private static void checkCodec(String msg,
|
|
Class expected, CompressionCodec actual) {
|
|
Class expected, CompressionCodec actual) {
|
|
- assertEquals(msg + " unexpected codec found",
|
|
|
|
- expected.getName(),
|
|
|
|
- actual.getClass().getName());
|
|
|
|
|
|
+ if (expected == null) {
|
|
|
|
+ assertNull(msg, actual);
|
|
|
|
+ } else if (actual == null) {
|
|
|
|
+ fail(msg + " result was null");
|
|
|
|
+ } else {
|
|
|
|
+ assertEquals(msg + " unexpected codec found",
|
|
|
|
+ expected.getName(),
|
|
|
|
+ actual.getClass().getName());
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void testFinding() {
|
|
public void testFinding() {
|
|
CompressionCodecFactory factory =
|
|
CompressionCodecFactory factory =
|
|
- new CompressionCodecFactory(new Configuration());
|
|
|
|
|
|
+ new CompressionCodecFactory(new Configuration());
|
|
CompressionCodec codec = factory.getCodec(new Path("/tmp/foo.bar"));
|
|
CompressionCodec codec = factory.getCodec(new Path("/tmp/foo.bar"));
|
|
assertEquals("default factory foo codec", null, codec);
|
|
assertEquals("default factory foo codec", null, codec);
|
|
codec = factory.getCodecByClassName(BarCodec.class.getCanonicalName());
|
|
codec = factory.getCodecByClassName(BarCodec.class.getCanonicalName());
|
|
@@ -153,6 +160,8 @@ public class TestCodecFactory {
|
|
|
|
|
|
codec = factory.getCodec(new Path("/tmp/foo.gz"));
|
|
codec = factory.getCodec(new Path("/tmp/foo.gz"));
|
|
checkCodec("default factory for .gz", GzipCodec.class, codec);
|
|
checkCodec("default factory for .gz", GzipCodec.class, codec);
|
|
|
|
+ codec = factory.getCodec(new Path("/tmp/foo.GZ"));
|
|
|
|
+ checkCodec("default factory for .GZ", GzipCodec.class, codec);
|
|
codec = factory.getCodecByClassName(GzipCodec.class.getCanonicalName());
|
|
codec = factory.getCodecByClassName(GzipCodec.class.getCanonicalName());
|
|
checkCodec("default factory for gzip codec", GzipCodec.class, codec);
|
|
checkCodec("default factory for gzip codec", GzipCodec.class, codec);
|
|
codec = factory.getCodecByName("gzip");
|
|
codec = factory.getCodecByName("gzip");
|
|
@@ -168,6 +177,8 @@ public class TestCodecFactory {
|
|
|
|
|
|
codec = factory.getCodec(new Path("/tmp/foo.bz2"));
|
|
codec = factory.getCodec(new Path("/tmp/foo.bz2"));
|
|
checkCodec("default factory for .bz2", BZip2Codec.class, codec);
|
|
checkCodec("default factory for .bz2", BZip2Codec.class, codec);
|
|
|
|
+ codec = factory.getCodec(new Path("/tmp/foo.BZ2"));
|
|
|
|
+ checkCodec("default factory for .BZ2", BZip2Codec.class, codec);
|
|
codec = factory.getCodecByClassName(BZip2Codec.class.getCanonicalName());
|
|
codec = factory.getCodecByClassName(BZip2Codec.class.getCanonicalName());
|
|
checkCodec("default factory for bzip2 codec", BZip2Codec.class, codec);
|
|
checkCodec("default factory for bzip2 codec", BZip2Codec.class, codec);
|
|
codec = factory.getCodecByName("bzip2");
|
|
codec = factory.getCodecByName("bzip2");
|
|
@@ -221,16 +232,22 @@ public class TestCodecFactory {
|
|
FooBarCodec.class});
|
|
FooBarCodec.class});
|
|
codec = factory.getCodec(new Path("/tmp/.foo.bar.gz"));
|
|
codec = factory.getCodec(new Path("/tmp/.foo.bar.gz"));
|
|
checkCodec("full factory gz codec", GzipCodec.class, codec);
|
|
checkCodec("full factory gz codec", GzipCodec.class, codec);
|
|
|
|
+ codec = factory.getCodec(new Path("/tmp/.foo.bar.GZ"));
|
|
|
|
+ checkCodec("full factory GZ codec", GzipCodec.class, codec);
|
|
codec = factory.getCodecByClassName(GzipCodec.class.getCanonicalName());
|
|
codec = factory.getCodecByClassName(GzipCodec.class.getCanonicalName());
|
|
checkCodec("full codec gz codec", GzipCodec.class, codec);
|
|
checkCodec("full codec gz codec", GzipCodec.class, codec);
|
|
|
|
|
|
codec = factory.getCodec(new Path("/tmp/foo.bz2"));
|
|
codec = factory.getCodec(new Path("/tmp/foo.bz2"));
|
|
checkCodec("full factory for .bz2", BZip2Codec.class, codec);
|
|
checkCodec("full factory for .bz2", BZip2Codec.class, codec);
|
|
|
|
+ codec = factory.getCodec(new Path("/tmp/foo.BZ2"));
|
|
|
|
+ checkCodec("full factory for .BZ2", BZip2Codec.class, codec);
|
|
codec = factory.getCodecByClassName(BZip2Codec.class.getCanonicalName());
|
|
codec = factory.getCodecByClassName(BZip2Codec.class.getCanonicalName());
|
|
checkCodec("full codec bzip2 codec", BZip2Codec.class, codec);
|
|
checkCodec("full codec bzip2 codec", BZip2Codec.class, codec);
|
|
|
|
|
|
codec = factory.getCodec(new Path("/tmp/foo.bar"));
|
|
codec = factory.getCodec(new Path("/tmp/foo.bar"));
|
|
checkCodec("full factory bar codec", BarCodec.class, codec);
|
|
checkCodec("full factory bar codec", BarCodec.class, codec);
|
|
|
|
+ codec = factory.getCodec(new Path("/tmp/foo.BAR"));
|
|
|
|
+ checkCodec("full factory BAR codec", BarCodec.class, codec);
|
|
codec = factory.getCodecByClassName(BarCodec.class.getCanonicalName());
|
|
codec = factory.getCodecByClassName(BarCodec.class.getCanonicalName());
|
|
checkCodec("full factory bar codec", BarCodec.class, codec);
|
|
checkCodec("full factory bar codec", BarCodec.class, codec);
|
|
codec = factory.getCodecByName("bar");
|
|
codec = factory.getCodecByName("bar");
|
|
@@ -240,6 +257,8 @@ public class TestCodecFactory {
|
|
|
|
|
|
codec = factory.getCodec(new Path("/tmp/foo/baz.foo.bar"));
|
|
codec = factory.getCodec(new Path("/tmp/foo/baz.foo.bar"));
|
|
checkCodec("full factory foo bar codec", FooBarCodec.class, codec);
|
|
checkCodec("full factory foo bar codec", FooBarCodec.class, codec);
|
|
|
|
+ codec = factory.getCodec(new Path("/tmp/foo/baz.FOO.bar"));
|
|
|
|
+ checkCodec("full factory FOO bar codec", FooBarCodec.class, codec);
|
|
codec = factory.getCodecByClassName(FooBarCodec.class.getCanonicalName());
|
|
codec = factory.getCodecByClassName(FooBarCodec.class.getCanonicalName());
|
|
checkCodec("full factory foo bar codec", FooBarCodec.class, codec);
|
|
checkCodec("full factory foo bar codec", FooBarCodec.class, codec);
|
|
codec = factory.getCodecByName("foobar");
|
|
codec = factory.getCodecByName("foobar");
|
|
@@ -249,6 +268,8 @@ public class TestCodecFactory {
|
|
|
|
|
|
codec = factory.getCodec(new Path("/tmp/foo.foo"));
|
|
codec = factory.getCodec(new Path("/tmp/foo.foo"));
|
|
checkCodec("full factory foo codec", FooCodec.class, codec);
|
|
checkCodec("full factory foo codec", FooCodec.class, codec);
|
|
|
|
+ codec = factory.getCodec(new Path("/tmp/FOO.FOO"));
|
|
|
|
+ checkCodec("full factory FOO codec", FooCodec.class, codec);
|
|
codec = factory.getCodecByClassName(FooCodec.class.getCanonicalName());
|
|
codec = factory.getCodecByClassName(FooCodec.class.getCanonicalName());
|
|
checkCodec("full factory foo codec", FooCodec.class, codec);
|
|
checkCodec("full factory foo codec", FooCodec.class, codec);
|
|
codec = factory.getCodecByName("foo");
|
|
codec = factory.getCodecByName("foo");
|
|
@@ -259,6 +280,8 @@ public class TestCodecFactory {
|
|
factory = setClasses(new Class[]{NewGzipCodec.class});
|
|
factory = setClasses(new Class[]{NewGzipCodec.class});
|
|
codec = factory.getCodec(new Path("/tmp/foo.gz"));
|
|
codec = factory.getCodec(new Path("/tmp/foo.gz"));
|
|
checkCodec("overridden factory for .gz", NewGzipCodec.class, codec);
|
|
checkCodec("overridden factory for .gz", NewGzipCodec.class, codec);
|
|
|
|
+ codec = factory.getCodec(new Path("/tmp/foo.GZ"));
|
|
|
|
+ checkCodec("overridden factory for .GZ", NewGzipCodec.class, codec);
|
|
codec = factory.getCodecByClassName(NewGzipCodec.class.getCanonicalName());
|
|
codec = factory.getCodecByClassName(NewGzipCodec.class.getCanonicalName());
|
|
checkCodec("overridden factory for gzip codec", NewGzipCodec.class, codec);
|
|
checkCodec("overridden factory for gzip codec", NewGzipCodec.class, codec);
|
|
|
|
|