Repository: zeppelin Updated Branches: refs/heads/master 6ed3d88a2 -> 50fb42f18
[ZEPPELIN-3163]. Fix checkstyle of python ### What is this PR for? Fix the code style issue of python module ### What type of PR is it? [Refactoring] ### Todos * [ ] - Task ### What is the Jira issue? * https://issues.apache.org/jira/browse/ZEPPELIN-3163 ### How should this be tested? * CI pass ### Screenshots (if appropriate) ### Questions: * Does the licenses files need update? No * Is there breaking changes for older versions? No * Does this needs documentation? NO Author: Jeff Zhang <zjf...@apache.org> Closes #3023 from zjffdu/ZEPPELIN-3163 and squashes the following commits: e89c41108 [Jeff Zhang] [ZEPPELIN-3163]. Fix checkstyle of python Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/50fb42f1 Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/50fb42f1 Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/50fb42f1 Branch: refs/heads/master Commit: 50fb42f186a2f439f72f5c17353ec726a00cb8ef Parents: 6ed3d88 Author: Jeff Zhang <zjf...@apache.org> Authored: Fri Jun 15 15:01:49 2018 +0800 Committer: Jeff Zhang <zjf...@apache.org> Committed: Sun Jun 17 11:02:21 2018 +0800 ---------------------------------------------------------------------- python/pom.xml | 7 ++ .../apache/zeppelin/python/IPythonClient.java | 4 +- .../zeppelin/python/IPythonInterpreter.java | 39 ++++----- .../zeppelin/python/PythonCondaInterpreter.java | 55 +++++++----- .../python/PythonDockerInterpreter.java | 44 ++++++---- .../zeppelin/python/PythonInterpreter.java | 23 +++-- .../python/PythonInterpreterPandasSql.java | 40 ++++----- .../zeppelin/python/PythonZeppelinContext.java | 30 +++---- .../python/BasePythonInterpreterTest.java | 64 +++++++++----- .../zeppelin/python/IPythonInterpreterTest.java | 24 +++--- .../python/PythonInterpreterMatplotlibTest.java | 32 +++---- .../python/PythonInterpreterPandasSqlTest.java | 91 ++++++++++---------- 12 files changed, 247 insertions(+), 206 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/pom.xml ---------------------------------------------------------------------- diff --git a/python/pom.xml b/python/pom.xml index 289755d..f919063 100644 --- a/python/pom.xml +++ b/python/pom.xml @@ -214,6 +214,13 @@ <artifactId>maven-resources-plugin</artifactId> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <configuration> + <skip>false</skip> + </configuration> + </plugin> </plugins> </build> http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/src/main/java/org/apache/zeppelin/python/IPythonClient.java ---------------------------------------------------------------------- diff --git a/python/src/main/java/org/apache/zeppelin/python/IPythonClient.java b/python/src/main/java/org/apache/zeppelin/python/IPythonClient.java index b3bc7fd..b9c897b 100644 --- a/python/src/main/java/org/apache/zeppelin/python/IPythonClient.java +++ b/python/src/main/java/org/apache/zeppelin/python/IPythonClient.java @@ -38,10 +38,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; import java.security.SecureRandom; +import java.util.Iterator; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java ---------------------------------------------------------------------- diff --git a/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java b/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java index 2daa986..2865399 100644 --- a/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java +++ b/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java @@ -1,19 +1,19 @@ /* -* 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. -*/ + * 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.zeppelin.python; @@ -26,7 +26,6 @@ import org.apache.commons.exec.ExecuteWatchdog; import org.apache.commons.exec.LogOutputStream; import org.apache.commons.exec.PumpStreamHandler; import org.apache.commons.exec.environment.EnvironmentUtils; -import org.apache.commons.httpclient.util.ExceptionUtil; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; @@ -60,8 +59,6 @@ import java.io.InputStream; import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -157,7 +154,7 @@ public class IPythonInterpreter extends Interpreter implements ExecuteResultHand /** * non-empty return value mean the errors when checking ipython prerequisite. * empty value mean IPython prerequisite is meet. - * + * * @param pythonExec * @return */ @@ -398,11 +395,11 @@ public class IPythonInterpreter extends Interpreter implements ExecuteResultHand LOGGER.warn("Exception happens in Python Process", e); } - private static class ProcessLogOutputStream extends LogOutputStream { + static class ProcessLogOutputStream extends LogOutputStream { private Logger logger; - public ProcessLogOutputStream(Logger logger) { + ProcessLogOutputStream(Logger logger) { this.logger = logger; } http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/src/main/java/org/apache/zeppelin/python/PythonCondaInterpreter.java ---------------------------------------------------------------------- diff --git a/python/src/main/java/org/apache/zeppelin/python/PythonCondaInterpreter.java b/python/src/main/java/org/apache/zeppelin/python/PythonCondaInterpreter.java index 8d3e972..8c8fdb6 100644 --- a/python/src/main/java/org/apache/zeppelin/python/PythonCondaInterpreter.java +++ b/python/src/main/java/org/apache/zeppelin/python/PythonCondaInterpreter.java @@ -1,31 +1,44 @@ /* -* 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. -*/ + * 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.zeppelin.python; import org.apache.commons.lang.StringUtils; -import org.apache.zeppelin.interpreter.*; +import org.apache.zeppelin.interpreter.Interpreter; +import org.apache.zeppelin.interpreter.InterpreterContext; +import org.apache.zeppelin.interpreter.InterpreterException; +import org.apache.zeppelin.interpreter.InterpreterOutput; +import org.apache.zeppelin.interpreter.InterpreterResult; import org.apache.zeppelin.interpreter.InterpreterResult.Code; import org.apache.zeppelin.interpreter.InterpreterResult.Type; +import org.apache.zeppelin.interpreter.LazyOpenInterpreter; import org.apache.zeppelin.scheduler.Scheduler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.*; -import java.util.*; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -161,7 +174,7 @@ public class PythonCondaInterpreter extends Interpreter { PythonInterpreter python = null; Interpreter p = getInterpreterInTheSameSessionByClassName(PythonInterpreter.class.getName()); - return (PythonInterpreter) ((LazyOpenInterpreter)p).getInnerInterpreter(); + return (PythonInterpreter) ((LazyOpenInterpreter) p).getInnerInterpreter(); } public static String runCondaCommandForTextOutput(String title, List<String> commands) @@ -410,7 +423,7 @@ public class PythonCondaInterpreter extends Interpreter { BufferedReader br = new BufferedReader(isr); String line = null; long startTime = System.currentTimeMillis(); - while ( (line = br.readLine()) != null) { + while ((line = br.readLine()) != null) { output.append(line + "\n"); // logging per 5 seconds if ((System.currentTimeMillis() - startTime) > 5000) { @@ -428,7 +441,7 @@ public class PythonCondaInterpreter extends Interpreter { } } - public static String runCommand(String ... command) + public static String runCommand(String... command) throws IOException, InterruptedException { List<String> list = new ArrayList<>(command.length); http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/src/main/java/org/apache/zeppelin/python/PythonDockerInterpreter.java ---------------------------------------------------------------------- diff --git a/python/src/main/java/org/apache/zeppelin/python/PythonDockerInterpreter.java b/python/src/main/java/org/apache/zeppelin/python/PythonDockerInterpreter.java index b528efa..f4fe609 100644 --- a/python/src/main/java/org/apache/zeppelin/python/PythonDockerInterpreter.java +++ b/python/src/main/java/org/apache/zeppelin/python/PythonDockerInterpreter.java @@ -1,27 +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. -*/ + * 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.zeppelin.python; -import org.apache.zeppelin.interpreter.*; +import org.apache.zeppelin.interpreter.Interpreter; +import org.apache.zeppelin.interpreter.InterpreterContext; +import org.apache.zeppelin.interpreter.InterpreterException; +import org.apache.zeppelin.interpreter.InterpreterOutput; +import org.apache.zeppelin.interpreter.InterpreterResult; +import org.apache.zeppelin.interpreter.LazyOpenInterpreter; +import org.apache.zeppelin.interpreter.WrappedInterpreter; import org.apache.zeppelin.scheduler.Scheduler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.nio.file.Paths; import java.util.Properties; import java.util.regex.Matcher; http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/src/main/java/org/apache/zeppelin/python/PythonInterpreter.java ---------------------------------------------------------------------- diff --git a/python/src/main/java/org/apache/zeppelin/python/PythonInterpreter.java b/python/src/main/java/org/apache/zeppelin/python/PythonInterpreter.java index 95cfc82..a5c6d5c 100644 --- a/python/src/main/java/org/apache/zeppelin/python/PythonInterpreter.java +++ b/python/src/main/java/org/apache/zeppelin/python/PythonInterpreter.java @@ -47,11 +47,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import py4j.GatewayServer; -import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStreamReader; import java.net.Inet4Address; import java.net.InetAddress; import java.net.UnknownHostException; @@ -62,9 +60,9 @@ import java.util.Properties; import java.util.concurrent.atomic.AtomicBoolean; /** - * Interpreter for Python, it is the first implementation of interpreter for Python, so with less - * features compared to IPythonInterpreter, but requires less prerequisites than - * IPythonInterpreter, only python installation is required. + * Interpreter for Python, it is the first implementation of interpreter for Python, so with less + * features compared to IPythonInterpreter, but requires less prerequisites than + * IPythonInterpreter, only python installation is required. */ public class PythonInterpreter extends Interpreter implements ExecuteResultHandler { private static final Logger LOGGER = LoggerFactory.getLogger(PythonInterpreter.class); @@ -141,7 +139,8 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl InetAddress.getByName(serverAddress), GatewayServer.DEFAULT_CONNECT_TIMEOUT, GatewayServer.DEFAULT_READ_TIMEOUT, - (List) null);; + (List) null); + ; gatewayServer.start(); LOGGER.info("Starting GatewayServer at " + serverAddress + ":" + port); @@ -367,6 +366,7 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl try { statementFinishedNotifier.wait(1000); } catch (InterruptedException e) { + // ignore this exception } } } @@ -522,7 +522,7 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl } List<InterpreterCompletion> results = new LinkedList<>(); - for (String name: completionList) { + for (String name : completionList) { results.add(new InterpreterCompletion(name, name, StringUtils.EMPTY)); } return results; @@ -538,8 +538,7 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl String completionScriptText = ""; try { completionScriptText = text.substring(0, cursor); - } - catch (Exception e) { + } catch (Exception e) { LOGGER.error(e.toString()); return null; } @@ -558,13 +557,11 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl if (completionStartPosition == completionEndPosition) { completionStartPosition = 0; - } - else - { + } else { completionStartPosition = completionEndPosition - completionStartPosition; } resultCompletionText = completionScriptText.substring( - completionStartPosition , completionEndPosition); + completionStartPosition, completionEndPosition); return resultCompletionText; } http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/src/main/java/org/apache/zeppelin/python/PythonInterpreterPandasSql.java ---------------------------------------------------------------------- diff --git a/python/src/main/java/org/apache/zeppelin/python/PythonInterpreterPandasSql.java b/python/src/main/java/org/apache/zeppelin/python/PythonInterpreterPandasSql.java index db65960..644a193 100644 --- a/python/src/main/java/org/apache/zeppelin/python/PythonInterpreterPandasSql.java +++ b/python/src/main/java/org/apache/zeppelin/python/PythonInterpreterPandasSql.java @@ -1,25 +1,22 @@ /* -* 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. -*/ + * 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.zeppelin.python; -import java.io.IOException; -import java.util.Properties; - import org.apache.zeppelin.interpreter.Interpreter; import org.apache.zeppelin.interpreter.InterpreterContext; import org.apache.zeppelin.interpreter.InterpreterException; @@ -29,9 +26,12 @@ import org.apache.zeppelin.interpreter.WrappedInterpreter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; +import java.util.Properties; + /** * SQL over Pandas DataFrame interpreter for %python group - * + * <p> * Match experience of %sparpk.sql over Spark DataFrame */ public class PythonInterpreterPandasSql extends Interpreter { @@ -90,7 +90,7 @@ public class PythonInterpreterPandasSql extends Interpreter { Interpreter python = getPythonInterpreter(); return python.interpret( - "__zeppelin__.show(pysqldf('" + st + "'))\n__zeppelin__._displayhook()", context); + "__zeppelin__.show(pysqldf('" + st + "'))\n__zeppelin__._displayhook()", context); } @Override http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/src/main/java/org/apache/zeppelin/python/PythonZeppelinContext.java ---------------------------------------------------------------------- diff --git a/python/src/main/java/org/apache/zeppelin/python/PythonZeppelinContext.java b/python/src/main/java/org/apache/zeppelin/python/PythonZeppelinContext.java index 3d476e0..526784e 100644 --- a/python/src/main/java/org/apache/zeppelin/python/PythonZeppelinContext.java +++ b/python/src/main/java/org/apache/zeppelin/python/PythonZeppelinContext.java @@ -1,19 +1,19 @@ /* -* 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. -*/ + * 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.zeppelin.python; http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/src/test/java/org/apache/zeppelin/python/BasePythonInterpreterTest.java ---------------------------------------------------------------------- diff --git a/python/src/test/java/org/apache/zeppelin/python/BasePythonInterpreterTest.java b/python/src/test/java/org/apache/zeppelin/python/BasePythonInterpreterTest.java index 0a3a606..9697fbf 100644 --- a/python/src/test/java/org/apache/zeppelin/python/BasePythonInterpreterTest.java +++ b/python/src/test/java/org/apache/zeppelin/python/BasePythonInterpreterTest.java @@ -56,10 +56,12 @@ public abstract class BasePythonInterpreterTest { public void testPythonBasics() throws InterpreterException, InterruptedException, IOException { InterpreterContext context = getInterpreterContext(); - InterpreterResult result = interpreter.interpret("import sys\nprint(sys.version[0])", context); + InterpreterResult result = + interpreter.interpret("import sys\nprint(sys.version[0])", context); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); Thread.sleep(100); - List<InterpreterResultMessage> interpreterResultMessages = context.out.toInterpreterResultMessage(); + List<InterpreterResultMessage> interpreterResultMessages = + context.out.toInterpreterResultMessage(); assertEquals(1, interpreterResultMessages.size()); // single output without print @@ -109,7 +111,7 @@ public abstract class BasePythonInterpreterTest { // assignment context = getInterpreterContext(); - result = interpreter.interpret("abc=1",context); + result = interpreter.interpret("abc=1", context); Thread.sleep(100); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); interpreterResultMessages = context.out.toInterpreterResultMessage(); @@ -117,7 +119,8 @@ public abstract class BasePythonInterpreterTest { // if block context = getInterpreterContext(); - result = interpreter.interpret("if abc > 0:\n\tprint('True')\nelse:\n\tprint('False')", context); + result = + interpreter.interpret("if abc > 0:\n\tprint('True')\nelse:\n\tprint('False')", context); Thread.sleep(100); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); interpreterResultMessages = context.out.toInterpreterResultMessage(); @@ -141,7 +144,8 @@ public abstract class BasePythonInterpreterTest { if (interpreter instanceof IPythonInterpreter) { interpreterResultMessages = context.out.toInterpreterResultMessage(); assertEquals(1, interpreterResultMessages.size()); - assertTrue(interpreterResultMessages.get(0).getData().contains("name 'unknown' is not defined")); + assertTrue(interpreterResultMessages.get(0).getData().contains( + "name 'unknown' is not defined")); } else if (interpreter instanceof PythonInterpreter) { assertTrue(result.message().get(0).getData().contains("name 'unknown' is not defined")); } @@ -163,14 +167,14 @@ public abstract class BasePythonInterpreterTest { context = getInterpreterContext(); result = interpreter.interpret( "from __future__ import print_function\n" + - "def greet(name):\n" + - " print('Hello', name)\n" + - "greet('Jack')", context); + "def greet(name):\n" + + " print('Hello', name)\n" + + "greet('Jack')", context); Thread.sleep(100); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); interpreterResultMessages = context.out.toInterpreterResultMessage(); assertEquals(1, interpreterResultMessages.size()); - assertEquals("Hello Jack\n",interpreterResultMessages.get(0).getData()); + assertEquals("Hello Jack\n", interpreterResultMessages.get(0).getData()); // ZEPPELIN-1114 context = getInterpreterContext(); @@ -223,10 +227,12 @@ public abstract class BasePythonInterpreterTest { public void testZeppelinContext() throws InterpreterException, InterruptedException, IOException { // TextBox InterpreterContext context = getInterpreterContext(); - InterpreterResult result = interpreter.interpret("z.input(name='text_1', defaultValue='value_1')", context); + InterpreterResult result = + interpreter.interpret("z.input(name='text_1', defaultValue='value_1')", context); Thread.sleep(100); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); - List<InterpreterResultMessage> interpreterResultMessages = context.out.toInterpreterResultMessage(); + List<InterpreterResultMessage> interpreterResultMessages = + context.out.toInterpreterResultMessage(); assertTrue(interpreterResultMessages.get(0).getData().contains("'value_1'")); assertEquals(1, context.getGui().getForms().size()); assertTrue(context.getGui().getForms().get("text_1") instanceof TextBox); @@ -236,7 +242,8 @@ public abstract class BasePythonInterpreterTest { // Select context = getInterpreterContext(); - result = interpreter.interpret("z.select(name='select_1', options=[('value_1', 'name_1'), ('value_2', 'name_2')])", context); + result = interpreter.interpret("z.select(name='select_1'," + + " options=[('value_1', 'name_1'), ('value_2', 'name_2')])", context); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); assertEquals(1, context.getGui().getForms().size()); assertTrue(context.getGui().getForms().get("select_1") instanceof Select); @@ -248,7 +255,8 @@ public abstract class BasePythonInterpreterTest { // CheckBox context = getInterpreterContext(); - result = interpreter.interpret("z.checkbox(name='checkbox_1', options=[('value_1', 'name_1'), ('value_2', 'name_2')])", context); + result = interpreter.interpret("z.checkbox(name='checkbox_1'," + + "options=[('value_1', 'name_1'), ('value_2', 'name_2')])", context); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); assertEquals(1, context.getGui().getForms().size()); assertTrue(context.getGui().getForms().get("checkbox_1") instanceof CheckBox); @@ -260,7 +268,8 @@ public abstract class BasePythonInterpreterTest { // Pandas DataFrame context = getInterpreterContext(); - result = interpreter.interpret("import pandas as pd\ndf = pd.DataFrame({'id':[1,2,3], 'name':['a','b','c']})\nz.show(df)", context); + result = interpreter.interpret("import pandas as pd\n" + + "df = pd.DataFrame({'id':[1,2,3], 'name':['a','b','c']})\nz.show(df)", context); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); interpreterResultMessages = context.out.toInterpreterResultMessage(); assertEquals(1, interpreterResultMessages.size()); @@ -268,18 +277,21 @@ public abstract class BasePythonInterpreterTest { assertEquals("id\tname\n1\ta\n2\tb\n3\tc\n", interpreterResultMessages.get(0).getData()); context = getInterpreterContext(); - result = interpreter.interpret("import pandas as pd\ndf = pd.DataFrame({'id':[1,2,3,4], 'name':['a','b','c', 'd']})\nz.show(df)", context); + result = interpreter.interpret("import pandas as pd\n" + + "df = pd.DataFrame({'id':[1,2,3,4], 'name':['a','b','c', 'd']})\nz.show(df)", context); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); interpreterResultMessages = context.out.toInterpreterResultMessage(); assertEquals(2, interpreterResultMessages.size()); assertEquals(InterpreterResult.Type.TABLE, interpreterResultMessages.get(0).getType()); assertEquals("id\tname\n1\ta\n2\tb\n3\tc\n", interpreterResultMessages.get(0).getData()); assertEquals(InterpreterResult.Type.HTML, interpreterResultMessages.get(1).getType()); - assertEquals("<font color=red>Results are limited by 3.</font>\n", interpreterResultMessages.get(1).getData()); + assertEquals("<font color=red>Results are limited by 3.</font>\n", + interpreterResultMessages.get(1).getData()); // z.show(matplotlib) context = getInterpreterContext(); - result = interpreter.interpret("import matplotlib.pyplot as plt\ndata=[1,1,2,3,4]\nplt.figure()\nplt.plot(data)\nz.show(plt)", context); + result = interpreter.interpret("import matplotlib.pyplot as plt\n" + + "data=[1,1,2,3,4]\nplt.figure()\nplt.plot(data)\nz.show(plt)", context); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); interpreterResultMessages = context.out.toInterpreterResultMessage(); assertEquals(1, interpreterResultMessages.size()); @@ -287,7 +299,8 @@ public abstract class BasePythonInterpreterTest { // clear output context = getInterpreterContext(); - result = interpreter.interpret("import time\nprint(\"Hello\")\ntime.sleep(0.5)\nz.getInterpreterContext().out().clear()\nprint(\"world\")\n", context); + result = interpreter.interpret("import time\nprint(\"Hello\")\n" + + "time.sleep(0.5)\nz.getInterpreterContext().out().clear()\nprint(\"world\")\n", context); assertEquals("%text world\n", context.out.getCurrentOutput().toString()); } @@ -297,11 +310,16 @@ public abstract class BasePythonInterpreterTest { String restoreCode = "z = __zeppelin__\n"; String validCode = "z.input(\"test\")\n"; - assertEquals(InterpreterResult.Code.SUCCESS, interpreter.interpret(validCode, getInterpreterContext()).code()); - assertEquals(InterpreterResult.Code.SUCCESS, interpreter.interpret(redefinitionCode, getInterpreterContext()).code()); - assertEquals(InterpreterResult.Code.ERROR, interpreter.interpret(validCode, getInterpreterContext()).code()); - assertEquals(InterpreterResult.Code.SUCCESS, interpreter.interpret(restoreCode, getInterpreterContext()).code()); - assertEquals(InterpreterResult.Code.SUCCESS, interpreter.interpret(validCode, getInterpreterContext()).code()); + assertEquals(InterpreterResult.Code.SUCCESS, + interpreter.interpret(validCode, getInterpreterContext()).code()); + assertEquals(InterpreterResult.Code.SUCCESS, + interpreter.interpret(redefinitionCode, getInterpreterContext()).code()); + assertEquals(InterpreterResult.Code.ERROR, + interpreter.interpret(validCode, getInterpreterContext()).code()); + assertEquals(InterpreterResult.Code.SUCCESS, + interpreter.interpret(restoreCode, getInterpreterContext()).code()); + assertEquals(InterpreterResult.Code.SUCCESS, + interpreter.interpret(validCode, getInterpreterContext()).code()); } protected InterpreterContext getInterpreterContext() { http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java ---------------------------------------------------------------------- diff --git a/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java b/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java index be72ca9..4b6bfdb 100644 --- a/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java +++ b/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java @@ -21,11 +21,9 @@ import org.apache.zeppelin.interpreter.Interpreter; import org.apache.zeppelin.interpreter.InterpreterContext; import org.apache.zeppelin.interpreter.InterpreterException; import org.apache.zeppelin.interpreter.InterpreterGroup; -import org.apache.zeppelin.interpreter.InterpreterOutput; import org.apache.zeppelin.interpreter.InterpreterResult; import org.apache.zeppelin.interpreter.InterpreterResultMessage; import org.apache.zeppelin.interpreter.LazyOpenInterpreter; -import org.apache.zeppelin.interpreter.remote.RemoteInterpreterEventClient; import org.junit.Test; import java.io.IOException; @@ -35,7 +33,6 @@ import java.util.Properties; import static junit.framework.TestCase.assertTrue; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.mock; public class IPythonInterpreterTest extends BasePythonInterpreterTest { @@ -69,13 +66,15 @@ public class IPythonInterpreterTest extends BasePythonInterpreterTest { } @Test - public void testIPythonAdvancedFeatures() throws InterpreterException, InterruptedException, IOException { + public void testIPythonAdvancedFeatures() + throws InterpreterException, InterruptedException, IOException { // ipython help InterpreterContext context = getInterpreterContext(); InterpreterResult result = interpreter.interpret("range?", context); Thread.sleep(100); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); - List<InterpreterResultMessage> interpreterResultMessages = context.out.toInterpreterResultMessage(); + List<InterpreterResultMessage> interpreterResultMessages = + context.out.toInterpreterResultMessage(); assertTrue(interpreterResultMessages.get(0).getData().contains("range(stop)")); // timeit @@ -114,10 +113,12 @@ public class IPythonInterpreterTest extends BasePythonInterpreterTest { public void testIPythonPlotting() throws InterpreterException, InterruptedException, IOException { // matplotlib InterpreterContext context = getInterpreterContext(); - InterpreterResult result = interpreter.interpret("%matplotlib inline\nimport matplotlib.pyplot as plt\ndata=[1,1,2,3,4]\nplt.figure()\nplt.plot(data)", context); + InterpreterResult result = interpreter.interpret("%matplotlib inline\n" + + "import matplotlib.pyplot as plt\ndata=[1,1,2,3,4]\nplt.figure()\nplt.plot(data)", context); Thread.sleep(100); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); - List<InterpreterResultMessage> interpreterResultMessages = context.out.toInterpreterResultMessage(); + List<InterpreterResultMessage> interpreterResultMessages = + context.out.toInterpreterResultMessage(); // the order of IMAGE and TEXT is not determined // check there must be one IMAGE output boolean hasImageOutput = false; @@ -203,13 +204,15 @@ public class IPythonInterpreterTest extends BasePythonInterpreterTest { startInterpreter(properties); // to make this test can run under both python2 and python3 - InterpreterResult result = interpreter.interpret("from __future__ import print_function", getInterpreterContext()); + InterpreterResult result = + interpreter.interpret("from __future__ import print_function", getInterpreterContext()); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); InterpreterContext context = getInterpreterContext(); result = interpreter.interpret("print('1'*3000)", context); assertEquals(InterpreterResult.Code.ERROR, result.code()); - List<InterpreterResultMessage> interpreterResultMessages = context.out.toInterpreterResultMessage(); + List<InterpreterResultMessage> interpreterResultMessages = + context.out.toInterpreterResultMessage(); assertEquals(1, interpreterResultMessages.size()); assertTrue(interpreterResultMessages.get(0).getData().contains("exceeds maximum: 3000")); @@ -223,7 +226,8 @@ public class IPythonInterpreterTest extends BasePythonInterpreterTest { properties.setProperty("zeppelin.ipython.grpc.message_size", "5000"); startInterpreter(properties); // to make this test can run under both python2 and python3 - result = interpreter.interpret("from __future__ import print_function", getInterpreterContext()); + result = + interpreter.interpret("from __future__ import print_function", getInterpreterContext()); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); context = getInterpreterContext(); http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterMatplotlibTest.java ---------------------------------------------------------------------- diff --git a/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterMatplotlibTest.java b/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterMatplotlibTest.java index 8475331..b6e1a44 100644 --- a/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterMatplotlibTest.java +++ b/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterMatplotlibTest.java @@ -17,30 +17,26 @@ package org.apache.zeppelin.python; -import org.apache.zeppelin.display.AngularObjectRegistry; -import org.apache.zeppelin.display.GUI; import org.apache.zeppelin.interpreter.Interpreter; import org.apache.zeppelin.interpreter.InterpreterContext; -import org.apache.zeppelin.interpreter.InterpreterContextRunner; import org.apache.zeppelin.interpreter.InterpreterException; import org.apache.zeppelin.interpreter.InterpreterGroup; import org.apache.zeppelin.interpreter.InterpreterOutput; import org.apache.zeppelin.interpreter.InterpreterOutputListener; import org.apache.zeppelin.interpreter.InterpreterResult; import org.apache.zeppelin.interpreter.InterpreterResultMessageOutput; -import org.apache.zeppelin.resource.LocalResourcePool; -import org.apache.zeppelin.user.AuthenticationInfo; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Properties; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertTrue; public class PythonInterpreterMatplotlibTest implements InterpreterOutputListener { private InterpreterGroup intpGroup; @@ -98,9 +94,12 @@ public class PythonInterpreterMatplotlibTest implements InterpreterOutputListene ret = python.interpret("plt.plot([1, 2, 3])", context); ret = python.interpret("plt.show()", context); - assertEquals(new String(out.getOutputAt(0).toByteArray()), InterpreterResult.Code.SUCCESS, ret.code()); - assertEquals(new String(out.getOutputAt(0).toByteArray()), InterpreterResult.Type.TEXT, out.getOutputAt(0).getType()); - assertEquals(new String(out.getOutputAt(1).toByteArray()), InterpreterResult.Type.HTML, out.getOutputAt(1).getType()); + assertEquals(new String(out.getOutputAt(0).toByteArray()), + InterpreterResult.Code.SUCCESS, ret.code()); + assertEquals(new String(out.getOutputAt(0).toByteArray()), + InterpreterResult.Type.TEXT, out.getOutputAt(0).getType()); + assertEquals(new String(out.getOutputAt(1).toByteArray()), + InterpreterResult.Type.HTML, out.getOutputAt(1).getType()); assertTrue(new String(out.getOutputAt(1).toByteArray()).contains("data:image/png;base64")); assertTrue(new String(out.getOutputAt(1).toByteArray()).contains("<div>")); } @@ -122,17 +121,18 @@ public class PythonInterpreterMatplotlibTest implements InterpreterOutputListene // type to HTML. ret = python.interpret("plt.show()", context); - assertEquals(new String(out.getOutputAt(0).toByteArray()), InterpreterResult.Code.SUCCESS, ret.code()); + assertEquals(new String(out.getOutputAt(0).toByteArray()), + InterpreterResult.Code.SUCCESS, ret.code()); assertEquals(0, ret.message().size()); // Now test that new plot is drawn. It should be identical to the // previous one. ret = python.interpret("plt.plot([1, 2, 3])", context); - String msg1 = new String(out.getOutputAt(0).toByteArray()); + String msg1 = new String(out.getOutputAt(0).toByteArray()); InterpreterResult.Type type1 = out.getOutputAt(0).getType(); ret2 = python.interpret("plt.show()", context); - String msg2 = new String(out.getOutputAt(0).toByteArray()); + String msg2 = new String(out.getOutputAt(0).toByteArray()); InterpreterResult.Type type2 = out.getOutputAt(0).getType(); assertEquals(msg1, msg2); @@ -155,16 +155,16 @@ public class PythonInterpreterMatplotlibTest implements InterpreterOutputListene // of FigureManager, causing show() to set the output // type to HTML even though the figure is inactive. ret = python.interpret("plt.show()", context); - String msg1 = new String(out.getOutputAt(0).toByteArray()); + String msg1 = new String(out.getOutputAt(0).toByteArray()); assertNotSame("", msg1); // Now test that plot can be reshown if it is updated. It should be // different from the previous one because it will plot the same line // again but in a different color. ret = python.interpret("plt.plot([1, 2, 3])", context); - msg1 = new String(out.getOutputAt(1).toByteArray()); + msg1 = new String(out.getOutputAt(1).toByteArray()); ret2 = python.interpret("plt.show()", context); - String msg2 = new String(out.getOutputAt(1).toByteArray()); + String msg2 = new String(out.getOutputAt(1).toByteArray()); assertNotSame(msg1, msg2); } http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50fb42f1/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterPandasSqlTest.java ---------------------------------------------------------------------- diff --git a/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterPandasSqlTest.java b/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterPandasSqlTest.java index fbaa695..9255ad9 100644 --- a/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterPandasSqlTest.java +++ b/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterPandasSqlTest.java @@ -1,38 +1,23 @@ /* -* 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. -*/ + * 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.zeppelin.python; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.io.IOException; -import java.util.Arrays; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Properties; - -import org.apache.zeppelin.display.AngularObjectRegistry; -import org.apache.zeppelin.display.GUI; -import org.apache.zeppelin.interpreter.Interpreter; import org.apache.zeppelin.interpreter.InterpreterContext; -import org.apache.zeppelin.interpreter.InterpreterContextRunner; import org.apache.zeppelin.interpreter.InterpreterException; import org.apache.zeppelin.interpreter.InterpreterGroup; import org.apache.zeppelin.interpreter.InterpreterOutput; @@ -40,24 +25,30 @@ import org.apache.zeppelin.interpreter.InterpreterOutputListener; import org.apache.zeppelin.interpreter.InterpreterResult; import org.apache.zeppelin.interpreter.InterpreterResult.Type; import org.apache.zeppelin.interpreter.InterpreterResultMessageOutput; -import org.apache.zeppelin.resource.LocalResourcePool; -import org.apache.zeppelin.user.AuthenticationInfo; import org.junit.After; import org.junit.Before; import org.junit.Test; +import java.io.IOException; +import java.util.Arrays; +import java.util.Properties; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + /** * In order for this test to work, test env must have installed: * <ol> - * - <li>Python</li> - * - <li>NumPy</li> - * - <li>Pandas</li> - * - <li>PandaSql</li> + * - <li>Python</li> + * - <li>NumPy</li> + * - <li>Pandas</li> + * - <li>PandaSql</li> * <ol> - * + * <p> * To run manually on such environment, use: * <code> - * mvn -Dpython.test.exclude='' test -pl python -am + * mvn -Dpython.test.exclude='' test -pl python -am * </code> */ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener { @@ -94,7 +85,6 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener intpGroup.put("note", Arrays.asList(python, sql)); - // to make sure python is running. InterpreterResult ret = python.interpret("\n", context); assertEquals(ret.message().toString(), InterpreterResult.Code.SUCCESS, ret.code()); @@ -109,7 +99,8 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener @Test public void dependenciesAreInstalled() throws InterpreterException { - InterpreterResult ret = python.interpret("import pandas\nimport pandasql\nimport numpy\n", context); + InterpreterResult ret = + python.interpret("import pandas\nimport pandasql\nimport numpy\n", context); assertEquals(ret.message().toString(), InterpreterResult.Code.SUCCESS, ret.code()); } @@ -131,7 +122,7 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener ret = python.interpret("import pandas as pd", context); ret = python.interpret("import numpy as np", context); // DataFrame df2 \w test data - ret = python.interpret("df2 = pd.DataFrame({ 'age' : np.array([33, 51, 51, 34]), "+ + ret = python.interpret("df2 = pd.DataFrame({ 'age' : np.array([33, 51, 51, 34]), " + "'name' : pd.Categorical(['moon','jobs','gates','park'])})", context); assertEquals(ret.message().toString(), InterpreterResult.Code.SUCCESS, ret.code()); @@ -139,12 +130,16 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener ret = sql.interpret("select name, age from df2 where age < 40", context); //then - assertEquals(new String(out.getOutputAt(1).toByteArray()), InterpreterResult.Code.SUCCESS, ret.code()); - assertEquals(new String(out.getOutputAt(1).toByteArray()), Type.TABLE, out.getOutputAt(1).getType()); + assertEquals(new String(out.getOutputAt(1).toByteArray()), + InterpreterResult.Code.SUCCESS, ret.code()); + assertEquals(new String(out.getOutputAt(1).toByteArray()), Type.TABLE, + out.getOutputAt(1).getType()); assertTrue(new String(out.getOutputAt(1).toByteArray()).indexOf("moon\t33") > 0); assertTrue(new String(out.getOutputAt(1).toByteArray()).indexOf("park\t34") > 0); - assertEquals(InterpreterResult.Code.SUCCESS, sql.interpret("select case when name==\"aa\" then name else name end from df2", context).code()); + assertEquals(InterpreterResult.Code.SUCCESS, + sql.interpret("select case when name==\"aa\" then name else name end from df2", + context).code()); } @Test @@ -173,8 +168,10 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener ret = python.interpret("z.show(df1, show_index=True)", context); // then - assertEquals(new String(out.getOutputAt(0).toByteArray()), InterpreterResult.Code.SUCCESS, ret.code()); - assertEquals(new String(out.getOutputAt(1).toByteArray()), Type.TABLE, out.getOutputAt(1).getType()); + assertEquals(new String(out.getOutputAt(0).toByteArray()), + InterpreterResult.Code.SUCCESS, ret.code()); + assertEquals(new String(out.getOutputAt(1).toByteArray()), + Type.TABLE, out.getOutputAt(1).getType()); assertTrue(new String(out.getOutputAt(1).toByteArray()).contains("index_name")); assertTrue(new String(out.getOutputAt(1).toByteArray()).contains("nan")); assertTrue(new String(out.getOutputAt(1).toByteArray()).contains("6.7")); @@ -194,4 +191,4 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener public void onUpdate(int index, InterpreterResultMessageOutput out) { } -} \ No newline at end of file +}