org.apache.hadoop.mrunit.mapreduce
Class MapDriver<K1,V1,K2,V2>

java.lang.Object
  extended by org.apache.hadoop.mrunit.TestDriver<K1,V1,K2,V2>
      extended by org.apache.hadoop.mrunit.MapDriverBase<K1,V1,K2,V2>
          extended by org.apache.hadoop.mrunit.mapreduce.MapDriver<K1,V1,K2,V2>

public class MapDriver<K1,V1,K2,V2>
extends MapDriverBase<K1,V1,K2,V2>

Harness that allows you to test a Mapper instance. You provide the input key and value that should be sent to the Mapper, and outputs you expect to be sent by the Mapper to the collector for those inputs. By calling runTest(), the harness will deliver the input to the Mapper and will check its outputs against the expected results. This is designed to handle a single (k, v) -> (k, v)* case from the Mapper, representing a single unit test. Multiple input (k, v) pairs should go in separate unit tests.


Field Summary
static org.apache.commons.logging.Log LOG
           
 
Fields inherited from class org.apache.hadoop.mrunit.MapDriverBase
inputKey, inputVal
 
Fields inherited from class org.apache.hadoop.mrunit.TestDriver
configuration, counterWrapper, expectedEnumCounters, expectedOutputs, expectedStringCounters
 
Constructor Summary
MapDriver()
           
MapDriver(org.apache.hadoop.mapreduce.Mapper<K1,V1,K2,V2> m)
           
 
Method Summary
 org.apache.hadoop.mapreduce.Counters getCounters()
           
 org.apache.hadoop.mapreduce.Mapper<K1,V1,K2,V2> getMapper()
           
static
<K1,V1,K2,V2>
MapDriver<K1,V1,K2,V2>
newMapDriver()
          Returns a new MapDriver without having to specify the generic types on the right hand side of the object create statement.
static
<K1,V1,K2,V2>
MapDriver<K1,V1,K2,V2>
newMapDriver(org.apache.hadoop.mapreduce.Mapper<K1,V1,K2,V2> mapper)
          Returns a new MapDriver without having to specify the generic types on the right hand side of the object create statement.
 List<Pair<K2,V2>> run()
          Runs the test but returns the result set instead of validating it (ignores any addOutput(), etc calls made before this)
 void setCounters(org.apache.hadoop.mapreduce.Counters ctrs)
          Sets the counters object to use for this test.
 void setMapper(org.apache.hadoop.mapreduce.Mapper<K1,V1,K2,V2> m)
          Set the Mapper instance to use with this test driver
 String toString()
           
 MapDriver<K1,V1,K2,V2> withConfiguration(org.apache.hadoop.conf.Configuration configuration)
           
 MapDriver<K1,V1,K2,V2> withCounter(Enum e, long expectedValue)
          Register expected enumeration based counter value
 MapDriver<K1,V1,K2,V2> withCounter(String g, String n, long expectedValue)
          Register expected name based counter value
 MapDriver<K1,V1,K2,V2> withCounters(org.apache.hadoop.mapreduce.Counters ctrs)
          Sets the counters to use and returns self for fluent style
 MapDriver<K1,V1,K2,V2> withInput(K1 key, V1 val)
          Identical to setInput() but returns self for fluent programming style
 MapDriver<K1,V1,K2,V2> withInput(Pair<K1,V1> inputRecord)
          Identical to setInput() but returns self for fluent programming style
 MapDriver<K1,V1,K2,V2> withInputFromString(String input)
          Deprecated. No replacement due to lack of type safety and incompatibility with non Text Writables
 MapDriver<K1,V1,K2,V2> withInputKey(K1 key)
          Identical to setInputKey() but with fluent programming style
 MapDriver<K1,V1,K2,V2> withInputValue(V1 val)
          Identical to setInputValue() but with fluent programming style
 MapDriver<K1,V1,K2,V2> withMapper(org.apache.hadoop.mapreduce.Mapper<K1,V1,K2,V2> m)
          Sets the Mapper instance to use and returns self for fluent style
 MapDriver<K1,V1,K2,V2> withOutput(K2 key, V2 val)
          Functions like addOutput() but returns self for fluent programming style
 MapDriver<K1,V1,K2,V2> withOutput(Pair<K2,V2> outputRecord)
          Works like addOutput(), but returns self for fluent style
 MapDriver<K1,V1,K2,V2> withOutputFromString(String output)
          Deprecated. No replacement due to lack of type safety and incompatibility with non Text Writables
 
Methods inherited from class org.apache.hadoop.mrunit.MapDriverBase
addOutput, addOutput, addOutputFromString, getInputKey, getInputValue, runTest, setInput, setInput, setInputFromString, setInputKey, setInputValue
 
Methods inherited from class org.apache.hadoop.mrunit.TestDriver
formatValueList, getConfiguration, getExpectedEnumCounters, getExpectedOutputs, getExpectedStringCounters, parseCommaDelimitedList, parseTabbedPair, resetExpectedCounters, resetOutput, runTest, setConfiguration, validate, validate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

LOG

