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 2012/06/13 23:34:50 UTC
svn commit: r1350028 - in /mrunit/trunk/src:
main/java/org/apache/hadoop/mrunit/
main/java/org/apache/hadoop/mrunit/internal/mapred/
main/java/org/apache/hadoop/mrunit/internal/mapreduce/
main/java/org/apache/hadoop/mrunit/mapreduce/ test/java/org/apac...
Author: brock
Date: Wed Jun 13 21:34:49 2012
New Revision: 1350028
URL: http://svn.apache.org/viewvc?rev=1350028&view=rev
Log:
MRUNIT-118: InputSplit should support a configurable filename
Modified:
mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/MapDriver.java
mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/MapReduceDriver.java
mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/ReduceDriver.java
mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/TestDriver.java
mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapred/MockInputSplit.java
mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapred/MockReporter.java
mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapreduce/MockInputSplit.java
mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapreduce/MockMapContextWrapper.java
mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/mapreduce/MapDriver.java
mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/mapreduce/MapReduceDriver.java
mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/TestMapDriver.java
mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/internal/mapred/TestMockReporter.java
mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/mapreduce/TestMapDriver.java
Modified: mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/MapDriver.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/MapDriver.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/MapDriver.java (original)
+++ mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/MapDriver.java Wed Jun 13 21:34:49 2012
@@ -25,6 +25,7 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapred.Counters;
import org.apache.hadoop.mapred.InputFormat;
import org.apache.hadoop.mapred.JobConf;
@@ -222,7 +223,7 @@ public class MapDriver<K1, V1, K2, V2> e
setOutputCopyingOrInputFormatConfiguration(configuration);
return this;
}
-
+
@SuppressWarnings("rawtypes")
public MapDriver<K1, V1, K2, V2> withOutputFormat(
final Class<? extends OutputFormat> outputFormatClass,
@@ -244,7 +245,8 @@ public class MapDriver<K1, V1, K2, V2> e
.createOutputCollectable(getConfiguration(),
getOutputCopyingOrInputFormatConfiguration());
final MockReporter reporter = new MockReporter(
- MockReporter.ReporterType.Mapper, getCounters());
+ MockReporter.ReporterType.Mapper, getCounters(),
+ getMapInputPath());
ReflectionUtils.setConf(myMapper, new JobConf(getConfiguration()));
@@ -269,7 +271,15 @@ public class MapDriver<K1, V1, K2, V2> e
setConfiguration(configuration);
return this;
}
-
+ /**
+ * @param mapInputPath
+ * The Path object which will be given to the mapper
+ * @return
+ */
+ public MapDriver<K1, V1, K2, V2> withMapInputPath(Path mapInputPath) {
+ setMapInputPath(mapInputPath);
+ return this;
+ }
/**
* Returns a new MapDriver without having to specify the generic types on the
* right hand side of the object create statement.
Modified: mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/MapReduceDriver.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/MapReduceDriver.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/MapReduceDriver.java (original)
+++ mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/MapReduceDriver.java Wed Jun 13 21:34:49 2012
@@ -26,6 +26,7 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.RawComparator;
import org.apache.hadoop.mapred.Counters;
import org.apache.hadoop.mapred.InputFormat;
@@ -375,6 +376,16 @@ public class MapReduceDriver<K1, V1, K2,
setConfiguration(configuration);
return this;
}
+
+ /**
+ * @param mapInputPath
+ * The Path object which will be given to the mapper
+ * @return
+ */
+ public MapReduceDriver<K1, V1, K2, V2, K3, V3> withMapInputPath(Path mapInputPath) {
+ setMapInputPath(mapInputPath);
+ return this;
+ }
/**
* Identical to {@link #setKeyGroupingComparator(RawComparator)}, but with a
Modified: mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/ReduceDriver.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/ReduceDriver.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/ReduceDriver.java (original)
+++ mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/ReduceDriver.java Wed Jun 13 21:34:49 2012
@@ -255,7 +255,8 @@ public class ReduceDriver<K1, V1, K2, V2
.createOutputCollectable(getConfiguration(),
getOutputCopyingOrInputFormatConfiguration());
final MockReporter reporter = new MockReporter(
- MockReporter.ReporterType.Reducer, getCounters());
+ MockReporter.ReporterType.Reducer, getCounters(),
+ getMapInputPath());
ReflectionUtils.setConf(myReducer, new JobConf(getConfiguration()));
Modified: mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/TestDriver.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/TestDriver.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/TestDriver.java (original)
+++ mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/TestDriver.java Wed Jun 13 21:34:49 2012
@@ -29,6 +29,7 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mrunit.internal.counters.CounterWrapper;
import org.apache.hadoop.mrunit.internal.io.Serialization;
@@ -49,6 +50,8 @@ public abstract class TestDriver<K1, V1,
protected CounterWrapper counterWrapper;
protected Serialization serialization;
+
+ protected Path mapInputPath = new Path("somefile");
public TestDriver() {
expectedOutputs = new ArrayList<Pair<K2, V2>>();
@@ -152,6 +155,19 @@ public abstract class TestDriver<K1, V1,
final Configuration configuration) {
this.outputCopyingOrInputFormatConf = returnNonNull(configuration);
}
+
+ /**
+ * @return the path passed to the mapper InputSplit
+ */
+ public Path getMapInputPath() {
+ return mapInputPath;
+ }
+ /**
+ * @param mapInputPath Path which is to be passed to the mappers InputSplit
+ */
+ public void setMapInputPath(Path mapInputPath) {
+ this.mapInputPath = mapInputPath;
+ }
/**
* Runs the test but returns the result set instead of validating it (ignores
Modified: mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapred/MockInputSplit.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapred/MockInputSplit.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapred/MockInputSplit.java (original)
+++ mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapred/MockInputSplit.java Wed Jun 13 21:34:49 2012
@@ -32,10 +32,8 @@ import org.apache.hadoop.mapred.InputSpl
@SuppressWarnings("deprecation")
class MockInputSplit extends FileSplit implements InputSplit {
- private static final Path MOCK_PATH = new Path("somefile");
-
- public MockInputSplit() {
- super(MOCK_PATH, 0, 0, (String[]) null);
+ public MockInputSplit(Path mockPath) {
+ super(mockPath, 0, 0, (String[]) null);
}
@Override
@@ -60,11 +58,4 @@ class MockInputSplit extends FileSplit i
public String toString() {
return "MockInputSplit";
}
-
- /**
- * Return the path object represented by this as a FileSplit.
- */
- public static Path getMockPath() {
- return MOCK_PATH;
- }
}
Modified: mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapred/MockReporter.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapred/MockReporter.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapred/MockReporter.java (original)
+++ mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapred/MockReporter.java Wed Jun 13 21:34:49 2012
@@ -17,6 +17,7 @@
*/
package org.apache.hadoop.mrunit.internal.mapred;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapred.Counters;
import org.apache.hadoop.mapred.Counters.Counter;
import org.apache.hadoop.mapred.InputSplit;
@@ -25,7 +26,7 @@ import org.apache.hadoop.mapred.Reporter
@SuppressWarnings("deprecation")
public class MockReporter implements Reporter {
- private final MockInputSplit inputSplit = new MockInputSplit();
+ private final MockInputSplit inputSplit;
private final Counters counters;
public enum ReporterType {
@@ -34,9 +35,11 @@ public class MockReporter implements Rep
private final ReporterType typ;
- public MockReporter(final ReporterType kind, final Counters ctrs) {
+ public MockReporter(final ReporterType kind, final Counters ctrs,
+ final Path mapInputPath) {
typ = kind;
counters = ctrs;
+ inputSplit = new MockInputSplit(mapInputPath);
}
@Override
Modified: mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapreduce/MockInputSplit.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapreduce/MockInputSplit.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapreduce/MockInputSplit.java (original)
+++ mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapreduce/MockInputSplit.java Wed Jun 13 21:34:49 2012
@@ -26,21 +26,12 @@ import org.apache.hadoop.mapreduce.lib.i
*/
class MockInputSplit extends FileSplit {
- private static final Path MOCK_PATH = new Path("somefile");
-
- public MockInputSplit() {
- super(MOCK_PATH, 0, 0, (String[]) null);
+ public MockInputSplit(Path mockPath) {
+ super(mockPath, 0, 0, (String[]) null);
}
@Override
public String toString() {
return "MockInputSplit";
}
-
- /**
- * Return the path object represented by this as a FileSplit.
- */
- public static Path getMockPath() {
- return MOCK_PATH;
- }
}
Modified: mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapreduce/MockMapContextWrapper.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapreduce/MockMapContextWrapper.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapreduce/MockMapContextWrapper.java (original)
+++ mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/internal/mapreduce/MockMapContextWrapper.java Wed Jun 13 21:34:49 2012
@@ -27,6 +27,7 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.Counters;
import org.apache.hadoop.mapreduce.InputSplit;
import org.apache.hadoop.mapreduce.Mapper;
@@ -53,14 +54,16 @@ public class MockMapContextWrapper<KEYIN
protected final List<Pair<KEYIN, VALUEIN>> inputs;
protected Pair<KEYIN, VALUEIN> currentKeyValue;
- protected InputSplit inputSplit = new MockInputSplit();
+ protected InputSplit inputSplit;
public MockMapContextWrapper(final List<Pair<KEYIN, VALUEIN>> inputs,
final Counters counters, final Configuration conf,
- final OutputCollectable<KEYOUT, VALUEOUT> outputCollectable)
+ final OutputCollectable<KEYOUT, VALUEOUT> outputCollectable,
+ final Path mapInputPath)
throws IOException, InterruptedException {
super(counters, conf, outputCollectable);
this.inputs = inputs;
+ this.inputSplit = new MockInputSplit(mapInputPath);
}
@SuppressWarnings({ "unchecked" })
Modified: mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/mapreduce/MapDriver.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/mapreduce/MapDriver.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/mapreduce/MapDriver.java (original)
+++ mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/mapreduce/MapDriver.java Wed Jun 13 21:34:49 2012
@@ -27,11 +27,13 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.Counters;
import org.apache.hadoop.mapreduce.InputFormat;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.OutputFormat;
import org.apache.hadoop.mrunit.MapDriverBase;
+import org.apache.hadoop.mrunit.MapReduceDriver;
import org.apache.hadoop.mrunit.internal.counters.CounterWrapper;
import org.apache.hadoop.mrunit.internal.mapreduce.MockMapContextWrapper;
import org.apache.hadoop.mrunit.internal.output.MockOutputCreator;
@@ -234,7 +236,7 @@ public class MapDriver<K1, V1, K2, V2> e
.createOutputCollectable(getConfiguration(),
getOutputCopyingOrInputFormatConfiguration());
final MockMapContextWrapper<K1, V1, K2, V2> wrapper = new MockMapContextWrapper<K1, V1, K2, V2>(
- inputs, getCounters(), getConfiguration(), outputCollectable);
+ inputs, getCounters(), getConfiguration(), outputCollectable, getMapInputPath());
myMapper.run(wrapper.getMockContext());
return outputCollectable.getOutputs();
} catch (final InterruptedException ie) {
@@ -258,6 +260,17 @@ public class MapDriver<K1, V1, K2, V2> e
setConfiguration(configuration);
return this;
}
+
+ /**
+ * @param mapInputPath
+ * The Path object which will be given to the mapper
+ * @return
+ */
+ public MapDriver<K1, V1, K2, V2> withMapInputPath(Path mapInputPath) {
+ setMapInputPath(mapInputPath);
+ return this;
+ }
+
@Override
public MapDriver<K1, V1, K2, V2> withCounter(final Enum<?> e,
Modified: mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/mapreduce/MapReduceDriver.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/mapreduce/MapReduceDriver.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/mapreduce/MapReduceDriver.java (original)
+++ mrunit/trunk/src/main/java/org/apache/hadoop/mrunit/mapreduce/MapReduceDriver.java Wed Jun 13 21:34:49 2012
@@ -26,6 +26,7 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.RawComparator;
import org.apache.hadoop.mapreduce.Counters;
import org.apache.hadoop.mapreduce.InputFormat;
@@ -374,7 +375,17 @@ public class MapReduceDriver<K1, V1, K2,
setConfiguration(configuration);
return this;
}
-
+
+ /**
+ * @param mapInputPath
+ * The Path object which will be given to the mapper
+ * @return
+ */
+ public MapReduceDriver<K1, V1, K2, V2, K3, V3> withMapInputPath(Path mapInputPath) {
+ setMapInputPath(mapInputPath);
+ return this;
+ }
+
/**
* Identical to {@link #setKeyGroupingComparator(RawComparator)}, but with a
* fluent programming style
Modified: mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/TestMapDriver.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/TestMapDriver.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/TestMapDriver.java (original)
+++ mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/TestMapDriver.java Wed Jun 13 21:34:49 2012
@@ -18,16 +18,18 @@
package org.apache.hadoop.mrunit;
import static org.apache.hadoop.mrunit.ExtendedAssert.assertListEquals;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
+import org.apache.hadoop.mapred.FileSplit;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.Mapper;
@@ -367,7 +369,7 @@ public class TestMapDriver {
}
}
-
+
/**
* Similar to IdentityMapper, but outputs each key/value pair twice
*/
@@ -450,4 +452,34 @@ public class TestMapDriver {
driver.withOutput(new LongWritable(), new Text("a\t1"));
driver.runTest();
}
+
+ private static class InputPathStoringMapper extends MapReduceBase implements
+ Mapper<Text, Text, Text, Text> {
+ private Path mapInputPath;
+
+ @Override
+ public void map(Text key, Text value, OutputCollector<Text, Text> output,
+ Reporter reporter) throws IOException {
+ if (reporter.getInputSplit() instanceof FileSplit) {
+ mapInputPath = ((FileSplit) reporter.getInputSplit()).getPath();
+ }
+ }
+
+ private Path getMapInputPath() {
+ return mapInputPath;
+ }
+ }
+
+ @Test
+ public void testMapInputFile() {
+ InputPathStoringMapper mapper = new InputPathStoringMapper();
+ Path mapInputPath = new Path("myfile");
+ driver = MapDriver.newMapDriver(mapper);
+ driver.setMapInputPath(mapInputPath);
+ assertEquals(mapInputPath.getName(), driver.getMapInputPath().getName());
+ driver.withInput(new Text("a"), new Text("1"));
+ driver.runTest();
+ assertNotNull(mapper.getMapInputPath());
+ assertEquals(mapInputPath.getName(), mapper.getMapInputPath().getName());
+ }
}
Modified: mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/internal/mapred/TestMockReporter.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/internal/mapred/TestMockReporter.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/internal/mapred/TestMockReporter.java (original)
+++ mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/internal/mapred/TestMockReporter.java Wed Jun 13 21:34:49 2012
@@ -19,6 +19,7 @@ package org.apache.hadoop.mrunit.interna
import static org.junit.Assert.assertTrue;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapred.InputSplit;
import org.apache.hadoop.mrunit.ExpectedSuppliedException;
import org.apache.hadoop.mrunit.internal.mapred.MockReporter;
@@ -35,7 +36,7 @@ public class TestMockReporter {
@Test
public void testGetInputSplitForMapper() {
final InputSplit split = new MockReporter(MockReporter.ReporterType.Mapper,
- null).getInputSplit();
+ null, new Path("/")).getInputSplit();
assertTrue(null != split);
}
@@ -45,6 +46,6 @@ public class TestMockReporter {
public void testGetInputSplitForReducer() {
thrown.expectMessage(UnsupportedOperationException.class,
"Reducer cannot call getInputSplit()");
- new MockReporter(MockReporter.ReporterType.Reducer, null).getInputSplit();
+ new MockReporter(MockReporter.ReporterType.Reducer, null, null).getInputSplit();
}
}
Modified: mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/mapreduce/TestMapDriver.java
URL: http://svn.apache.org/viewvc/mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/mapreduce/TestMapDriver.java?rev=1350028&r1=1350027&r2=1350028&view=diff
==============================================================================
--- mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/mapreduce/TestMapDriver.java (original)
+++ mrunit/trunk/src/test/java/org/apache/hadoop/mrunit/mapreduce/TestMapDriver.java Wed Jun 13 21:34:49 2012
@@ -18,13 +18,14 @@
package org.apache.hadoop.mrunit.mapreduce;
import static org.apache.hadoop.mrunit.ExtendedAssert.assertListEquals;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
@@ -323,4 +324,34 @@ public class TestMapDriver {
driver.withOutput(new LongWritable(), new Text("a\t1"));
driver.runTest();
}
+
+
+
+ private static class InputPathStoringMapper extends
+ Mapper<Text, Text, Text, Text> {
+ private Path mapInputPath;
+
+ @Override
+ public void map(Text key, Text value, Context context) throws IOException {
+ if (context.getInputSplit() instanceof FileSplit) {
+ mapInputPath = ((FileSplit) context.getInputSplit()).getPath();
+ }
+ }
+
+ private Path getMapInputPath() {
+ return mapInputPath;
+ }
+ }
+ @Test
+ public void testMapInputFile() {
+ InputPathStoringMapper mapper = new InputPathStoringMapper();
+ Path mapInputPath = new Path("myfile");
+ driver = MapDriver.newMapDriver(mapper);
+ driver.setMapInputPath(mapInputPath);
+ assertEquals(mapInputPath.getName(), driver.getMapInputPath().getName());
+ driver.withInput(new Text("a"), new Text("1"));
+ driver.runTest();
+ assertNotNull(mapper.getMapInputPath());
+ assertEquals(mapInputPath.getName(), mapper.getMapInputPath().getName());
+ }
}