Content-Length: 692471 | pFad | http://github.com/sqlancer/sqlancer/commit/#start-of-content

68847F39 Merge pull request #1257 from luliqwerty/feature/dqe-sqlqueryerror-ex… · sqlancer/sqlancer@a407481 · GitHub
Skip to content

Commit a407481

Browse files
authored
Merge pull request #1257 from luliqwerty/feature/dqe-sqlqueryerror-extraction
Add the SQLQueryError class for DQE and its test
2 parents 0d85770 + ab1bead commit a407481

File tree

3 files changed

+211
-3
lines changed

3 files changed

+211
-3
lines changed
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
package sqlancer.common.query;
2+
3+
import java.util.Objects;
4+
5+
public class SQLQueryError implements Comparable<SQLQueryError> {
6+
7+
public enum ErrorLevel {
8+
WARNING, ERROR
9+
}
10+
11+
private ErrorLevel level;
12+
private int code;
13+
private String message;
14+
15+
public void setLevel(ErrorLevel level) {
16+
this.level = level;
17+
}
18+
19+
public void setCode(int code) {
20+
this.code = code;
21+
}
22+
23+
public void setMessage(String message) {
24+
this.message = message;
25+
}
26+
27+
public ErrorLevel getLevel() {
28+
return level;
29+
}
30+
31+
public int getCode() {
32+
return code;
33+
}
34+
35+
public String getMessage() {
36+
return message;
37+
}
38+
39+
public boolean hasSameLevel(SQLQueryError that) {
40+
if (level == null) {
41+
return that.getLevel() == null;
42+
} else {
43+
return level.equals(that.getLevel());
44+
}
45+
}
46+
47+
public boolean hasSameCodeAndMessage(SQLQueryError that) {
48+
if (code != that.getCode()) {
49+
return false;
50+
}
51+
if (message == null) {
52+
return that.getMessage() == null;
53+
} else {
54+
return message.equals(that.getMessage());
55+
}
56+
}
57+
58+
@Override
59+
public boolean equals(Object that) {
60+
if (that == null) {
61+
return false;
62+
}
63+
if (that instanceof SQLQueryError) {
64+
SQLQueryError thatError = (SQLQueryError) that;
65+
return hasSameLevel(thatError) && hasSameCodeAndMessage(thatError);
66+
}
67+
return false;
68+
}
69+
70+
@Override
71+
public int hashCode() {
72+
return Objects.hash(level, code, message);
73+
}
74+
75+
@Override
76+
public String toString() {
77+
return String.format("Level: %s; Code: %d; Message: %s.", level, code, message);
78+
}
79+
80+
@Override
81+
public int compareTo(SQLQueryError that) {
82+
if (code < that.getCode()) {
83+
return -1;
84+
} else if (code > that.getCode()) {
85+
return 1;
86+
}
87+
88+
if (level == null && that.getLevel() != null) {
89+
return -1;
90+
} else {
91+
if (that.getLevel() == null) {
92+
return 1;
93+
} else {
94+
int res = level.compareTo(that.getLevel());
95+
if (res != 0) {
96+
return res;
97+
}
98+
}
99+
}
100+
101+
if (message == null && that.getMessage() != null) {
102+
return -1;
103+
} else {
104+
if (that.getMessage() == null) {
105+
return 1;
106+
} else {
107+
int res = message.compareTo(that.getMessage());
108+
if (res != 0) {
109+
return res;
110+
}
111+
}
112+
}
113+
114+
return 0;
115+
}
116+
}

