You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@giraph.apache.org by ac...@apache.org on 2012/07/16 19:57:18 UTC

svn commit: r1362164 - in /giraph/trunk: ./ bin/ src/main/java/org/apache/giraph/ src/main/java/org/apache/giraph/examples/

Author: aching
Date: Mon Jul 16 17:57:17 2012
New Revision: 1362164

URL: http://svn.apache.org/viewvc?rev=1362164&view=rev
Log:
GIRAPH-81: Create annotations on provided algorithms for cli
(majakabiljo via aching).


Modified:
    giraph/trunk/CHANGELOG
    giraph/trunk/bin/giraph
    giraph/trunk/src/main/java/org/apache/giraph/GiraphRunner.java
    giraph/trunk/src/main/java/org/apache/giraph/examples/ConnectedComponentsVertex.java
    giraph/trunk/src/main/java/org/apache/giraph/examples/SimplePageRankVertex.java
    giraph/trunk/src/main/java/org/apache/giraph/examples/SimpleShortestPathsVertex.java

Modified: giraph/trunk/CHANGELOG
URL: http://svn.apache.org/viewvc/giraph/trunk/CHANGELOG?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/CHANGELOG (original)
+++ giraph/trunk/CHANGELOG Mon Jul 16 17:57:17 2012
@@ -2,6 +2,9 @@ Giraph Change Log
 
 Release 0.2.0 - unreleased
 
+  GIRAPH-81: Create annotations on provided algorithms for cli
+  (majakabiljo via aching).
+
   GIRAPH-242: HashMapVertex stores neighbor ids twice.
   (Alessandro Presta via hyunsik)
 

Modified: giraph/trunk/bin/giraph
URL: http://svn.apache.org/viewvc/giraph/trunk/bin/giraph?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/bin/giraph (original)
+++ giraph/trunk/bin/giraph Mon Jul 16 17:57:17 2012
@@ -88,7 +88,7 @@ else
 	CLASSPATH2=`mvn dependency:build-classpath | grep -v "[INFO]"`
 	CLASSPATH=$CLASSPATH:$CLASSPATH2	
 
-	for f in `find $GIRAPH_HOME/target -name giraph\*.jar` ; do
+	for f in for f in $GIRAPH_HOME/target/giraph*.jar; do
 	  if [ -e "$f" ]; then
 	    JAR=$f
 	    break

Modified: giraph/trunk/src/main/java/org/apache/giraph/GiraphRunner.java
URL: http://svn.apache.org/viewvc/giraph/trunk/src/main/java/org/apache/giraph/GiraphRunner.java?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/src/main/java/org/apache/giraph/GiraphRunner.java (original)
+++ giraph/trunk/src/main/java/org/apache/giraph/GiraphRunner.java Mon Jul 16 17:57:17 2012
@@ -24,14 +24,21 @@ import org.apache.commons.cli.CommandLin
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
+import org.apache.giraph.examples.Algorithm;
+import org.apache.giraph.graph.BasicVertex;
 import org.apache.giraph.graph.GiraphJob;
