[
https://issues.apache.org/jira/browse/DRILL-8225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17538562#comment-17538562
]
ASF GitHub Bot commented on DRILL-8225:
---------------------------------------
cgivre commented on code in PR #2549:
URL: https://github.com/apache/drill/pull/2549#discussion_r875447108
##########
contrib/udfs/src/test/java/org/apache/drill/exec/udfs/TestUserAgentFunctions.java:
##########
@@ -168,4 +241,185 @@ public void testEmptyUAString() throws Exception {
.baselineValues("Hacker")
.go();
}
+
+ @Test
+ public void testClientHints() throws Exception {
+ String query =
+ "SELECT " +
+ " t1.ua.DeviceClass AS DeviceClass,\n" +
+ " t1.ua.DeviceName AS DeviceName,\n" +
+ " t1.ua.DeviceBrand AS DeviceBrand,\n" +
+ " t1.ua.DeviceCpu AS DeviceCpu,\n" +
+ " t1.ua.DeviceCpuBits AS DeviceCpuBits,\n"
+
+ " t1.ua.OperatingSystemClass AS
OperatingSystemClass,\n" +
+ " t1.ua.OperatingSystemName AS
OperatingSystemName,\n" +
+ " t1.ua.OperatingSystemVersion AS
OperatingSystemVersion,\n" +
+ " t1.ua.OperatingSystemVersionMajor AS
OperatingSystemVersionMajor,\n" +
+ " t1.ua.OperatingSystemNameVersion AS
OperatingSystemNameVersion,\n" +
+ " t1.ua.OperatingSystemNameVersionMajor AS
OperatingSystemNameVersionMajor,\n" +
+ " t1.ua.LayoutEngineClass AS
LayoutEngineClass,\n" +
+ " t1.ua.LayoutEngineName AS
LayoutEngineName,\n" +
+ " t1.ua.LayoutEngineVersion AS
LayoutEngineVersion,\n" +
+ " t1.ua.LayoutEngineVersionMajor AS
LayoutEngineVersionMajor,\n" +
+ " t1.ua.LayoutEngineNameVersion AS
LayoutEngineNameVersion,\n" +
+ " t1.ua.LayoutEngineNameVersionMajor AS
LayoutEngineNameVersionMajor,\n" +
+ " t1.ua.AgentClass AS AgentClass,\n" +
+ " t1.ua.AgentName AS AgentName,\n" +
+ " t1.ua.AgentVersion AS AgentVersion,\n" +
+ " t1.ua.AgentVersionMajor AS
AgentVersionMajor,\n" +
+ " t1.ua.AgentNameVersion AS
AgentNameVersion,\n" +
+ " t1.ua.AgentNameVersionMajor AS
AgentNameVersionMajor\n" +
+ "FROM (" +
+ " SELECT" +
+ " parse_user_agent(" +
+ " 'User-Agent', 'Mozilla/5.0 (X11; Linux
x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127
Safari/537.36'," +
+ " 'Sec-Ch-Ua', '\" Not A;Brand\";v=\"99\",
\"Chromium\";v=\"100\", \"Google Chrome\";v=\"100\"'," +
+ " 'Sec-Ch-Ua-Arch', '\"x86\"'," +
+ " 'Sec-Ch-Ua-Bitness', '\"64\"'," +
+ " 'Sec-Ch-Ua-Full-Version', '\"100.0.4896.127\"'," +
+ " 'Sec-Ch-Ua-Full-Version-List', '\" Not
A;Brand\";v=\"99.0.0.0\", \"Chromium\";v=\"100.0.4896.127\", \"Google
Chrome\";v=\"100.0.4896.127\"'," +
+ " 'Sec-Ch-Ua-Mobile', '?0'," +
+ " 'Sec-Ch-Ua-Model', '\"\"'," +
+ " 'Sec-Ch-Ua-Platform', '\"Linux\"'," +
+ " 'Sec-Ch-Ua-Platform-Version', '\"5.13.0\"'," +
+ " 'Sec-Ch-Ua-Wow64', '?0'" +
+ " ) AS ua " +
+ " FROM (values(1))" +
+ ") AS t1";
+
+ testBuilder()
+ .sqlQuery(query)
+ .unOrdered()
+ .baselineRecords(
+ Collections.singletonList(// Singleton list because we expect 1 record
+ expectations(
+ "DeviceClass", "Desktop",
+ "DeviceName", "Linux Desktop",
+ "DeviceBrand", "Unknown",
+ "DeviceCpu", "Intel x86_64",
+ "DeviceCpuBits", "64",
+ "OperatingSystemClass", "Desktop",
+ "OperatingSystemName", "Linux",
+ "OperatingSystemVersion", "5.13.0",
+ "OperatingSystemVersionMajor", "5",
+ "OperatingSystemNameVersion", "Linux 5.13.0",
+ "OperatingSystemNameVersionMajor", "Linux 5",
+ "LayoutEngineClass", "Browser",
+ "LayoutEngineName", "Blink",
+ "LayoutEngineVersion", "100.0",
+ "LayoutEngineVersionMajor", "100",
+ "LayoutEngineNameVersion", "Blink 100.0",
+ "LayoutEngineNameVersionMajor", "Blink 100",
+ "AgentClass", "Browser",
+ "AgentName", "Chrome",
+ "AgentVersion", "100.0.4896.127",
+ "AgentVersionMajor", "100",
+ "AgentNameVersion", "Chrome 100.0.4896.127",
+ "AgentNameVersionMajor", "Chrome 100"
+ )
+ )
+ )
+ .go();
+ }
+
+ // ====================================================================
+
+ @Test
+ public void testEmptyClientHints() throws Exception {
+ String query =
+ "SELECT " +
+ " t1.ua.DeviceClass AS DeviceClass,\n" +
+ " t1.ua.DeviceName AS DeviceName,\n" +
+ " t1.ua.DeviceBrand AS DeviceBrand,\n" +
+ " t1.ua.DeviceCpu AS DeviceCpu,\n" +
+ " t1.ua.DeviceCpuBits AS DeviceCpuBits,\n"
+
+ " t1.ua.OperatingSystemClass AS
OperatingSystemClass,\n" +
+ " t1.ua.OperatingSystemName AS
OperatingSystemName,\n" +
+ " t1.ua.OperatingSystemVersion AS
OperatingSystemVersion,\n" +
+ " t1.ua.OperatingSystemVersionMajor AS
OperatingSystemVersionMajor,\n" +
+ " t1.ua.OperatingSystemNameVersion AS
OperatingSystemNameVersion,\n" +
+ " t1.ua.OperatingSystemNameVersionMajor AS
OperatingSystemNameVersionMajor,\n" +
+ " t1.ua.LayoutEngineClass AS
LayoutEngineClass,\n" +
+ " t1.ua.LayoutEngineName AS
LayoutEngineName,\n" +
+ " t1.ua.LayoutEngineVersion AS
LayoutEngineVersion,\n" +
+ " t1.ua.LayoutEngineVersionMajor AS
LayoutEngineVersionMajor,\n" +
+ " t1.ua.LayoutEngineNameVersion AS
LayoutEngineNameVersion,\n" +
+ " t1.ua.LayoutEngineNameVersionMajor AS
LayoutEngineNameVersionMajor,\n" +
+ " t1.ua.AgentClass AS AgentClass,\n" +
+ " t1.ua.AgentName AS AgentName,\n" +
+ " t1.ua.AgentVersion AS AgentVersion,\n" +
+ " t1.ua.AgentVersionMajor AS
AgentVersionMajor,\n" +
+ " t1.ua.AgentNameVersion AS
AgentNameVersion,\n" +
+ " t1.ua.AgentNameVersionMajor AS
AgentNameVersionMajor\n" +
+ "FROM (" +
+ " SELECT" +
+ " parse_user_agent(" +
+ // NOTE: Here we do NOT say "User-Agent" --> It is just the first one in
the list.
+ " 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/100.0.4896.127 Safari/537.36'," +
+ " 'Sec-Ch-Ua', ''," +
+ " 'Sec-Ch-Ua-Arch', ''," +
+ " 'Sec-Ch-Ua-Bitness', ''," +
+ " 'Sec-Ch-Ua-Full-Version', ''," +
+ " 'Sec-Ch-Ua-Full-Version-List', ''," +
+ " 'Sec-Ch-Ua-Mobile', ''," +
+ " 'Sec-Ch-Ua-Model', ''," +
+ " 'Sec-Ch-Ua-Platform', ''," +
+ " 'Sec-Ch-Ua-Platform-Version', ''," +
+ " 'Sec-Ch-Ua-Wow64', ''" +
+ " ) AS ua " +
+ " FROM (values(1))" +
+ ") AS t1";
+
+ testBuilder()
+ .sqlQuery(query)
+ .unOrdered()
+ .baselineRecords(
+ Collections.singletonList(// Singleton list because we expect 1 record
+ expectations(
+ "DeviceClass", "Desktop",
+ "DeviceName", "Linux Desktop",
+ "DeviceBrand", "Unknown",
+ "DeviceCpu", "Intel x86_64",
+ "DeviceCpuBits", "64",
+ "OperatingSystemClass", "Desktop",
+ "OperatingSystemName", "Linux",
+ "OperatingSystemVersion", "??",
+ "OperatingSystemVersionMajor", "??",
+ "OperatingSystemNameVersion", "Linux ??",
+ "OperatingSystemNameVersionMajor", "Linux ??",
+ "LayoutEngineClass", "Browser",
+ "LayoutEngineName", "Blink",
+ "LayoutEngineVersion", "100.0",
+ "LayoutEngineVersionMajor", "100",
+ "LayoutEngineNameVersion", "Blink 100.0",
+ "LayoutEngineNameVersionMajor", "Blink 100",
+ "AgentClass", "Browser",
+ "AgentName", "Chrome",
+ "AgentVersion", "100.0.4896.127",
+ "AgentVersionMajor", "100",
+ "AgentNameVersion", "Chrome 100.0.4896.127",
+ "AgentNameVersionMajor", "Chrome 100"
+ )
+ )
+ )
+ .go();
+ }
+
+ /**
+ * Converts a more readable list of keys and values into what the
ClusterTest supports.
+ * @param strings List of ["key", "value"]
+ * @return A Map of the same keys and values that is in the right format.
+ */
+ private Map<String, Object> expectations(String... strings) {
Review Comment:
This is a nice function.
> Update LogParser and Yauaa dependencies
> ---------------------------------------
>
> Key: DRILL-8225
> URL: https://issues.apache.org/jira/browse/DRILL-8225
> Project: Apache Drill
> Issue Type: Improvement
> Reporter: Niels Basjes
> Assignee: Niels Basjes
> Priority: Minor
>
> This also includes making the new support for Client Hints available (and
> related tests).
--
This message was sent by Atlassian Jira
(v8.20.7#820007)