walterddr commented on code in PR #9806:
URL: https://github.com/apache/pinot/pull/9806#discussion_r1024170893


##########
pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/QueryRunnerTestBase.java:
##########
@@ -292,6 +314,8 @@ public static class Query {
       public String _description;
       @JsonProperty("outputs")
       public List<List<Object>> _outputs = Collections.emptyList();
+      @JsonProperty("expect")
+      public String _expect;

Review Comment:
   nit: `expected_exception`?



##########
pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/QueryRunnerTestBase.java:
##########
@@ -131,6 +137,12 @@ protected void compareRowEquals(List<Object[]> resultRows, 
List<Object[]> expect
         return ((String) l).compareTo((String) r);
       } else if (l instanceof Boolean) {
         return ((Boolean) l).compareTo((Boolean) r);
+      } else if (l instanceof BigDecimal) {
+        if (r instanceof BigDecimal) {
+          return ((BigDecimal) l).compareTo((BigDecimal) r);
+        } else {
+          return ((BigDecimal) l).compareTo(new BigDecimal((String) r));

Review Comment:
   is this b/c the return type of Pinot is not BigDecimal or b/c H2 is not 
returning BigDecimal?



##########
pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/QueryRunnerTestBase.java:
##########
@@ -151,6 +163,10 @@ protected void compareRowEquals(List<Object[]> resultRows, 
List<Object[]> expect
       Object[] resultRow = resultRows.get(i);
       Object[] expectedRow = expectedRows.get(i);
       for (int j = 0; j < resultRow.length; j++) {
+        if (j >= expectedRow.length) {
+          throw new AssertException(String.format("Unexpected row size 
mismatch. Expected: %s, Actual: %s",
+              Arrays.toString(expectedRow), Arrays.toString(resultRow)));
+        }

Review Comment:
   good catch!!!



##########
pinot-query-runtime/src/test/java/org/apache/pinot/query/runtime/queries/ResourceBasedQueriesTest.java:
##########
@@ -153,20 +158,56 @@ public void tearDown() {
 
   // TODO: name the test using testCaseName for testng reports
   @Test(dataProvider = "testResourceQueryTestCaseProviderInputOnly")
-  public void testQueryTestCasesWithH2(String testCaseName, String sql)
+  public void testQueryTestCasesWithH2(String testCaseName, String sql, String 
expect)
       throws Exception {
     // query pinot
-    List<Object[]> resultRows = queryRunner(sql);
+    Optional<List<Object[]>> resultRows = runQuery(sql, expect);
+    if (!resultRows.isPresent()) {
+      // successfully caught error
+      return;
+    }
+
     // query H2 for data
     List<Object[]> expectedRows = queryH2(sql);
-    compareRowEquals(resultRows, expectedRows);
+    compareRowEquals(resultRows.get(), expectedRows);
   }
 
   @Test(dataProvider = "testResourceQueryTestCaseProviderBoth")
-  public void testQueryTestCasesWithOutput(String testCaseName, String sql, 
List<Object[]> expectedRows)
+  public void testQueryTestCasesWithOutput(String testCaseName, String sql, 
List<Object[]> expectedRows, String expect)
       throws Exception {
-    List<Object[]> resultRows = queryRunner(sql);
-    compareRowEquals(resultRows, expectedRows);
+    Optional<List<Object[]>> resultRows = runQuery(sql, expect);

Review Comment:
   this refactoring seems convoluted. can't we simply do:
   ```suggestion
       List<Object[]> resultRows;
       if (except != null) {
         try {
           resultRows = queryRunner(SQL);
           Assert.fail("Expected error with message '" + except + "'. But 
instead rows were returned: " + ...);
         } catch (Exception e) {
           Assert.assertTrue(...PatternMatch)
         }
       } else {
         resultRows = queryRunner(sql);
       }
   ```
   
   IIRC Assert.fail throws AssertionError which is not an Exception so it won't 
be caught in the catch Exception clause.



-- 
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: commits-unsubscr...@pinot.apache.org

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


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to