You are viewing a plain text version of this content. The canonical link for it is here.
Posted to gitbox@hive.apache.org by GitBox <gi...@apache.org> on 2022/04/01 05:13:27 UTC

[GitHub] [hive] kasakrisz commented on a change in pull request #3156: HIVE-26095: Add queryid in QueryLifeTimeHookContext

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:
       IUUC  `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: gitbox-unsubscribe@hive.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org