You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by zj...@apache.org on 2017/08/28 06:50:01 UTC

[08/11] zeppelin git commit: Revert "[ZEPPELIN-2627] Interpreter refactor"

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/AbstractInterpreterTest.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/AbstractInterpreterTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/AbstractInterpreterTest.java
deleted file mode 100644
index 21d7526..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/AbstractInterpreterTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.apache.zeppelin.interpreter;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.zeppelin.conf.ZeppelinConfiguration;
-import org.apache.zeppelin.display.AngularObjectRegistryListener;
-import org.apache.zeppelin.helium.ApplicationEventListener;
-import org.apache.zeppelin.interpreter.remote.RemoteInterpreterProcessListener;
-import org.junit.After;
-import org.junit.Before;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-
-import static org.mockito.Mockito.mock;
-
-
-/**
- * This class will load configuration files under
- *   src/test/resources/interpreter
- *   src/test/resources/conf
- *
- * to construct InterpreterSettingManager and InterpreterFactory properly
- *
- */
-public abstract class AbstractInterpreterTest {
-  protected static final Logger LOGGER = LoggerFactory.getLogger(AbstractInterpreterTest.class);
-  private static final String INTERPRETER_SCRIPT =
-      System.getProperty("os.name").startsWith("Windows") ?
-          "../bin/interpreter.cmd" :
-          "../bin/interpreter.sh";
-
-  protected InterpreterSettingManager interpreterSettingManager;
-  protected InterpreterFactory interpreterFactory;
-  protected File testRootDir;
-  protected File interpreterDir;
-  protected File confDir;
-  protected File notebookDir;
-  protected ZeppelinConfiguration conf;
-
-  @Before
-  public void setUp() throws Exception {
-    // copy the resources files to a temp folder
-    testRootDir = new File(System.getProperty("java.io.tmpdir") + "/Zeppelin_Test_" + System.currentTimeMillis());
-    testRootDir.mkdirs();
-    LOGGER.info("Create tmp directory: {} as root folder of ZEPPELIN_INTERPRETER_DIR & ZEPPELIN_CONF_DIR", testRootDir.getAbsolutePath());
-    interpreterDir = new File(testRootDir, "interpreter");
-    confDir = new File(testRootDir, "conf");
-    notebookDir = new File(testRootDir, "notebook");
-
-    interpreterDir.mkdirs();
-    confDir.mkdirs();
-    notebookDir.mkdirs();
-
-    FileUtils.copyDirectory(new File("src/test/resources/interpreter"), interpreterDir);
-    FileUtils.copyDirectory(new File("src/test/resources/conf"), confDir);
-
-    System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_CONF_DIR.getVarName(), confDir.getAbsolutePath());
-    System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_INTERPRETER_DIR.getVarName(), interpreterDir.getAbsolutePath());
-    System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_NOTEBOOK_DIR.getVarName(), notebookDir.getAbsolutePath());
-    System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_INTERPRETER_REMOTE_RUNNER.getVarName(), INTERPRETER_SCRIPT);
-
-    conf = new ZeppelinConfiguration();
-    interpreterSettingManager = new InterpreterSettingManager(conf,
-        mock(AngularObjectRegistryListener.class), mock(RemoteInterpreterProcessListener.class), mock(ApplicationEventListener.class));
-    interpreterFactory = new InterpreterFactory(interpreterSettingManager);
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    interpreterSettingManager.close();
-    FileUtils.deleteDirectory(testRootDir);
-  }
-}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/DoubleEchoInterpreter.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/DoubleEchoInterpreter.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/DoubleEchoInterpreter.java
deleted file mode 100644
index 8eea4b2..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/DoubleEchoInterpreter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.interpreter;
-
-import java.util.Properties;
-
-/**
- *
- */
-public class DoubleEchoInterpreter extends Interpreter {
-
-  public DoubleEchoInterpreter(Properties property) {
-    super(property);
-  }
-
-  @Override
-  public void open() {
-
-  }
-
-  @Override
-  public void close() {
-
-  }
-
-  @Override
-  public InterpreterResult interpret(String st, InterpreterContext context) {
-    return new InterpreterResult(InterpreterResult.Code.SUCCESS, st + "," + st);
-  }
-
-  @Override
-  public void cancel(InterpreterContext context) {
-
-  }
-
-  @Override
-  public FormType getFormType() {
-    return null;
-  }
-
-  @Override
-  public int getProgress(InterpreterContext context) {
-    return 0;
-  }
-}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/DummyInterpreter.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/DummyInterpreter.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/DummyInterpreter.java
new file mode 100644
index 0000000..a7a6eb9
--- /dev/null
+++ b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/DummyInterpreter.java
@@ -0,0 +1,43 @@
+package org.apache.zeppelin.interpreter;
+
+import java.util.Properties;
+
+/**
+ *
+ */
+public class DummyInterpreter extends Interpreter {
+
+  public DummyInterpreter(Properties property) {
+    super(property);
+  }
+
+  @Override
+  public void open() {
+
+  }
+
+  @Override
+  public void close() {
+
+  }
+
+  @Override
+  public InterpreterResult interpret(String st, InterpreterContext context) {
+    return null;
+  }
+
+  @Override
+  public void cancel(InterpreterContext context) {
+
+  }
+
+  @Override
+  public FormType getFormType() {
+    return null;
+  }
+
+  @Override
+  public int getProgress(InterpreterContext context) {
+    return 0;
+  }
+}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/EchoInterpreter.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/EchoInterpreter.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/EchoInterpreter.java
deleted file mode 100644
index e7a04f3..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/EchoInterpreter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.interpreter;
-
-import java.util.Properties;
-
-/**
- * Just return the received statement back
- */
-public class EchoInterpreter extends Interpreter {
-
-  public EchoInterpreter(Properties property) {
-    super(property);
-  }
-
-  @Override
-  public void open() {
-
-  }
-
-  @Override
-  public void close() {
-
-  }
-
-  @Override
-  public InterpreterResult interpret(String st, InterpreterContext context) {
-    if (Boolean.parseBoolean(property.getProperty("zeppelin.interpreter.echo.fail", "false"))) {
-      return new InterpreterResult(InterpreterResult.Code.ERROR);
-    } else {
-      return new InterpreterResult(InterpreterResult.Code.SUCCESS, st);
-    }
-  }
-
-  @Override
-  public void cancel(InterpreterContext context) {
-
-  }
-
-  @Override
-  public FormType getFormType() {
-    return FormType.NATIVE;
-  }
-
-  @Override
-  public int getProgress(InterpreterContext context) {
-    return 0;
-  }
-}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterFactoryTest.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterFactoryTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterFactoryTest.java
deleted file mode 100644
index f3137d9..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterFactoryTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.interpreter;
-
-import org.apache.zeppelin.interpreter.remote.RemoteInterpreter;
-import org.junit.Test;
-
-import java.io.IOException;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-public class InterpreterFactoryTest extends AbstractInterpreterTest {
-
-  @Test
-  public void testGetFactory() throws IOException {
-    // no default interpreter because there's no interpreter setting binded to this note
-    assertNull(interpreterFactory.getInterpreter("user1", "note1", ""));
-
-    interpreterSettingManager.setInterpreterBinding("user1", "note1", interpreterSettingManager.getSettingIds());
-    assertTrue(interpreterFactory.getInterpreter("user1", "note1", "") instanceof RemoteInterpreter);
-    RemoteInterpreter remoteInterpreter = (RemoteInterpreter) interpreterFactory.getInterpreter("user1", "note1", "");
-    // EchoInterpreter is the default interpreter (see zeppelin-interpreter/src/test/resources/conf/interpreter.json)
-    assertEquals(EchoInterpreter.class.getName(), remoteInterpreter.getClassName());
-
-    assertTrue(interpreterFactory.getInterpreter("user1", "note1", "test") instanceof RemoteInterpreter);
-    remoteInterpreter = (RemoteInterpreter) interpreterFactory.getInterpreter("user1", "note1", "test");
-    assertEquals(EchoInterpreter.class.getName(), remoteInterpreter.getClassName());
-
-    assertTrue(interpreterFactory.getInterpreter("user1", "note1", "echo") instanceof RemoteInterpreter);
-    remoteInterpreter = (RemoteInterpreter) interpreterFactory.getInterpreter("user1", "note1", "echo");
-    assertEquals(EchoInterpreter.class.getName(), remoteInterpreter.getClassName());
-
-    assertTrue(interpreterFactory.getInterpreter("user1", "note1", "double_echo") instanceof RemoteInterpreter);
-    remoteInterpreter = (RemoteInterpreter) interpreterFactory.getInterpreter("user1", "note1", "double_echo");
-    assertEquals(DoubleEchoInterpreter.class.getName(), remoteInterpreter.getClassName());
-  }
-
-  @Test(expected = InterpreterException.class)
-  public void testUnknownRepl1() throws IOException {
-    interpreterSettingManager.setInterpreterBinding("user1", "note1", interpreterSettingManager.getSettingIds());
-    interpreterFactory.getInterpreter("user1", "note1", "test.unknown_repl");
-  }
-
-  @Test
-  public void testUnknownRepl2() throws IOException {
-    interpreterSettingManager.setInterpreterBinding("user1", "note1", interpreterSettingManager.getSettingIds());
-    assertNull(interpreterFactory.getInterpreter("user1", "note1", "unknown_repl"));
-  }
-}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterGroupTest.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterGroupTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterGroupTest.java
deleted file mode 100644
index 11607bb..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterGroupTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.interpreter;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.sonatype.aether.RepositoryException;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-
-public class InterpreterGroupTest {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(InterpreterGroupTest.class);
-
-  private InterpreterSetting interpreterSetting;
-
-  @Before
-  public void setUp() throws IOException, RepositoryException {
-    InterpreterOption interpreterOption = new InterpreterOption();
-    interpreterOption.setPerUser(InterpreterOption.SCOPED);
-    interpreterOption.setRemote(false);
-    InterpreterInfo interpreterInfo1 = new InterpreterInfo(EchoInterpreter.class.getName(), "echo", true, new HashMap<String, Object>());
-    InterpreterInfo interpreterInfo2 = new InterpreterInfo(DoubleEchoInterpreter.class.getName(), "double_echo", false, new HashMap<String, Object>());
-    List<InterpreterInfo> interpreterInfos = new ArrayList<>();
-    interpreterInfos.add(interpreterInfo1);
-    interpreterInfos.add(interpreterInfo2);
-    interpreterSetting = new InterpreterSetting.Builder()
-        .setId("id")
-        .setName("test")
-        .setGroup("test")
-        .setInterpreterInfos(interpreterInfos)
-        .setOption(interpreterOption)
-        .create();
-  }
-
-  @Test
-  public void testInterpreterGroup() {
-    InterpreterGroup interpreterGroup = new InterpreterGroup("group_1", interpreterSetting);
-    assertEquals(0, interpreterGroup.getSessionNum());
-
-    // create session_1
-    List<Interpreter> interpreters = interpreterGroup.getOrCreateSession("user1", "session_1");
-    assertEquals(2, interpreters.size());
-    assertEquals(EchoInterpreter.class.getName(), interpreters.get(0).getClassName());
-    assertEquals(DoubleEchoInterpreter.class.getName(), interpreters.get(1).getClassName());
-    assertEquals(1, interpreterGroup.getSessionNum());
-
-    // get the same interpreters when interpreterGroup.getOrCreateSession is invoked again
-    assertEquals(interpreters, interpreterGroup.getOrCreateSession("user1", "session_1"));
-    assertEquals(1, interpreterGroup.getSessionNum());
-
-    // create session_2
-    List<Interpreter> interpreters2 = interpreterGroup.getOrCreateSession("user1", "session_2");
-    assertEquals(2, interpreters2.size());
-    assertEquals(EchoInterpreter.class.getName(), interpreters2.get(0).getClassName());
-    assertEquals(DoubleEchoInterpreter.class.getName(), interpreters2.get(1).getClassName());
-    assertEquals(2, interpreterGroup.getSessionNum());
-
-    // close session_1
-    interpreterGroup.close("session_1");
-    assertEquals(1, interpreterGroup.getSessionNum());
-
-    // close InterpreterGroup
-    interpreterGroup.close();
-    assertEquals(0, interpreterGroup.getSessionNum());
-  }
-}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterOutputChangeWatcherTest.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterOutputChangeWatcherTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterOutputChangeWatcherTest.java
index f3a30fb..e376809 100644
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterOutputChangeWatcherTest.java
+++ b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterOutputChangeWatcherTest.java
@@ -21,7 +21,6 @@ import static org.junit.Assert.*;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import org.junit.After;
 import org.junit.Before;
