You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@s2graph.apache.org by st...@apache.org on 2017/07/01 15:28:19 UTC

[28/46] incubator-s2graph git commit: move test related schema into S2GraphProvider from S2Graph.

move test related schema into S2GraphProvider from S2Graph.


Project: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/commit/0e47e118
Tree: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/tree/0e47e118
Diff: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/diff/0e47e118

Branch: refs/heads/master
Commit: 0e47e118476b7bd85f8f934f57440939115f881e
Parents: b023648
Author: DO YUNG YOON <st...@apache.org>
Authored: Sun Apr 30 10:54:29 2017 +0900
Committer: DO YUNG YOON <st...@apache.org>
Committed: Sun Apr 30 10:54:29 2017 +0900

----------------------------------------------------------------------
 .../scala/org/apache/s2graph/core/S2Graph.scala |  49 +++------
 .../core/tinkerpop/S2GraphProvider.scala        | 100 ++++++++++++-------
 .../core/tinkerpop/structure/S2GraphTest.scala  |  78 +++++++--------
 3 files changed, 118 insertions(+), 109 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/0e47e118/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
----------------------------------------------------------------------
diff --git a/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala b/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
index e30be74..f05f2cb 100644
--- a/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
+++ b/s2core/src/main/scala/org/apache/s2graph/core/S2Graph.scala
@@ -19,7 +19,6 @@
 
 package org.apache.s2graph.core
 
-import java.lang.annotation.Annotation
 import java.util
 import java.util.concurrent.atomic.{AtomicBoolean, AtomicLong}
 import java.util.concurrent.{Executors, TimeUnit}
