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