aboutsummaryrefslogtreecommitdiff
path: root/graphx/src/test
diff options
context:
space:
mode:
authorAnkur Dave <ankurdave@gmail.com>2014-06-02 00:00:24 -0700
committerReynold Xin <rxin@apache.org>2014-06-02 00:00:24 -0700
commit9535f4045daf46b084761d7f15f63dc6c2a543dd (patch)
treef35f237fe99dacb2c25082a27ba2e02aa7a5f3fa /graphx/src/test
parentd17d221487fa7a3af6f4af2217f1d4889ceb084d (diff)
downloadspark-9535f4045daf46b084761d7f15f63dc6c2a543dd.tar.gz
spark-9535f4045daf46b084761d7f15f63dc6c2a543dd.tar.bz2
spark-9535f4045daf46b084761d7f15f63dc6c2a543dd.zip
Add landmark-based Shortest Path algorithm to graphx.lib
This is a modified version of apache/spark#10. Author: Ankur Dave <ankurdave@gmail.com> Author: Andres Perez <andres@tresata.com> Closes #933 from ankurdave/shortestpaths and squashes the following commits: 03a103c [Ankur Dave] Style fixes 7a1ff48 [Ankur Dave] Improve ShortestPaths documentation d75c8fc [Ankur Dave] Remove unnecessary VD type param, and pass through ED d983fb4 [Ankur Dave] Fix style errors 60ed8e6 [Andres Perez] Add Shortest-path computations to graphx.lib with unit tests.
Diffstat (limited to 'graphx/src/test')
-rw-r--r--graphx/src/test/scala/org/apache/spark/graphx/lib/ShortestPathsSuite.scala49
1 files changed, 49 insertions, 0 deletions
diff --git a/graphx/src/test/scala/org/apache/spark/graphx/lib/ShortestPathsSuite.scala b/graphx/src/test/scala/org/apache/spark/graphx/lib/ShortestPathsSuite.scala
new file mode 100644
index 0000000000..265827b334
--- /dev/null
+++ b/graphx/src/test/scala/org/apache/spark/graphx/lib/ShortestPathsSuite.scala
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.graphx.lib
+
+import org.scalatest.FunSuite
+
+import org.apache.spark.SparkContext
+import org.apache.spark.SparkContext._
+import org.apache.spark.graphx._
+import org.apache.spark.graphx.lib._
+import org.apache.spark.graphx.util.GraphGenerators
+import org.apache.spark.rdd._
+
+class ShortestPathsSuite extends FunSuite with LocalSparkContext {
+
+ test("Shortest Path Computations") {
+ withSpark { sc =>
+ val shortestPaths = Set(
+ (1, Map(1 -> 0, 4 -> 2)), (2, Map(1 -> 1, 4 -> 2)), (3, Map(1 -> 2, 4 -> 1)),
+ (4, Map(1 -> 2, 4 -> 0)), (5, Map(1 -> 1, 4 -> 1)), (6, Map(1 -> 3, 4 -> 1)))
+ val edgeSeq = Seq((1, 2), (1, 5), (2, 3), (2, 5), (3, 4), (4, 5), (4, 6)).flatMap {
+ case e => Seq(e, e.swap)
+ }
+ val edges = sc.parallelize(edgeSeq).map { case (v1, v2) => (v1.toLong, v2.toLong) }
+ val graph = Graph.fromEdgeTuples(edges, 1)
+ val landmarks = Seq(1, 4).map(_.toLong)
+ val results = ShortestPaths.run(graph, landmarks).vertices.collect.map {
+ case (v, spMap) => (v, spMap.mapValues(_.get))
+ }
+ assert(results.toSet === shortestPaths)
+ }
+ }
+
+}