Repository: incubator-ignite Updated Branches: refs/heads/ignite-961 6961060ce -> eccf050b9
#ignite-1051: add tests for nodejs examples. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/eccf050b Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/eccf050b Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/eccf050b Branch: refs/heads/ignite-961 Commit: eccf050b9cf5f5f84bfb7488e4b6dbbca36bf7b5 Parents: 6961060 Author: ivasilinets <ivasilin...@gridgain.com> Authored: Fri Jul 31 13:13:18 2015 +0300 Committer: ivasilinets <ivasilin...@gridgain.com> Committed: Fri Jul 31 13:13:18 2015 +0300 ---------------------------------------------------------------------- examples/pom.xml | 8 ++ .../ignite/examples/NodeJsExamplesSelfTest.java | 92 ++++++++++++++++++++ modules/nodejs/src/main/js/server.js | 2 - .../ignite/internal/NodeJsAbstractTest.java | 34 +++++++- modules/nodejs/src/test/js/test-runner.js | 2 +- .../nodejs/src/test/js/test-script-runner.js | 37 ++++++++ 6 files changed, 168 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eccf050b/examples/pom.xml ---------------------------------------------------------------------- diff --git a/examples/pom.xml b/examples/pom.xml index 8204a36..54dc2ea 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -63,6 +63,14 @@ <dependency> <groupId>org.apache.ignite</groupId> + <artifactId>ignite-nodejs</artifactId> + <version>${project.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.ignite</groupId> <artifactId>ignite-spring</artifactId> <version>${project.version}</version> </dependency> http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eccf050b/examples/src/test/java/org/apache/ignite/examples/NodeJsExamplesSelfTest.java ---------------------------------------------------------------------- diff --git a/examples/src/test/java/org/apache/ignite/examples/NodeJsExamplesSelfTest.java b/examples/src/test/java/org/apache/ignite/examples/NodeJsExamplesSelfTest.java new file mode 100644 index 0000000..ee6e401 --- /dev/null +++ b/examples/src/test/java/org/apache/ignite/examples/NodeJsExamplesSelfTest.java @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.examples; + +import org.apache.ignite.configuration.*; +import org.apache.ignite.internal.*; +import org.apache.ignite.internal.util.typedef.internal.*; + +/** + * Test for nodejs examples. + */ +public class NodeJsExamplesSelfTest extends NodeJsAbstractTest { + /** {@inheritDoc} */ + @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { + return loadConfiguration("examples/config/js/example-query.xml"); + } + + /** {@inheritDoc} */ + @Override protected void beforeTestsStarted() throws Exception { + startGrid(0); + } + + /** {@inheritDoc} */ + @Override protected void afterTestsStopped() throws Exception { + stopAllGrids(); + } + + /** + * @throws Exception If failed. + */ + public void testCacheApiExample() throws Exception { + run("cache-api-example.js"); + } + + /** + * @throws Exception If failed. + */ + public void testCachePutGetExample() throws Exception { + run("cache-put-get-example.js"); + } + + /** + * @throws Exception If failed. + */ + public void testQueryExample() throws Exception { + run("cache-query-example.js"); + } + + /** + * @throws Exception If failed. + */ + public void testFieldsQueryExample() throws Exception { + run("cache-sql-fields-query-example.js"); + } + + /** + * @throws Exception If failed. + */ + public void testComputeRunExample() throws Exception { + run("compute-run-example.js"); + } + + /** + * @throws Exception If failed. + */ + public void testComputeMapReduceExample() throws Exception { + run("map-reduce-example.js"); + } + + /** + * @param fileName Example file name. + * @throws Exception If failed. + */ + private void run(String fileName) throws Exception { + runJsScript(null, U.getIgniteHome() + "/examples/src/main/js/" + fileName, ">>> end"); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eccf050b/modules/nodejs/src/main/js/server.js ---------------------------------------------------------------------- diff --git a/modules/nodejs/src/main/js/server.js b/modules/nodejs/src/main/js/server.js index 7fa22b1..fe2e12b 100644 --- a/modules/nodejs/src/main/js/server.js +++ b/modules/nodejs/src/main/js/server.js @@ -86,8 +86,6 @@ Server.prototype.runCommand = function(cmd, callback) { }); response.on('end', function () { - //console.log("Full response:" + fullResponseString); - if (response.statusCode !== 200) { if (response.statusCode === 401) { callback.call(null, "Authentication failed. Status code 401."); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eccf050b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsAbstractTest.java ---------------------------------------------------------------------- diff --git a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsAbstractTest.java b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsAbstractTest.java index 47152e9..011d727 100644 --- a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsAbstractTest.java +++ b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsAbstractTest.java @@ -58,6 +58,13 @@ public class NodeJsAbstractTest extends GridCommonAbstractTest { this.fileName = fileName; } + /** + * Empty constructor. + */ + protected NodeJsAbstractTest() { + // No-op. + } + /** {@inheritDoc} */ @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { IgniteConfiguration cfg = super.getConfiguration(gridName); @@ -111,6 +118,16 @@ public class NodeJsAbstractTest extends GridCommonAbstractTest { * @throws Exception If script failed. */ protected void runJsScript(String functionName) throws Exception { + runJsScript(functionName, getNodeJsTestDir() + fileName, null); + } + + /** + * @param functionName Function name. + * @param fileName File name. + * @param scriptFinished Script finished string. + * @throws Exception If script failed. + */ + protected void runJsScript(String functionName, String fileName, String scriptFinished) throws Exception { final CountDownLatch readyLatch = new CountDownLatch(1); GridJavaProcess proc = null; @@ -120,9 +137,18 @@ public class NodeJsAbstractTest extends GridCommonAbstractTest { List<String> cmd = new ArrayList<>(); cmd.add("node"); - cmd.add(getNodeJsTestDir() + "test-runner.js"); - cmd.add(fileName); - cmd.add(functionName); + + if (functionName != null) { + cmd.add(getNodeJsTestDir() + "test-runner.js"); + cmd.add(fileName); + cmd.add(functionName); + } + else { + cmd.add(getNodeJsTestDir() + "test-script-runner.js"); + cmd.add(fileName); + } + + final String finishedFlag = scriptFinished != null ? scriptFinished : SCRIPT_FINISHED; Map<String, String> env = new HashMap<>(); @@ -136,7 +162,7 @@ public class NodeJsAbstractTest extends GridCommonAbstractTest { s = s.toLowerCase(); - if (s.contains(SCRIPT_FINISHED)) + if (s.contains(finishedFlag)) readyLatch.countDown(); if (s.contains("assert") || s.contains(SCRIPT_FAILED)) { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eccf050b/modules/nodejs/src/test/js/test-runner.js ---------------------------------------------------------------------- diff --git a/modules/nodejs/src/test/js/test-runner.js b/modules/nodejs/src/test/js/test-runner.js index 9ee1092..86ac082 100644 --- a/modules/nodejs/src/test/js/test-runner.js +++ b/modules/nodejs/src/test/js/test-runner.js @@ -31,7 +31,7 @@ TestRunner.runTest = function() { console.log("FileName " + fileName); - require("./" + fileName); + require(fileName); var functionName = process.argv[3].toString().trim(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eccf050b/modules/nodejs/src/test/js/test-script-runner.js ---------------------------------------------------------------------- diff --git a/modules/nodejs/src/test/js/test-script-runner.js b/modules/nodejs/src/test/js/test-script-runner.js new file mode 100644 index 0000000..9ebfbce --- /dev/null +++ b/modules/nodejs/src/test/js/test-script-runner.js @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Create instance of ScriptTestRunner + * + * @constructor + */ +function ScriptTestRunner() { +} + +/** + * Test routine + */ +ScriptTestRunner.runTest = function() { + var fileName = process.argv[2].toString().trim(); + + console.log("FileName " + fileName); + + require(fileName); +} + +ScriptTestRunner.runTest(); \ No newline at end of file