Repository: incubator-s2graph
Updated Branches:
  refs/heads/master cf1bc9150 -> f5d14ab92


[S2GRAPH-28] _to option gives wrong result on query.

  This resolves S2GRAPH-28.
  Renamed insertEdgesSync to mutateEdgesSync since deletions are also handled 
by this function.

JIRA:
  [S2GRAPH-28] https://issues.apache.org/jira/browse/S2GRAPH-28

Pull Request:
  Closes #13

Authors:
      Hyunsung Jo: [email protected]


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

Branch: refs/heads/master
Commit: f5d14ab929debbe8250a256c3d55f9c62e85ef39
Parents: cf1bc91
Author: DO YUNG YOON <[email protected]>
Authored: Tue Feb 23 16:06:18 2016 +0900
Committer: DO YUNG YOON <[email protected]>
Committed: Tue Feb 23 16:06:18 2016 +0900

----------------------------------------------------------------------
 CHANGES                                         |  5 ++-
 .../storage/hbase/AsynchbaseQueryBuilder.scala  |  2 +-
 .../kakao/s2graph/core/Integrate/CrudTest.scala |  2 +-
 .../core/Integrate/IntegrateCommon.scala        |  4 +-
 .../s2graph/core/Integrate/QueryTest.scala      | 45 +++++++++++++++++---
 .../core/Integrate/StrongLabelDeleteTest.scala  | 10 ++---
 .../core/Integrate/WeakLabelDeleteTest.scala    |  4 +-
 7 files changed, 55 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f5d14ab9/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 347f9b6..bb927e8 100644
--- a/CHANGES
+++ b/CHANGES
@@ -21,7 +21,10 @@ Release 0.12.1 - unreleased
 
     S2GRAPH-20: bug fix in query option "sample".
                 (Contributed by Hyunsung Jo<[email protected]>, committed 
by DOYUNG YOON)
-                
+      
+    S2GRAPH-28: _to option gives wrong result on query.        
+                (Contributed by Hyunsung Jo<[email protected]>, committed 
by DOYUNG YOON)
+
   TASKS
 
     S2GRAPH-2: Update document and quick start environment to have recent 
set-up command changes.

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f5d14ab9/s2core/src/main/scala/com/kakao/s2graph/core/storage/hbase/AsynchbaseQueryBuilder.scala
----------------------------------------------------------------------
diff --git 
a/s2core/src/main/scala/com/kakao/s2graph/core/storage/hbase/AsynchbaseQueryBuilder.scala
 
b/s2core/src/main/scala/com/kakao/s2graph/core/storage/hbase/AsynchbaseQueryBuilder.scala
index 13cfc0d..b78669c 100644
--- 
a/s2core/src/main/scala/com/kakao/s2graph/core/storage/hbase/AsynchbaseQueryBuilder.scala
+++ 
b/s2core/src/main/scala/com/kakao/s2graph/core/storage/hbase/AsynchbaseQueryBuilder.scala
@@ -224,7 +224,7 @@ class AsynchbaseQueryBuilder(storage: 
AsynchbaseStorage)(implicit ec: ExecutionC
           parentEdge <- prevStepEdgesOpt.get
         } yield parentEdge
 
-        fetch(queryRequest, prevStepScore, isInnerCall = true, parentEdges)
+        fetch(queryRequest, prevStepScore, isInnerCall = false, parentEdges)
       }
 
     val grouped: Deferred[util.ArrayList[QueryRequestWithResult]] = 
Deferred.group(defers)

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f5d14ab9/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/CrudTest.scala
----------------------------------------------------------------------
diff --git 
a/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/CrudTest.scala 
b/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/CrudTest.scala
index 1c09778..438b97d 100644
--- a/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/CrudTest.scala
+++ b/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/CrudTest.scala
@@ -173,7 +173,7 @@ class CrudTest extends IntegrateCommon {
             TestUtil.toEdge(ts, op, "e", srcId, tgtId, labelName, props)
           })
 
