package com.zqh.mr; import java.util.Arrays; import java.util.List; import java.util.Map; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @RunWith(Parameterized.class) public class MapReduceTest { static MapReduce mr = null; final static String FILE_TO_READ_HUGE = "D:\\sandbox\\mapReduce\\cia_fact_book.txt"; final static String FILE_TO_READ_SMALLER = "D:\\sandbox\\mapReduce\\noteBooksOfDaVinci.txt"; final static String FILE_TO_READ_REALLY_SMALL = "D:\\sandbox\\mapReduce\\small.txt"; private static long totalSimple = 0; private static long totalMapReduce = 0; private static long intsMapReduce = 0; private static int THREADS = 8; @BeforeClass public static void setUpBeforeClass() throws Exception { Logger.getRootLogger().setLevel(Level.INFO); mr = new MapReduceImpl(THREADS); } @Test public void testIntegersMapReduce() { long c = stat(); Map map = mr.mapReduce(mr.generateData()); intsMapReduce += stat(c); mr.displayMap(mr.sortMap(map), 10); } @Ignore("file reader") @Test public void testSimpleSorting() { long c = stat(); Map map = mr.simpleWordCounting(mr.readFile(FILE_TO_READ_HUGE)); totalSimple += stat(c); mr.displayMap(mr.sortMap(map), 3); } @Ignore("file reader") @Test public void testMapReduceNotSoHuge() { long c = stat(); Map<Object, Integer> map = mr.mapReduce(mr.readFile(FILE_TO_READ_HUGE)); totalMapReduce += stat(c); mr.displayMap(mr.sortMap(map), 3); } private long stat() { return System.currentTimeMillis(); } private long stat(long start) { return System.currentTimeMillis() - start; } @Parameterized.Parameters public static List<Object[]> data() { // first parameter - times run return Arrays.asList(new Object[1][0]); } public MapReduceTest() { } @AfterClass public static void afterClass() { System.out.println("threads used: " + THREADS); System.out.println("totals: simple: " + totalSimple); System.out.println("totals: mapReduce: " + totalMapReduce); System.out.println("totals: intMapReduce: " + intsMapReduce); } }