Repository: incubator-zeppelin
Updated Branches:
  refs/heads/master b3b9c93d9 -> 3a4ab1ad2


http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/3a4ab1ad/tajo/src/test/java/org/apache/zeppelin/tajo/TesterStatement.java
----------------------------------------------------------------------
diff --git a/tajo/src/test/java/org/apache/zeppelin/tajo/TesterStatement.java 
b/tajo/src/test/java/org/apache/zeppelin/tajo/TesterStatement.java
new file mode 100644
index 0000000..22be68d
--- /dev/null
+++ b/tajo/src/test/java/org/apache/zeppelin/tajo/TesterStatement.java
@@ -0,0 +1,344 @@
+/**
+ * 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.tajo;
+
+
+import java.sql.*;
+
+/**
+ * This is borrowed from Apache Commons DBCP2.
+ *
+ * A dummy {@link java.sql.Statement}, for testing purposes.
+ */
+public class TesterStatement implements Statement {
+  public TesterStatement(Connection conn) {
+    _connection = conn;
+  }
+
+  public TesterStatement(Connection conn, int resultSetType, int 
resultSetConcurrency) {
+    _connection = conn;
+    _resultSetType = resultSetType;
+    _resultSetConcurrency = resultSetConcurrency;
+  }
+
+  protected Connection _connection = null;
+  protected boolean _open = true;
+  protected int _rowsUpdated = 1;
+  protected boolean _executeResponse = true;
+  protected int _maxFieldSize = 1024;
+  protected int _maxRows = 1024;
+  protected boolean _escapeProcessing = false;
+  protected int _queryTimeout = 1000;
+  protected String _cursorName = null;
+  protected int _fetchDirection = 1;
+  protected int _fetchSize = 1;
+  protected int _resultSetConcurrency = 1;
+  protected int _resultSetType = 1;
+  protected ResultSet _resultSet = null;
+
+  @Override
+  public ResultSet executeQuery(String sql) throws SQLException {
+    checkOpen();
+    if("null".equals(sql)) {
+      return null;
+    }
+    if("invalid".equals(sql)) {
+      throw new SQLException("invalid query");
+    }
+    if ("broken".equals(sql)) {
+      throw new SQLException("broken connection");
+    }
+    if("select username".equals(sql)) {
+      String username = ((TesterConnection) _connection).getUsername();
+      Object[][] data = {{username}};
+      return new TesterResultSet(this, data);
+    } else {
+      // Simulate timeout if queryTimout is set to less than 5 seconds
+      if (_queryTimeout > 0 && _queryTimeout < 5) {
+        throw new SQLException("query timeout");
+      }
+      return new TesterResultSet(this);
+    }
+  }
+
+  @Override
+  public int executeUpdate(String sql) throws SQLException {
+    checkOpen();
+    return _rowsUpdated;
+  }
+
+  @Override
+  public void close() throws SQLException {
+    // calling close twice has no effect
+    if (!_open) {
+      return;
+    }
+
+    _open = false;
+    if (_resultSet != null) {
+      _resultSet.close();
+      _resultSet = null;
+    }
+  }
+
+  @Override
+  public int getMaxFieldSize() throws SQLException {
+    checkOpen();
+    return _maxFieldSize;
+  }
+
+  @Override
+  public void setMaxFieldSize(int max) throws SQLException {
+    checkOpen();
+    _maxFieldSize = max;
+  }
+
+  @Override
+  public int getMaxRows() throws SQLException {
+    checkOpen();
+    return _maxRows;
+  }
+
+  @Override
+  public void setMaxRows(int max) throws SQLException {
+    checkOpen();
+    _maxRows = max;
+  }
+
+  @Override
+  public void setEscapeProcessing(boolean enable) throws SQLException {
+    checkOpen();
+    _escapeProcessing = enable;
+  }
+
+  @Override
+  public int getQueryTimeout() throws SQLException {
+    checkOpen();
+    return _queryTimeout;
+  }
+
+  @Override
+  public void setQueryTimeout(int seconds) throws SQLException {
+    checkOpen();
+    _queryTimeout = seconds;
+  }
+
+  @Override
+  public void cancel() throws SQLException {
+    checkOpen();
+  }
+
+  @Override
+  public SQLWarning getWarnings() throws SQLException {
+    checkOpen();
+    return null;
+  }
+
+  @Override
+  public void clearWarnings() throws SQLException {
+    checkOpen();
+  }
+
+  @Override
+  public void setCursorName(String name) throws SQLException {
+    checkOpen();
+    _cursorName = name;
+  }
+
+  @Override
+  public boolean execute(String sql) throws SQLException {
+    checkOpen();
+    if("invalid".equals(sql)) {
+      throw new SQLException("invalid query");
+    }
+    return _executeResponse;
+  }
+
+  @Override
+  public ResultSet getResultSet() throws SQLException {
+    checkOpen();
+    if (_resultSet == null) {
+      _resultSet = new TesterResultSet(this);
+    }
+    return _resultSet;
+  }
+
+  @Override
+  public int getUpdateCount() throws SQLException {
+    checkOpen();
+    return _rowsUpdated;
+  }
+
+  @Override
+  public boolean getMoreResults() throws SQLException {
+    checkOpen();
+    return false;
+  }
+
+  @Override
+  public void setFetchDirection(int direction) throws SQLException {
+    checkOpen();
+    _fetchDirection = direction;
+  }
+
+  @Override
+  public int getFetchDirection() throws SQLException {
+    checkOpen();
+    return _fetchDirection;
+  }
+
+  @Override
+  public void setFetchSize(int rows) throws SQLException {
+    checkOpen();
+    _fetchSize = rows;
+  }
+
+  @Override
+  public int getFetchSize() throws SQLException {
+    checkOpen();
+    return _fetchSize;
+  }
+
+  @Override
+  public int getResultSetConcurrency() throws SQLException {
+    checkOpen();
+    return _resultSetConcurrency;
+  }
+
+  @Override
+  public int getResultSetType() throws SQLException {
+    checkOpen();
+    return _resultSetType;
+  }
+
+  @Override
+  public void addBatch(String sql) throws SQLException {
+    checkOpen();
+  }
+
+  @Override
+  public void clearBatch() throws SQLException {
+    checkOpen();
+  }
+
+  @Override
+  public int[] executeBatch() throws SQLException {
+    checkOpen();
+    return new int[0];
+  }
+
+  @Override
+  public Connection getConnection() throws SQLException {
+    checkOpen();
+    return _connection;
+  }
+
+  protected void checkOpen() throws SQLException {
+    if(!_open) {
+      throw new SQLException("Connection is closed.");
+    }
+  }
+
+  @Override
+  public boolean getMoreResults(int current) throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+  @Override
+  public ResultSet getGeneratedKeys() throws SQLException {
+    return new TesterResultSet(this);
+  }
+
+  @Override
+  public int executeUpdate(String sql, int autoGeneratedKeys)
+    throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+  @Override
+  public int executeUpdate(String sql, int columnIndexes[])
+    throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+  @Override
+  public int executeUpdate(String sql, String columnNames[])
+    throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+  @Override
+  public boolean execute(String sql, int autoGeneratedKeys)
+    throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+  @Override
+  public boolean execute(String sql, int columnIndexes[])
+    throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+  @Override
+  public boolean execute(String sql, String columnNames[])
+    throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+  @Override
+  public int getResultSetHoldability() throws SQLException {
+    checkOpen();
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+
+  @Override
+  public boolean isWrapperFor(Class<?> iface) throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+  @Override
+  public <T> T unwrap(Class<T> iface) throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+  @Override
+  public boolean isClosed() throws SQLException {
+    return !_open;
+  }
+
+  @Override
+  public void setPoolable(boolean poolable) throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+  @Override
+  public boolean isPoolable() throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not supported.");
+  }
+
+  @Override
+  public void closeOnCompletion() throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not implemented.");
+  }
+
+  @Override
+  public boolean isCloseOnCompletion() throws SQLException {
+    throw new SQLFeatureNotSupportedException("Not implemented.");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/3a4ab1ad/tajo/src/test/java/org/apache/zeppelin/tajo/TesterTajoInterpreter.java
----------------------------------------------------------------------
diff --git 
a/tajo/src/test/java/org/apache/zeppelin/tajo/TesterTajoInterpreter.java 
b/tajo/src/test/java/org/apache/zeppelin/tajo/TesterTajoInterpreter.java
new file mode 100644
index 0000000..f0eacee
--- /dev/null
+++ b/tajo/src/test/java/org/apache/zeppelin/tajo/TesterTajoInterpreter.java
@@ -0,0 +1,36 @@
+/**
+ * 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.tajo;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Properties;
+
+public class TesterTajoInterpreter extends TajoInterpreter {
+
+  public TesterTajoInterpreter(Properties property) {
+    super(property);
+  }
+
+  @Override
+  public Connection getJdbcConnection()
+    throws SQLException {
+    return new TesterConnection();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/3a4ab1ad/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
index f5c816f..580860a 100644
--- 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
+++ 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
@@ -387,7 +387,8 @@ public class ZeppelinConfiguration extends XMLConfiguration 
{
         + "org.apache.zeppelin.markdown.Markdown,"
         + "org.apache.zeppelin.angular.AngularInterpreter,"
         + "org.apache.zeppelin.shell.ShellInterpreter,"
-        + "org.apache.zeppelin.hive.HiveInterpreter"),
+        + "org.apache.zeppelin.hive.HiveInterpreter,"
+        + "org.apache.zeppelin.tajo.TajoInterpreter"),
         ZEPPELIN_INTERPRETER_DIR("zeppelin.interpreter.dir", "interpreter"),
         ZEPPELIN_ENCODING("zeppelin.encoding", "UTF-8"),
         ZEPPELIN_NOTEBOOK_DIR("zeppelin.notebook.dir", "notebook"),

Reply via email to