-          TestUtil.insertEdgesSync(bulkEdges: _*)
+          TestUtil.mutateEdgesSync(bulkEdges: _*)
 
           for {
             label <- Label.findByName(labelName)

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f5d14ab9/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/IntegrateCommon.scala
----------------------------------------------------------------------
diff --git 
a/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/IntegrateCommon.scala 
b/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/IntegrateCommon.scala
index e60b824..751a7a7 100644
--- 
a/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/IntegrateCommon.scala
+++ 
b/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/IntegrateCommon.scala
@@ -119,14 +119,14 @@ trait IntegrateCommon extends FunSuite with Matchers with 
BeforeAndAfterAll {
       jsResult
     }
 
-    def insertEdgesSync(bulkEdges: String*) = {
+    def mutateEdgesSync(bulkEdges: String*) = {
       val req = 
graph.mutateElements(parser.toGraphElements(bulkEdges.mkString("\n")), withWait 
= true)
       val jsResult = Await.result(req, HttpRequestWaitingTime)
 
       jsResult
     }
 
-    def insertEdgesAsync(bulkEdges: String*) = {
+    def mutateEdgesAsync(bulkEdges: String*) = {
       val req = 
graph.mutateElements(parser.toGraphElements(bulkEdges.mkString("\n")), withWait 
= true)
       req
     }

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f5d14ab9/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/QueryTest.scala
----------------------------------------------------------------------
diff --git 
a/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/QueryTest.scala 
b/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/QueryTest.scala
index 633476e..0d2d82e 100644
--- a/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/QueryTest.scala
+++ b/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/QueryTest.scala
@@ -8,6 +8,7 @@ class QueryTest extends IntegrateCommon with BeforeAndAfterEach 
{
   import TestUtil._
 
   val insert = "insert"
+  val delete = "delete"
   val e = "e"
   val weight = "weight"
   val is_hidden = "is_hidden"
@@ -245,7 +246,7 @@ class QueryTest extends IntegrateCommon with 
BeforeAndAfterEach {
     val src = 100
     val tgt = 200
 
-    insertEdgesSync(toEdge(1001, "insert", "e", src, tgt, testLabelName))
+    mutateEdgesSync(toEdge(1001, "insert", "e", src, tgt, testLabelName))
 
     val result = TestUtil.getEdgesSync(queryParents(src))
     val parents = (result \ "results").as[Seq[JsValue]]
@@ -286,7 +287,7 @@ class QueryTest extends IntegrateCommon with 
BeforeAndAfterEach {
       toEdge(3003, insert, e, src, 3, testLabelName, Json.obj(weight -> 30)),
       toEdge(4004, insert, e, src, 4, testLabelName, Json.obj(weight -> 40))
     )
-    insertEdgesSync(bulkEdges: _*)
+    mutateEdgesSync(bulkEdges: _*)
 
     var result = getEdgesSync(querySingle(src, offset = 0, limit = 2))
     var edges = (result \ "results").as[List[JsValue]]
@@ -350,7 +351,7 @@ class QueryTest extends IntegrateCommon with 
BeforeAndAfterEach {
       toEdge(4004, insert, e, 2, 1, testLabelName, Json.obj(weight -> 40))
     )
 
-    insertEdgesSync(bulkEdges: _*)
+    mutateEdgesSync(bulkEdges: _*)
 
     // get edges
     val edges = getEdgesSync(queryScore(0, Map("weight" -> 1)))
@@ -367,6 +368,40 @@ class QueryTest extends IntegrateCommon with 
BeforeAndAfterEach {
     edgesTo.reverse should be(ascOrderByTo)
   }
 
+  test("query with '_to' option after delete") {
+    val from = 90210
+    val to = 90211
+    val inserts = Seq(toEdge(1, insert, e, from, to, testLabelName))
+    mutateEdgesSync(inserts: _*)
+
+    val deletes = Seq(toEdge(2, delete, e, from, to, testLabelName))
+    mutateEdgesSync(deletes: _*)
+
+    def queryWithTo = Json.parse(
+      s"""
+        { "srcVertices": [
+          { "serviceName": "$testServiceName",
+            "columnName": "$testColumnName",
+            "id": $from
+           }],
+          "steps": [
+            {
+              "step": [{
+                "label": "$testLabelName",
+                "direction": "out",
+                "offset": 0,
+                "limit": 10,
+                "_to": $to
+                }]
+            }
+          ]
+        }
+      """)
+    val result = getEdgesSync(queryWithTo)
+    (result \ "results").as[List[JsValue]].size should be(0)
+
+  }
+
   test("query with sampling") {
     def queryWithSampling(id: Int, sample: Int) = Json.parse(
       s"""
@@ -467,7 +502,7 @@ class QueryTest extends IntegrateCommon with 
BeforeAndAfterEach {
       toEdge(ts, insert, e, 322, 3322, testLabelName)
     )
 
-    insertEdgesSync(bulkEdges: _*)
+    mutateEdgesSync(bulkEdges: _*)
 
     var result = getEdgesSync(queryWithSampling(testId, sampleSize))
     println(Json.toJson(result))
@@ -520,7 +555,7 @@ class QueryTest extends IntegrateCommon with 
BeforeAndAfterEach {
   override def initTestData(): Unit = {
     super.initTestData()
 
-    insertEdgesSync(
+    mutateEdgesSync(
       toEdge(1000, insert, e, 0, 1, testLabelName, Json.obj(weight -> 40, 
is_hidden -> true)),
       toEdge(2000, insert, e, 0, 2, testLabelName, Json.obj(weight -> 30, 
is_hidden -> false)),
       toEdge(3000, insert, e, 2, 0, testLabelName, Json.obj(weight -> 20)),

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f5d14ab9/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/StrongLabelDeleteTest.scala
----------------------------------------------------------------------
diff --git 
a/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/StrongLabelDeleteTest.scala
 
b/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/StrongLabelDeleteTest.scala
index 69a49b4..bdcdb9e 100644
--- 
a/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/StrongLabelDeleteTest.scala
+++ 
b/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/StrongLabelDeleteTest.scala
@@ -14,7 +14,7 @@ class StrongLabelDeleteTest extends IntegrateCommon {
   import TestUtil._
 
   test("Strong consistency select") {
-    insertEdgesSync(bulkEdges(): _*)
+    mutateEdgesSync(bulkEdges(): _*)
 
     var result = getEdgesSync(query(0))
     (result \ "results").as[List[JsValue]].size should be(2)
@@ -56,7 +56,7 @@ class StrongLabelDeleteTest extends IntegrateCommon {
     println(result)
     (result \ "results").as[List[JsValue]].size should be(0)
 
-    insertEdgesSync(bulkEdges(startTs = deletedAt + 1): _*)
+    mutateEdgesSync(bulkEdges(startTs = deletedAt + 1): _*)
 
     result = getEdgesSync(query(20, direction = "in", columnName = 
testTgtColumnName))
     println(result)
@@ -136,7 +136,7 @@ class StrongLabelDeleteTest extends IntegrateCommon {
     val allRequests = Random.shuffle(insertRequests ++ deleteRequests)
     //        val allRequests = insertRequests ++ deleteRequests
     val futures = allRequests.grouped(numOfConcurrentBatch).map { bulkRequests 
=>
-      insertEdgesAsync(bulkRequests: _*)
+      mutateEdgesAsync(bulkRequests: _*)
     }
 
     Await.result(Future.sequence(futures), Duration(20, TimeUnit.MINUTES))
@@ -175,7 +175,7 @@ class StrongLabelDeleteTest extends IntegrateCommon {
     }
     val allRequests = Random.shuffle(insertRequests ++ deleteRequests)
     val futures = allRequests.grouped(numOfConcurrentBatch).map { bulkRequests 
=>
-      insertEdgesAsync(bulkRequests: _*)
+      mutateEdgesAsync(bulkRequests: _*)
     }
 
     Await.result(Future.sequence(futures), Duration(20, TimeUnit.MINUTES))
@@ -223,7 +223,7 @@ class StrongLabelDeleteTest extends IntegrateCommon {
       allRequests.foreach(println(_))
 
       val futures = Random.shuffle(allRequests).grouped(batchSize).map { 
bulkRequests =>
-        insertEdgesAsync(bulkRequests: _*)
+        mutateEdgesAsync(bulkRequests: _*)
       }
 
       Await.result(Future.sequence(futures), Duration(20, TimeUnit.MINUTES))

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/f5d14ab9/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/WeakLabelDeleteTest.scala
----------------------------------------------------------------------
diff --git 
a/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/WeakLabelDeleteTest.scala
 
b/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/WeakLabelDeleteTest.scala
index b80d9c7..1e2d836 100644
--- 
a/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/WeakLabelDeleteTest.scala
+++ 
b/s2core/src/test/scala/com/kakao/s2graph/core/Integrate/WeakLabelDeleteTest.scala
@@ -76,7 +76,7 @@ class WeakLabelDeleteTest extends IntegrateCommon with 
BeforeAndAfterEach {
     println(result)
     (result \ "results").as[List[JsValue]].size should be(0)
 
-    insertEdgesSync(bulkEdges(startTs = deletedAt + 1): _*)
+    mutateEdgesSync(bulkEdges(startTs = deletedAt + 1): _*)
 
     result = getEdgesSync(query(20, "in", testTgtColumnName))
     (result \ "results").as[List[JsValue]].size should be(3)
@@ -90,7 +90,7 @@ class WeakLabelDeleteTest extends IntegrateCommon with 
BeforeAndAfterEach {
 
   override def initTestData(): Unit = {
     super.initTestData()
-    insertEdgesSync(bulkEdges(): _*)
+    mutateEdgesSync(bulkEdges(): _*)
   }
 
   object WeakLabelDeleteHelper {

Reply via email to