You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by iv...@apache.org on 2015/07/14 13:46:00 UTC

[2/3] incubator-ignite git commit: #ignite-961: rewrite query-tests.

#ignite-961: rewrite query-tests.


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

Branch: refs/heads/ignite-961-promise
Commit: fee4ed9ea9210da2b87c87049ccedb7ae1d397ad
Parents: 88bb97d
Author: ivasilinets <iv...@gridgain.com>
Authored: Tue Jul 14 14:19:26 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Tue Jul 14 14:19:26 2015 +0300

----------------------------------------------------------------------
 modules/nodejs/src/main/js/cache.js             |  46 +++--
 .../ignite/internal/NodeJsSqlQuerySelfTest.java |  10 --
 modules/nodejs/src/test/js/test-query.js        | 173 +++++++------------
 3 files changed, 99 insertions(+), 130 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fee4ed9e/modules/nodejs/src/main/js/cache.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/main/js/cache.js b/modules/nodejs/src/main/js/cache.js
index a84b993..f1396e3 100644
--- a/modules/nodejs/src/main/js/cache.js
+++ b/modules/nodejs/src/main/js/cache.js
@@ -268,29 +268,46 @@ Cache.prototype.size = function(callback) {
  * @param {SqlQuery|SqlFieldsQuery} qry Query
  */
 Cache.prototype.query = function(qry) {
-    if (qry.returnType() == null) {
-        qry.end("No type for sql query.");
+    var cmd;
 
-        return;
-    }
+    if (qry.type() === "Sql") {
+        if (qry.returnType() == null) {
+            return new Promise(function(resolve, reject) {
+                reject("No type for sql query.");
+            });
+        }
 
-    var command = this._createQueryCommand("qryexecute", qry).addParam("type", qry.returnType()).
-        setPostData(JSON.stringify({"arg" : qry.arguments()}));
+        cmd = this._sqlQuery(qry);
+    }
+    else {
+        cmd = this._sqlFieldsQuery(qry);
+    }
 
     var server = this._server;
+    var cache = this;
 
     return new Promise(function(resolve, reject) {
-        server.runCommand(command, function(err, res){
+        server.runCommand(cmd, function(err, res){
             if(err != null) {
                 reject(err);
             }
             else {
-                resolve(new Cursor(qry, res));
+                resolve(new Cursor(qry, res, cache));
             }
         });
     });
 }
 
+Cache.prototype._sqlFieldsQuery = function(qry) {
+    return this._createQueryCommand("qryfieldsexecute", qry).
+        setPostData(JSON.stringify({"arg" : qry.arguments()}));
+}
+
+Cache.prototype._sqlQuery = function(qry) {
+    return this._createQueryCommand("qryexecute", qry).addParam("type", qry.returnType()).
+        setPostData(JSON.stringify({"arg" : qry.arguments()}));
+}
+
 Cache.prototype.__createPromise = function(cmd) {
     var server = this._server;
 
@@ -320,9 +337,10 @@ Cache.prototype._createQueryCommand = function(name, qry) {
     return command.addParam("psz", qry.pageSize());
 }
 
-Cursor = function(qry, res) {
+Cursor = function(qry, res, cache) {
     this._qry = qry;
     this._res = res;
+    this._cache = cache;
 }
 
 Cursor.prototype.next = function() {
@@ -330,10 +348,12 @@ Cursor.prototype.next = function() {
         throw "All pages are returned.";
     }
 
-    var cmd = this._createCommand("qryfetch").addParam("qryId", _res.queryId).
-        addParam("psz", _qry.pageSize());
+    var cmd = this._cache._createCommand("qryfetch").addParam("qryId", this._res.queryId).
+        addParam("psz", this._qry.pageSize());
 
-    var server = this._server;
+    var server = this._cache._server;
+    var qry = this._qry;
+    var cache = this._cache;
 
     return new Promise(function(resolve, reject) {
        server.runCommand(cmd, function(err, res) {
@@ -341,7 +361,7 @@ Cursor.prototype.next = function() {
                reject(err);
            }
            else {
-               resolve(new Cursor(qry, res));
+               resolve(new Cursor(qry, res, cache));
            }
        });
     });

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fee4ed9e/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsSqlQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsSqlQuerySelfTest.java b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsSqlQuerySelfTest.java
index e83a32e..9024b93 100644
--- a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsSqlQuerySelfTest.java
+++ b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsSqlQuerySelfTest.java
@@ -70,16 +70,6 @@ public class NodeJsSqlQuerySelfTest extends NodeJsAbstractTest {
         runJsScript("testSqlQueryWithParams");
     }
 
-
-    /**
-     * @throws Exception If failed.
-     */
-    public void testSqlPromiseQuery() throws Exception {
-        initCache();
-
-        runJsScript("testSqlPromiseQuery");
-    }
-
     /**
      * Init cache.
      */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fee4ed9e/modules/nodejs/src/test/js/test-query.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/js/test-query.js b/modules/nodejs/src/test/js/test-query.js
index fd01945..cbdb643 100644
--- a/modules/nodejs/src/test/js/test-query.js
+++ b/modules/nodejs/src/test/js/test-query.js
@@ -24,131 +24,84 @@ var SqlQuery = Ignite.SqlQuery;
 var SqlFieldsQuery = Ignite.SqlFieldsQuery;
 
 testSqlQuery = function() {
-    function sqlQuery(ignite, error) {
-        assert(error == null, "error on sql query [err=" + error + "]");
+    TestUtils.startIgniteNode().then(function(ignite) {
+        ignite.cache("mycache").put("key0", "val0").then(function() {
+            var qry = new SqlQuery("select * from String");
 
-        var qry = new SqlQuery("select * from String");
+            qry.setReturnType("String");
 
-        qry.setReturnType("String");
+            var fullRes = [];
 
-        var fullRes = [];
-
-        qry.on("page", function(res) {
-            fullRes = fullRes.concat(res);
-        });
-
-        qry.on("end", function(err) {
-            assert(err === null, "Error on query [err=" + err + "].");
+            function onQuery(cursor) {
+                var page = cursor.page();
 
-            assert(fullRes.length === 1, "Result length is not correct" +
-                "[expected=1, val = " + fullRes.length + "]");
+                fullRes = fullRes.concat(page);
 
-            assert(fullRes[0]["key"] === "key0", "Result value for key is not correct "+
-                "[expected=key0, real=" + fullRes[0]["key"] + "]");
+                if (cursor.isFinished()) {
+                    assert(fullRes.length === 1, "Result length is not correct" +
+                        "[expected=1, val = " + fullRes.length + "]");
 
-            assert(fullRes[0]["value"] === "val0", "Result value for key is not correct "+
-                "[expected=val0, real=" + fullRes[0]["value"] + "]");
+                    assert(fullRes[0]["key"] === "key0", "Result value for key is not correct "+
+                        "[expected=key0, real=" + fullRes[0]["key"] + "]");
 
-            TestUtils.testDone();
-        });
+                    assert(fullRes[0]["value"] === "val0", "Result value for key is not correct "+
+                        "[expected=val0, real=" + fullRes[0]["value"] + "]");
 
-        ignite.cache("mycache").query(qry);
-    }
+                    TestUtils.testDone();
 
-    function put(error, ignite) {
-        assert(error == null, "error on put [err=" + error + "]");
+                    return;
+                }
 
-        ignite.cache("mycache").put("key0", "val0", sqlQuery.bind(null, ignite))
-    }
+                cursor.next().then(onQuery);
+            }
 
-    TestUtils.startIgniteNode(put);
+            ignite.cache("mycache").query(qry).then(onQuery);
+        }).catch(function(err) {
+            assert(err === null, err);
+        })
+    }).catch(function(err) {
+        assert(err === null, err);
+    });
 }
 
-testSqlPromiseQuery = function() {
-    function sqlQuery(ignite, error) {
-        assert(error == null, "error on sql query [err=" + error + "]");
-
-        var qry = new SqlQuery("select * from String");
-        qry.setReturnType("String");
+testSqlFieldsQuery = function() {
+    TestUtils.startIgniteNode().then(function(ignite) {
+        var qry = new SqlFieldsQuery("select concat(firstName, ' ', lastName) from Person");
 
         var fullRes = [];
 
         function onQuery(cursor) {
-            console.log("RESULT PAGE=" + cursor.page())
-           fullRes = fullRes.concat(cursor.page());
+            var page = cursor.page();
 
-            if (cursor.isFinished()) {
-                console.log("Result=" + JSON.stringify(fullRes));
+            fullRes = fullRes.concat(page);
 
-                assert(fullRes.length === 1, "Result length is not correct" +
+            if (cursor.isFinished()) {
+                assert(fullRes.length === 4, "Result length is not correct" +
                     "[expected=1, val = " + fullRes.length + "]");
 
-                assert(fullRes[0]["key"] === "key0", "Result value for key is not correct "+
-                    "[expected=key0, real=" + fullRes[0]["key"] + "]");
+                fullRes.sort();
+
+                assert(fullRes[0].indexOf("Jane Doe") > -1,
+                    "Result does not contain Jane Doe [res=" + fullRes[0] + "]");
 
-                assert(fullRes[0]["value"] === "val0", "Result value for key is not correct "+
-                    "[expected=val0, real=" + fullRes[0]["value"] + "]");
+                console.log("Result: " + JSON.stringify(fullRes));
 
                 TestUtils.testDone();
 
                 return;
             }
 
-            var nextPromise = cursor.next();
-
-            nextPromise.then(onQuery);
-
+            cursor.next().then(onQuery);
         }
 
-        ignite.cachePromise("mycache").query(qry).then(onQuery);
-    }
-
-    function put(error, ignite) {
-        assert(error == null, "error on put [err=" + error + "]");
-
-        ignite.cache("mycache").put("key0", "val0", sqlQuery.bind(null, ignite))
-    }
-
-    TestUtils.startIgniteNode(put);
-}
-
-testSqlFieldsQuery = function() {
-    function sqlFieldsQuery(error, ignite) {
-        assert(error == null, "error on sqlfields query [err=" + error + "]");
-
-        var qry = new SqlFieldsQuery("select concat(firstName, ' ', lastName) from Person");
-
-        var fullRes = [];
-
-        qry.on("page", function(res) {
-            console.log("PAGE:" + res);
-            fullRes = fullRes.concat(res);
-        });
-
-        qry.on("end", function(err) {
-            assert(err === null, "Error on query [err=" + err + "].");
-
-            assert(fullRes.length === 4, "Result length is not correct" +
-                "[expected=1, val = " + fullRes.length + "]");
-
-            fullRes.sort();
-
-            assert(fullRes[0].indexOf("Jane Doe") > -1,
-                "Result does not contain Jane Doe [res=" + fullRes[0] + "]");
-
-            TestUtils.testDone();
-        });
-
-        ignite.cache("person").query(qry);
-    }
-
-    TestUtils.startIgniteNode(sqlFieldsQuery.bind(null));
+        ignite.cache("person").query(qry).then(onQuery);
+    }).catch(function(err) {
+        assert(err === null, err);
+    });
 }
 
 testSqlQueryWithParams = function() {
-    function sqlQueryWithParams(error, ignite) {
-        assert(error == null, "error on sql query [err=" + error + "]");
-
+    TestUtils.startIgniteNode().then(function(ignite) {
         var qry = new SqlQuery("salary > ? and salary <= ?");
 
         qry.setReturnType("Person");
@@ -157,25 +110,31 @@ testSqlQueryWithParams = function() {
 
         var fullRes = [];
 
-        qry.on("page", function(res) {
-            fullRes = fullRes.concat(res);
-        });
+        function onQuery(cursor) {
+            var page = cursor.page();
+
+            fullRes = fullRes.concat(page);
+
+            if (cursor.isFinished()) {
+                assert(fullRes.length === 2, "Result length is not correct" +
+                    "[expected=1, val = " + fullRes.length + "]");
 
-        qry.on("end", function(err) {
-            assert(err === null, "Error on query [err=" + err + "].");
+                assert(((fullRes[0]["value"]["firstName"].indexOf("Jane") > -1) ||
+                    (fullRes[0]["value"]["firstName"].indexOf("John") > -1)),
+                    "Result does not contain Jane and John [res=" + fullRes[0]["value"]["firstName"] + "]");
 
-            assert(fullRes.length === 2, "Result length is not correct" +
-                "[expected=1, val = " + fullRes.length + "]");
+                console.log("Result: " + JSON.stringify(fullRes));
 
-            assert(((fullRes[0]["value"]["firstName"].indexOf("Jane") > -1) ||
-                (fullRes[0]["value"]["firstName"].indexOf("John") > -1)),
-                "Result does not contain Jane and John [res=" + fullRes[0]["value"]["firstName"] + "]");
+                TestUtils.testDone();
 
-            TestUtils.testDone();
-        });
+                return;
+            }
 
-        ignite.cache("person").query(qry);
-    }
+            cursor.next().then(onQuery);
+        }
 
-    TestUtils.startIgniteNode(sqlQueryWithParams.bind(null));
+        ignite.cache("person").query(qry).then(onQuery);
+    }).catch(function(err) {
+        assert(err === null, err);
+    });
 }
\ No newline at end of file