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());
+  }
 }