mcvsubbu commented on a change in pull request #6583:
URL: https://github.com/apache/incubator-pinot/pull/6583#discussion_r583133785



##########
File path: 
pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/QueryOp.java
##########
@@ -55,7 +73,87 @@ public void setExpectedResultsFileName(String 
expectedResultsFileName) {
 
   @Override
   boolean runOp() {
-    System.out.println("Verifying queries in " + _queryFileName + " against 
results in " + _expectedResultsFileName);
-    return true;
+    System.out.printf("Verifying queries in %s against results in %s\n", 
_queryFileName, _expectedResultsFileName);
+    try {
+      return verifyQueries();
+    } catch (Exception e) {
+      LOGGER.error("FAILED to verify queries in {}: {}", _queryFileName, e);
+      return false;
+    }
+  }
+
+  boolean verifyQueries()
+      throws Exception {
+    boolean testPassed = false;
+
+    try (BufferedReader queryReader = new BufferedReader(
+        new InputStreamReader(new FileInputStream(_queryFileName), 
StandardCharsets.UTF_8));
+        BufferedReader expectedResultReader = new BufferedReader(
+            new InputStreamReader(new 
FileInputStream(_expectedResultsFileName), StandardCharsets.UTF_8))) {
+
+      int passed = 0;
+      int total = 0;
+      int queryLineNum = 0;
+      String query;
+
+      while ((query = queryReader.readLine()) != null) {
+        queryLineNum++;
+        if (shouldIgnore(query)) {
+          continue;
+        }
+
+        JsonNode expectedJson = null;
+        try {
+          String expectedResultLine = expectedResultReader.readLine();
+          while (shouldIgnore(expectedResultLine)) {
+            expectedResultLine = expectedResultReader.readLine();
+          }
+          expectedJson = JsonUtils.stringToJsonNode(expectedResultLine);
+        } catch (Exception e) {
+          LOGGER.error("Comparison FAILED: Line: {} Exception caught while 
getting expected response for query: '{}'",
+              queryLineNum, query, e);
+        }
+
+        JsonNode actualJson = null;
+        if (expectedJson != null) {
+          try {
+            actualJson = QueryProcessor.postSqlQuery(query);
+          } catch (Exception e) {
+            LOGGER.error("Comparison FAILED: Line: {} Exception caught while 
running query: '{}'", queryLineNum, query,
+                e);
+          }
+        }
+
+        if (expectedJson != null && actualJson != null) {
+          try {
+            boolean comparisonResult = 
SqlResultComparator.areEqual(actualJson, expectedJson, query);

Review comment:
       ```suggestion
               boolean passed = SqlResultComparator.areEqual(actualJson, 
expectedJson, query);
   ```

##########
File path: 
pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/QueryOp.java
##########
@@ -55,7 +73,87 @@ public void setExpectedResultsFileName(String 
expectedResultsFileName) {
 
   @Override
   boolean runOp() {
-    System.out.println("Verifying queries in " + _queryFileName + " against 
results in " + _expectedResultsFileName);
-    return true;
+    System.out.printf("Verifying queries in %s against results in %s\n", 
_queryFileName, _expectedResultsFileName);
+    try {
+      return verifyQueries();
+    } catch (Exception e) {
+      LOGGER.error("FAILED to verify queries in {}: {}", _queryFileName, e);
+      return false;
+    }
+  }
+
+  boolean verifyQueries()
+      throws Exception {
+    boolean testPassed = false;
+
+    try (BufferedReader queryReader = new BufferedReader(
+        new InputStreamReader(new FileInputStream(_queryFileName), 
StandardCharsets.UTF_8));
+        BufferedReader expectedResultReader = new BufferedReader(
+            new InputStreamReader(new 
FileInputStream(_expectedResultsFileName), StandardCharsets.UTF_8))) {
+
+      int passed = 0;
+      int total = 0;

Review comment:
       ```suggestion
         int totalQueryCount = 0;
   ```

##########
File path: 
pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/SegmentOp.java
##########
@@ -67,8 +68,7 @@
   private static final int DEFAULT_SLEEP_INTERVAL_MS = 200;
 
   public enum Op {
-    UPLOAD,
-    DELETE
+    UPLOAD, DELETE

Review comment:
       Keep them in separate lines please

##########
File path: 
pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/QueryOp.java
##########
@@ -55,7 +73,87 @@ public void setExpectedResultsFileName(String 
expectedResultsFileName) {
 
   @Override
   boolean runOp() {
-    System.out.println("Verifying queries in " + _queryFileName + " against 
results in " + _expectedResultsFileName);
-    return true;
+    System.out.printf("Verifying queries in %s against results in %s\n", 
_queryFileName, _expectedResultsFileName);
+    try {
+      return verifyQueries();
+    } catch (Exception e) {
+      LOGGER.error("FAILED to verify queries in {}: {}", _queryFileName, e);
+      return false;
+    }
+  }
+
+  boolean verifyQueries()
+      throws Exception {
+    boolean testPassed = false;
+
+    try (BufferedReader queryReader = new BufferedReader(
+        new InputStreamReader(new FileInputStream(_queryFileName), 
StandardCharsets.UTF_8));
+        BufferedReader expectedResultReader = new BufferedReader(
+            new InputStreamReader(new 
FileInputStream(_expectedResultsFileName), StandardCharsets.UTF_8))) {
+
+      int passed = 0;
+      int total = 0;
+      int queryLineNum = 0;
+      String query;
+
+      while ((query = queryReader.readLine()) != null) {
+        queryLineNum++;
+        if (shouldIgnore(query)) {
+          continue;
+        }
+
+        JsonNode expectedJson = null;
+        try {
+          String expectedResultLine = expectedResultReader.readLine();
+          while (shouldIgnore(expectedResultLine)) {
+            expectedResultLine = expectedResultReader.readLine();
+          }
+          expectedJson = JsonUtils.stringToJsonNode(expectedResultLine);
+        } catch (Exception e) {
+          LOGGER.error("Comparison FAILED: Line: {} Exception caught while 
getting expected response for query: '{}'",
+              queryLineNum, query, e);
+        }
+
+        JsonNode actualJson = null;
+        if (expectedJson != null) {
+          try {
+            actualJson = QueryProcessor.postSqlQuery(query);
+          } catch (Exception e) {
+            LOGGER.error("Comparison FAILED: Line: {} Exception caught while 
running query: '{}'", queryLineNum, query,
+                e);
+          }
+        }
+
+        if (expectedJson != null && actualJson != null) {
+          try {
+            boolean comparisonResult = 
SqlResultComparator.areEqual(actualJson, expectedJson, query);
+            if (comparisonResult) {
+              passed++;
+              LOGGER.info("Comparison PASSED: Line: {} actual Time: {} ms 
expected Time: {} ms Docs Scanned: {}",

Review comment:
       We should not be logging expected time, etc. We should not even have it 
in metadata. We can add some outliers for time later. For now, remove it from 
the results file and also from this log.
   Also, we don't need an INFO log for every passing query. Just add a single  
debug log with query, expected result and actual result

##########
File path: 
pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/QueryOp.java
##########
@@ -55,7 +73,87 @@ public void setExpectedResultsFileName(String 
expectedResultsFileName) {
 
   @Override
   boolean runOp() {
-    System.out.println("Verifying queries in " + _queryFileName + " against 
results in " + _expectedResultsFileName);
-    return true;
+    System.out.printf("Verifying queries in %s against results in %s\n", 
_queryFileName, _expectedResultsFileName);
+    try {
+      return verifyQueries();
+    } catch (Exception e) {
+      LOGGER.error("FAILED to verify queries in {}: {}", _queryFileName, e);
+      return false;
+    }
+  }
+
+  boolean verifyQueries()
+      throws Exception {
+    boolean testPassed = false;
+
+    try (BufferedReader queryReader = new BufferedReader(
+        new InputStreamReader(new FileInputStream(_queryFileName), 
StandardCharsets.UTF_8));
+        BufferedReader expectedResultReader = new BufferedReader(
+            new InputStreamReader(new 
FileInputStream(_expectedResultsFileName), StandardCharsets.UTF_8))) {
+
+      int passed = 0;

Review comment:
       ```suggestion
         int SucceededQueryCount = 0;
   ```

##########
File path: 
pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/SegmentOp.java
##########
@@ -241,6 +242,26 @@ private boolean verifySegmentInState(String state)
     return true;
   }
 
+  private boolean verifyRoutingTableUpdated()

Review comment:
       You should really be getting the number of rows before adding the 
segment, and then the number of rows after adding the segment and make sure 
that it has increased by the number of rows in the segment. If you do this, 
then you can remove the other check of segment state model.online.
   
   You can mark this as TODO and take it on in a separate PR

##########
File path: 
pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/QueryOp.java
##########
@@ -55,7 +73,87 @@ public void setExpectedResultsFileName(String 
expectedResultsFileName) {
 
   @Override
   boolean runOp() {
-    System.out.println("Verifying queries in " + _queryFileName + " against 
results in " + _expectedResultsFileName);
-    return true;
+    System.out.printf("Verifying queries in %s against results in %s\n", 
_queryFileName, _expectedResultsFileName);
+    try {
+      return verifyQueries();
+    } catch (Exception e) {
+      LOGGER.error("FAILED to verify queries in {}: {}", _queryFileName, e);
+      return false;
+    }
+  }
+
+  boolean verifyQueries()
+      throws Exception {
+    boolean testPassed = false;
+
+    try (BufferedReader queryReader = new BufferedReader(
+        new InputStreamReader(new FileInputStream(_queryFileName), 
StandardCharsets.UTF_8));
+        BufferedReader expectedResultReader = new BufferedReader(
+            new InputStreamReader(new 
FileInputStream(_expectedResultsFileName), StandardCharsets.UTF_8))) {
+
+      int passed = 0;
+      int total = 0;
+      int queryLineNum = 0;
+      String query;
+
+      while ((query = queryReader.readLine()) != null) {
+        queryLineNum++;
+        if (shouldIgnore(query)) {
+          continue;
+        }
+
+        JsonNode expectedJson = null;
+        try {
+          String expectedResultLine = expectedResultReader.readLine();
+          while (shouldIgnore(expectedResultLine)) {
+            expectedResultLine = expectedResultReader.readLine();
+          }
+          expectedJson = JsonUtils.stringToJsonNode(expectedResultLine);
+        } catch (Exception e) {
+          LOGGER.error("Comparison FAILED: Line: {} Exception caught while 
getting expected response for query: '{}'",
+              queryLineNum, query, e);
+        }
+
+        JsonNode actualJson = null;
+        if (expectedJson != null) {
+          try {
+            actualJson = QueryProcessor.postSqlQuery(query);
+          } catch (Exception e) {
+            LOGGER.error("Comparison FAILED: Line: {} Exception caught while 
running query: '{}'", queryLineNum, query,
+                e);
+          }
+        }
+
+        if (expectedJson != null && actualJson != null) {
+          try {
+            boolean comparisonResult = 
SqlResultComparator.areEqual(actualJson, expectedJson, query);
+            if (comparisonResult) {
+              passed++;
+              LOGGER.info("Comparison PASSED: Line: {} actual Time: {} ms 
expected Time: {} ms Docs Scanned: {}",
+                  queryLineNum, actualJson.get(TIME_USED_MS_KEY), 
expectedJson.get(TIME_USED_MS_KEY),
+                  actualJson.get(NUM_DOCS_SCANNED_KEY));
+              LOGGER.debug("actual Response: {}", actualJson);

Review comment:
       Please combine these two logs into one log.

##########
File path: 
pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/QueryOp.java
##########
@@ -55,7 +73,87 @@ public void setExpectedResultsFileName(String 
expectedResultsFileName) {
 
   @Override
   boolean runOp() {
-    System.out.println("Verifying queries in " + _queryFileName + " against 
results in " + _expectedResultsFileName);
-    return true;
+    System.out.printf("Verifying queries in %s against results in %s\n", 
_queryFileName, _expectedResultsFileName);
+    try {
+      return verifyQueries();
+    } catch (Exception e) {
+      LOGGER.error("FAILED to verify queries in {}: {}", _queryFileName, e);
+      return false;
+    }
+  }
+
+  boolean verifyQueries()
+      throws Exception {
+    boolean testPassed = false;
+
+    try (BufferedReader queryReader = new BufferedReader(
+        new InputStreamReader(new FileInputStream(_queryFileName), 
StandardCharsets.UTF_8));
+        BufferedReader expectedResultReader = new BufferedReader(
+            new InputStreamReader(new 
FileInputStream(_expectedResultsFileName), StandardCharsets.UTF_8))) {
+
+      int passed = 0;
+      int total = 0;
+      int queryLineNum = 0;
+      String query;
+
+      while ((query = queryReader.readLine()) != null) {
+        queryLineNum++;
+        if (shouldIgnore(query)) {
+          continue;
+        }
+
+        JsonNode expectedJson = null;
+        try {
+          String expectedResultLine = expectedResultReader.readLine();
+          while (shouldIgnore(expectedResultLine)) {
+            expectedResultLine = expectedResultReader.readLine();
+          }
+          expectedJson = JsonUtils.stringToJsonNode(expectedResultLine);
+        } catch (Exception e) {
+          LOGGER.error("Comparison FAILED: Line: {} Exception caught while 
getting expected response for query: '{}'",
+              queryLineNum, query, e);
+        }
+
+        JsonNode actualJson = null;
+        if (expectedJson != null) {
+          try {
+            actualJson = QueryProcessor.postSqlQuery(query);
+          } catch (Exception e) {
+            LOGGER.error("Comparison FAILED: Line: {} Exception caught while 
running query: '{}'", queryLineNum, query,
+                e);
+          }
+        }
+
+        if (expectedJson != null && actualJson != null) {
+          try {
+            boolean comparisonResult = 
SqlResultComparator.areEqual(actualJson, expectedJson, query);
+            if (comparisonResult) {
+              passed++;
+              LOGGER.info("Comparison PASSED: Line: {} actual Time: {} ms 
expected Time: {} ms Docs Scanned: {}",
+                  queryLineNum, actualJson.get(TIME_USED_MS_KEY), 
expectedJson.get(TIME_USED_MS_KEY),
+                  actualJson.get(NUM_DOCS_SCANNED_KEY));
+              LOGGER.debug("actual Response: {}", actualJson);
+              LOGGER.debug("expected Response: {}", expectedJson);
+            } else {
+              LOGGER.error("Comparison FAILED: Line: {} query: {}", 
queryLineNum, query);

Review comment:
       Single log.error will suffice.




----------------------------------------------------------------
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.

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