+import org.apache.giraph.utils.AnnotationUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.util.ToolRunner;
+import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
+import org.apache.zookeeper.ZooKeeper;
+
+import java.util.List;
 
 /**
  * Helper class to run Giraph applications by specifying the actual class name
@@ -62,6 +69,8 @@ public class GiraphRunner implements Too
   private static Options getOptions() {
     Options options = new Options();
     options.addOption("h", "help", false, "Help");
+    options.addOption("la", "listAlgorithms", false, "List supported " +
+        "algorithms");
     options.addOption("q", "quiet", false, "Quiet output");
     options.addOption("w", "workers", true, "Number of workers");
     options.addOption("if", "inputFormat", true, "Graph inputformat");
@@ -87,23 +96,52 @@ public class GiraphRunner implements Too
     this.conf = conf;
   }
 
+  /**
+   * Prints description of algorithms annotated with {@link Algorithm}
+   */
+  private void printSupportedAlgorithms() {
+    Logger.getLogger(ZooKeeper.class).setLevel(Level.OFF);
+
+    List<Class<?>> classes = AnnotationUtils.getAnnotatedClasses(
+        Algorithm.class, "org.apache.giraph");
+    System.out.print("  Supported algorithms:\n");
+    for (Class<?> clazz : classes) {
+      if (BasicVertex.class.isAssignableFrom(clazz)) {
+        Algorithm algorithm = clazz.getAnnotation(Algorithm.class);
+        StringBuilder sb = new StringBuilder();
+        sb.append(algorithm.name()).append(" - ").append(clazz.getName())
+            .append("\n");
+        if (!algorithm.description().equals("")) {
+          sb.append("    ").append(algorithm.description()).append("\n");
+        }
+        System.out.print(sb.toString());
+      }
+    }
+  }
+
   @Override
   public int run(String[] args) throws Exception {
     Options options = getOptions();
-    HelpFormatter formatter = new HelpFormatter();
-    if (args.length == 0) {
+
+    CommandLineParser parser = new BasicParser();
+    CommandLine cmd = parser.parse(options, args);
+
+    if (args.length == 0 || cmd.hasOption("h")) {
+      HelpFormatter formatter = new HelpFormatter();
       formatter.printHelp(getClass().getName(), options, true);
       return 0;
     }
 
+    if (cmd.hasOption("la")) {
+      printSupportedAlgorithms();
+      return 0;
+    }
+
     String vertexClassName = args[0];
     if (LOG.isDebugEnabled()) {
       LOG.debug("Attempting to run Vertex: " + vertexClassName);
     }
 
-    CommandLineParser parser = new BasicParser();
-    CommandLine cmd = parser.parse(options, args);
-
     // Verify all the options have been provided
     for (String[] requiredOption : requiredOptions) {
       if (!cmd.hasOption(requiredOption[0])) {

Modified: giraph/trunk/src/main/java/org/apache/giraph/examples/ConnectedComponentsVertex.java
URL: http://svn.apache.org/viewvc/giraph/trunk/src/main/java/org/apache/giraph/examples/ConnectedComponentsVertex.java?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/src/main/java/org/apache/giraph/examples/ConnectedComponentsVertex.java (original)
+++ giraph/trunk/src/main/java/org/apache/giraph/examples/ConnectedComponentsVertex.java Mon Jul 16 17:57:17 2012
@@ -40,6 +40,10 @@ import java.util.Iterator;
  *
  * http://www.cs.cmu.edu/~ukang/papers/PegasusKAIS.pdf
  */
+@Algorithm(
+    name = "Connected components",
+    description = "Finds connected components of the graph"
+)
 public class ConnectedComponentsVertex extends IntIntNullIntVertex {
   /**
    * Propagates the smallest vertex id to all neighbors. Will always choose to

Modified: giraph/trunk/src/main/java/org/apache/giraph/examples/SimplePageRankVertex.java
URL: http://svn.apache.org/viewvc/giraph/trunk/src/main/java/org/apache/giraph/examples/SimplePageRankVertex.java?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/src/main/java/org/apache/giraph/examples/SimplePageRankVertex.java (original)
+++ giraph/trunk/src/main/java/org/apache/giraph/examples/SimplePageRankVertex.java Mon Jul 16 17:57:17 2012
@@ -47,6 +47,9 @@ import java.util.Map;
 /**
  * Demonstrates the basic Pregel PageRank implementation.
  */
+@Algorithm(
+    name = "Page rank"
+)
 public class SimplePageRankVertex extends LongDoubleFloatDoubleVertex {
   /** Number of supersteps for this test */
   public static final int MAX_SUPERSTEPS = 30;

Modified: giraph/trunk/src/main/java/org/apache/giraph/examples/SimpleShortestPathsVertex.java
URL: http://svn.apache.org/viewvc/giraph/trunk/src/main/java/org/apache/giraph/examples/SimpleShortestPathsVertex.java?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/src/main/java/org/apache/giraph/examples/SimpleShortestPathsVertex.java (original)
+++ giraph/trunk/src/main/java/org/apache/giraph/examples/SimpleShortestPathsVertex.java Mon Jul 16 17:57:17 2012
@@ -29,6 +29,10 @@ import java.util.Iterator;
 /**
  * Demonstrates the basic Pregel shortest paths implementation.
  */
+@Algorithm(
+    name = "Shortest paths",
+    description = "Finds all shortest paths from a selected vertex"
+)
 public class SimpleShortestPathsVertex extends
     EdgeListVertex<LongWritable, DoubleWritable,
     FloatWritable, DoubleWritable> {