You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mrunit.apache.org by br...@apache.org on 2014/03/04 19:55:46 UTC
git commit: MRUNIT-193 - Serialization.copy throws NPE instead of ISE
(missing serilization impl) for Hadoop 2.x (Cosmin Lehen via Brock Noland)
Repository: mrunit
Updated Branches:
refs/heads/trunk 2c24ab2af -> 57196c39a
MRUNIT-193 - Serialization.copy throws NPE instead of ISE (missing serilization impl) for Hadoop 2.x (Cosmin Lehen via Brock Noland)
Project: http://git-wip-us.apache.org/repos/asf/mrunit/repo
Commit: http://git-wip-us.apache.org/repos/asf/mrunit/commit/57196c39
Tree: http://git-wip-us.apache.org/repos/asf/mrunit/tree/57196c39
Diff: http://git-wip-us.apache.org/repos/asf/mrunit/diff/57196c39
Branch: refs/heads/trunk
Commit: 57196c39a73cf2251e0f2ba7da225731362407ba
Parents: 2c24ab2
Author: Brock Noland <br...@apache.org>
Authored: Tue Mar 4 12:52:41 2014 -0600
Committer: Brock Noland <br...@apache.org>
Committed: Tue Mar 4 12:52:41 2014 -0600
----------------------------------------------------------------------
.../hadoop/mrunit/internal/io/Serialization.java | 12 +++++++++---
.../hadoop/mrunit/internal/io/TestSerialization.java | 15 ++++++++++++---
2 files changed, 21 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mrunit/blob/57196c39/src/main/java/org/apache/hadoop/mrunit/internal/io/Serialization.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/hadoop/mrunit/internal/io/Serialization.java b/src/main/java/org/apache/hadoop/mrunit/internal/io/Serialization.java
index 78b60ae..8301d41 100644
--- a/src/main/java/org/apache/hadoop/mrunit/internal/io/Serialization.java
+++ b/src/main/java/org/apache/hadoop/mrunit/internal/io/Serialization.java
@@ -17,6 +17,8 @@
*/
package org.apache.hadoop.mrunit.internal.io;
+import com.google.common.base.Preconditions;
+
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
@@ -58,16 +60,20 @@ public class Serialization {
final Class<?> clazz = orig.getClass();
final Serializer<Object> serializer;
final Deserializer<Object> deserializer;
+ String errorMsg = "No applicable class implementing Serialization in conf "
+ + "at io.serializations: " + clazz;
try {
serializer = (Serializer<Object>) serializationFactory
.getSerializer(clazz);
deserializer = (Deserializer<Object>) serializationFactory
.getDeserializer(clazz);
+ // hadoop 1.x will throw
} catch (NullPointerException e) {
- throw new IllegalStateException(
- "No applicable class implementing Serialization in conf at io.serializations for "
- + orig.getClass(), e);
+ throw new IllegalStateException(errorMsg, e);
}
+ // hadoop 2.x will return a null
+ Preconditions.checkState(serializer != null, errorMsg);
+ Preconditions.checkState(deserializer != null, errorMsg);
try {
final DataOutputBuffer outputBuffer = new DataOutputBuffer();
serializer.open(outputBuffer);
http://git-wip-us.apache.org/repos/asf/mrunit/blob/57196c39/src/test/java/org/apache/hadoop/mrunit/internal/io/TestSerialization.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/hadoop/mrunit/internal/io/TestSerialization.java b/src/test/java/org/apache/hadoop/mrunit/internal/io/TestSerialization.java
index 099b7c6..ac530ab 100644
--- a/src/test/java/org/apache/hadoop/mrunit/internal/io/TestSerialization.java
+++ b/src/test/java/org/apache/hadoop/mrunit/internal/io/TestSerialization.java
@@ -17,13 +17,14 @@
*/
package org.apache.hadoop.mrunit.internal.io;
-import static org.junit.Assert.assertEquals;
-
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IntWritable;
-import org.apache.hadoop.mrunit.internal.io.Serialization;
+import org.apache.hadoop.io.Writable;
import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+
public class TestSerialization {
@Test
@@ -58,4 +59,12 @@ public class TestSerialization {
assertEquals(new Integer(2), int2);
}
+ @Test(expected = IllegalStateException.class)
+ public void testCopyExceptionIfNoSerializer() {
+ final Configuration conf = new Configuration();
+ Serialization serialization = new Serialization(conf);
+ // there's no implicit serializer for Integer, so it should throw ISE
+ serialization.copy(1, 1);
+ }
+
}