You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by vg...@apache.org on 2016/10/12 17:10:52 UTC
hive git commit: HIVE-14761: Remove TestJdbcWithMiniMr after merging
tests with TestJdbcWithMiniHS2 (Vaibhav Gumashta reviewed by Siddharth Seth)
Repository: hive
Updated Branches:
refs/heads/master 04b303b69 -> 9f7fd6a43
HIVE-14761: Remove TestJdbcWithMiniMr after merging tests with TestJdbcWithMiniHS2 (Vaibhav Gumashta reviewed by Siddharth Seth)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/9f7fd6a4
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/9f7fd6a4
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/9f7fd6a4
Branch: refs/heads/master
Commit: 9f7fd6a432e230417cc7531e0152ef62b024885d
Parents: 04b303b
Author: Vaibhav Gumashta <vg...@hortonworks.com>
Authored: Wed Oct 12 10:10:28 2016 -0700
Committer: Vaibhav Gumashta <vg...@hortonworks.com>
Committed: Wed Oct 12 10:10:28 2016 -0700
----------------------------------------------------------------------
.../apache/hive/jdbc/TestJdbcWithMiniMr.java | 344 -------------------
1 file changed, 344 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/9f7fd6a4/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcWithMiniMr.java
----------------------------------------------------------------------
diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcWithMiniMr.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcWithMiniMr.java
deleted file mode 100644
index 637e51a..0000000
--- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcWithMiniMr.java
+++ /dev/null
@@ -1,344 +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.hive.jdbc;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.Types;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
-import org.apache.hive.jdbc.miniHS2.MiniHS2;
-import org.apache.hive.jdbc.miniHS2.MiniHS2.MiniClusterType;
-import org.apache.hive.service.cli.HiveSQLException;
-import org.apache.hive.service.cli.session.HiveSessionHook;
-import org.apache.hive.service.cli.session.HiveSessionHookContext;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-public class TestJdbcWithMiniMr {
- public static final String TEST_TAG = "miniHS2.miniMr.tag";
- public static final String TEST_TAG_VALUE = "miniHS2.miniMr.value";
- public static class MiniMrTestSessionHook implements HiveSessionHook {
- @Override
- public void run(HiveSessionHookContext sessionHookContext) throws HiveSQLException {
- sessionHookContext.getSessionConf().set(TEST_TAG, TEST_TAG_VALUE);
- }
- }
-
- private static MiniHS2 miniHS2 = null;
- private static HiveConf conf;
- private static Path dataFilePath;
- private static String dbName = "mrTestDb";
- private Connection hs2Conn = null;
- private Statement stmt;
-
- @BeforeClass
- public static void beforeTest() throws Exception {
- Class.forName(MiniHS2.getJdbcDriverName());
- conf = new HiveConf();
- conf.setBoolVar(ConfVars.HIVE_SUPPORT_CONCURRENCY, false);
- String dataFileDir = conf.get("test.data.files").replace('\\', '/')
- .replace("c:", "");
- dataFilePath = new Path(dataFileDir, "kv1.txt");
- DriverManager.setLoginTimeout(0);
- conf.setBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY, false);
- miniHS2 = new MiniHS2(conf, MiniClusterType.MR);
- Map<String, String> overlayProps = new HashMap<String, String>();
- overlayProps.put(ConfVars.HIVE_SERVER2_SESSION_HOOK.varname,
- MiniMrTestSessionHook.class.getName());
- miniHS2.start(overlayProps);
- createDb();
- }
-
- // setup DB
- private static void createDb() throws Exception {
- Connection conn = DriverManager.
- getConnection(miniHS2.getJdbcURL(), System.getProperty("user.name"), "bar");
- Statement stmt2 = conn.createStatement();
- stmt2.execute("DROP DATABASE IF EXISTS " + dbName + " CASCADE");
- stmt2.execute("CREATE DATABASE " + dbName);
- stmt2.close();
- conn.close();
- }
-
- @Before
- public void setUp() throws Exception {
- hs2Conn = DriverManager.getConnection(miniHS2.getJdbcURL(dbName),
- System.getProperty("user.name"), "bar");
- stmt = hs2Conn.createStatement();
- stmt.execute("USE " + dbName);
- }
-
- @After
- public void tearDown() throws Exception {
- if (hs2Conn != null) {
- hs2Conn.close();
- }
- }
-
- @AfterClass
- public static void afterTest() throws Exception {
- if (miniHS2 != null && miniHS2.isStarted()) {
- miniHS2.stop();
- }
- }
-
- /**
- * Verify that the connection to HS2 with MiniMr is successful
- * @throws Exception
- */
- @Test
- public void testConnection() throws Exception {
- // the session hook should set the property
- verifyProperty(TEST_TAG, TEST_TAG_VALUE);
- }
-
- /**
- * Run nonMr query
- * @throws Exception
- */
- @Test
- public void testNonMrQuery() throws Exception {
- String tableName = "testTab1";
- String resultVal = "val_238";
- String queryStr = "SELECT * FROM " + tableName;
-
- testKvQuery(tableName, queryStr, resultVal);
- }
-
- /**
- * Run nonMr query
- * @throws Exception
- */
- @Test
- public void testMrQuery() throws Exception {
- String tableName = "testTab2";
- String resultVal = "val_238";
- String queryStr = "SELECT * FROM " + tableName +
- " where value = '" + resultVal + "'";
-
- testKvQuery(tableName, queryStr, resultVal);
- }
-
- @Test
- public void testPermFunc() throws Exception {
-
- // This test assumes the hive-contrib JAR has been built as part of the Hive build.
- // Also dependent on the UDFExampleAdd class within that JAR.
- String udfClassName = "org.apache.hadoop.hive.contrib.udf.example.UDFExampleAdd";
- String mvnRepo = System.getProperty("maven.local.repository");
- String hiveVersion = System.getProperty("hive.version");
- String jarFileName = "hive-contrib-" + hiveVersion + ".jar";
- String[] pathParts = {
- "org", "apache", "hive",
- "hive-contrib", hiveVersion, jarFileName
- };
-
- // Create path to hive-contrib JAR on local filesystem
- Path contribJarPath = new Path(mvnRepo);
- for (String pathPart : pathParts) {
- contribJarPath = new Path(contribJarPath, pathPart);
- }
- FileSystem localFs = FileSystem.getLocal(conf);
- assertTrue("Hive contrib JAR exists at " + contribJarPath, localFs.exists(contribJarPath));
-
- String hdfsJarPathStr = "hdfs:///" + jarFileName;
- Path hdfsJarPath = new Path(hdfsJarPathStr);
-
- // Copy JAR to DFS
- FileSystem dfs = miniHS2.getDFS().getFileSystem();
- dfs.copyFromLocalFile(contribJarPath, hdfsJarPath);
- assertTrue("Verify contrib JAR copied to HDFS at " + hdfsJarPath, dfs.exists(hdfsJarPath));
-
- // Register function
- String queryStr = "CREATE FUNCTION example_add AS '" + udfClassName + "'"
- + " USING JAR '" + hdfsJarPathStr + "'";
- stmt.execute(queryStr);
-
- // Call describe
- ResultSet res;
- res = stmt.executeQuery("DESCRIBE FUNCTION " + dbName + ".example_add");
- checkForNotExist(res);
-
- // Use UDF in query
- String tableName = "testTab3";
- setupKv1Tabs(tableName);
- res = stmt.executeQuery("SELECT EXAMPLE_ADD(1, 2) FROM " + tableName + " LIMIT 1");
- assertTrue("query has results", res.next());
- assertEquals(3, res.getInt(1));
- assertFalse("no more results", res.next());
-
- // A new connection should be able to call describe/use function without issue
- Connection conn2 = DriverManager.getConnection(miniHS2.getJdbcURL(dbName),
- System.getProperty("user.name"), "bar");
- Statement stmt2 = conn2.createStatement();
- stmt2.execute("USE " + dbName);
- res = stmt2.executeQuery("DESCRIBE FUNCTION " + dbName + ".example_add");
- checkForNotExist(res);
-
- res = stmt2.executeQuery("SELECT " + dbName + ".example_add(1, 1) FROM " + tableName + " LIMIT 1");
- assertTrue("query has results", res.next());
- assertEquals(2, res.getInt(1));
- assertFalse("no more results", res.next());
-
- stmt.execute("DROP TABLE " + tableName);
- }
-
- @Test
- public void testTempTable() throws Exception {
- // Create temp table with current connection
- String tempTableName = "tmp1";
- stmt.execute("CREATE TEMPORARY TABLE " + tempTableName + " (key string, value string)");
- stmt.execute("load data local inpath '"
- + dataFilePath.toString() + "' into table " + tempTableName);
-
- String resultVal = "val_238";
- String queryStr = "SELECT * FROM " + tempTableName +
- " where value = '" + resultVal + "'";
- verifyResult(queryStr, resultVal, 2);
-
-
- // Test getTables()
- DatabaseMetaData md = hs2Conn.getMetaData();
- assertTrue(md.getConnection() == hs2Conn);
-
- ResultSet rs = md.getTables(null, null, tempTableName, null);
- boolean foundTable = false;
- while (rs.next()) {
- String tableName = rs.getString(3);
- if (tableName.equalsIgnoreCase(tempTableName)) {
- assertFalse("Table not found yet", foundTable);
- foundTable = true;
- }
- }
- assertTrue("Found temp table", foundTable);
-
- // Test getTables() with no table name pattern
- rs = md.getTables(null, null, null, null);
- foundTable = false;
- while (rs.next()) {
- String tableName = rs.getString(3);
- if (tableName.equalsIgnoreCase(tempTableName)) {
- assertFalse("Table not found yet", foundTable);
- foundTable = true;
- }
- }
- assertTrue("Found temp table", foundTable);
-
- // Test getColumns()
- rs = md.getColumns(null, null, tempTableName, null);
- assertTrue("First row", rs.next());
- assertTrue(rs.getString(3).equalsIgnoreCase(tempTableName));
- assertTrue(rs.getString(4).equalsIgnoreCase("key"));
- assertEquals(Types.VARCHAR, rs.getInt(5));
-
- assertTrue("Second row", rs.next());
- assertTrue(rs.getString(3).equalsIgnoreCase(tempTableName));
- assertTrue(rs.getString(4).equalsIgnoreCase("value"));
- assertEquals(Types.VARCHAR, rs.getInt(5));
-
- // A second connection should not be able to see the table
- Connection conn2 = DriverManager.getConnection(miniHS2.getJdbcURL(dbName),
- System.getProperty("user.name"), "bar");
- Statement stmt2 = conn2.createStatement();
- stmt2.execute("USE " + dbName);
- boolean gotException = false;
- try {
- ResultSet res;
- res = stmt2.executeQuery(queryStr);
- } catch (SQLException err) {
- // This is expected to fail.
- assertTrue("Expecting table not found error, instead got: " + err,
- err.getMessage().contains("Table not found"));
- gotException = true;
- }
- assertTrue("Exception while querying non-existing temp table", gotException);
- }
-
- private void checkForNotExist(ResultSet res) throws Exception {
- int numRows = 0;
- while (res.next()) {
- numRows++;
- String strVal = res.getString(1);
- assertEquals("Should not find 'not exist'", -1, strVal.toLowerCase().indexOf("not exist"));
- }
- assertTrue("Rows returned from describe function", numRows > 0);
- }
-
- /**
- * Verify if the given property contains the expected value
- * @param propertyName
- * @param expectedValue
- * @throws Exception
- */
- private void verifyProperty(String propertyName, String expectedValue) throws Exception {
- Statement stmt = hs2Conn .createStatement();
- ResultSet res = stmt.executeQuery("set " + propertyName);
- assertTrue(res.next());
- String results[] = res.getString(1).split("=");
- assertEquals("Property should be set", results.length, 2);
- assertEquals("Property should be set", expectedValue, results[1]);
- }
-
- // create tables, verify query
- private void testKvQuery(String tableName, String queryStr, String resultVal)
- throws SQLException {
- setupKv1Tabs(tableName);
- verifyResult(queryStr, resultVal, 2);
- stmt.execute("DROP TABLE " + tableName);
- }
-
- // create table and pupulate with kv1.txt
- private void setupKv1Tabs(String tableName) throws SQLException {
- Statement stmt = hs2Conn.createStatement();
- // create table
- stmt.execute("CREATE TABLE " + tableName
- + " (under_col INT COMMENT 'the under column', value STRING)"
- + " COMMENT ' test table'");
-
- // load data
- stmt.execute("load data local inpath '"
- + dataFilePath.toString() + "' into table " + tableName);
- }
-
- // run given query and validate expecated result
- private void verifyResult(String queryStr, String expString, int colPos)
- throws SQLException {
- ResultSet res = stmt.executeQuery(queryStr);
- assertTrue(res.next());
- assertEquals(expString, res.getString(colPos));
- res.close();
- }
-}