public static final org.apache.commons.logging.Log LOG
Constructor Detail

MapDriver

public MapDriver(org.apache.hadoop.mapreduce.Mapper<K1,V1,K2,V2> m)

MapDriver

public MapDriver()
Method Detail

setMapper

public void setMapper(org.apache.hadoop.mapreduce.Mapper<K1,V1,K2,V2> m)
Set the Mapper instance to use with this test driver

Parameters:
m - the Mapper instance to use

withMapper

public MapDriver<K1,V1,K2,V2> withMapper(org.apache.hadoop.mapreduce.Mapper<K1,V1,K2,V2> m)
Sets the Mapper instance to use and returns self for fluent style


getMapper

public org.apache.hadoop.mapreduce.Mapper<K1,V1,K2,V2> getMapper()
Returns:
the Mapper object being used by this test

getCounters

public org.apache.hadoop.mapreduce.Counters getCounters()
Returns:
the counters used in this test

setCounters

public void setCounters(org.apache.hadoop.mapreduce.Counters ctrs)
Sets the counters object to use for this test.

Parameters:
ctrs - The counters object to use.

withCounters

public MapDriver<K1,V1,K2,V2> withCounters(org.apache.hadoop.mapreduce.Counters ctrs)
Sets the counters to use and returns self for fluent style


withInputKey

public MapDriver<K1,V1,K2,V2> withInputKey(K1 key)
Identical to setInputKey() but with fluent programming style

Returns:
this

withInputValue

public MapDriver<K1,V1,K2,V2> withInputValue(V1 val)
Identical to setInputValue() but with fluent programming style

Parameters:
val -
Returns:
this

withInput

public MapDriver<K1,V1,K2,V2> withInput(K1 key,
                                        V1 val)
Identical to setInput() but returns self for fluent programming style

Returns:
this

withInput

public MapDriver<K1,V1,K2,V2> withInput(Pair<K1,V1> inputRecord)
Identical to setInput() but returns self for fluent programming style

Parameters:
inputRecord -
Returns:
this

withOutput

public MapDriver<K1,V1,K2,V2> withOutput(Pair<K2,V2> outputRecord)
Works like addOutput(), but returns self for fluent style

Parameters:
outputRecord -
Returns:
this

withOutput

public MapDriver<K1,V1,K2,V2> withOutput(K2 key,
                                         V2 val)
Functions like addOutput() but returns self for fluent programming style

Returns:
this

withInputFromString

@Deprecated
public MapDriver<K1,V1,K2,V2> withInputFromString(String input)
Deprecated. No replacement due to lack of type safety and incompatibility with non Text Writables

Identical to setInputFromString, but with a fluent programming style

Parameters:
input - A string of the form "key \t val". Trims any whitespace.
Returns:
this

withOutputFromString

@Deprecated
public MapDriver<K1,V1,K2,V2> withOutputFromString(String output)
Deprecated. No replacement due to lack of type safety and incompatibility with non Text Writables

Identical to addOutputFromString, but with a fluent programming style

Parameters:
output - A string of the form "key \t val". Trims any whitespace.
Returns:
this

run

public List<Pair<K2,V2>> run()
                      throws IOException
Description copied from class: TestDriver
Runs the test but returns the result set instead of validating it (ignores any addOutput(), etc calls made before this)

Specified by:
run in class MapDriverBase<K1,V1,K2,V2>
Returns:
the list of (k, v) pairs returned as output from the test
Throws:
IOException

toString

public String toString()
Overrides:
toString in class Object

withConfiguration

public MapDriver<K1,V1,K2,V2> withConfiguration(org.apache.hadoop.conf.Configuration configuration)
Parameters:
configuration - The configuration object that will given to the mapper associated with the driver
Returns:
this object for fluent coding

withCounter

public MapDriver<K1,V1,K2,V2> withCounter(Enum e,
                                          long expectedValue)
Description copied from class: TestDriver
Register expected enumeration based counter value

Overrides:
withCounter in class TestDriver<K1,V1,K2,V2>
Parameters:
e - Enumeration based counter
expectedValue - Expected value
Returns:

withCounter

public MapDriver<K1,V1,K2,V2> withCounter(String g,
                                          String n,
                                          long expectedValue)
Description copied from class: TestDriver
Register expected name based counter value

Overrides:
withCounter in class TestDriver<K1,V1,K2,V2>
Parameters:
g - Counter group
n - Counter name
expectedValue - Expected value
Returns:

newMapDriver

public static <K1,V1,K2,V2> MapDriver<K1,V1,K2,V2> newMapDriver()
Returns a new MapDriver without having to specify the generic types on the right hand side of the object create statement.

Returns:
new MapDriver

newMapDriver

public static <K1,V1,K2,V2> MapDriver<K1,V1,K2,V2> newMapDriver(org.apache.hadoop.mapreduce.Mapper<K1,V1,K2,V2> mapper)
Returns a new MapDriver without having to specify the generic types on the right hand side of the object create statement.

Parameters:
mapper - passed to MapDriver constructor
Returns:
new MapDriver


Copyright © 2012 The Apache Software Foundation. All Rights Reserved.