@@ -30,7 +29,7 @@ import org.junit.Test;
 public class InterpreterOutputChangeWatcherTest implements InterpreterOutputChangeListener {
   private File tmpDir;
   private File fileChanged;
-  private AtomicInteger numChanged;
+  private int numChanged;
   private InterpreterOutputChangeWatcher watcher;
 
   @Before
@@ -41,7 +40,7 @@ public class InterpreterOutputChangeWatcherTest implements InterpreterOutputChan
     tmpDir = new File(System.getProperty("java.io.tmpdir")+"/ZeppelinLTest_"+System.currentTimeMillis());
     tmpDir.mkdirs();
     fileChanged = null;
-    numChanged = new AtomicInteger(0);
+    numChanged = 0;
   }
 
   @After
@@ -67,7 +66,7 @@ public class InterpreterOutputChangeWatcherTest implements InterpreterOutputChan
   @Test
   public void test() throws IOException, InterruptedException {
     assertNull(fileChanged);
-    assertEquals(0, numChanged.get());
+    assertEquals(0, numChanged);
 
     Thread.sleep(1000);
     // create new file
@@ -93,14 +92,14 @@ public class InterpreterOutputChangeWatcherTest implements InterpreterOutputChan
     }
 
     assertNotNull(fileChanged);
-    assertEquals(1, numChanged.get());
+    assertEquals(1, numChanged);
   }
 
 
   @Override
   public void fileChanged(File file) {
     fileChanged = file;
-    numChanged.incrementAndGet();
+    numChanged++;
 
     synchronized(this) {
       notify();

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java
deleted file mode 100644
index c74760f..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * 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.interpreter;
-
-import org.apache.zeppelin.conf.ZeppelinConfiguration;
-import org.apache.zeppelin.dep.Dependency;
-import org.apache.zeppelin.display.AngularObjectRegistryListener;
-import org.apache.zeppelin.helium.ApplicationEventListener;
-import org.apache.zeppelin.interpreter.remote.RemoteInterpreterProcessListener;
-import org.junit.Test;
-import org.sonatype.aether.RepositoryException;
-import org.sonatype.aether.repository.RemoteRepository;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.mock;
-
-
-public class InterpreterSettingManagerTest extends AbstractInterpreterTest {
-
-  @Test
-  public void testInitInterpreterSettingManager() throws IOException, RepositoryException {
-    assertEquals(2, interpreterSettingManager.get().size());
-    InterpreterSetting interpreterSetting = interpreterSettingManager.getByName("test");
-    assertEquals("test", interpreterSetting.getName());
-    assertEquals("test", interpreterSetting.getGroup());
-    assertEquals(2, interpreterSetting.getInterpreterInfos().size());
-    // 3 other builtin properties:
-    //   * zeppelin.interpeter.output.limit
-    //   * zeppelin.interpreter.localRepo
-    //   * zeppelin.interpreter.max.poolsize
-    assertEquals(6, interpreterSetting.getJavaProperties().size());
-    assertEquals("value_1", interpreterSetting.getJavaProperties().getProperty("property_1"));
-    assertEquals("new_value_2", interpreterSetting.getJavaProperties().getProperty("property_2"));
-    assertEquals("value_3", interpreterSetting.getJavaProperties().getProperty("property_3"));
-    assertEquals("shared", interpreterSetting.getOption().perNote);
-    assertEquals("shared", interpreterSetting.getOption().perUser);
-    assertEquals(0, interpreterSetting.getDependencies().size());
-    assertNotNull(interpreterSetting.getAngularObjectRegistryListener());
-    assertNotNull(interpreterSetting.getRemoteInterpreterProcessListener());
-    assertNotNull(interpreterSetting.getAppEventListener());
-    assertNotNull(interpreterSetting.getDependencyResolver());
-    assertNotNull(interpreterSetting.getInterpreterSettingManager());
-
-    List<RemoteRepository> repositories = interpreterSettingManager.getRepositories();
-    assertEquals(2, repositories.size());
-    assertEquals("central", repositories.get(0).getId());
-
-    // Load it again
-    InterpreterSettingManager interpreterSettingManager2 = new InterpreterSettingManager(conf,
-        mock(AngularObjectRegistryListener.class), mock(RemoteInterpreterProcessListener.class), mock(ApplicationEventListener.class));
-    assertEquals(2, interpreterSettingManager2.get().size());
-    interpreterSetting = interpreterSettingManager2.getByName("test");
-    assertEquals("test", interpreterSetting.getName());
-    assertEquals("test", interpreterSetting.getGroup());
-    assertEquals(2, interpreterSetting.getInterpreterInfos().size());
-    assertEquals(6, interpreterSetting.getJavaProperties().size());
-    assertEquals("value_1", interpreterSetting.getJavaProperties().getProperty("property_1"));
-    assertEquals("new_value_2", interpreterSetting.getJavaProperties().getProperty("property_2"));
-    assertEquals("value_3", interpreterSetting.getJavaProperties().getProperty("property_3"));
-    assertEquals("shared", interpreterSetting.getOption().perNote);
-    assertEquals("shared", interpreterSetting.getOption().perUser);
-    assertEquals(0, interpreterSetting.getDependencies().size());
-
-    repositories = interpreterSettingManager2.getRepositories();
-    assertEquals(2, repositories.size());
-    assertEquals("central", repositories.get(0).getId());
-
-  }
-
-  @Test
-  public void testCreateUpdateRemoveSetting() throws IOException {
-    // create new interpreter setting
-    InterpreterOption option = new InterpreterOption();
-    option.setPerNote("scoped");
-    option.setPerUser("scoped");
-    Map<String, InterpreterProperty> properties = new HashMap<>();
-    properties.put("property_4", new InterpreterProperty("property_4","value_4"));
-
-    try {
-      interpreterSettingManager.createNewSetting("test2", "test", new ArrayList<Dependency>(), option, properties);
-      fail("Should fail due to interpreter already existed");
-    } catch (IOException e) {
-      assertTrue(e.getMessage().contains("already existed"));
-    }
-
-    interpreterSettingManager.createNewSetting("test3", "test", new ArrayList<Dependency>(), option, properties);
-    assertEquals(3, interpreterSettingManager.get().size());
-    InterpreterSetting interpreterSetting = interpreterSettingManager.getByName("test3");
-    assertEquals("test3", interpreterSetting.getName());
-    assertEquals("test", interpreterSetting.getGroup());
-    // 3 other builtin properties:
-    //   * zeppelin.interpeter.output.limit
-    //   * zeppelin.interpreter.localRepo
-    //   * zeppelin.interpreter.max.poolsize
-    assertEquals(4, interpreterSetting.getJavaProperties().size());
-    assertEquals("value_4", interpreterSetting.getJavaProperties().getProperty("property_4"));
-    assertEquals("scoped", interpreterSetting.getOption().perNote);
-    assertEquals("scoped", interpreterSetting.getOption().perUser);
-    assertEquals(0, interpreterSetting.getDependencies().size());
-    assertNotNull(interpreterSetting.getAngularObjectRegistryListener());
-    assertNotNull(interpreterSetting.getRemoteInterpreterProcessListener());
-    assertNotNull(interpreterSetting.getAppEventListener());
-    assertNotNull(interpreterSetting.getDependencyResolver());
-    assertNotNull(interpreterSetting.getInterpreterSettingManager());
-
-    // load it again, it should be saved in interpreter-setting.json. So we can restore it properly
-    InterpreterSettingManager interpreterSettingManager2 = new InterpreterSettingManager(conf,
-        mock(AngularObjectRegistryListener.class), mock(RemoteInterpreterProcessListener.class), mock(ApplicationEventListener.class));
-    assertEquals(3, interpreterSettingManager2.get().size());
-    interpreterSetting = interpreterSettingManager2.getByName("test3");
-    assertEquals("test3", interpreterSetting.getName());
-    assertEquals("test", interpreterSetting.getGroup());
-    assertEquals(6, interpreterSetting.getJavaProperties().size());
-    assertEquals("value_4", interpreterSetting.getJavaProperties().getProperty("property_4"));
-    assertEquals("scoped", interpreterSetting.getOption().perNote);
-    assertEquals("scoped", interpreterSetting.getOption().perUser);
-    assertEquals(0, interpreterSetting.getDependencies().size());
-
-    // update interpreter setting
-    InterpreterOption newOption = new InterpreterOption();
-    newOption.setPerNote("scoped");
-    newOption.setPerUser("isolated");
-    Map<String, InterpreterProperty> newProperties = new HashMap<>(properties);
-    newProperties.put("property_4", new InterpreterProperty("property_4", "new_value_4"));
-    List<Dependency> newDependencies = new ArrayList<>();
-    newDependencies.add(new Dependency("com.databricks:spark-avro_2.11:3.1.0"));
-    interpreterSettingManager.setPropertyAndRestart(interpreterSetting.getId(), newOption, newProperties, newDependencies);
-    interpreterSetting = interpreterSettingManager.get(interpreterSetting.getId());
-    assertEquals("test3", interpreterSetting.getName());
-    assertEquals("test", interpreterSetting.getGroup());
-    assertEquals(4, interpreterSetting.getJavaProperties().size());
-    assertEquals("new_value_4", interpreterSetting.getJavaProperties().getProperty("property_4"));
-    assertEquals("scoped", interpreterSetting.getOption().perNote);
-    assertEquals("isolated", interpreterSetting.getOption().perUser);
-    assertEquals(1, interpreterSetting.getDependencies().size());
-    assertNotNull(interpreterSetting.getAngularObjectRegistryListener());
-    assertNotNull(interpreterSetting.getRemoteInterpreterProcessListener());
-    assertNotNull(interpreterSetting.getAppEventListener());
-    assertNotNull(interpreterSetting.getDependencyResolver());
-    assertNotNull(interpreterSetting.getInterpreterSettingManager());
-
-    // restart in note page
-    interpreterSettingManager.setInterpreterBinding("user1", "note1", interpreterSettingManager.getSettingIds());
-    interpreterSettingManager.setInterpreterBinding("user2", "note2", interpreterSettingManager.getSettingIds());
-    interpreterSettingManager.setInterpreterBinding("user3", "note3", interpreterSettingManager.getSettingIds());
-    // create 3 sessions as it is scoped mode
-    interpreterSetting.getOption().setPerUser("scoped");
-    interpreterSetting.getDefaultInterpreter("user1", "note1");
-    interpreterSetting.getDefaultInterpreter("user2", "note2");
-    interpreterSetting.getDefaultInterpreter("user3", "note3");
-    InterpreterGroup interpreterGroup = interpreterSetting.getInterpreterGroup("user1", "note1");
-    assertEquals(3, interpreterGroup.getSessionNum());
-    // only close user1's session
-    interpreterSettingManager.restart(interpreterSetting.getId(), "note1", "user1");
-    assertEquals(2, interpreterGroup.getSessionNum());
-    // close all the sessions
-    interpreterSettingManager.restart(interpreterSetting.getId(), "note1", "anonymous");
-    assertEquals(0, interpreterGroup.getSessionNum());
-
-    // remove interpreter setting
-    interpreterSettingManager.remove(interpreterSetting.getId());
-    assertEquals(2, interpreterSettingManager.get().size());
-
-    // load it again
-    InterpreterSettingManager interpreterSettingManager3 = new InterpreterSettingManager(new ZeppelinConfiguration(),
-        mock(AngularObjectRegistryListener.class), mock(RemoteInterpreterProcessListener.class), mock(ApplicationEventListener.class));
-    assertEquals(2, interpreterSettingManager3.get().size());
-
-  }
-
-  @Test
-  public void testInterpreterBinding() throws IOException {
-    assertNull(interpreterSettingManager.getInterpreterBinding("note1"));
-    interpreterSettingManager.setInterpreterBinding("user1", "note1", interpreterSettingManager.getInterpreterSettingIds());
-    assertEquals(interpreterSettingManager.getInterpreterSettingIds(), interpreterSettingManager.getInterpreterBinding("note1"));
-  }
-
-  @Test
-  public void testUpdateInterpreterBinding_PerNoteShared() throws IOException {
-    InterpreterSetting defaultInterpreterSetting = interpreterSettingManager.get().get(0);
-    defaultInterpreterSetting.getOption().setPerNote("shared");
-
-    interpreterSettingManager.setInterpreterBinding("user1", "note1", interpreterSettingManager.getInterpreterSettingIds());
-    // create interpreter of the first binded interpreter setting
-    interpreterFactory.getInterpreter("user1", "note1", "");
-    assertEquals(1, defaultInterpreterSetting.getAllInterpreterGroups().size());
-
-    // choose the first setting
-    List<String> newSettingIds = new ArrayList<>();
-    newSettingIds.add(interpreterSettingManager.getInterpreterSettingIds().get(1));
-
-    interpreterSettingManager.setInterpreterBinding("user1", "note1", newSettingIds);
-    assertEquals(newSettingIds, interpreterSettingManager.getInterpreterBinding("note1"));
-    // InterpreterGroup will still be alive as it is shared
-    assertEquals(1, defaultInterpreterSetting.getAllInterpreterGroups().size());
-  }
-
-  @Test
-  public void testUpdateInterpreterBinding_PerNoteIsolated() throws IOException {
-    InterpreterSetting defaultInterpreterSetting = interpreterSettingManager.get().get(0);
-    defaultInterpreterSetting.getOption().setPerNote("isolated");
-
-    interpreterSettingManager.setInterpreterBinding("user1", "note1", interpreterSettingManager.getInterpreterSettingIds());
-    // create interpreter of the first binded interpreter setting
-    interpreterFactory.getInterpreter("user1", "note1", "");
-    assertEquals(1, defaultInterpreterSetting.getAllInterpreterGroups().size());
-
-    // choose the first setting
-    List<String> newSettingIds = new ArrayList<>();
-    newSettingIds.add(interpreterSettingManager.getInterpreterSettingIds().get(1));
-
-    interpreterSettingManager.setInterpreterBinding("user1", "note1", newSettingIds);
-    assertEquals(newSettingIds, interpreterSettingManager.getInterpreterBinding("note1"));
-    // InterpreterGroup will be closed as it is only belong to this note
-    assertEquals(0, defaultInterpreterSetting.getAllInterpreterGroups().size());
-
-  }
-
-  @Test
-  public void testUpdateInterpreterBinding_PerNoteScoped() throws IOException {
-    InterpreterSetting defaultInterpreterSetting = interpreterSettingManager.get().get(0);
-    defaultInterpreterSetting.getOption().setPerNote("scoped");
-
-    interpreterSettingManager.setInterpreterBinding("user1", "note1", interpreterSettingManager.getInterpreterSettingIds());
-    interpreterSettingManager.setInterpreterBinding("user1", "note2", interpreterSettingManager.getInterpreterSettingIds());
-    // create 2 interpreter of the first binded interpreter setting for note1 and note2
-    interpreterFactory.getInterpreter("user1", "note1", "");
-    interpreterFactory.getInterpreter("user1", "note2", "");
-    assertEquals(1, defaultInterpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(2, defaultInterpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // choose the first setting
-    List<String> newSettingIds = new ArrayList<>();
-    newSettingIds.add(interpreterSettingManager.getInterpreterSettingIds().get(1));
-
-    interpreterSettingManager.setInterpreterBinding("user1", "note1", newSettingIds);
-    assertEquals(newSettingIds, interpreterSettingManager.getInterpreterBinding("note1"));
-    // InterpreterGroup will be still alive but session belong to note1 will be closed
-    assertEquals(1, defaultInterpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(1, defaultInterpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-  }
-}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingTest.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingTest.java
deleted file mode 100644
index 3c061a9..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingTest.java
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * 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.interpreter;
-
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-public class InterpreterSettingTest {
-
-  @Test
-  public void testCreateInterpreters() {
-    InterpreterOption interpreterOption = new InterpreterOption();
-    interpreterOption.setPerUser(InterpreterOption.SHARED);
-    interpreterOption.setRemote(false);
-    InterpreterInfo interpreterInfo1 = new InterpreterInfo(EchoInterpreter.class.getName(), "echo", true, new HashMap<String, Object>());
-    InterpreterInfo interpreterInfo2 = new InterpreterInfo(DoubleEchoInterpreter.class.getName(), "double_echo", false, new HashMap<String, Object>());
-    List<InterpreterInfo> interpreterInfos = new ArrayList<>();
-    interpreterInfos.add(interpreterInfo1);
-    interpreterInfos.add(interpreterInfo2);
-    InterpreterSetting interpreterSetting = new InterpreterSetting.Builder()
-        .setId("id")
-        .setName("test")
-        .setGroup("test")
-        .setInterpreterInfos(interpreterInfos)
-        .setOption(interpreterOption)
-        .create();
-
-    // create default interpreter for user1 and note1
-    assertEquals(EchoInterpreter.class.getName(), interpreterSetting.getDefaultInterpreter("user1", "note1").getClassName());
-
-    // create interpreter echo for user1 and note1
-    assertEquals(EchoInterpreter.class.getName(), interpreterSetting.getInterpreter("user1", "note1", "echo").getClassName());
-    assertEquals(interpreterSetting.getDefaultInterpreter("user1", "note1"), interpreterSetting.getInterpreter("user1", "note1", "echo"));
-
-    // create interpreter double_echo for user1 and note1
-    assertEquals(DoubleEchoInterpreter.class.getName(), interpreterSetting.getInterpreter("user1", "note1", "double_echo").getClassName());
-
-    // create non-existed interpreter
-    assertNull(interpreterSetting.getInterpreter("user1", "note1", "invalid_echo"));
-  }
-
-  @Test
-  public void testSharedMode() {
-    InterpreterOption interpreterOption = new InterpreterOption();
-    interpreterOption.setPerUser(InterpreterOption.SHARED);
-    interpreterOption.setRemote(false);
-    InterpreterInfo interpreterInfo1 = new InterpreterInfo(EchoInterpreter.class.getName(), "echo", true, new HashMap<String, Object>());
-    InterpreterInfo interpreterInfo2 = new InterpreterInfo(DoubleEchoInterpreter.class.getName(), "double_echo", false, new HashMap<String, Object>());
-    List<InterpreterInfo> interpreterInfos = new ArrayList<>();
-    interpreterInfos.add(interpreterInfo1);
-    interpreterInfos.add(interpreterInfo2);
-    InterpreterSetting interpreterSetting = new InterpreterSetting.Builder()
-        .setId("id")
-        .setName("test")
-        .setGroup("test")
-        .setInterpreterInfos(interpreterInfos)
-        .setOption(interpreterOption)
-        .create();
-
-    // create default interpreter for user1 and note1
-    interpreterSetting.getDefaultInterpreter("user1", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-
-    // create default interpreter for user2 and note1
-    interpreterSetting.getDefaultInterpreter("user2", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-
-    // create default interpreter user1 and note2
-    interpreterSetting.getDefaultInterpreter("user1", "note2");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-
-    // only 1 session is created, this session is shared across users and notes
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    interpreterSetting.closeInterpreters("note1", "user1");
-    assertEquals(0, interpreterSetting.getAllInterpreterGroups().size());
-  }
-
-  @Test
-  public void testPerUserScopedMode() {
-    InterpreterOption interpreterOption = new InterpreterOption();
-    interpreterOption.setPerUser(InterpreterOption.SCOPED);
-    interpreterOption.setRemote(true);
-    InterpreterInfo interpreterInfo1 = new InterpreterInfo(EchoInterpreter.class.getName(), "echo", true, new HashMap<String, Object>());
-    InterpreterInfo interpreterInfo2 = new InterpreterInfo(DoubleEchoInterpreter.class.getName(), "double_echo", false, new HashMap<String, Object>());
-    List<InterpreterInfo> interpreterInfos = new ArrayList<>();
-    interpreterInfos.add(interpreterInfo1);
-    interpreterInfos.add(interpreterInfo2);
-    InterpreterSetting interpreterSetting = new InterpreterSetting.Builder()
-        .setId("id")
-        .setName("test")
-        .setGroup("test")
-        .setInterpreterInfos(interpreterInfos)
-        .setOption(interpreterOption)
-        .create();
-
-    // create interpreter for user1 and note1
-    interpreterSetting.getDefaultInterpreter("user1", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // create interpreter for user2 and note1
-    interpreterSetting.getDefaultInterpreter("user2", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(2, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    interpreterSetting.closeInterpreters("user1", "note1");
-    // InterpreterGroup is still there, but one session is removed
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    interpreterSetting.closeInterpreters("user2", "note1");
-    assertEquals(0, interpreterSetting.getAllInterpreterGroups().size());
-  }
-
-  @Test
-  public void testPerNoteScopedMode() {
-    InterpreterOption interpreterOption = new InterpreterOption();
-    interpreterOption.setPerNote(InterpreterOption.SCOPED);
-    interpreterOption.setRemote(true);
-    InterpreterInfo interpreterInfo1 = new InterpreterInfo(EchoInterpreter.class.getName(), "echo", true, new HashMap<String, Object>());
-    InterpreterInfo interpreterInfo2 = new InterpreterInfo(DoubleEchoInterpreter.class.getName(), "double_echo", false, new HashMap<String, Object>());
-    List<InterpreterInfo> interpreterInfos = new ArrayList<>();
-    interpreterInfos.add(interpreterInfo1);
-    interpreterInfos.add(interpreterInfo2);
-    InterpreterSetting interpreterSetting = new InterpreterSetting.Builder()
-        .setId("id")
-        .setName("test")
-        .setGroup("test")
-        .setInterpreterInfos(interpreterInfos)
-        .setOption(interpreterOption)
-        .create();
-
-    // create interpreter for user1 and note1
-    interpreterSetting.getDefaultInterpreter("user1", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // create interpreter for user1 and note2
-    interpreterSetting.getDefaultInterpreter("user1", "note2");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(2, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    interpreterSetting.closeInterpreters("user1", "note1");
-    // InterpreterGroup is still there, but one session is removed
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    interpreterSetting.closeInterpreters("user1", "note2");
-    assertEquals(0, interpreterSetting.getAllInterpreterGroups().size());
-  }
-
-  @Test
-  public void testPerUserIsolatedMode() {
-    InterpreterOption interpreterOption = new InterpreterOption();
-    interpreterOption.setPerUser(InterpreterOption.ISOLATED);
-    interpreterOption.setRemote(true);
-    InterpreterInfo interpreterInfo1 = new InterpreterInfo(EchoInterpreter.class.getName(), "echo", true, new HashMap<String, Object>());
-    InterpreterInfo interpreterInfo2 = new InterpreterInfo(DoubleEchoInterpreter.class.getName(), "double_echo", false, new HashMap<String, Object>());
-    List<InterpreterInfo> interpreterInfos = new ArrayList<>();
-    interpreterInfos.add(interpreterInfo1);
-    interpreterInfos.add(interpreterInfo2);
-    InterpreterSetting interpreterSetting = new InterpreterSetting.Builder()
-        .setId("id")
-        .setName("test")
-        .setGroup("test")
-        .setInterpreterInfos(interpreterInfos)
-        .setOption(interpreterOption)
-        .create();
-
-    // create interpreter for user1 and note1
-    interpreterSetting.getDefaultInterpreter("user1", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // create interpreter for user2 and note1
-    interpreterSetting.getDefaultInterpreter("user2", "note1");
-    assertEquals(2, interpreterSetting.getAllInterpreterGroups().size());
-
-    // Each user own one InterpreterGroup and one session per InterpreterGroup
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(1).getSessionNum());
-
-    interpreterSetting.closeInterpreters("user1", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    interpreterSetting.closeInterpreters("user2", "note1");
-    assertEquals(0, interpreterSetting.getAllInterpreterGroups().size());
-  }
-
-  @Test
-  public void testPerNoteIsolatedMode() {
-    InterpreterOption interpreterOption = new InterpreterOption();
-    interpreterOption.setPerNote(InterpreterOption.ISOLATED);
-    interpreterOption.setRemote(true);
-    InterpreterInfo interpreterInfo1 = new InterpreterInfo(EchoInterpreter.class.getName(), "echo", true, new HashMap<String, Object>());
-    InterpreterInfo interpreterInfo2 = new InterpreterInfo(DoubleEchoInterpreter.class.getName(), "double_echo", false, new HashMap<String, Object>());
-    List<InterpreterInfo> interpreterInfos = new ArrayList<>();
-    interpreterInfos.add(interpreterInfo1);
-    interpreterInfos.add(interpreterInfo2);
-    InterpreterSetting interpreterSetting = new InterpreterSetting.Builder()
-        .setId("id")
-        .setName("test")
-        .setGroup("test")
-        .setInterpreterInfos(interpreterInfos)
-        .setOption(interpreterOption)
-        .create();
-
-    // create interpreter for user1 and note1
-    interpreterSetting.getDefaultInterpreter("user1", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // create interpreter for user2 and note2
-    interpreterSetting.getDefaultInterpreter("user1", "note2");
-    assertEquals(2, interpreterSetting.getAllInterpreterGroups().size());
-    // Each user own one InterpreterGroup and one session per InterpreterGroup
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(1).getSessionNum());
-
-    interpreterSetting.closeInterpreters("user1", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    interpreterSetting.closeInterpreters("user1", "note2");
-    assertEquals(0, interpreterSetting.getAllInterpreterGroups().size());
-  }
-
-  @Test
-  public void testPerUserIsolatedPerNoteScopedMode() {
-    InterpreterOption interpreterOption = new InterpreterOption();
-    interpreterOption.setPerUser(InterpreterOption.ISOLATED);
-    interpreterOption.setPerNote(InterpreterOption.SCOPED);
-    interpreterOption.setRemote(true);
-    InterpreterInfo interpreterInfo1 = new InterpreterInfo(EchoInterpreter.class.getName(), "echo", true, new HashMap<String, Object>());
-    InterpreterInfo interpreterInfo2 = new InterpreterInfo(DoubleEchoInterpreter.class.getName(), "double_echo", false, new HashMap<String, Object>());
-    List<InterpreterInfo> interpreterInfos = new ArrayList<>();
-    interpreterInfos.add(interpreterInfo1);
-    interpreterInfos.add(interpreterInfo2);
-    InterpreterSetting interpreterSetting = new InterpreterSetting.Builder()
-        .setId("id")
-        .setName("test")
-        .setGroup("test")
-        .setInterpreterInfos(interpreterInfos)
-        .setOption(interpreterOption)
-        .create();
-
-    // create interpreter for user1 and note1
-    interpreterSetting.getDefaultInterpreter("user1", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    interpreterSetting.getDefaultInterpreter("user1", "note2");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(2, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // create interpreter for user2 and note1
-    interpreterSetting.getDefaultInterpreter("user2", "note1");
-    assertEquals(2, interpreterSetting.getAllInterpreterGroups().size());
-
-    // group1 for user1 has 2 sessions, and group2 for user2 has 1 session
-    assertEquals(interpreterSetting.getInterpreterGroup("user1", "note1"), interpreterSetting.getInterpreterGroup("user1", "note2"));
-    assertEquals(2, interpreterSetting.getInterpreterGroup("user1", "note1").getSessionNum());
-    assertEquals(2, interpreterSetting.getInterpreterGroup("user1", "note2").getSessionNum());
-    assertEquals(1, interpreterSetting.getInterpreterGroup("user2", "note1").getSessionNum());
-
-    // close one session for user1
-    interpreterSetting.closeInterpreters("user1", "note1");
-    assertEquals(2, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(1, interpreterSetting.getInterpreterGroup("user1", "note1").getSessionNum());
-
-    // close another session for user1
-    interpreterSetting.closeInterpreters("user1", "note2");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-
-    // close session for user2
-    interpreterSetting.closeInterpreters("user2", "note1");
-    assertEquals(0, interpreterSetting.getAllInterpreterGroups().size());
-  }
-
-  @Test
-  public void testPerUserIsolatedPerNoteIsolatedMode() {
-    InterpreterOption interpreterOption = new InterpreterOption();
-    interpreterOption.setPerUser(InterpreterOption.ISOLATED);
-    interpreterOption.setPerNote(InterpreterOption.ISOLATED);
-    interpreterOption.setRemote(true);
-    InterpreterInfo interpreterInfo1 = new InterpreterInfo(EchoInterpreter.class.getName(), "echo", true, new HashMap<String, Object>());
-    InterpreterInfo interpreterInfo2 = new InterpreterInfo(DoubleEchoInterpreter.class.getName(), "double_echo", false, new HashMap<String, Object>());
-    List<InterpreterInfo> interpreterInfos = new ArrayList<>();
-    interpreterInfos.add(interpreterInfo1);
-    interpreterInfos.add(interpreterInfo2);
-    InterpreterSetting interpreterSetting = new InterpreterSetting.Builder()
-        .setId("id")
-        .setName("test")
-        .setGroup("test")
-        .setInterpreterInfos(interpreterInfos)
-        .setOption(interpreterOption)
-        .create();
-
-    // create interpreter for user1 and note1
-    interpreterSetting.getDefaultInterpreter("user1", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-
-    // create interpreter for user1 and note2
-    interpreterSetting.getDefaultInterpreter("user1", "note2");
-    assertEquals(2, interpreterSetting.getAllInterpreterGroups().size());
-
-    // create interpreter for user2 and note1
-    interpreterSetting.getDefaultInterpreter("user2", "note1");
-    assertEquals(3, interpreterSetting.getAllInterpreterGroups().size());
-
-    // create interpreter for user2 and note2
-    interpreterSetting.getDefaultInterpreter("user2", "note2");
-    assertEquals(4, interpreterSetting.getAllInterpreterGroups().size());
-
-    for (InterpreterGroup interpreterGroup : interpreterSetting.getAllInterpreterGroups()) {
-      // each InterpreterGroup has one session
-      assertEquals(1, interpreterGroup.getSessionNum());
-    }
-
-    // close one session for user1 and note1
-    interpreterSetting.closeInterpreters("user1", "note1");
-    assertEquals(3, interpreterSetting.getAllInterpreterGroups().size());
-
-    // close one session for user1 and note2
-    interpreterSetting.closeInterpreters("user1", "note2");
-    assertEquals(2, interpreterSetting.getAllInterpreterGroups().size());
-
-    // close one session for user2 and note1
-    interpreterSetting.closeInterpreters("user2", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-
-    // close one session for user2 and note2
-    interpreterSetting.closeInterpreters("user2", "note2");
-    assertEquals(0, interpreterSetting.getAllInterpreterGroups().size());
-  }
-
-  @Test
-  public void testPerUserScopedPerNoteScopedMode() {
-    InterpreterOption interpreterOption = new InterpreterOption();
-    interpreterOption.setPerUser(InterpreterOption.SCOPED);
-    interpreterOption.setPerNote(InterpreterOption.SCOPED);
-    interpreterOption.setRemote(true);
-    InterpreterInfo interpreterInfo1 = new InterpreterInfo(EchoInterpreter.class.getName(), "echo", true, new HashMap<String, Object>());
-    InterpreterInfo interpreterInfo2 = new InterpreterInfo(DoubleEchoInterpreter.class.getName(), "double_echo", false, new HashMap<String, Object>());
-    List<InterpreterInfo> interpreterInfos = new ArrayList<>();
-    interpreterInfos.add(interpreterInfo1);
-    interpreterInfos.add(interpreterInfo2);
-    InterpreterSetting interpreterSetting = new InterpreterSetting.Builder()
-        .setId("id")
-        .setName("test")
-        .setGroup("test")
-        .setInterpreterInfos(interpreterInfos)
-        .setOption(interpreterOption)
-        .create();
-
-    // create interpreter for user1 and note1
-    interpreterSetting.getDefaultInterpreter("user1", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // create interpreter for user1 and note2
-    interpreterSetting.getDefaultInterpreter("user1", "note2");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(2, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // create interpreter for user2 and note1
-    interpreterSetting.getDefaultInterpreter("user2", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(3, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // create interpreter for user2 and note2
-    interpreterSetting.getDefaultInterpreter("user2", "note2");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().size());
-    assertEquals(4, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // close one session for user1 and note1
-    interpreterSetting.closeInterpreters("user1", "note1");
-    assertEquals(3, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // close one session for user1 and note2
-    interpreterSetting.closeInterpreters("user1", "note2");
-    assertEquals(2, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // close one session for user2 and note1
-    interpreterSetting.closeInterpreters("user2", "note1");
-    assertEquals(1, interpreterSetting.getAllInterpreterGroups().get(0).getSessionNum());
-
-    // close one session for user2 and note2
-    interpreterSetting.closeInterpreters("user2", "note2");
-    assertEquals(0, interpreterSetting.getAllInterpreterGroups().size());
-  }
-}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterTest.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterTest.java
index d46eaa7..305268c 100644
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterTest.java
+++ b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/InterpreterTest.java
@@ -24,14 +24,13 @@ import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 
-//TODO(zjffdu) add more test for Interpreter which is a very important class
 public class InterpreterTest {
 
   @Test
   public void testDefaultProperty() {
     Properties p = new Properties();
     p.put("p1", "v1");
-    Interpreter intp = new EchoInterpreter(p);
+    Interpreter intp = new DummyInterpreter(p);
 
     assertEquals(1, intp.getProperty().size());
     assertEquals("v1", intp.getProperty().get("p1"));
@@ -42,7 +41,7 @@ public class InterpreterTest {
   public void testOverriddenProperty() {
     Properties p = new Properties();
     p.put("p1", "v1");
-    Interpreter intp = new EchoInterpreter(p);
+    Interpreter intp = new DummyInterpreter(p);
     Properties overriddenProperty = new Properties();
     overriddenProperty.put("p1", "v2");
     intp.setProperty(overriddenProperty);
@@ -74,7 +73,7 @@ public class InterpreterTest {
     Properties p = new Properties();
     p.put("p1", "replName #{noteId}, #{paragraphTitle}, #{paragraphId}, #{paragraphText}, #{replName}, #{noteId}, #{user}," +
         " #{authenticationInfo}");
-    Interpreter intp = new EchoInterpreter(p);
+    Interpreter intp = new DummyInterpreter(p);
     intp.setUserName(user);
     String actual = intp.getProperty("p1");
     InterpreterContext.remove();

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/SleepInterpreter.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/SleepInterpreter.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/SleepInterpreter.java
deleted file mode 100644
index 9deafcf..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/SleepInterpreter.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.apache.zeppelin.interpreter;
-
-import org.apache.zeppelin.scheduler.Scheduler;
-import org.apache.zeppelin.scheduler.SchedulerFactory;
-
-import java.util.Properties;
-
-/**
- * Interpreter that only accept long value and sleep for such period
- */
-public class SleepInterpreter extends Interpreter {
-
-  public SleepInterpreter(Properties property) {
-    super(property);
-  }
-
-  @Override
-  public void open() {
-
-  }
-
-  @Override
-  public void close() {
-
-  }
-
-  @Override
-  public InterpreterResult interpret(String st, InterpreterContext context) {
-    try {
-      Thread.sleep(Long.parseLong(st));
-      return new InterpreterResult(InterpreterResult.Code.SUCCESS);
-    } catch (Exception e) {
-      return new InterpreterResult(InterpreterResult.Code.ERROR, e.getMessage());
-    }
-  }
-
-  @Override
-  public void cancel(InterpreterContext context) {
-
-  }
-
-  @Override
-  public FormType getFormType() {
-    return FormType.NATIVE;
-  }
-
-  @Override
-  public Scheduler getScheduler() {
-    if (Boolean.parseBoolean(property.getProperty("zeppelin.SleepInterpreter.parallel", "false"))) {
-      return SchedulerFactory.singleton().createOrGetParallelScheduler(
-          "Parallel-" + SleepInterpreter.class.getName(), 10);
-    }
-    return super.getScheduler();
-  }
-
-  @Override
-  public int getProgress(InterpreterContext context) {
-    return 0;
-  }
-}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/install/InstallInterpreterTest.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/install/InstallInterpreterTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/install/InstallInterpreterTest.java
deleted file mode 100644
index e934f1a..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/install/InstallInterpreterTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.apache.zeppelin.interpreter.install;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.zeppelin.conf.ZeppelinConfiguration;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-/*
- * 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.
- */
-public class InstallInterpreterTest {
-  private File tmpDir;
-  private InstallInterpreter installer;
-  private File interpreterBaseDir;
-
-  @Before
-  public void setUp() throws IOException {
-    tmpDir = new File(System.getProperty("java.io.tmpdir")+"/ZeppelinLTest_"+System.currentTimeMillis());
-    new File(tmpDir, "conf").mkdirs();
-    interpreterBaseDir = new File(tmpDir, "interpreter");
-    File localRepoDir = new File(tmpDir, "local-repo");
-    interpreterBaseDir.mkdir();
-    localRepoDir.mkdir();
-
-    File interpreterListFile = new File(tmpDir, "conf/interpreter-list");
-
-
-    // create interpreter list file
-    System.setProperty(ZeppelinConfiguration.ConfVars.ZEPPELIN_HOME.getVarName(), tmpDir.getAbsolutePath());
-
-    String interpreterList = "";
-    interpreterList += "intp1   org.apache.commons:commons-csv:1.1   test interpreter 1\n";
-    interpreterList += "intp2   org.apache.commons:commons-math3:3.6.1 test interpreter 2\n";
-
-    FileUtils.writeStringToFile(new File(tmpDir, "conf/interpreter-list"), interpreterList);
-
-    installer = new InstallInterpreter(interpreterListFile, interpreterBaseDir, localRepoDir
-        .getAbsolutePath());
-  }
-
-  @After
-  public void tearDown() throws IOException {
-    FileUtils.deleteDirectory(tmpDir);
-  }
-
-
-  @Test
-  public void testList() {
-    assertEquals(2, installer.list().size());
-  }
-
-  @Test
-  public void install() {
-    assertEquals(0, interpreterBaseDir.listFiles().length);
-
-    installer.install("intp1");
-    assertTrue(new File(interpreterBaseDir, "intp1").isDirectory());
-  }
-
-  @Test
-  public void installAll() {
-    installer.installAll();
-    assertTrue(new File(interpreterBaseDir, "intp1").isDirectory());
-    assertTrue(new File(interpreterBaseDir, "intp2").isDirectory());
-  }
-}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter1.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter1.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter1.java
deleted file mode 100644
index a533c12..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter1.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
-* 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.interpreter.mock;
-
-import org.apache.zeppelin.interpreter.Interpreter;
-import org.apache.zeppelin.interpreter.InterpreterContext;
-import org.apache.zeppelin.interpreter.InterpreterResult;
-import org.apache.zeppelin.interpreter.thrift.InterpreterCompletion;
-import org.apache.zeppelin.scheduler.Scheduler;
-import org.apache.zeppelin.scheduler.SchedulerFactory;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-public class MockInterpreter1 extends Interpreter {
-
-	Map<String, Object> vars = new HashMap<>();
-
-	public MockInterpreter1(Properties property) {
-		super(property);
-	}
-	boolean open;
-
-
-	@Override
-	public void open() {
-		open = true;
-	}
-
-	@Override
-	public void close() {
-		open = false;
-	}
-
-
-	public boolean isOpen() {
-		return open;
-	}
-
-	@Override
-	public InterpreterResult interpret(String st, InterpreterContext context) {
-		InterpreterResult result;
-
-		if ("getId".equals(st)) {
-			// get unique id of this interpreter instance
-			result = new InterpreterResult(InterpreterResult.Code.SUCCESS, "" + this.hashCode());
-		} else if (st.startsWith("sleep")) {
-			try {
-				Thread.sleep(Integer.parseInt(st.split(" ")[1]));
-			} catch (InterruptedException e) {
-				// nothing to do
-			}
-			result = new InterpreterResult(InterpreterResult.Code.SUCCESS, "repl1: " + st);
-		} else {
-			result = new InterpreterResult(InterpreterResult.Code.SUCCESS, "repl1: " + st);
-		}
-
-		if (context.getResourcePool() != null) {
-			context.getResourcePool().put(context.getNoteId(), context.getParagraphId(), "result", result);
-		}
-
-		return result;
-	}
-
-	@Override
-	public void cancel(InterpreterContext context) {
-	}
-
-	@Override
-	public FormType getFormType() {
-		return FormType.SIMPLE;
-	}
-
-	@Override
-	public int getProgress(InterpreterContext context) {
-		return 0;
-	}
-
-	@Override
-	public Scheduler getScheduler() {
-		return SchedulerFactory.singleton().createOrGetFIFOScheduler("test_"+this.hashCode());
-	}
-
-	@Override
-	public List<InterpreterCompletion> completion(String buf, int cursor,
-			InterpreterContext interpreterContext) {
-		return null;
-	}
-}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter11.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter11.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter11.java
deleted file mode 100644
index d53716f..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter11.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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.interpreter.mock;
-
-
-import org.apache.zeppelin.interpreter.Interpreter;
-import org.apache.zeppelin.interpreter.InterpreterContext;
-import org.apache.zeppelin.interpreter.InterpreterResult;
-import org.apache.zeppelin.interpreter.thrift.InterpreterCompletion;
-import org.apache.zeppelin.scheduler.Scheduler;
-import org.apache.zeppelin.scheduler.SchedulerFactory;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-public class MockInterpreter11 extends Interpreter {
-  Map<String, Object> vars = new HashMap<>();
-
-  public MockInterpreter11(Properties property) {
-    super(property);
-  }
-
-  boolean open;
-
-  @Override
-  public void open() {
-    open = true;
-  }
-
-  @Override
-  public void close() {
-    open = false;
-  }
-
-  public boolean isOpen() {
-    return open;
-  }
-
-  @Override
-  public InterpreterResult interpret(String st, InterpreterContext context) {
-    return new InterpreterResult(InterpreterResult.Code.SUCCESS, "repl11: " + st);
-  }
-
-  @Override
-  public void cancel(InterpreterContext context) {
-  }
-
-  @Override
-  public FormType getFormType() {
-    return FormType.SIMPLE;
-  }
-
-  @Override
-  public int getProgress(InterpreterContext context) {
-    return 0;
-  }
-
-  @Override
-  public Scheduler getScheduler() {
-    return SchedulerFactory.singleton().createOrGetFIFOScheduler("test_" + this.hashCode());
-  }
-
-  @Override
-  public List<InterpreterCompletion> completion(String buf, int cursor,
-                                                InterpreterContext interpreterContext) {
-    return null;
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter2.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter2.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter2.java
deleted file mode 100644
index f36df56..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/mock/MockInterpreter2.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.interpreter.mock;
-
-import org.apache.zeppelin.interpreter.Interpreter;
-import org.apache.zeppelin.interpreter.InterpreterContext;
-import org.apache.zeppelin.interpreter.InterpreterResult;
-import org.apache.zeppelin.interpreter.thrift.InterpreterCompletion;
-import org.apache.zeppelin.scheduler.Scheduler;
-import org.apache.zeppelin.scheduler.SchedulerFactory;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-public class MockInterpreter2 extends Interpreter{
-  Map<String, Object> vars = new HashMap<>();
-
-	public MockInterpreter2(Properties property) {
-		super(property);
-	}
-
-	boolean open;
-
-	@Override
-	public void open() {
-		open = true;
-	}
-
-	@Override
-	public void close() {
-		open = false;
-	}
-
-	public boolean isOpen() {
-		return open;
-	}
-
-
-	@Override
-	public InterpreterResult interpret(String st, InterpreterContext context) {
-		InterpreterResult result;
-
-		if ("getId".equals(st)) {
-			// get unique id of this interpreter instance
-			result = new InterpreterResult(InterpreterResult.Code.SUCCESS, "" + this.hashCode());
-		} else if (st.startsWith("sleep")) {
-			try {
-				Thread.sleep(Integer.parseInt(st.split(" ")[1]));
-			} catch (InterruptedException e) {
-				// nothing to do
-			}
-			result = new InterpreterResult(InterpreterResult.Code.SUCCESS, "repl2: " + st);
-		} else {
-			result = new InterpreterResult(InterpreterResult.Code.SUCCESS, "repl2: " + st);
-		}
-
-		if (context.getResourcePool() != null) {
-			context.getResourcePool().put(context.getNoteId(), context.getParagraphId(), "result", result);
-		}
-		return result;
-	}
-
-	@Override
-	public void cancel(InterpreterContext context) {
-	}
-
-	@Override
-	public FormType getFormType() {
-		return FormType.SIMPLE;
-	}
-
-	@Override
-	public int getProgress(InterpreterContext context) {
-		return 0;
-	}
-
-	@Override
-	public Scheduler getScheduler() {
-		return SchedulerFactory.singleton().createOrGetFIFOScheduler("test_"+this.hashCode());
-	}
-
-	@Override
-	public List<InterpreterCompletion> completion(String buf, int cursor,
-			InterpreterContext interpreterContext) {
-		return null;
-	}
-}

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2a379102/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/remote/AppendOutputRunnerTest.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/remote/AppendOutputRunnerTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/remote/AppendOutputRunnerTest.java
deleted file mode 100644
index c9dc5c0..0000000
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/interpreter/remote/AppendOutputRunnerTest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * 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.interpreter.remote;
-
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.spi.LoggingEvent;
-import org.junit.After;
-import org.junit.Test;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Mockito.*;
-
-public class AppendOutputRunnerTest {
-
-  private static final int NUM_EVENTS = 10000;
-  private static final int NUM_CLUBBED_EVENTS = 100;
-  private static final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
-  private static ScheduledFuture<?> future = null;
-  /* It is being accessed by multiple threads.
-   * While loop for 'loopForBufferCompletion' could
-   * run for-ever.
-   */
-  private volatile static int numInvocations = 0;
-
-  @After
-  public void afterEach() {
-    if (future != null) {
-      future.cancel(true);
-    }
-  }
-
-  @Test
-  public void testSingleEvent() throws InterruptedException {
-    RemoteInterpreterProcessListener listener = mock(RemoteInterpreterProcessListener.class);
-    String[][] buffer = {{"note", "para", "data\n"}};
-
-    loopForCompletingEvents(listener, 1, buffer);
-    verify(listener, times(1)).onOutputAppend(any(String.class), any(String.class), anyInt(), any(String.class));
-    verify(listener, times(1)).onOutputAppend("note", "para", 0, "data\n");
-  }
-
-  @Test
-  public void testMultipleEventsOfSameParagraph() throws InterruptedException {
-    RemoteInterpreterProcessListener listener = mock(RemoteInterpreterProcessListener.class);
-    String note1 = "note1";
-    String para1 = "para1";
-    String[][] buffer = {
-        {note1, para1, "data1\n"},
-        {note1, para1, "data2\n"},
-        {note1, para1, "data3\n"}
-    };
-
-    loopForCompletingEvents(listener, 1, buffer);
-    verify(listener, times(1)).onOutputAppend(any(String.class), any(String.class), anyInt(), any(String.class));
-    verify(listener, times(1)).onOutputAppend(note1, para1, 0, "data1\ndata2\ndata3\n");
-  }
-
-  @Test
-  public void testMultipleEventsOfDifferentParagraphs() throws InterruptedException {
-    RemoteInterpreterProcessListener listener = mock(RemoteInterpreterProcessListener.class);
-    String note1 = "note1";
-    String note2 = "note2";
-    String para1 = "para1";
-    String para2 = "para2";
-    String[][] buffer = {
-        {note1, para1, "data1\n"},
-        {note1, para2, "data2\n"},
-        {note2, para1, "data3\n"},
-        {note2, para2, "data4\n"}
-    };
-    loopForCompletingEvents(listener, 4, buffer);
-
-    verify(listener, times(4)).onOutputAppend(any(String.class), any(String.class), anyInt(), any(String.class));
-    verify(listener, times(1)).onOutputAppend(note1, para1, 0, "data1\n");
-    verify(listener, times(1)).onOutputAppend(note1, para2, 0, "data2\n");
-    verify(listener, times(1)).onOutputAppend(note2, para1, 0, "data3\n");
-    verify(listener, times(1)).onOutputAppend(note2, para2, 0, "data4\n");
-  }
-
-  @Test
-  public void testClubbedData() throws InterruptedException {
-    RemoteInterpreterProcessListener listener = mock(RemoteInterpreterProcessListener.class);
-    AppendOutputRunner runner = new AppendOutputRunner(listener);
-    future = service.scheduleWithFixedDelay(runner, 0,
-        AppendOutputRunner.BUFFER_TIME_MS, TimeUnit.MILLISECONDS);
-    Thread thread = new Thread(new BombardEvents(runner));
-    thread.start();
-    thread.join();
-    Thread.sleep(1000);
-
-    /* NUM_CLUBBED_EVENTS is a heuristic number.
-     * It has been observed that for 10,000 continuos event
-     * calls, 30-40 Web-socket calls are made. Keeping
-     * the unit-test to a pessimistic 100 web-socket calls.
-     */
-    verify(listener, atMost(NUM_CLUBBED_EVENTS)).onOutputAppend(any(String.class), any(String.class), anyInt(), any(String.class));
-  }
-
-  @Test
-  public void testWarnLoggerForLargeData() throws InterruptedException {
-    RemoteInterpreterProcessListener listener = mock(RemoteInterpreterProcessListener.class);
-    AppendOutputRunner runner = new AppendOutputRunner(listener);
-    String data = "data\n";
-    int numEvents = 100000;
-
-    for (int i=0; i<numEvents; i++) {
-      runner.appendBuffer("noteId", "paraId", 0, data);
-    }
-
-    TestAppender appender = new TestAppender();
-    Logger logger = Logger.getRootLogger();
-    logger.addAppender(appender);
-    Logger.getLogger(RemoteInterpreterEventPoller.class);
-
-    runner.run();
-    List<LoggingEvent> log;
-
-    int warnLogCounter;
-    LoggingEvent sizeWarnLogEntry = null;
-    do {
-      warnLogCounter = 0;
-      log = appender.getLog();
-      for (LoggingEvent logEntry: log) {
-        if (Level.WARN.equals(logEntry.getLevel())) {
-          sizeWarnLogEntry = logEntry;
-          warnLogCounter += 1;
-        }
-      }
-    } while(warnLogCounter != 2);
-
-    String loggerString = "Processing size for buffered append-output is high: " +
-        (data.length() * numEvents) + " characters.";
-    assertTrue(loggerString.equals(sizeWarnLogEntry.getMessage()));
-  }
-
-  private class BombardEvents implements Runnable {
-
-    private final AppendOutputRunner runner;
-
-    private BombardEvents(AppendOutputRunner runner) {
-      this.runner = runner;
-    }
-
-    @Override
-    public void run() {
-      String noteId = "noteId";
-      String paraId = "paraId";
-      for (int i=0; i<NUM_EVENTS; i++) {
-        runner.appendBuffer(noteId, paraId, 0, "data\n");
-      }
-    }
-  }
-
-  private class TestAppender extends AppenderSkeleton {
-    private final List<LoggingEvent> log = new ArrayList<>();
-
-    @Override
-    public boolean requiresLayout() {
-        return false;
-    }
-
-    @Override
-    protected void append(final LoggingEvent loggingEvent) {
-        log.add(loggingEvent);
-    }
-
-    @Override
-    public void close() {
-    }
-
-    public List<LoggingEvent> getLog() {
-        return new ArrayList<>(log);
-    }
-  }
-
-  private void prepareInvocationCounts(RemoteInterpreterProcessListener listener) {
-    doAnswer(new Answer<Void>() {
-      @Override
-      public Void answer(InvocationOnMock invocation) throws Throwable {
-        numInvocations += 1;
-        return null;
-      }
-    }).when(listener).onOutputAppend(any(String.class), any(String.class), anyInt(), any(String.class));
-  }
-
-  private void loopForCompletingEvents(RemoteInterpreterProcessListener listener,
-      int numTimes, String[][] buffer) {
-    numInvocations = 0;
-    prepareInvocationCounts(listener);
-    AppendOutputRunner runner = new AppendOutputRunner(listener);
-    for (String[] bufferElement: buffer) {
-      runner.appendBuffer(bufferElement[0], bufferElement[1], 0, bufferElement[2]);
-    }
-    future = service.scheduleWithFixedDelay(runner, 0,
-        AppendOutputRunner.BUFFER_TIME_MS, TimeUnit.MILLISECONDS);
-    long startTimeMs = System.currentTimeMillis();
-    while(numInvocations != numTimes) {
-      if (System.currentTimeMillis() - startTimeMs > 2000) {
-        fail("Buffered events were not sent for 2 seconds");
-      }
-    }
-  }
-}
\ No newline at end of file