kasakrisz commented on a change in pull request #3156:
URL: https://github.com/apache/hive/pull/3156#discussion_r840236630



##########
File path: 
service/src/test/org/apache/hive/service/cli/operation/TestQueryLifeTimeHooksWithSQLOperation.java
##########
@@ -110,6 +118,45 @@ public void afterExecution(QueryLifeTimeHookContext ctx, 
boolean hasError) {
       assertNull(ctx.getHookContext().getException());
       assertNotNull(ctx.getHookContext().getQueryInfo());
       assertNotNull(ctx.getHookContext().getQueryInfo().getQueryDisplay());
+      assertQueryId(ctx.getQueryId());
     }
   }
+
+  /**
+   * Asserts that the specified query id exists and has the expected prefix 
and size.
+   *
+   * <p>
+   * A query id looks like below:
+   * <pre>
+   *   username_20220330093338_dab90f30-5e79-463d-8359-0d2fff57effa
+   * </pre>
+   * and we can accurately predict how the prefix should look like. T
+   * </p>
+   *
+   * @param actualQueryId the query id to verify
+   */
+  private static void assertQueryId(String actualQueryId) {
+    assertNotNull(actualQueryId);
+    String expectedIdPrefix = makeQueryIdStablePrefix();
+    String actualIdPrefix = actualQueryId.substring(0, 
expectedIdPrefix.length());
+    assertEquals(expectedIdPrefix, actualIdPrefix);
+    assertEquals(expectedIdPrefix.length() + 41, actualQueryId.length());
+  }
+
+  /**
+   * Makes a query id prefix that is stable for an hour. The prefix changes 
every hour but this is enough to guarantee

Review comment:
       IIUC  `TestQueryLifeTimeHooksWithSQLOperation` tests whether data is 
passed to  `QueryLifeTimeHookWithParseHooks`. I think the test is more isolated 
and focus only to the data broadcasting functionality if the data is generated 
by the test. It can be achieved by setting the queryId explicitly in the 
beginning of the test to some constant and check it in the assertion part the 
exact same constant. I believe it can be set by `hive.query.id` config setting.
   
   Or you can also ask the actual queryId via the `hive.query.id` config 
setting somewhere in the beginning of the test and use that value in the assert 
part instead of generating a new one.
   
   Or as a last option if none of above works a regex can be used to check the 
format.
   
   If you also want to test the queryId format is correct an UT for 
`QueryPlan.makeQueryId` would do that but I think a regex is still needed for 
that or at least for checking the date time part.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to