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: [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]