Skip to content

Commit 1f80de1

Browse files
Refactor: improve debugging experience (#819)
* Update dependabot.yml * refactor: refactor ComparatorHelper.java and improve debugging experience * style: run code format * fix: manually drop a previous useless commit * refactor: keep minial change * refactor: keep minial change * refactor: different logging and assertion message * refactor: different logging and assertion message * naming: change log message
1 parent 5208d66 commit 1f80de1

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

src/sqlancer/ComparatorHelper.java

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public static List<String> getResultSetFirstColumnAsString(String queryString, E
6060
String resultTemp = result.getString(1);
6161
if (resultTemp != null) {
6262
resultTemp = resultTemp.replaceAll("[\\.]0+$", ""); // Remove the trailing zeros as many DBMS treat
63-
// it as non-bugs
63+
// it as non-bugs
6464
}
6565
resultSet.add(resultTemp);
6666
}
@@ -87,13 +87,19 @@ public static List<String> getResultSetFirstColumnAsString(String queryString, E
8787
public static void assumeResultSetsAreEqual(List<String> resultSet, List<String> secondResultSet,
8888
String originalQueryString, List<String> combinedString, SQLGlobalState<?, ?> state) {
8989
if (resultSet.size() != secondResultSet.size()) {
90-
String queryFormatString = "-- %s;\n-- cardinality: %d";
90+
String queryFormatString = "-- %s;" + System.lineSeparator() + "-- cardinality: %d"
91+
+ System.lineSeparator();
9192
String firstQueryString = String.format(queryFormatString, originalQueryString, resultSet.size());
92-
String secondQueryString = String.format(queryFormatString,
93-
combinedString.stream().collect(Collectors.joining(";")), secondResultSet.size());
94-
state.getState().getLocalState().log(String.format("%s\n%s", firstQueryString, secondQueryString));
95-
String assertionMessage = String.format("the size of the result sets mismatch (%d and %d)!\n%s\n%s",
96-
resultSet.size(), secondResultSet.size(), firstQueryString, secondQueryString);
93+
String combinedQueryString = String.join(";", combinedString);
94+
String secondQueryString = String.format(queryFormatString, combinedQueryString, secondResultSet.size());
95+
state.getState().getLocalState()
96+
.log(String.format("%s" + System.lineSeparator() + "%s", firstQueryString, secondQueryString));
97+
String assertionMessage = String.format(
98+
"The size of the result sets mismatch (%d and %d)!" + System.lineSeparator()
99+
+ "First query: \"%s\", whose cardinality is: %d" + System.lineSeparator()
100+
+ "Second query:\"%s\", whose cardinality is: %d",
101+
resultSet.size(), secondResultSet.size(), originalQueryString, resultSet.size(),
102+
combinedQueryString, secondResultSet.size());
97103
throw new AssertionError(assertionMessage);
98104
}
99105

@@ -105,14 +111,17 @@ public static void assumeResultSetsAreEqual(List<String> resultSet, List<String>
105111
firstResultSetMisses.removeAll(secondHashSet);
106112
Set<String> secondResultSetMisses = new HashSet<>(secondHashSet);
107113
secondResultSetMisses.removeAll(firstHashSet);
108-
String queryFormatString = "-- %s;\n-- misses: %s";
114+
115+
String queryFormatString = "-- Query: \"%s\"; It misses: \"%s\"";
109116
String firstQueryString = String.format(queryFormatString, originalQueryString, firstResultSetMisses);
110-
String secondQueryString = String.format(queryFormatString,
111-
combinedString.stream().collect(Collectors.joining(";")), secondResultSetMisses);
117+
String secondQueryString = String.format(queryFormatString, String.join(";", combinedString),
118+
secondResultSetMisses);
112119
// update the SELECT queries to be logged at the bottom of the error log file
113-
state.getState().getLocalState().log(String.format("%s\n%s", firstQueryString, secondQueryString));
114-
String assertionMessage = String.format("the content of the result sets mismatch!\n%s\n%s",
115-
firstQueryString, secondQueryString);
120+
state.getState().getLocalState()
121+
.log(String.format("%s" + System.lineSeparator() + "%s", firstQueryString, secondQueryString));
122+
String assertionMessage = String.format("The content of the result sets mismatch!" + System.lineSeparator()
123+
+ "First query : \"%s\"" + System.lineSeparator() + "Second query: \"%s\"", originalQueryString,
124+
secondQueryString);
116125
throw new AssertionError(assertionMessage);
117126
}
118127
}

0 commit comments

Comments
 (0)