public static void verifyMapReduce( SmartMapper mapper, SmartReducer reducer, Object key, Object input) throws Exception { MapDriver mapDriver = new MapDriver(); mapDriver.setMapper(mapper); MapReduceDriver mapReduceDriver = new MapReduceDriver(); mapReduceDriver.setMapper(mapper); Object writableKey = createWritable(key, mapper.getKeyInType()); Object writableValue = createWritable(input, mapper.getValueInType()); mapDriver.withInput(writableKey, writableValue); List results = mapDriver.run(); Collections.sort(results, PairComparer.INSTANCE); mapReduceDriver = new MapReduceDriver<LongWritable, Text, Text, LongWritable, Text, LongWritable>(); writableKey = createWritable(key, mapper.getKeyInType()); writableValue = createWritable(input, mapper.getValueInType()); mapReduceDriver.withInput(writableKey, writableValue); mapReduceDriver.setMapper(mapper); mapReduceDriver.setReducer(reducer); List finalResults = mapReduceDriver.run(); String text = String.format( "[%s]\r\n\r\n -> maps via %s to -> \r\n\r\n%s\r\n\r\n -> reduces via %s to -> \r\n\r\n%s", input, mapper.getClass().getSimpleName(), ArrayUtils.toString(results, Echo.INSTANCE), reducer.getClass().getSimpleName(), ArrayUtils.toString(finalResults, Echo.INSTANCE)); Approvals.verify(text); }
public static void verifyReducer(SmartReducer reducer, Object key, Object... values) throws Exception { List list = new ArrayList(); for (Object value : values) { list.add(createWritable(value, reducer.getValueInType())); } ReduceDriver reduceDriver = new ReduceDriver<Text, LongWritable, Text, LongWritable>(); reduceDriver.withInput(createWritable(key, reducer.getKeyInType()), list); reduceDriver.setReducer(reducer); List results = reduceDriver.run(); Collections.sort(results, PairComparer.INSTANCE); String header = String.format( "(%s, %s)\r\n\r\n -> reduces via %s to -> \r\n", key, list, reducer.getClass().getSimpleName()); Approvals.verifyAll(header, results, Echo.INSTANCE); }