package net.ion.bleujin; import java.util.Iterator; import java.util.Map; import java.util.StringTokenizer; import junit.framework.TestCase; import net.ion.framework.util.Debug; import org.infinispan.Cache; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.Configuration; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.configuration.global.GlobalConfiguration; import org.infinispan.configuration.global.GlobalConfigurationBuilder; import org.infinispan.distexec.mapreduce.Collector; import org.infinispan.distexec.mapreduce.MapReduceTask; import org.infinispan.distexec.mapreduce.Mapper; import org.infinispan.distexec.mapreduce.Reducer; import org.infinispan.manager.DefaultCacheManager; public class TestMR extends TestCase { public void testFirst() throws Exception { GlobalConfiguration gconfig = GlobalConfigurationBuilder.defaultClusteredBuilder().transport().clusterName("craken").addProperty("configurationFile", "./resource/config/jgroups-udp.xml").build(); Configuration config = new ConfigurationBuilder().clustering().cacheMode(CacheMode.DIST_SYNC).invocationBatching().enable().build(); DefaultCacheManager dm = new DefaultCacheManager(gconfig); dm.defineConfiguration("c1", config); dm.defineConfiguration("c2", config); Cache c1 = dm.getCache("c1"); // Cache c2 = dm.getCache("c2"); dm.start(); c1.put("1", "Hello world here I am"); c1.put("3", "JUDCon is in Boston"); c1.put("12", "JBoss Application Server"); c1.put("14", "Infinispan community"); c1.put("111", "Infinispan open source"); c1.put("113", "Toronto is a capital of Ontario"); c1.put("211", "JBoss World is awesome"); c1.put("213", "JBoss division of RedHat "); // c2.put("2", "Infinispan rules the world"); // c2.put("4", "JBoss World is in Boston as well"); // c2.put("15", "Hello world"); // c2.put("15", "Hello world"); // c2.put("112", "Boston is close to Toronto"); // c2.put("114", "JUDCon is cool"); // c2.put("212", "JBoss rules"); // c2.put("214", "RedHat community"); // MapReduceTask<String, String, String, Integer> t = new MapReduceTask<String, String, String, Integer>(c1); // t.mappedWith(new WordCountMapper()).reducedWith(new WordCountReducer()); // Map<String, Integer> wordCountMap = t.execute(); MapReduceTask<String, String, String, Integer> t = new MapReduceTask<String, String, String, Integer>(c1); t.mappedWith(new Mapper<String, String, String, Integer>() { private static final long serialVersionUID = -5943370243108735560L; @Override public void map(String key, String value, Collector<String, Integer> c) { StringTokenizer tokens = new StringTokenizer(value); while (tokens.hasMoreElements()) { String s = (String) tokens.nextElement(); c.emit(s, 1); } } }).reducedWith(new Reducer<String, Integer>() { private static final long serialVersionUID = 1901016598354633256L; @Override public Integer reduce(String key, Iterator<Integer> iter) { int sum = 0; while (iter.hasNext()) { Integer i = (Integer) iter.next(); sum += i; } return sum; } }); Map<String, Integer> wordCountMap = t.execute(); Debug.line(wordCountMap); } static class WordCountMapper implements Mapper<String, String, String, Integer> { /** The serialVersionUID */ private static final long serialVersionUID = -5943370243108735560L; @Override public void map(String key, String value, Collector<String, Integer> c) { StringTokenizer tokens = new StringTokenizer(value); while (tokens.hasMoreElements()) { String s = (String) tokens.nextElement(); c.emit(s, 1); } } } static class WordCountReducer implements Reducer<String, Integer> { /** The serialVersionUID */ private static final long serialVersionUID = 1901016598354633256L; @Override public Integer reduce(String key, Iterator<Integer> iter) { int sum = 0; while (iter.hasNext()) { Integer i = (Integer) iter.next(); sum += i; } return sum; } } }