src/sqlancer/postgres/PostgresProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,14 +279,14 @@ public SQLConnection createDatabase(PostgresGlobalState globalState) throws SQLE
279279
}
280280
Connection con = DriverManager.getConnection("jdbc:" + entryURL, username, password);
281281
globalState.getState().logStatement(String.format("\\c %s;", entryDatabaseName));
282-
282+
283283
String dropCommand = "DROP DATABASE";
284284
boolean forceDrop = Randomly.getBoolean();
285285
if (forceDrop) {
286286
dropCommand += " FORCE";
287287
}
288288
dropCommand += " IF EXISTS " + databaseName;
289-
289+
290290
globalState.getState().logStatement(dropCommand + ";");
291291
try (Statement s = con.createStatement()) {
292292
s.execute(dropCommand);
@@ -302,7 +302,7 @@ public SQLConnection createDatabase(PostgresGlobalState globalState) throws SQLE
302302
throw e;
303303
}
304304
}
305-
305+
306306
// Create database section
307307
createDatabaseCommand = getCreateDatabaseCommand(globalState);
308308
globalState.getState().logStatement(createDatabaseCommand + ";");
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package sqlancer.common.query;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.assertEquals;
6+
import static org.junit.jupiter.api.Assertions.assertFalse;
7+
import static org.junit.jupiter.api.Assertions.assertNotEquals;
8+
import static org.junit.jupiter.api.Assertions.assertTrue;
9+
10+
public class SQLQueryErrorTest {
11+
@Test
12+
public void testSettersAndGetters() {
13+
SQLQueryError error = new SQLQueryError();
14+
error.setLevel(SQLQueryError.ErrorLevel.ERROR);
15+
error.setCode(123);
16+
error.setMessage("Test message");
17+
assertEquals(SQLQueryError.ErrorLevel.ERROR, error.getLevel());
18+
assertEquals(123, error.getCode());
19+
assertEquals("Test message", error.getMessage());
20+
}
21+
22+
@Test
23+
public void testHasSameLevel() {
24+
SQLQueryError e1 = new SQLQueryError();
25+
SQLQueryError e2 = new SQLQueryError();
26+
e1.setLevel(SQLQueryError.ErrorLevel.WARNING);
27+
e2.setLevel(SQLQueryError.ErrorLevel.WARNING);
28+
assertTrue(e1.hasSameLevel(e2));
29+
e2.setLevel(SQLQueryError.ErrorLevel.ERROR);
30+
assertFalse(e1.hasSameLevel(e2));
31+
}
32+
33+
@Test
34+
public void testHasSameCodeAndMessage() {
35+
SQLQueryError e1 = new SQLQueryError();
36+
SQLQueryError e2 = new SQLQueryError();
37+
e1.setCode(1);
38+
e2.setCode(1);
39+
e1.setMessage("msg");
40+
e2.setMessage("msg");
41+
assertTrue(e1.hasSameCodeAndMessage(e2));
42+
e2.setCode(2);
43+
assertFalse(e1.hasSameCodeAndMessage(e2));
44+
e2.setCode(1);
45+
e2.setMessage("other");
46+
assertFalse(e1.hasSameCodeAndMessage(e2));
47+
}
48+
49+
@Test
50+
public void testEquals() {
51+
SQLQueryError e1 = new SQLQueryError();
52+
SQLQueryError e2 = new SQLQueryError();
53+
e1.setLevel(SQLQueryError.ErrorLevel.ERROR);
54+
e1.setCode(1);
55+
e1.setMessage("msg");
56+
e2.setLevel(SQLQueryError.ErrorLevel.ERROR);
57+
e2.setCode(1);
58+
e2.setMessage("msg");
59+
assertEquals(e1, e2);
60+
e2.setLevel(SQLQueryError.ErrorLevel.WARNING);
61+
assertNotEquals(e1, e2);
62+
}
63+
64+
@Test
65+
public void testToString() {
66+
SQLQueryError e = new SQLQueryError();
67+
e.setLevel(SQLQueryError.ErrorLevel.ERROR);
68+
e.setCode(1);
69+
e.setMessage("msg");
70+
String str = e.toString();
71+
assertTrue(str.contains("Level: ERROR"));
72+
assertTrue(str.contains("Code: 1"));
73+
assertTrue(str.contains("Message: msg"));
74+
}
75+
76+
@Test
77+
public void testCompareTo() {
78+
SQLQueryError e1 = new SQLQueryError();
79+
SQLQueryError e2 = new SQLQueryError();
80+
e1.setCode(1);
81+
e2.setCode(2);
82+
assertTrue(e1.compareTo(e2) < 0);
83+
e2.setCode(1);
84+
e1.setLevel(SQLQueryError.ErrorLevel.ERROR);
85+
e2.setLevel(SQLQueryError.ErrorLevel.WARNING);
86+
assertTrue(e1.compareTo(e2) > 0 || e1.compareTo(e2) < 0);
87+
e2.setLevel(SQLQueryError.ErrorLevel.ERROR);
88+
e1.setMessage("a");
89+
e2.setMessage("b");
90+
assertTrue(e1.compareTo(e2) < 0);
91+
}
92+
}

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/sqlancer/sqlancer/commit/#start-of-content

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy