package edu.umd.cloud9.integration.example.pagerank; import static org.junit.Assert.assertTrue; import java.util.Random; import junit.framework.JUnit4TestAdapter; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.Test; import tl.lin.data.pair.PairOfStrings; import com.google.common.base.Joiner; import edu.umd.cloud9.integration.IntegrationUtils; public class SimplePageRankIT { private static final Random random = new Random(); private static final Path collectionPath = new Path("sample-large.txt"); private static final String tmpPrefix = "tmp-" + SimplePageRankIT.class.getCanonicalName() + "-" + random.nextInt(10000); @Test public void testPageRank() throws Exception { Configuration conf = IntegrationUtils.getBespinConfiguration(); FileSystem fs = FileSystem.get(conf); IntegrationUtils.exec("hadoop fs -put docs/exercises/sample-large.txt"); assertTrue(fs.exists(collectionPath)); String[] args; args = new String[] { "hadoop jar", IntegrationUtils.getJar("target", "cloud9"), edu.umd.cloud9.example.pagerank.BuildPageRankRecords.class.getCanonicalName(), "-input", "sample-large.txt", "-output", tmpPrefix + "-sample-large-PageRankRecords", "-numNodes", "1458"}; IntegrationUtils.exec(Joiner.on(" ").join(args)); IntegrationUtils.exec("hadoop fs -mkdir " + tmpPrefix + "-sample-large-PageRank"); args = new String[] { "hadoop jar", IntegrationUtils.getJar("target", "cloud9"), edu.umd.cloud9.example.pagerank.PartitionGraph.class.getCanonicalName(), "-input", tmpPrefix + "-sample-large-PageRankRecords", "-output", tmpPrefix + "-sample-large-PageRank/iter0000", "-numPartitions", "5", "-numNodes", "1458"}; IntegrationUtils.exec(Joiner.on(" ").join(args)); args = new String[] { "hadoop jar", IntegrationUtils.getJar("target", "cloud9"), edu.umd.cloud9.example.pagerank.RunPageRankBasic.class.getCanonicalName(), "-base", tmpPrefix + "-sample-large-PageRank", "-numNodes", "1458", "-start", "0", "-end", "10", "-useCombiner"}; IntegrationUtils.exec(Joiner.on(" ").join(args)); args = new String[] { "hadoop jar", IntegrationUtils.getJar("target", "cloud9"), edu.umd.cloud9.example.pagerank.FindMaxPageRankNodes.class.getCanonicalName(), "-input", tmpPrefix + "-sample-large-PageRank/iter0010", "-output", tmpPrefix + "-sample-large-PageRank-top10", "-top", "10"}; IntegrationUtils.exec(Joiner.on(" ").join(args)); PairOfStrings pair = IntegrationUtils.exec("hadoop fs -cat " + tmpPrefix + "-sample-large-PageRank-top10/part-r-00000"); assertTrue(pair.getLeftElement().contains("9369084\t-4.38753")); assertTrue(pair.getLeftElement().contains("8669492\t-4.45486")); assertTrue(pair.getLeftElement().contains("12486146\t-4.77488")); assertTrue(pair.getLeftElement().contains("9265639\t-4.855565")); assertTrue(pair.getLeftElement().contains("10912914\t-4.86802")); IntegrationUtils.exec("hadoop fs -rm sample-large.txt"); } public static junit.framework.Test suite() { return new JUnit4TestAdapter(SimplePageRankIT.class); } }