This repository has been archived by the owner on Jun 6, 2024. It is now read-only.
forked from sqlancer/sqlancer
-
Notifications
You must be signed in to change notification settings - Fork 3
350 lines (322 loc) · 11.5 KB
/
main.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
name: ci
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
misc:
name: General tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build and check for warnings
run: mvn -B package -DskipTests 2>/dev/null | grep -vz "WARNING"
- name: Verify
run: mvn -B verify -DskipTests=true
- name: Misc Tests
run: mvn -B '-Dtest=!sqlancer.dbms.**' test
citus:
name: DBMS Tests (Citus)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build SQLancer
run: mvn -B package -DskipTests=true
- name: Set up Citus
run: |
curl https://install.citusdata.com/community/deb.sh | sudo bash
sudo apt-get -y install postgresql-13-citus-9.5
sudo chown -R $USER:$USER /var/run/postgresql
export PATH=/usr/lib/postgresql/13/bin:$PATH
cd ~
mkdir -p citus/coordinator citus/worker1 citus/worker2
initdb -D citus/coordinator
initdb -D citus/worker1
initdb -D citus/worker2
echo "shared_preload_libraries = 'citus'" >> citus/coordinator/postgresql.conf
echo "shared_preload_libraries = 'citus'" >> citus/worker1/postgresql.conf
echo "shared_preload_libraries = 'citus'" >> citus/worker2/postgresql.conf
pg_ctl -D citus/coordinator -o "-p 9700" -l coordinator_logfile start || cat coordinator_logfile || cat citus/coordinator/coordinator_logfile
pg_ctl -D citus/worker1 -o "-p 9701" -l worker1_logfile start
ls citus/worker1
pg_ctl -D citus/worker2 -o "-p 9702" -l worker2_logfile start
psql -c "CREATE ROLE sqlancer SUPERUSER LOGIN CREATEDB PASSWORD 'sqlancer';" -p 9700 -d postgres -U $USER
createdb test -p 9700 -U $USER
psql -c "CREATE ROLE sqlancer SUPERUSER LOGIN CREATEDB PASSWORD 'sqlancer';" -p 9701 -d postgres -U $USER
createdb test -p 9701 -U $USER
psql -c "CREATE ROLE sqlancer SUPERUSER LOGIN CREATEDB PASSWORD 'sqlancer';" -p 9702 -d postgres -U $USER
createdb test -p 9702 -U $USER
psql -c "CREATE EXTENSION citus;" -p 9700 -U $USER -d test
psql -c "CREATE EXTENSION citus;" -p 9701 -U $USER -d test
psql -c "CREATE EXTENSION citus;" -p 9702 -U $USER -d test
psql -c "SELECT * from master_add_node('localhost', 9701);" -p 9700 -U $USER -d test
psql -c "SELECT * from master_add_node('localhost', 9702);" -p 9700 -U $USER -d test
- name: Run Tests
run: CITUS_AVAILABLE=true mvn -Dtest=TestCitus test
clickhouse:
name: DBMS Tests (ClickHouse)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build SQLancer
run: mvn -B package -DskipTests=true
- name: Set up ClickHouse
run: |
docker pull yandex/clickhouse-server:latest
docker run --ulimit nofile=262144:262144 --name clickhouse-server -p8123:8123 -d yandex/clickhouse-server:latest
sleep 5
- name: Run Tests
run: CLICKHOUSE_AVAILABLE=true mvn -Dtest=ClickHouseBinaryComparisonOperationTest test
cockroachdb:
name: DBMS Tests (CockroachDB)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build SQLancer
run: mvn -B package -DskipTests=true
- name: Set up CockroachDB
run: |
wget -qO- https://binaries.cockroachdb.com/cockroach-v21.1.7.linux-amd64.tgz | tar xvz
cd cockroach-v21.1.7.linux-amd64/ && ./cockroach start-single-node --insecure &
sleep 10
- name: Create SQLancer user
run: cd cockroach-v21.1.7.linux-amd64/ && ./cockroach sql --insecure -e "CREATE USER sqlancer; GRANT admin to sqlancer" && cd ..
- name: Run Tests
run: COCKROACHDB_AVAILABLE=true mvn -Dtest=TestCockroachDB test
duckdb:
name: DBMS Tests (DuckDB)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build
run: mvn -B package -DskipTests=true
- name: DuckDB Tests
run: mvn -Dtest=TestDuckDB test
h2:
name: DBMS Tests (H2)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build SQLancer
run: mvn -B package -DskipTests=true
- name: Set up H2
run: |
git clone https://github.com/h2database/h2database
cd h2database/h2
./build.sh jar
cp bin/h2-2.0.201.jar ../../target/lib/h2-1.4.200.jar
cp bin/h2-2.0.201.jar ~/.m2/repository/com/h2database/h2/1.4.200/h2-1.4.200.jar
ls -lh ../../target/lib
- name: Run Tests
run: H2_AVAILABLE=true mvn -Dtest=TestH2 test
mariadb:
name: DBMS Tests (MariaDB)
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build SQLancer
run: mvn -B package -DskipTests=true
- name: Install MariaDB
run: |
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.3/ubuntu bionic main'
sudo apt update
sudo apt install mariadb-server
sudo systemctl start mariadb
- name: Create SQLancer User
run: sudo mysql -uroot -proot -e "CREATE USER 'sqlancer'@'localhost' IDENTIFIED BY 'sqlancer'; GRANT ALL PRIVILEGES ON * . * TO 'sqlancer'@'localhost';"
- name: Run Tests
run: MARIADB_AVAILABLE=true mvn -Dtest=TestMariaDB test
mysql:
name: DBMS Tests (MySQL)
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build SQLancer
run: mvn -B package -DskipTests=true
- name: Set up MySQL
run: |
sudo apt-get install libssl-dev libmecab2 libjson-perl mecab-ipadic-utf8
sudo apt-get remove mysql-*
wget -q https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-server_8.0.20-1ubuntu18.04_amd64.deb-bundle.tar
tar -xvf mysql-server_8.0.20-1ubuntu18.04_amd64.deb-bundle.tar
sudo dpkg -i *.deb
sudo systemctl start mysql
- name: Create SQLancer user
run: mysql -uroot -proot -e "CREATE USER 'sqlancer'@'localhost' IDENTIFIED BY 'sqlancer'; GRANT ALL PRIVILEGES ON * . * TO 'sqlancer'@'localhost';"
- name: Run Tests
run: |
MYSQL_AVAILABLE=true mvn test -Dtest=TestMySQLPQS
MYSQL_AVAILABLE=true mvn test -Dtest=TestMySQLTLP
postgres:
name: DBMS Tests (PostgreSQL)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up PostgreSQL
uses: harmon758/postgresql-action@v1
with:
postgresql version: '12'
postgresql user: 'sqlancer'
postgresql password: 'sqlancer'
postgresql db: 'test'
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build SQLancer
run: mvn -B package -DskipTests=true
- name: Run Tests
run: POSTGRES_AVAILABLE=true mvn -Dtest=TestPostgres test
sqlite:
name: DBMS Tests (SQLite)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build
run: mvn -B package -DskipTests=true
- name: SQLite Tests
run: |
mvn -Dtest=TestSQLitePQS test
mvn -Dtest=TestSQLite3 test
tidb:
name: DBMS Tests (TiDB)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build SQLancer
run: mvn -B package -DskipTests=true
- name: Set up TiDB
run: |
docker pull pingcap/tidb:latest
docker run --name tidb-server -d -p 4000:4000 pingcap/tidb:latest
sleep 10
- name: Create SQLancer user
run: sudo mysql -h 127.0.0.1 -P 4000 -u root -D test -e "CREATE USER 'sqlancer'@'%' IDENTIFIED WITH mysql_native_password BY 'sqlancer'; GRANT ALL PRIVILEGES ON *.* TO 'sqlancer'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;"
- name: Run Tests
run: TIDB_AVAILABLE=true mvn -Dtest=TestTiDB test
java8:
name: Java 8 Compatibility (DuckDB)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build
run: mvn -B package -DskipTests=true
- name: Shortly run DuckDB
run: cd target && java -jar $(ls | grep -P 'sqlancer-[0-9.]*.jar') --num-threads 4 --timeout-seconds 30 --num-queries 0 duckdb
java13:
name: Java 13 Compatibility (DuckDB)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 13
uses: actions/setup-java@v1
with:
java-version: 13
- name: Build
run: mvn -B package -DskipTests=true
- name: Shortly run DuckDB
run: cd target && java -jar $(ls | grep -P 'sqlancer-[0-9.]*.jar') --num-threads 4 --timeout-seconds 30 --num-queries 0 duckdb
java14:
name: Java 14 Compatibility (DuckDB)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 14
uses: actions/setup-java@v1
with:
java-version: 14
- name: Build
run: mvn -B package -DskipTests=true
- name: Shortly run DuckDB
run: cd target && java -jar $(ls | grep -P 'sqlancer-[0-9.]*.jar') --num-threads 4 --timeout-seconds 30 --num-queries 0 duckdb
java15:
name: Java 15 EA Compatibility (DuckDB)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 15
uses: actions/setup-java@v1
with:
java-version: 15-ea
- name: Build
run: mvn -B package -DskipTests=true
- name: Shortly run DuckDB
run: cd target && java -jar $(ls | grep -P 'sqlancer-[0-9.]*.jar') --num-threads 4 --timeout-seconds 30 --num-queries 0 duckdb