Skip to content

Commit a1a768b

Browse files
committed
UPG: test.sh for v20250601.0
1 parent 485791a commit a1a768b

File tree

2 files changed

+126
-64
lines changed

2 files changed

+126
-64
lines changed

.github/workflows/release.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ jobs:
3636
- run: docker build -o=dist main/tcpdump
3737
- run: docker build -o=dist main/vim
3838
- run: docker build -o=dist main/wget
39+
- run: docker build -o=dist custom/mysql57
40+
- run: docker build -o=dist custom/mysql80
41+
- run: docker build -o=dist custom/mysql84
3942

4043
- run: |
4144
for file in dist/*; do

scripts/test.sh

Lines changed: 123 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99

1010
########## environment variables ##########
1111
ENABLE_DEBUG=0
12-
_BIN_SUFFIX='_v20250408.0_linux_amd64'
12+
_BIN_SUFFIX='_v20250601.0_linux_amd64'
1313
REDIS_CONN_OPTS='' # '-u redis://testpw@127.0.0.1:6379 --no-auth-warning'
14-
MYSQL_CONN_OPTS='' # '-h 127.0.0.1 -u root -ptestpw --skip-ssl'
14+
MYSQL_CONN_OPTS='' # '-h 127.0.0.1 -u root -ptestpw'
1515
POSTGRES_CONN_OPTS='' # 'postgresql://postgres:testpw@127.0.0.1/postgres'
1616
TEMP_HTTP_PORT=18080
1717
TEMP_IPERF3_PORT=$(($TEMP_HTTP_PORT + 1))
@@ -31,27 +31,66 @@ function one_time_httpd() {
3131

3232
[ $ENABLE_DEBUG -eq 1 ] && set -x
3333

34-
USE_REDIS_DOCKER=0
34+
########## sidecar containers ##########
35+
START_REDIS_DOCKER=0
3536
if [ -z "$REDIS_CONN_OPTS" ]; then
36-
USE_REDIS_DOCKER=1
37-
REDIS_CONN_OPTS='-u redis://testpw@127.0.0.1:6379 --no-auth-warning'
37+
START_REDIS_DOCKER=1
38+
REDIS_CONN_OPTS='-u redis://testpw@127.0.0.1:6379'
39+
REDIS_CONTAINER_ID=$(sudo docker inspect -f '{{.ID}}' redis-sidecar 2>/dev/null)
40+
if [ -z "$REDIS_CONTAINER_ID" ]; then
41+
REDIS_CONTAINER_ID=$(sudo docker run --rm -d --name redis-sidecar -p 6379:6379 redis:8.0.2-alpine --requirepass testpw)
42+
for i in {1..10}; do
43+
if sudo docker exec "$REDIS_CONTAINER_ID" redis-cli $REDIS_CONN_OPTS ping | grep -q 'PONG'; then
44+
break
45+
fi
46+
log_w "redis container not started, retry $i"
47+
sleep 2
48+
done
49+
if [ "$i" -ge 10 ]; then log_f 'redis container failed to start'; fi
50+
fi
3851
fi
39-
USE_MYSQL_DOCKER=0
52+
53+
START_MYSQL_DOCKER=0
4054
if [ -z "$MYSQL_CONN_OPTS" ]; then
41-
USE_MYSQL_DOCKER=1
42-
MYSQL_CONN_OPTS='-h 127.0.0.1 -u root -ptestpw --skip-ssl'
55+
START_MYSQL_DOCKER=1
56+
MYSQL_CONN_OPTS='-h 127.0.0.1 -u root -ptestpw'
57+
MYSQL_CONTAINER_ID=$(sudo docker inspect -f '{{.ID}}' mysql-sidecar 2>/dev/null)
58+
if [ -z "$MYSQL_CONTAINER_ID" ]; then
59+
MYSQL_CONTAINER_ID=$(sudo docker run --rm -d --name mysql-sidecar -p 3306:3306 -e MYSQL_ROOT_PASSWORD=testpw mysql:8.0.42)
60+
for i in {1..10}; do
61+
if sudo docker exec "$MYSQL_CONTAINER_ID" mysqladmin -h localhost -u root -ptestpw ping 2>&1 | grep -q 'mysqld is alive'; then
62+
break
63+
fi
64+
log_w "mysql container not started, retry $i"
65+
sleep 4
66+
done
67+
if [ "$i" -ge 10 ]; then log_f 'mysql container failed to start'; fi
68+
fi
4369
fi
44-
USE_POSTGRES_DOCKER=0
70+
71+
START_POSTGRES_DOCKER=0
4572
if [ -z "$POSTGRES_CONN_OPTS" ]; then
46-
USE_POSTGRES_DOCKER=1
73+
START_POSTGRES_DOCKER=1
4774
POSTGRES_CONN_OPTS='postgresql://postgres:testpw@127.0.0.1/postgres'
75+
POSTGRES_CONTAINER_ID=$(sudo docker inspect -f '{{.ID}}' postgres-sidecar 2>/dev/null)
76+
if [ $START_POSTGRES_DOCKER -eq 1 ]; then
77+
POSTGRES_CONTAINER_ID=$(sudo docker run --rm -d --name postgres-sidecar -p 5432:5432 -e POSTGRES_PASSWORD=testpw postgres:17.5-alpine)
78+
for i in {1..10}; do
79+
if sudo docker exec "$POSTGRES_CONTAINER_ID" pg_isready | grep -q 'accepting connections'; then
80+
break
81+
fi
82+
log_w "postgres container not started, retry $i"
83+
sleep 2
84+
done
85+
if [ "$i" -ge 10 ]; then log_f 'postgres container failed to start'; fi
86+
fi
4887
fi
4988

5089
########## test community/fio ##########
5190
log_i 'test community/fio'
5291

5392
OUTPUT=$(./dist/"fio${_BIN_SUFFIX}" --version)
54-
assert_grep 'fio-3.38' "$OUTPUT"
93+
assert_grep 'fio-3.39' "$OUTPUT"
5594

5695
OUTPUT=$(./dist/"fio${_BIN_SUFFIX}" --name=fio_test --filename=temp_test_fio.data \
5796
--size=10MB --bs=4k --direct=1 --rw=randrw --ioengine=libaio \
@@ -68,33 +107,20 @@ log_i 'test community/fio success'
68107
log_i 'test community/redis'
69108

70109
OUTPUT=$(./dist/"redis-cli${_BIN_SUFFIX}" --version)
71-
assert_grep 'redis-cli 7.2.7' "$OUTPUT"
72-
73-
if [ $USE_REDIS_DOCKER -eq 1 ]; then
74-
REDIS_CONTAINER_ID=$(sudo docker run --rm -d -p 6379:6379 redis:7.2.7-alpine --requirepass testpw)
75-
for i in {1..10}; do
76-
if sudo docker exec "$REDIS_CONTAINER_ID" redis-cli $REDIS_CONN_OPTS ping | grep -q 'PONG'; then
77-
break
78-
fi
79-
log_w "redis container not started, retry $i"
80-
sleep 2
81-
done
82-
if [ "$i" -ge 10 ]; then log_f 'redis container failed to'; fi
83-
fi
110+
assert_grep 'redis-cli 8.0.2' "$OUTPUT"
84111

85112
OUTPUT=$(./dist/"redis-cli${_BIN_SUFFIX}" $REDIS_CONN_OPTS set tkey tvalue)
86113
assert_grep 'OK' "$OUTPUT"
87114
OUTPUT=$(./dist/"redis-cli${_BIN_SUFFIX}" $REDIS_CONN_OPTS get tkey)
88115
assert_grep 'tvalue' "$OUTPUT"
89116

90-
[ $USE_REDIS_DOCKER -eq 1 ] && sudo docker stop "$REDIS_CONTAINER_ID" >/dev/null
91117
log_i 'test community/redis success'
92118

93119
########## test main/7zip ##########
94120
log_i 'test main/7zip'
95121

96122
OUTPUT=$(./dist/"7z${_BIN_SUFFIX}" --help)
97-
assert_grep '7-Zip (z) 24.08' "$OUTPUT"
123+
assert_grep '7-Zip (z) 24.09' "$OUTPUT"
98124

99125
echo 'test_7zip' >temp_test_7zip.txt
100126
OUTPUT=$(./dist/"7z${_BIN_SUFFIX}" a temp_test_7zip.7z temp_test_7zip.txt)
@@ -113,7 +139,7 @@ log_i 'test main/7zip success'
113139
log_i 'test main/curl'
114140

115141
OUTPUT=$(./dist/"curl${_BIN_SUFFIX}" --version)
116-
assert_grep 'curl 8.12.1' "$OUTPUT"
142+
assert_grep 'curl 8.14.0' "$OUTPUT"
117143

118144
one_time_httpd
119145
OUTPUT=$(./dist/"curl${_BIN_SUFFIX}" --silent "http://127.0.0.1:$TEMP_HTTP_PORT")
@@ -125,7 +151,7 @@ log_i 'test main/curl success'
125151
log_i 'test main/htop'
126152

127153
OUTPUT=$(./dist/"htop${_BIN_SUFFIX}" --version)
128-
assert_grep 'htop 3.3.0' "$OUTPUT"
154+
assert_grep 'htop 3.4.1' "$OUTPUT"
129155

130156
OUTPUT=$(echo q | ./dist/"htop${_BIN_SUFFIX}" --no-color)
131157
assert_grep 'Load average' "$OUTPUT"
@@ -136,7 +162,7 @@ log_i 'test main/htop success'
136162
log_i 'test main/iperf3'
137163

138164
OUTPUT=$(./dist/"iperf3${_BIN_SUFFIX}" --version)
139-
assert_grep 'iperf 3.17.1' "$OUTPUT"
165+
assert_grep 'iperf 3.19' "$OUTPUT"
140166

141167
./dist/"iperf3${_BIN_SUFFIX}" --server --port $TEMP_IPERF3_PORT --daemon --one-off
142168
sleep 0.5
@@ -149,7 +175,7 @@ log_i 'test main/iperf3 success'
149175
log_i 'test main/iproute2'
150176

151177
OUTPUT=$(./dist/"ss${_BIN_SUFFIX}" --version)
152-
assert_grep 'ss utility, iproute2-6.11.0' "$OUTPUT"
178+
assert_grep 'ss utility, iproute2-6.15.0' "$OUTPUT"
153179

154180
OUTPUT=$(./dist/"ss${_BIN_SUFFIX}" --tcp --listening --numeric --processes)
155181
assert_grep 'Local Address:Port' "$OUTPUT"
@@ -175,33 +201,21 @@ assert_grep 'from 11.4.5-MariaDB' "$OUTPUT"
175201
OUTPUT=$(./dist/"mariadb-dump${_BIN_SUFFIX}" --version)
176202
assert_grep 'from 11.4.5-MariaDB' "$OUTPUT"
177203

178-
if [ $USE_MYSQL_DOCKER -eq 1 ]; then
179-
MYSQL_CONTAINER_ID=$(sudo docker run --rm -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=testpw mysql:8.0.41)
180-
for i in {1..10}; do
181-
if sudo docker exec "$MYSQL_CONTAINER_ID" mysqladmin -h localhost -u root -ptestpw ping 2>&1 | grep -q 'mysqld is alive'; then
182-
break
183-
fi
184-
log_w "mysql container not started, retry $i"
185-
sleep 4
186-
done
187-
if [ "$i" -ge 10 ]; then log_f 'mysql container failed to'; fi
188-
fi
189-
190204
OUTPUT=$(./dist/"mariadb${_BIN_SUFFIX}" $MYSQL_CONN_OPTS -e 'select User from mysql.user')
191205
assert_grep 'mysql.infoschema' "$OUTPUT"
192206
OUTPUT=$(./dist/"mariadb-dump${_BIN_SUFFIX}" $MYSQL_CONN_OPTS mysql user)
193207
assert_grep 'Table structure for table' "$OUTPUT"
194208
assert_grep 'Dumping data for table' "$OUTPUT"
209+
assert_grep 'INSERT INTO `user` VALUES' "$OUTPUT"
195210
assert_grep 'Dump completed on' "$OUTPUT"
196211

197-
[ $USE_MYSQL_DOCKER -eq 1 ] && sudo docker stop "$MYSQL_CONTAINER_ID" >/dev/null
198212
log_i 'test main/mariadb success'
199213

200214
########## test main/nano ##########
201215
log_i 'test main/nano'
202216

203217
OUTPUT=$(./dist/"nano${_BIN_SUFFIX}" --version)
204-
assert_grep 'GNU nano, version 8.2' "$OUTPUT"
218+
assert_grep 'GNU nano, version 8.4' "$OUTPUT"
205219

206220
echo -e 'Press Ctrl+K then Ctrl+X.\nthis line will be deleted\nthis line will be kept' >temp_test_nano.txt
207221
./dist/"nano${_BIN_SUFFIX}" --ignorercfiles --saveonexit +2 temp_test_nano.txt
@@ -215,7 +229,7 @@ log_i 'test main/nano success'
215229
log_i 'test main/netcat-openbsd'
216230

217231
OUTPUT=$(./dist/"nc${_BIN_SUFFIX}" -h 2>&1)
218-
assert_grep 'OpenBSD netcat (Debian patchlevel 1.226-1.1)' "$OUTPUT"
232+
assert_grep 'OpenBSD netcat (Debian patchlevel 1.229-1)' "$OUTPUT"
219233

220234
./dist/"nc${_BIN_SUFFIX}" -N -l $TEMP_HTTP_PORT <<<'successful_response' >/dev/null &
221235
sleep 0.5
@@ -228,7 +242,7 @@ log_i 'test main/netcat-openbsd success'
228242
log_i 'test main/nmap'
229243

230244
OUTPUT=$(./dist/"nmap${_BIN_SUFFIX}" -V)
231-
assert_grep 'Nmap version 7.95' "$OUTPUT"
245+
assert_grep 'Nmap version 7.97' "$OUTPUT"
232246

233247
OUTPUT=$(./dist/"nmap${_BIN_SUFFIX}" 127.0.0.1)
234248
assert_grep 'Nmap done: 1 IP address (1 host up) scanned' "$OUTPUT"
@@ -252,28 +266,15 @@ log_i 'test main/pigz success'
252266
log_i 'test main/postgresql17'
253267

254268
OUTPUT=$(./dist/"psql${_BIN_SUFFIX}" --version)
255-
assert_grep 'psql (PostgreSQL) 17.4' "$OUTPUT"
269+
assert_grep 'psql (PostgreSQL) 17.5' "$OUTPUT"
256270
OUTPUT=$(./dist/"pg_dump${_BIN_SUFFIX}" --version)
257-
assert_grep 'pg_dump (PostgreSQL) 17.4' "$OUTPUT"
258-
259-
if [ $USE_POSTGRES_DOCKER -eq 1 ]; then
260-
POSTGRES_CONTAINER_ID=$(sudo docker run --rm -d -p 5432:5432 -e POSTGRES_PASSWORD=testpw postgres:17.4-alpine)
261-
for i in {1..10}; do
262-
if sudo docker exec "$POSTGRES_CONTAINER_ID" pg_isready | grep -q 'accepting connections'; then
263-
break
264-
fi
265-
log_w "postgres container not started, retry $i"
266-
sleep 2
267-
done
268-
if [ "$i" -ge 10 ]; then log_f 'postgres container failed to'; fi
269-
fi
271+
assert_grep 'pg_dump (PostgreSQL) 17.5' "$OUTPUT"
270272

271273
OUTPUT=$(./dist/"psql${_BIN_SUFFIX}" $POSTGRES_CONN_OPTS -c "select table_name from information_schema.tables where table_schema='information_schema'")
272274
assert_grep 'information_schema_catalog_name' "$OUTPUT"
273275
OUTPUT=$(./dist/"pg_dump${_BIN_SUFFIX}" $POSTGRES_CONN_OPTS)
274276
assert_grep 'PostgreSQL database dump complete' "$OUTPUT"
275277

276-
[ $USE_POSTGRES_DOCKER -eq 1 ] && sudo docker stop "$POSTGRES_CONTAINER_ID" >/dev/null
277278
log_i 'test main/postgresql17 success'
278279

279280
########## test main/procps-ng ##########
@@ -291,7 +292,7 @@ log_i 'test main/procps-ng success'
291292
log_i 'test main/rsync'
292293

293294
OUTPUT=$(./dist/"rsync${_BIN_SUFFIX}" --version)
294-
assert_grep 'version 3.4.0' "$OUTPUT"
295+
assert_grep 'version 3.4.1' "$OUTPUT"
295296

296297
echo 'rsync_test' >temp_test_rsync_from.txt
297298
OUTPUT=$(./dist/"rsync${_BIN_SUFFIX}" -avz temp_test_rsync_from.txt temp_test_rsync_to.txt)
@@ -305,7 +306,7 @@ log_i 'test main/rsync success'
305306
log_i 'test main/socat'
306307

307308
OUTPUT=$(./dist/"socat${_BIN_SUFFIX}" -V)
308-
assert_grep 'socat version 1.8.0.1' "$OUTPUT"
309+
assert_grep 'socat version 1.8.0.3' "$OUTPUT"
309310

310311
one_time_httpd
311312
./dist/"socat${_BIN_SUFFIX}" "TCP-LISTEN:$TEMP_SOCAT_PORT" "TCP4:127.0.0.1:$TEMP_HTTP_PORT" &
@@ -319,7 +320,7 @@ log_i 'test main/socat success'
319320
log_i 'test main/strace'
320321

321322
OUTPUT=$(./dist/"strace${_BIN_SUFFIX}" --version)
322-
assert_grep 'strace -- version 6.12' "$OUTPUT"
323+
assert_grep 'strace -- version 6.13' "$OUTPUT"
323324

324325
OUTPUT=$(./dist/"strace${_BIN_SUFFIX}" -o temp_test_strace.txt cat /dev/null)
325326
OUTPUT=$(cat temp_test_strace.txt)
@@ -374,5 +375,63 @@ assert_grep 'one_time_httpd' "$OUTPUT"
374375

375376
log_i 'test main/wget success'
376377

378+
########## test custom/mysql57 ##########
379+
log_i 'test custom/mysql57'
380+
381+
OUTPUT=$(./dist/"mysql57${_BIN_SUFFIX}" --version)
382+
assert_grep 'Distrib 5.7.44' "$OUTPUT"
383+
OUTPUT=$(./dist/"mysqldump57${_BIN_SUFFIX}" --version)
384+
assert_grep 'Distrib 5.7.44' "$OUTPUT"
385+
386+
OUTPUT=$(./dist/"mysql57${_BIN_SUFFIX}" $MYSQL_CONN_OPTS -e 'select User from mysql.user')
387+
assert_grep 'mysql.infoschema' "$OUTPUT"
388+
OUTPUT=$(./dist/"mysqldump57${_BIN_SUFFIX}" $MYSQL_CONN_OPTS mysql user)
389+
assert_grep 'Table structure for table' "$OUTPUT"
390+
assert_grep 'Dumping data for table' "$OUTPUT"
391+
assert_grep 'INSERT INTO `user` VALUES' "$OUTPUT"
392+
assert_grep 'Dump completed on' "$OUTPUT"
393+
394+
log_i 'test custom/mysql57 success'
395+
396+
########## test custom/mysql80 ##########
397+
log_i 'test custom/mysql80'
398+
399+
OUTPUT=$(./dist/"mysql80${_BIN_SUFFIX}" --version)
400+
assert_grep 'Ver 8.0.42' "$OUTPUT"
401+
OUTPUT=$(./dist/"mysqldump80${_BIN_SUFFIX}" --version)
402+
assert_grep 'Ver 8.0.42' "$OUTPUT"
403+
404+
OUTPUT=$(./dist/"mysql80${_BIN_SUFFIX}" $MYSQL_CONN_OPTS -e 'select User from mysql.user')
405+
assert_grep 'mysql.infoschema' "$OUTPUT"
406+
OUTPUT=$(./dist/"mysqldump80${_BIN_SUFFIX}" $MYSQL_CONN_OPTS mysql user)
407+
assert_grep 'Table structure for table' "$OUTPUT"
408+
assert_grep 'Dumping data for table' "$OUTPUT"
409+
assert_grep 'INSERT INTO `user` VALUES' "$OUTPUT"
410+
assert_grep 'Dump completed on' "$OUTPUT"
411+
412+
log_i 'test custom/mysql80 success'
413+
414+
########## test custom/mysql84 ##########
415+
log_i 'test custom/mysql84'
416+
417+
OUTPUT=$(./dist/"mysql84${_BIN_SUFFIX}" --version)
418+
assert_grep 'Ver 8.4.5' "$OUTPUT"
419+
OUTPUT=$(./dist/"mysqldump84${_BIN_SUFFIX}" --version)
420+
assert_grep 'Ver 8.4.5' "$OUTPUT"
421+
422+
OUTPUT=$(./dist/"mysql84${_BIN_SUFFIX}" $MYSQL_CONN_OPTS -e 'select User from mysql.user')
423+
assert_grep 'mysql.infoschema' "$OUTPUT"
424+
OUTPUT=$(./dist/"mysqldump84${_BIN_SUFFIX}" $MYSQL_CONN_OPTS mysql user)
425+
assert_grep 'Table structure for table' "$OUTPUT"
426+
assert_grep 'Dumping data for table' "$OUTPUT"
427+
assert_grep 'INSERT INTO `user` VALUES' "$OUTPUT"
428+
assert_grep 'Dump completed on' "$OUTPUT"
429+
430+
log_i 'test custom/mysql84 success'
431+
377432
########## ########## ##########
433+
[ $START_REDIS_DOCKER -eq 1 ] && sudo docker stop "$REDIS_CONTAINER_ID" >/dev/null
434+
[ $START_MYSQL_DOCKER -eq 1 ] && sudo docker stop "$MYSQL_CONTAINER_ID" >/dev/null
435+
[ $START_POSTGRES_DOCKER -eq 1 ] && sudo docker stop "$POSTGRES_CONTAINER_ID" >/dev/null
436+
378437
log_i 'all tests success'

0 commit comments

Comments
 (0)