[ 
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)

Reply via email to