[53/57] [abbrv] hive git commit: HIVE-14929: Adding JDBC test for query cancellation scenario (Deepak Jaiswal via Jason Dere)
HIVE-14929: Adding JDBC test for query cancellation scenario (Deepak Jaiswal via Jason Dere) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0995719d Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0995719d Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0995719d Branch: refs/heads/hive-14535 Commit: 0995719d06e7fedb75e53c5db9f195767c259ec9 Parents: 527f21b Author: Jason Dere Authored: Thu Oct 13 14:23:08 2016 -0700 Committer: Jason Dere Committed: Thu Oct 13 14:23:08 2016 -0700 -- .../org/apache/hive/jdbc/TestJdbcDriver2.java | 97 1 file changed, 97 insertions(+) -- http://git-wip-us.apache.org/repos/asf/hive/blob/0995719d/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java -- diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java index 689eab3..b7362fb 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java @@ -2249,6 +2249,47 @@ public class TestJdbcDriver2 { } /** + * Tests for query cancellation + */ + + @Test + public void testCancelQueryNotRun() throws Exception { +try (final Statement stmt = con.createStatement()){ + System.out.println("Cancel the Statement without running query ..."); + stmt.cancel(); + System.out.println("Executing query: "); + stmt.executeQuery(" show databases"); +} + } + + @Test + public void testCancelQueryFinished() throws Exception { +try (final Statement stmt = con.createStatement()){ + System.out.println("Executing query: "); + stmt.executeQuery(" show databases"); + System.out.println("Cancel the Statement after running query ..."); + stmt.cancel(); +} + } + + @Test + public void testCancelQueryErrored() throws Exception { +final Statement stmt = con.createStatement(); +try { + System.out.println("Executing query: "); + stmt.executeQuery("list dbs"); + fail("Expecting SQLException"); +} catch (SQLException e) { + // No-op +} + +// Cancel the query +System.out.println("Cancel the Statement ..."); +stmt.cancel(); +stmt.close(); + } + + /** * Test the cancellation of a query that is running. * We spawn 2 threads - one running the query and * the other attempting to cancel. @@ -2303,6 +2344,62 @@ public class TestJdbcDriver2 { } @Test + public void testQueryCancelTwice() throws Exception { +String udfName = SleepMsUDF.class.getName(); +Statement stmt1 = con.createStatement(); +stmt1.execute("create temporary function sleepMsUDF as '" + udfName + "'"); +stmt1.close(); +final Statement stmt = con.createStatement(); +// Thread executing the query +Thread tExecute = new Thread(new Runnable() { + @Override + public void run() { +try { + System.out.println("Executing query: "); + // The test table has 500 rows, so total query time should be ~ 500*500ms + stmt.executeQuery("select sleepMsUDF(t1.under_col, 1) as u0, t1.under_col as u1, " + + "t2.under_col as u2 from " + tableName + " t1 join " + tableName + + " t2 on t1.under_col = t2.under_col"); + fail("Expecting SQLException"); +} catch (SQLException e) { + // This thread should throw an exception + assertNotNull(e); + System.out.println(e.toString()); +} + } +}); +// Thread cancelling the query +Thread tCancel = new Thread(new Runnable() { + @Override + public void run() { +// 1st Cancel +try { + // Sleep for 100ms + Thread.sleep(100); + System.out.println("Cancelling query: "); + stmt.cancel(); +} catch (Exception e) { + // No-op +} +// 2nd cancel +try { + // Sleep for 5ms and cancel again + Thread.sleep(5); + System.out.println("Cancelling query again: "); + stmt.cancel(); +} catch (Exception e) { + // No-op +} + } +}); +tExecute.start(); +tCancel.start(); +tExecute.join(); +tCancel.join(); +stmt.close(); + } + + @Test public void testQueryTimeout() throws Exception { String udfName = SleepMsUDF.class.getName(); Statement stmt1 = con.createStatement();
hive git commit: HIVE-14929: Adding JDBC test for query cancellation scenario (Deepak Jaiswal via Jason Dere)
Repository: hive Updated Branches: refs/heads/master 527f21b17 -> 0995719d0 HIVE-14929: Adding JDBC test for query cancellation scenario (Deepak Jaiswal via Jason Dere) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0995719d Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0995719d Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0995719d Branch: refs/heads/master Commit: 0995719d06e7fedb75e53c5db9f195767c259ec9 Parents: 527f21b Author: Jason Dere Authored: Thu Oct 13 14:23:08 2016 -0700 Committer: Jason Dere Committed: Thu Oct 13 14:23:08 2016 -0700 -- .../org/apache/hive/jdbc/TestJdbcDriver2.java | 97 1 file changed, 97 insertions(+) -- http://git-wip-us.apache.org/repos/asf/hive/blob/0995719d/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java -- diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java index 689eab3..b7362fb 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java @@ -2249,6 +2249,47 @@ public class TestJdbcDriver2 { } /** + * Tests for query cancellation + */ + + @Test + public void testCancelQueryNotRun() throws Exception { +try (final Statement stmt = con.createStatement()){ + System.out.println("Cancel the Statement without running query ..."); + stmt.cancel(); + System.out.println("Executing query: "); + stmt.executeQuery(" show databases"); +} + } + + @Test + public void testCancelQueryFinished() throws Exception { +try (final Statement stmt = con.createStatement()){ + System.out.println("Executing query: "); + stmt.executeQuery(" show databases"); + System.out.println("Cancel the Statement after running query ..."); + stmt.cancel(); +} + } + + @Test + public void testCancelQueryErrored() throws Exception { +final Statement stmt = con.createStatement(); +try { + System.out.println("Executing query: "); + stmt.executeQuery("list dbs"); + fail("Expecting SQLException"); +} catch (SQLException e) { + // No-op +} + +// Cancel the query +System.out.println("Cancel the Statement ..."); +stmt.cancel(); +stmt.close(); + } + + /** * Test the cancellation of a query that is running. * We spawn 2 threads - one running the query and * the other attempting to cancel. @@ -2303,6 +2344,62 @@ public class TestJdbcDriver2 { } @Test + public void testQueryCancelTwice() throws Exception { +String udfName = SleepMsUDF.class.getName(); +Statement stmt1 = con.createStatement(); +stmt1.execute("create temporary function sleepMsUDF as '" + udfName + "'"); +stmt1.close(); +final Statement stmt = con.createStatement(); +// Thread executing the query +Thread tExecute = new Thread(new Runnable() { + @Override + public void run() { +try { + System.out.println("Executing query: "); + // The test table has 500 rows, so total query time should be ~ 500*500ms + stmt.executeQuery("select sleepMsUDF(t1.under_col, 1) as u0, t1.under_col as u1, " + + "t2.under_col as u2 from " + tableName + " t1 join " + tableName + + " t2 on t1.under_col = t2.under_col"); + fail("Expecting SQLException"); +} catch (SQLException e) { + // This thread should throw an exception + assertNotNull(e); + System.out.println(e.toString()); +} + } +}); +// Thread cancelling the query +Thread tCancel = new Thread(new Runnable() { + @Override + public void run() { +// 1st Cancel +try { + // Sleep for 100ms + Thread.sleep(100); + System.out.println("Cancelling query: "); + stmt.cancel(); +} catch (Exception e) { + // No-op +} +// 2nd cancel +try { + // Sleep for 5ms and cancel again + Thread.sleep(5); + System.out.println("Cancelling query again: "); + stmt.cancel(); +} catch (Exception e) { + // No-op +} + } +}); +tExecute.start(); +tCancel.start(); +tExecute.join(); +tCancel.join(); +stmt.close(); + } + + @Test public void testQueryTimeout() throws Exception { String udfName = SleepMsUDF.class.getName(); Statement stmt1 = con.createStatement();