Repository: zeppelin Updated Branches: refs/heads/branch-0.8 ec919123a -> 574de381a
ZEPPELIN-3279. [FlakyTest] NotebookTest.testPerSessionInterpreterCloseOnUnbindInterpreterSetting ### What is this PR for? The root cause of this flaky test is that hashCode doesn't represent an unique id of object. This PR just use IdGenerator for unique id and also combine process id. This PR also fix the flaky test caused by matplotlib. ### What type of PR is it? [Bug Fix] ### Todos * [ ] - Task ### What is the Jira issue? * https://issues.apache.org/jira/browse/ZEPPELIN-3279 ### 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 #2837 from zjffdu/ZEPPELIN-3279 and squashes the following commits: 063d4ee [Jeff Zhang] ZEPPELIN-3279. [FlakyTest] NotebookTest.testPerSessionInterpreterCloseOnUnbindInterpreterSetting (cherry picked from commit a6cd0e24cc795985e200ebebf04de981e13de97c) Signed-off-by: Jeff Zhang <zjf...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/574de381 Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/574de381 Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/574de381 Branch: refs/heads/branch-0.8 Commit: 574de381a89d76ea0c5e80dc9ff3ca3debe7a01d Parents: ec91912 Author: Jeff Zhang <zjf...@apache.org> Authored: Mon Mar 5 14:38:00 2018 +0800 Committer: Jeff Zhang <zjf...@apache.org> Committed: Tue Mar 6 12:49:03 2018 +0800 ---------------------------------------------------------------------- testing/install_external_dependencies.sh | 2 +- .../zeppelin/interpreter/mock/MockInterpreter1.java | 11 ++++++++++- .../java/org/apache/zeppelin/notebook/NotebookTest.java | 5 +++++ 3 files changed, 16 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zeppelin/blob/574de381/testing/install_external_dependencies.sh ---------------------------------------------------------------------- diff --git a/testing/install_external_dependencies.sh b/testing/install_external_dependencies.sh index d6c0736..a120d61 100755 --- a/testing/install_external_dependencies.sh +++ b/testing/install_external_dependencies.sh @@ -44,6 +44,6 @@ if [[ -n "$PYTHON" ]] ; then conda update -q conda conda info -a conda config --add channels conda-forge - conda install -q matplotlib pandasql ipython=5.4.1 jupyter_client ipykernel matplotlib bokeh=0.12.10 + conda install -q matplotlib=2.1.2 pandasql ipython=5.4.1 jupyter_client ipykernel matplotlib bokeh=0.12.10 pip install -q grpcio ggplot bkzep==0.4.0 fi http://git-wip-us.apache.org/repos/asf/zeppelin/blob/574de381/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter1.java ---------------------------------------------------------------------- diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter1.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter1.java index a533c12..500c4f7 100644 --- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter1.java +++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter1.java @@ -24,18 +24,27 @@ import org.apache.zeppelin.interpreter.thrift.InterpreterCompletion; import org.apache.zeppelin.scheduler.Scheduler; import org.apache.zeppelin.scheduler.SchedulerFactory; +import java.lang.management.ManagementFactory; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.concurrent.atomic.AtomicInteger; public class MockInterpreter1 extends Interpreter { + private static AtomicInteger IdGenerator = new AtomicInteger(); + + private int object_id; + private String pid; Map<String, Object> vars = new HashMap<>(); public MockInterpreter1(Properties property) { super(property); + this.object_id = IdGenerator.getAndIncrement(); + this.pid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0]; } + boolean open; @@ -60,7 +69,7 @@ public class MockInterpreter1 extends Interpreter { if ("getId".equals(st)) { // get unique id of this interpreter instance - result = new InterpreterResult(InterpreterResult.Code.SUCCESS, "" + this.hashCode()); + result = new InterpreterResult(InterpreterResult.Code.SUCCESS, "" + this.object_id + "-" + this.pid); } else if (st.startsWith("sleep")) { try { Thread.sleep(Integer.parseInt(st.split(" ")[1])); http://git-wip-us.apache.org/repos/asf/zeppelin/blob/574de381/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java ---------------------------------------------------------------------- diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java index 122395c..ee04291 100644 --- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java +++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java @@ -44,6 +44,10 @@ import org.apache.zeppelin.user.Credentials; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.junit.runner.JUnitCore; +import org.junit.runner.Request; +import org.junit.runner.Result; +import org.mockito.internal.runners.JUnit44RunnerImpl; import org.quartz.SchedulerException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -1450,4 +1454,5 @@ public class NotebookTest extends AbstractInterpreterTest implements JobListener private interface StatusChangedListener { void onStatusChanged(Job job, Status before, Status after); } + }