diff --git itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java index 418f71eb87cdd519677b2f5a59c67099f704ec80..08f44d6d2149d3146dd46a5e99621c3261588799 100644 --- itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java +++ itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java @@ -23,7 +23,7 @@ import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hive.service.cli.OperationHandle; import org.apache.hive.service.cli.SessionHandle; -import org.apache.hive.service.cli.operation.SQLOperationDisplay; +import org.apache.hive.service.cli.operation.OperationDisplay; import org.apache.hive.service.rpc.thrift.TProtocolVersion; import org.apache.hive.service.server.HiveServer2; import org.apache.hive.tmpl.QueryProfileTmpl; @@ -59,40 +59,76 @@ public void setup() { @Test public void testQueryDisplay() throws Exception { HiveSession session = sessionManager.createSession( - new SessionHandle(TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8), - TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8, - "testuser", "", "", new HashMap(), false, ""); - + new SessionHandle(TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8), + TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8, + "testuser", "", "", new HashMap(), false, ""); SessionState.start(conf); OperationHandle opHandle1 = session.executeStatement("show databases", null); SessionState.start(conf); OperationHandle opHandle2 = session.executeStatement("show tables", null); - - List liveSqlOperations, historicSqlOperations; - liveSqlOperations = sessionManager.getOperationManager().getLiveSqlOperations(); - historicSqlOperations = sessionManager.getOperationManager().getHistoricalSQLOperations(); + List liveSqlOperations, historicSqlOperations; + liveSqlOperations = sessionManager.getOperationManager().getLiveOperationDisplays(); + historicSqlOperations = sessionManager.getOperationManager().getHistoricalOperationDisplays(); Assert.assertEquals(liveSqlOperations.size(), 2); Assert.assertEquals(historicSqlOperations.size(), 0); verifyDDL(liveSqlOperations.get(0), "show databases", opHandle1.getHandleIdentifier().toString(), false); verifyDDL(liveSqlOperations.get(1),"show tables", opHandle2.getHandleIdentifier().toString(), false); session.closeOperation(opHandle1); - liveSqlOperations = sessionManager.getOperationManager().getLiveSqlOperations(); - historicSqlOperations = sessionManager.getOperationManager().getHistoricalSQLOperations(); + liveSqlOperations = sessionManager.getOperationManager().getLiveOperationDisplays(); + historicSqlOperations = sessionManager.getOperationManager().getHistoricalOperationDisplays(); Assert.assertEquals(liveSqlOperations.size(), 1); Assert.assertEquals(historicSqlOperations.size(), 1); verifyDDL(historicSqlOperations.get(0),"show databases", opHandle1.getHandleIdentifier().toString(), true); verifyDDL(liveSqlOperations.get(0),"show tables", opHandle2.getHandleIdentifier().toString(), false); session.closeOperation(opHandle2); - liveSqlOperations = sessionManager.getOperationManager().getLiveSqlOperations(); - historicSqlOperations = sessionManager.getOperationManager().getHistoricalSQLOperations(); + liveSqlOperations = sessionManager.getOperationManager().getLiveOperationDisplays(); + historicSqlOperations = sessionManager.getOperationManager().getHistoricalOperationDisplays(); Assert.assertEquals(liveSqlOperations.size(), 0); Assert.assertEquals(historicSqlOperations.size(), 2); verifyDDL(historicSqlOperations.get(0),"show databases", opHandle1.getHandleIdentifier().toString(), true); verifyDDL(historicSqlOperations.get(1),"show tables", opHandle2.getHandleIdentifier().toString(), true); + SessionState.start(conf); + OperationHandle opHandle3 = session.executeStatement("set hive.server2.enable.doAs=false", null); + SessionState.start(conf); + OperationHandle opHandle4 = session.getTables(null, "testdatabase", "testtable", null); + SessionState.start(conf); + OperationHandle opHandle5 = session.getSchemas(null, "testdatabase"); + SessionState.start(conf); + OperationHandle opHandle6 = session.getColumns(null, "testdatabase", "testtable", null); + SessionState.start(conf); + OperationHandle opHandle7 = session.getFunctions(null, "testdatabase", "testfunction"); + SessionState.start(conf); + OperationHandle opHandle8 = session.getTableTypes(); + SessionState.start(conf); + OperationHandle opHandle9 = session.getTypeInfo(); + session.closeOperation(opHandle3); + session.closeOperation(opHandle4); + session.closeOperation(opHandle5); + session.closeOperation(opHandle6); + session.closeOperation(opHandle7); + session.closeOperation(opHandle8); + session.closeOperation(opHandle9); + historicSqlOperations = sessionManager.getOperationManager().getHistoricalOperationDisplays(); + + verifyDDL(historicSqlOperations.get(2),"set hive.server2.enable.doAs=false", + opHandle3.getHandleIdentifier().toString(), true, false); + verifyDDL(historicSqlOperations.get(3),"GetTables cat=null sch=testdatabase tab=testtable", + opHandle4.getHandleIdentifier().toString(), true, false); + verifyDDL(historicSqlOperations.get(4),"GetSchemas cat=null sch=testdatabase", + opHandle5.getHandleIdentifier().toString(), true, false); + verifyDDL(historicSqlOperations.get(5),"GetColumns cat=null sch=testdatabase tab=testtable col=null", + opHandle6.getHandleIdentifier().toString(), true, false); + verifyDDL(historicSqlOperations.get(6),"GetFunctions cat=null sch=testdatabase fun=testfunction", + opHandle7.getHandleIdentifier().toString(), true, false); + verifyDDL(historicSqlOperations.get(7),"GetTableTypes", + opHandle8.getHandleIdentifier().toString(), true, false); + verifyDDL(historicSqlOperations.get(8),"GetTypeInfo", + opHandle9.getHandleIdentifier().toString(), true, false); + session.close(); } @@ -102,9 +138,12 @@ public void testQueryDisplay() throws Exception { @Test public void testWebUI() throws Exception { HiveSession session = sessionManager.createSession( - new SessionHandle(TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8), - TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8, - "testuser", "", "", new HashMap(), false, ""); + new SessionHandle(TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8), + TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8, + "testuser", "", "", new HashMap(), false, ""); + session.setSessionManager(sessionManager); + session.setOperationManager(sessionManager.getOperationManager()); + session.open(new HashMap()); SessionState.start(conf); OperationHandle opHandle1 = session.executeStatement("show databases", null); @@ -123,10 +162,15 @@ public void testWebUI() throws Exception { session.close(); } - private void verifyDDL(SQLOperationDisplay display, String stmt, String handle, boolean finished) { + private void verifyDDL(OperationDisplay display, String stmt, String handle, + boolean finished) { + verifyDDL(display, stmt, handle, finished, true); + } + + private void verifyDDL(OperationDisplay display, String stmt, String handle, + boolean finished, boolean includesExec) { Assert.assertEquals(display.getUserName(), "testuser"); - Assert.assertEquals(display.getExecutionEngine(), "mr"); Assert.assertEquals(display.getOperationId(), handle); Assert.assertTrue(display.getBeginTime() > 0 && display.getBeginTime() <= System.currentTimeMillis()); @@ -143,6 +187,13 @@ private void verifyDDL(SQLOperationDisplay display, String stmt, String handle, Assert.assertNotNull(qDisplay1.getExplainPlan()); Assert.assertNull(qDisplay1.getErrorMessage()); + if (!includesExec) { + Assert.assertEquals(display.getExecutionEngine(), "N/A"); + return; + } else { + Assert.assertEquals(display.getExecutionEngine(), "mr"); + } + Assert.assertTrue(qDisplay1.getHmsTimings(QueryDisplay.Phase.COMPILATION).size() > 0); Assert.assertTrue(qDisplay1.getHmsTimings(QueryDisplay.Phase.EXECUTION).size() > 0); @@ -168,7 +219,7 @@ private void verifyDDL(SQLOperationDisplay display, String stmt, String handle, */ private void verifyDDLHtml(String stmt, String opHandle) throws Exception { StringWriter sw = new StringWriter(); - SQLOperationDisplay sod = sessionManager.getOperationManager().getSQLOperationDisplay( + OperationDisplay sod = sessionManager.getOperationManager().getOperationDisplay( opHandle); new QueryProfileTmpl().render(sw, sod); String html = sw.toString(); @@ -176,5 +227,4 @@ private void verifyDDLHtml(String stmt, String opHandle) throws Exception { Assert.assertTrue(html.contains(stmt)); Assert.assertTrue(html.contains("testuser")); } - } diff --git ql/src/java/org/apache/hadoop/hive/ql/QueryDisplay.java ql/src/java/org/apache/hadoop/hive/ql/QueryDisplay.java index d582bc063fc150002a01d63451ae6632fca29ac1..a5b89e4aac3ec5a310b070e4ab4140e17fa03636 100644 --- ql/src/java/org/apache/hadoop/hive/ql/QueryDisplay.java +++ ql/src/java/org/apache/hadoop/hive/ql/QueryDisplay.java @@ -48,6 +48,12 @@ private final LinkedHashMap tasks = new LinkedHashMap(); + public QueryDisplay() {} + + public QueryDisplay(String queryStr) { + this.queryStr = queryStr; + } + public synchronized void updateTaskStatus(Task tTask) { if (!tasks.containsKey(tTask.getId())) { tasks.put(tTask.getId(), new TaskDisplay(tTask)); diff --git service/src/jamon/org/apache/hive/tmpl/QueryProfileTmpl.jamon service/src/jamon/org/apache/hive/tmpl/QueryProfileTmpl.jamon index 8d51a73f7ac6c5eb5fe44c5525ed840b641c5c6b..0d62dbaac8e2902bbc4a545bf95c57133ffb32ab 100644 --- service/src/jamon/org/apache/hive/tmpl/QueryProfileTmpl.jamon +++ service/src/jamon/org/apache/hive/tmpl/QueryProfileTmpl.jamon @@ -17,12 +17,12 @@ See the License for the specific language governing permissions and limitations under the License. <%args> -SQLOperationDisplay sod; +OperationDisplay sod; <%import> java.util.*; org.apache.hadoop.hive.ql.QueryDisplay; -org.apache.hive.service.cli.operation.SQLOperationDisplay; +org.apache.hive.service.cli.operation.OperationDisplay;