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 <[email protected]> Authored: Sun Apr 30 10:54:29 2017 +0900 Committer: DO YUNG YOON <[email protected]> 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
