You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@toree.apache.org by ch...@apache.org on 2016/06/07 14:40:09 UTC

incubator-toree git commit: Add jar kernel test and override execute_helper

Repository: incubator-toree
Updated Branches:
  refs/heads/master 30dffb8b8 -> 05b698c1b


Add jar kernel test and override execute_helper


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

Branch: refs/heads/master
Commit: 05b698c1bdbe2a117b8903e0301574bb97fa6e5c
Parents: 30dffb8
Author: Michael Poplavski <mi...@gmail.com>
Authored: Thu May 26 15:09:10 2016 -0500
Committer: Michael Poplavski <mi...@gmail.com>
Committed: Tue Jun 7 09:05:18 2016 -0500

----------------------------------------------------------------------
 Makefile      |  5 +++--
 test_toree.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 56 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/05b698c1/Makefile
----------------------------------------------------------------------
diff --git a/Makefile b/Makefile
index 2da903f..884d4ec 100644
--- a/Makefile
+++ b/Makefile
@@ -182,9 +182,10 @@ system-test: pip-release
 		--name jupyter_kernel_tests \
 		-v `pwd`/dist/toree-pip:/srv/toree-pip \
 		-v `pwd`/test_toree.py:/srv/test_toree.py \
+		-v `pwd`/scala-interpreter/src/test/resources:/srv/system-test-resources \
 		$(IMAGE) \
-		bash -c "pip install /srv/toree-pip/toree*.tar.gz ; jupyter toree install --user --kernel_name='Apache_Toree' ; \
-		pip install nose jupyter_kernel_test ; python /srv/test_toree.py"
+		bash -c "(cd /srv/system-test-resources && python -m http.server 8000 &) && pip install /srv/toree-pip/toree*.tar.gz && jupyter toree install --user --kernel_name='Apache_Toree' && \
+		pip install nose jupyter_kernel_test && python /srv/test_toree.py"
 
 ################################################################################
 # Jars

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/05b698c1/test_toree.py
----------------------------------------------------------------------
diff --git a/test_toree.py b/test_toree.py
index b8f1bfc..da25b2b 100644
--- a/test_toree.py
+++ b/test_toree.py
@@ -36,14 +36,64 @@ class ToreeKernelTests(jupyter_kernel_test.KernelTests):
     # Code in the kernel's language to write "hello, world" to stdout
     code_hello_world = "println(\"hello, world\")"
 
-    # Samples of code which generate a result value (ie, some text
-    # displayed as Out[n])
-    code_execute_result = [
+    test_statements_execute_result = [
         {'code': '6*7', 'result': '42'},
         {'code': 'sc.parallelize(List(1, 2, 3, 4)).map(_*2).reduce(_+_)', 'result': '20'},
         {'code': '%showtypes on\n1', 'result': 'Int = 1'},
         {'code': '%showtypes off\n1', 'result': '1'}
     ]
 
+    test_statements_stdout = [
+        {'code': '%AddJar http://0.0.0.0:8000/TestJar.jar\nimport com.ibm.testjar.TestClass\nprintln(new TestClass().sayHello("Person"))', 'result': 'Hello, Person\n'}
+    ]
+
+    def test_scala_stdout(self):
+        '''Asserts test_statements execute correctly meaning the last message is the expected result'''
+        for sample in self.test_statements_stdout:
+            with self.subTest(code=sample['code']):
+                self.flush_channels()
+                reply, output_msgs = self.execute_helper(sample['code'])
+
+                self.assertEqual(reply['content']['status'], 'ok')
+
+                self.assertGreaterEqual(len(output_msgs), 1)
+                self.assertEqual(output_msgs[-1]['msg_type'], 'stream')
+                self.assertEqual(output_msgs[-1]['content']['name'], 'stdout')
+                self.assertIn(sample['result'], output_msgs[-1]['content']['text'])
+
+    def test_scala_execute_result(self):
+        '''Asserts test_statements execute correctly meaning the last message is the expected result'''
+        for sample in self.test_statements_execute_result:
+            with self.subTest(code=sample['code']):
+                self.flush_channels()
+
+                reply, output_msgs = self.execute_helper(sample['code'])
+                self.assertEqual(reply['content']['status'], 'ok')
+                #Use last message as code may be multiple lines/stream
+                self.assertIn('text/plain', output_msgs[-1]['content']['data'])
+                self.assertEqual(output_msgs[-1]['content']['data']['text/plain'], sample['result'])
+
+    def execute_helper(self, code, timeout=15,
+                       silent=False, store_history=True):
+        '''Overrides the jupyter kernel test execute_helper'''
+        self.kc.execute(code=code, silent=silent, store_history=store_history)
+
+        reply = self.kc.get_shell_msg(timeout=timeout)
+
+        output_msgs = []
+        while True:
+            msg = self.kc.iopub_channel.get_msg(timeout=0.1)
+            if msg['msg_type'] == 'status':
+                if msg['content']['execution_state'] == 'busy':
+                    continue
+                elif msg['content']['execution_state'] == 'idle':
+                    break
+            elif msg['msg_type'] == 'execute_input':
+                self.assertEqual(msg['content']['code'], code)
+                continue
+            output_msgs.append(msg)
+
+        return reply, output_msgs
+
 if __name__ == '__main__':
     unittest.main()
\ No newline at end of file