@@ -97,6 +96,10 @@ object S2Graph {
   val threadPool = Executors.newFixedThreadPool(numOfThread)
   val ec = ExecutionContext.fromExecutor(threadPool)
 
+  val DefaultServiceName = ""
+  val DefaultColumnName = "vertex"
+  val DefaultLabelName = "_s2graph"
+
   def toTypeSafeConfig(configuration: Configuration): Config = {
     val m = new mutable.HashMap[String, AnyRef]()
     for {
@@ -536,7 +539,15 @@ object S2Graph {
   new Graph.OptIn(value = Graph.OptIn.SUITE_STRUCTURE_STANDARD)
 ))
 @Graph.OptOuts(value = Array(
-//  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.EdgeTest", method="*", reason="no"),
+  /** Process */
+//  new Graph.OptOut(
+//    test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals",
+//    method = "g_V_valueMap_matchXa_selectXnameX_bX",
+//    reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute."),
+
+  /** Structure */
+  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.EdgeTest$BasicEdgeTest", method="shouldValidateIdEquality", reason="reference equals on EdgeId is not supported."),
+  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.EdgeTest$BasicEdgeTest", method="shouldValidateEquality", reason="reference equals on EdgeId is not supported."),
   // passed: all, failed: none
 
 //  new Graph.OptOut(test="org.apache.tinkerpop.gremlin.structure.GraphConstructionTest", method="*", reason="no"),
@@ -717,36 +728,6 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
     (k, v) = (entry.getKey, entry.getValue)
   } logger.info(s"[Initialized]: $k, ${this.config.getAnyRef(k)}")
 
-  /* TODO */
-  val DefaultService = management.createService("", "localhost", "s2graph", 0, None).get
-  val DefaultColumn = ServiceColumn.findOrInsert(DefaultService.id.get, "vertex", Some("string"), HBaseType.DEFAULT_VERSION, useCache = false)
-  val DefaultColumnMetas = {
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "test", "string", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "name", "string", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "age", "integer", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "lang", "string", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "oid", "integer", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "communityIndex", "integer", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "testing", "string", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "string", "string", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "boolean", "boolean", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "long", "long", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "float", "float", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "double", "double", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "integer", "integer", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "aKey", "string", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "x", "integer", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "y", "integer", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "location", "string", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "status", "string", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "myId", "integer", useCache = false)
-    ColumnMeta.findOrInsert(DefaultColumn.id.get, "acl", "string", useCache = false)
-  }
-
-  val DefaultLabel = management.createLabel("_s2graph", DefaultService.serviceName, DefaultColumn.columnName, DefaultColumn.columnType,
-    DefaultService.serviceName, DefaultColumn.columnName, DefaultColumn.columnType, true, DefaultService.serviceName, Nil, Nil, "weak", None, None,
-    options = Option("""{"skipReverse": false}""")
-  )
 
   def getStorage(service: Service): Storage[_, _] = {
     storagePool.getOrElse(s"service:${service.serviceName}", defaultStorage)
@@ -1576,11 +1557,11 @@ class S2Graph(_config: Config)(implicit val ec: ExecutionContext) extends Graph
       case vId: VertexId =>
         toVertex(vId.column.service.serviceName, vId.column.columnName, vId, kvsMap)
       case _ =>
-        val serviceColumnNames = kvsMap.getOrElse(T.label.toString, DefaultColumn.columnName).toString
+        val serviceColumnNames = kvsMap.getOrElse(T.label.toString, DefaultColumnName).toString
 
         val names = serviceColumnNames.split(S2Vertex.VertexLabelDelimiter)
         val (serviceName, columnName) =
-          if (names.length == 1) (DefaultService.serviceName, names(0))
+          if (names.length == 1) (DefaultServiceName, names(0))
           else throw new RuntimeException("malformed data on vertex label.")
 
         toVertex(serviceName, columnName, idValue, kvsMap)

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/0e47e118/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala
----------------------------------------------------------------------
diff --git a/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala b/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala
index bcec609..d0761e1 100644
--- a/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala
+++ b/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/S2GraphProvider.scala
@@ -1,25 +1,20 @@
 package org.apache.s2graph.core.tinkerpop
 
-import java.io.File
 import java.util
-import java.util.concurrent.atomic.AtomicLong
 
+import com.typesafe.config.ConfigFactory
 import org.apache.commons.configuration.Configuration
 import org.apache.s2graph.core.Management.JsonModel.Prop
+import org.apache.s2graph.core.S2Graph.{DefaultColumnName, DefaultServiceName}
 import org.apache.s2graph.core._
-import org.apache.s2graph.core.mysqls.{ColumnMeta, Label, ServiceColumn}
+import org.apache.s2graph.core.mysqls.{ColumnMeta, Service, ServiceColumn}
 import org.apache.s2graph.core.types.{HBaseType, InnerVal, VertexId}
+import org.apache.s2graph.core.utils.logger
 import org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData
 import org.apache.tinkerpop.gremlin.structure.{Element, Graph, T}
 import org.apache.tinkerpop.gremlin.{AbstractGraphProvider, LoadGraphWith}
 
 import scala.collection.JavaConverters._
-import scala.util.{Failure, Success, Try}
-import com.typesafe.config.ConfigFactory
-import org.apache.commons.io.FileUtils
-import org.apache.s2graph.core.utils.logger
-
-import scala.concurrent.ExecutionContext
 
 object S2GraphProvider {
   val Implementation: Set[Class[_]] = Set(
@@ -52,7 +47,7 @@ class S2GraphProvider extends AbstractGraphProvider {
 //          }
 //        }
 //        s2Graph.shutdown(modelDataDelete = true)
-        cleanupSchema(graph)
+        cleanupSchema
         s2Graph.shutdown(modelDataDelete = true)
         logger.info("S2Graph Shutdown")
       }
@@ -67,18 +62,51 @@ class S2GraphProvider extends AbstractGraphProvider {
     }
   }
 
-  private def cleanupSchema(graph: Graph): Unit = {
-    val s2Graph = graph.asInstanceOf[S2Graph]
-    val mnt = s2Graph.getManagement()
-    val defaultService = s2Graph.DefaultService
-    val defaultServiceColumn = s2Graph.DefaultColumn
+  def initDefaultSchema(graph: S2Graph): Unit = {
+    val management = graph.management
+
+//    Management.deleteService(DefaultServiceName)
+    val DefaultService = management.createService(DefaultServiceName, "localhost", "s2graph", 0, None).get
+
+//    Management.deleteColumn(DefaultServiceName, DefaultColumnName)
+    val DefaultColumn = ServiceColumn.findOrInsert(DefaultService.id.get, DefaultColumnName, Some("string"), HBaseType.DEFAULT_VERSION, useCache = false)
+
+    val DefaultColumnMetas = {
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "test", "string", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "name", "string", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "age", "integer", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "lang", "string", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "oid", "integer", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "communityIndex", "integer", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "testing", "string", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "string", "string", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "boolean", "boolean", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "long", "long", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "float", "float", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "double", "double", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "integer", "integer", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "aKey", "string", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "x", "integer", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "y", "integer", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "location", "string", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "status", "string", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "myId", "integer", useCache = false)
+      ColumnMeta.findOrInsert(DefaultColumn.id.get, "acl", "string", useCache = false)
+    }
+
+//    Management.deleteLabel("_s2graph")
+    val DefaultLabel = management.createLabel("_s2graph", DefaultService.serviceName, DefaultColumn.columnName, DefaultColumn.columnType,
+      DefaultService.serviceName, DefaultColumn.columnName, DefaultColumn.columnType, true, DefaultService.serviceName, Nil, Nil, "weak", None, None,
+      options = Option("""{"skipReverse": false}""")
+    ).get
+  }
 
-    val columnNames = Set(defaultServiceColumn.columnName, "person", "software", "product", "dog")
-    val labelNames = Set("knows", "created", "bought", "test", "self", "friends", "friend", "hate", "collaborator", "test1", "test2", "test3", "pets", "walks", "hates", "link")
+  private def cleanupSchema: Unit = {
+    val columnNames = Set(S2Graph.DefaultColumnName, "person", "software", "product", "dog")
+    val labelNames = Set(S2Graph.DefaultLabelName, "knows", "created", "bought", "test", "self", "friends", "friend", "hate", "collaborator", "test1", "test2", "test3", "pets", "walks", "hates", "link")
 
-    Management.deleteService(defaultService.serviceName)
     columnNames.foreach { columnName =>
-      Management.deleteColumn(defaultServiceColumn.service.serviceName, columnName)
+      Management.deleteColumn(S2Graph.DefaultServiceName, columnName)
     }
     labelNames.foreach { labelName =>
       Management.deleteLabel(labelName)
@@ -90,12 +118,13 @@ class S2GraphProvider extends AbstractGraphProvider {
   override def loadGraphData(graph: Graph, loadGraphWith: LoadGraphWith, testClass: Class[_], testName: String): Unit = {
     val s2Graph = graph.asInstanceOf[S2Graph]
     val mnt = s2Graph.getManagement()
-    val defaultService = s2Graph.DefaultService
-    val defaultServiceColumn = s2Graph.DefaultColumn
 
+    cleanupSchema
     initTestSchema(testClass, testName)
+    initDefaultSchema(s2Graph)
 
-    Management.deleteLabel("knows")
+    val defaultService = Service.findByName(S2Graph.DefaultServiceName).getOrElse(throw new IllegalStateException("default service is not initialized."))
+    val defaultServiceColumn = ServiceColumn.find(defaultService.id.get, S2Graph.DefaultColumnName).getOrElse(throw new IllegalStateException("default column is not initialized."))
 
     var knowsProp = Vector(
       Prop("weight", "0.0", "double"),
@@ -181,20 +210,19 @@ class S2GraphProvider extends AbstractGraphProvider {
       true, defaultService.serviceName, Nil, Seq(Prop("xxx", "-", "string")), "weak", None, None,
       options = Option("""{"skipReverse": true}"""))
 
-    val self = if (testClass.getSimpleName == "StarGraphTest") {
-      mnt.createLabel("self", defaultService.serviceName, "person", "integer",
-        defaultService.serviceName, "person", "integer",
-        true, defaultService.serviceName, Nil, Seq(Prop("acl", "-", "string")), "strong", None, None,
-        options = Option("""{"skipReverse": false}"""))
-    } else if (testClass.getSimpleName.contains("GraphTest")) {
-      mnt.createLabel("self", defaultService.serviceName, defaultServiceColumn.columnName, defaultServiceColumn.columnType, defaultService.serviceName, defaultServiceColumn.columnName, defaultServiceColumn.columnType,
-        true, defaultService.serviceName, Nil, Seq(Prop("acl", "-", "string")), "strong", None, None,
-        options = Option("""{"skipReverse": true}"""))
-    } else {
-      mnt.createLabel("self", defaultService.serviceName, defaultServiceColumn.columnName, defaultServiceColumn.columnType, defaultService.serviceName, defaultServiceColumn.columnName, defaultServiceColumn.columnType,
-        true, defaultService.serviceName, Nil, Seq(Prop("acl", "-", "string")), "weak", None, None,
-        options = Option("""{"skipReverse": true}"""))
-    }
+    val self =
+      if (loadGraphWith != null && loadGraphWith.value() == GraphData.CLASSIC) {
+        mnt.createLabel("self",
+          defaultService.serviceName, defaultServiceColumn.columnName, defaultServiceColumn.columnType,
+          defaultService.serviceName, defaultServiceColumn.columnName, defaultServiceColumn.columnType,
+          true, defaultService.serviceName, Nil, Seq(Prop("acl", "-", "string")), "strong", None, None,
+          options = Option("""{"skipReverse": true}"""))
+      } else {
+        mnt.createLabel("self", defaultService.serviceName, "person", "integer",
+          defaultService.serviceName, "person", "integer",
+          true, defaultService.serviceName, Nil, Seq(Prop("acl", "-", "string")), "strong", None, None,
+          options = Option("""{"skipReverse": false}"""))
+      }
 
     val friends =
       if (testClass.getSimpleName == "IoVertexTest") {

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/0e47e118/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/structure/S2GraphTest.scala
----------------------------------------------------------------------
diff --git a/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/structure/S2GraphTest.scala b/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/structure/S2GraphTest.scala
index cadfd37..e6083e9 100644
--- a/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/structure/S2GraphTest.scala
+++ b/s2core/src/test/scala/org/apache/s2graph/core/tinkerpop/structure/S2GraphTest.scala
@@ -325,45 +325,45 @@ class S2GraphTest extends FunSuite with Matchers with TestCommonWithModels {
   def convertToEdgeId(g: GraphTraversalSource, outVertexName: String, edgeLabel: String, inVertexName: String): AnyRef = {
     g.V().has("name", outVertexName).outE(edgeLabel).as("e").inV.has("name", inVertexName).select[Edge]("e").next().id()
   }
-  test("ccc") {
-    val mnt = graph.management
-    val defaultService = graph.DefaultService
-    val defaultServiceColumn = graph.DefaultColumn
-    val columnNames = Set(defaultServiceColumn.columnName, "person", "software", "product", "dog")
-    val labelNames = Set("knows", "created", "bought", "test", "self", "friends", "friend", "hate", "collaborator", "test1", "test2", "test3", "pets", "walks")
-
-    Management.deleteService(defaultService.serviceName)
-    columnNames.foreach { columnName =>
-      Management.deleteColumn(defaultServiceColumn.service.serviceName, columnName)
-    }
-    labelNames.foreach { labelName =>
-      Management.deleteLabel(labelName)
-    }
-    val personColumn = Management.createServiceColumn(defaultService.serviceName, "person", "integer",
-      Seq(Prop(T.id.toString, "-1", "integer"), Prop("name", "-", "string"), Prop("age", "0", "integer"), Prop("location", "-", "string")))
-    val knows = mnt.createLabel("knows",
-      defaultService.serviceName, "person", "integer",
-      defaultService.serviceName, "person", "integer",
-      true, defaultService.serviceName, Nil, Seq(Prop("since", "0", "integer"), Prop("year", "0", "integer")), consistencyLevel = "strong", None, None)
-
-    val created = mnt.createLabel("created",
-      defaultService.serviceName, "person", "integer",
-      defaultService.serviceName, "person", "integer",
-      true, defaultService.serviceName, Nil, Seq(Prop("weight", "0.0", "double")), "strong", None, None)
-
-    val g = graph.traversal()
-    val v1 = graph.addVertex(T.label, "person", T.id, Int.box(1), "name", "josh")
-    val v4 = graph.addVertex(T.label, "person", T.id, Int.box(4), "name", "lop")
-    val e = v1.addEdge("created", v4)
-
-    val toDetach = g.E(convertToEdgeId(g, "josh", "created", "lop")).next()
-    val outV = toDetach.vertices(Direction.OUT).next()
-    val detachedEdge = DetachedFactory.detach(toDetach, true)
-    val attached = detachedEdge.attach(Attachable.Method.get(outV))
-
-    assert(toDetach.equals(attached))
-    assert(!attached.isInstanceOf[DetachedEdge])
-  }
+//  test("ccc") {
+//    val mnt = graph.management
+//    val defaultService = graph.DefaultService
+//    val defaultServiceColumn = graph.DefaultColumn
+//    val columnNames = Set(defaultServiceColumn.columnName, "person", "software", "product", "dog")
+//    val labelNames = Set("knows", "created", "bought", "test", "self", "friends", "friend", "hate", "collaborator", "test1", "test2", "test3", "pets", "walks")
+//
+//    Management.deleteService(defaultService.serviceName)
+//    columnNames.foreach { columnName =>
+//      Management.deleteColumn(defaultServiceColumn.service.serviceName, columnName)
+//    }
+//    labelNames.foreach { labelName =>
+//      Management.deleteLabel(labelName)
+//    }
+//    val personColumn = Management.createServiceColumn(defaultService.serviceName, "person", "integer",
+//      Seq(Prop(T.id.toString, "-1", "integer"), Prop("name", "-", "string"), Prop("age", "0", "integer"), Prop("location", "-", "string")))
+//    val knows = mnt.createLabel("knows",
+//      defaultService.serviceName, "person", "integer",
+//      defaultService.serviceName, "person", "integer",
+//      true, defaultService.serviceName, Nil, Seq(Prop("since", "0", "integer"), Prop("year", "0", "integer")), consistencyLevel = "strong", None, None)
+//
+//    val created = mnt.createLabel("created",
+//      defaultService.serviceName, "person", "integer",
+//      defaultService.serviceName, "person", "integer",
+//      true, defaultService.serviceName, Nil, Seq(Prop("weight", "0.0", "double")), "strong", None, None)
+//
+//    val g = graph.traversal()
+//    val v1 = graph.addVertex(T.label, "person", T.id, Int.box(1), "name", "josh")
+//    val v4 = graph.addVertex(T.label, "person", T.id, Int.box(4), "name", "lop")
+//    val e = v1.addEdge("created", v4)
+//
+//    val toDetach = g.E(convertToEdgeId(g, "josh", "created", "lop")).next()
+//    val outV = toDetach.vertices(Direction.OUT).next()
+//    val detachedEdge = DetachedFactory.detach(toDetach, true)
+//    val attached = detachedEdge.attach(Attachable.Method.get(outV))
+//
+//    assert(toDetach.equals(attached))
+//    assert(!attached.isInstanceOf[DetachedEdge])
+//  }
 
 //  test("ddd") {
 ////    @Test