99
1010# ######### environment variables ##########
1111ENABLE_DEBUG=0
12- _BIN_SUFFIX=' _v20250408 .0_linux_amd64'
12+ _BIN_SUFFIX=' _v20250601 .0_linux_amd64'
1313REDIS_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'
1515POSTGRES_CONN_OPTS=' ' # 'postgresql://postgres:testpw@127.0.0.1/postgres'
1616TEMP_HTTP_PORT=18080
1717TEMP_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
3536if [ -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
3851fi
39- USE_MYSQL_DOCKER=0
52+
53+ START_MYSQL_DOCKER=0
4054if [ -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
4369fi
44- USE_POSTGRES_DOCKER=0
70+
71+ START_POSTGRES_DOCKER=0
4572if [ -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
4887fi
4988
5089# ######### test community/fio ##########
5190log_i ' test community/fio'
5291
5392OUTPUT=$( ./dist/" fio${_BIN_SUFFIX} " --version)
54- assert_grep ' fio-3.38 ' " $OUTPUT "
93+ assert_grep ' fio-3.39 ' " $OUTPUT "
5594
5695OUTPUT=$( ./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'
68107log_i ' test community/redis'
69108
70109OUTPUT=$( ./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
85112OUTPUT=$( ./dist/" redis-cli${_BIN_SUFFIX} " $REDIS_CONN_OPTS set tkey tvalue)
86113assert_grep ' OK' " $OUTPUT "
87114OUTPUT=$( ./dist/" redis-cli${_BIN_SUFFIX} " $REDIS_CONN_OPTS get tkey)
88115assert_grep ' tvalue' " $OUTPUT "
89116
90- [ $USE_REDIS_DOCKER -eq 1 ] && sudo docker stop " $REDIS_CONTAINER_ID " > /dev/null
91117log_i ' test community/redis success'
92118
93119# ######### test main/7zip ##########
94120log_i ' test main/7zip'
95121
96122OUTPUT=$( ./dist/" 7z${_BIN_SUFFIX} " --help)
97- assert_grep ' 7-Zip (z) 24.08 ' " $OUTPUT "
123+ assert_grep ' 7-Zip (z) 24.09 ' " $OUTPUT "
98124
99125echo ' test_7zip' > temp_test_7zip.txt
100126OUTPUT=$( ./dist/" 7z${_BIN_SUFFIX} " a temp_test_7zip.7z temp_test_7zip.txt)
@@ -113,7 +139,7 @@ log_i 'test main/7zip success'
113139log_i ' test main/curl'
114140
115141OUTPUT=$( ./dist/" curl${_BIN_SUFFIX} " --version)
116- assert_grep ' curl 8.12.1 ' " $OUTPUT "
142+ assert_grep ' curl 8.14.0 ' " $OUTPUT "
117143
118144one_time_httpd
119145OUTPUT=$( ./dist/" curl${_BIN_SUFFIX} " --silent " http://127.0.0.1:$TEMP_HTTP_PORT " )
@@ -125,7 +151,7 @@ log_i 'test main/curl success'
125151log_i ' test main/htop'
126152
127153OUTPUT=$( ./dist/" htop${_BIN_SUFFIX} " --version)
128- assert_grep ' htop 3.3.0 ' " $OUTPUT "
154+ assert_grep ' htop 3.4.1 ' " $OUTPUT "
129155
130156OUTPUT=$( echo q | ./dist/" htop${_BIN_SUFFIX} " --no-color)
131157assert_grep ' Load average' " $OUTPUT "
@@ -136,7 +162,7 @@ log_i 'test main/htop success'
136162log_i ' test main/iperf3'
137163
138164OUTPUT=$( ./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
142168sleep 0.5
@@ -149,7 +175,7 @@ log_i 'test main/iperf3 success'
149175log_i ' test main/iproute2'
150176
151177OUTPUT=$( ./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
154180OUTPUT=$( ./dist/" ss${_BIN_SUFFIX} " --tcp --listening --numeric --processes)
155181assert_grep ' Local Address:Port' " $OUTPUT "
@@ -175,33 +201,21 @@ assert_grep 'from 11.4.5-MariaDB' "$OUTPUT"
175201OUTPUT=$( ./dist/" mariadb-dump${_BIN_SUFFIX} " --version)
176202assert_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-
190204OUTPUT=$( ./dist/" mariadb${_BIN_SUFFIX} " $MYSQL_CONN_OPTS -e ' select User from mysql.user' )
191205assert_grep ' mysql.infoschema' " $OUTPUT "
192206OUTPUT=$( ./dist/" mariadb-dump${_BIN_SUFFIX} " $MYSQL_CONN_OPTS mysql user)
193207assert_grep ' Table structure for table' " $OUTPUT "
194208assert_grep ' Dumping data for table' " $OUTPUT "
209+ assert_grep ' INSERT INTO `user` VALUES' " $OUTPUT "
195210assert_grep ' Dump completed on' " $OUTPUT "
196211
197- [ $USE_MYSQL_DOCKER -eq 1 ] && sudo docker stop " $MYSQL_CONTAINER_ID " > /dev/null
198212log_i ' test main/mariadb success'
199213
200214# ######### test main/nano ##########
201215log_i ' test main/nano'
202216
203217OUTPUT=$( ./dist/" nano${_BIN_SUFFIX} " --version)
204- assert_grep ' GNU nano, version 8.2 ' " $OUTPUT "
218+ assert_grep ' GNU nano, version 8.4 ' " $OUTPUT "
205219
206220echo -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'
215229log_i ' test main/netcat-openbsd'
216230
217231OUTPUT=$( ./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 &
221235sleep 0.5
@@ -228,7 +242,7 @@ log_i 'test main/netcat-openbsd success'
228242log_i ' test main/nmap'
229243
230244OUTPUT=$( ./dist/" nmap${_BIN_SUFFIX} " -V)
231- assert_grep ' Nmap version 7.95 ' " $OUTPUT "
245+ assert_grep ' Nmap version 7.97 ' " $OUTPUT "
232246
233247OUTPUT=$( ./dist/" nmap${_BIN_SUFFIX} " 127.0.0.1)
234248assert_grep ' Nmap done: 1 IP address (1 host up) scanned' " $OUTPUT "
@@ -252,28 +266,15 @@ log_i 'test main/pigz success'
252266log_i ' test main/postgresql17'
253267
254268OUTPUT=$( ./dist/" psql${_BIN_SUFFIX} " --version)
255- assert_grep ' psql (PostgreSQL) 17.4 ' " $OUTPUT "
269+ assert_grep ' psql (PostgreSQL) 17.5 ' " $OUTPUT "
256270OUTPUT=$( ./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
271273OUTPUT=$( ./dist/" psql${_BIN_SUFFIX} " $POSTGRES_CONN_OPTS -c " select table_name from information_schema.tables where table_schema='information_schema'" )
272274assert_grep ' information_schema_catalog_name' " $OUTPUT "
273275OUTPUT=$( ./dist/" pg_dump${_BIN_SUFFIX} " $POSTGRES_CONN_OPTS )
274276assert_grep ' PostgreSQL database dump complete' " $OUTPUT "
275277
276- [ $USE_POSTGRES_DOCKER -eq 1 ] && sudo docker stop " $POSTGRES_CONTAINER_ID " > /dev/null
277278log_i ' test main/postgresql17 success'
278279
279280# ######### test main/procps-ng ##########
@@ -291,7 +292,7 @@ log_i 'test main/procps-ng success'
291292log_i ' test main/rsync'
292293
293294OUTPUT=$( ./dist/" rsync${_BIN_SUFFIX} " --version)
294- assert_grep ' version 3.4.0 ' " $OUTPUT "
295+ assert_grep ' version 3.4.1 ' " $OUTPUT "
295296
296297echo ' rsync_test' > temp_test_rsync_from.txt
297298OUTPUT=$( ./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'
305306log_i ' test main/socat'
306307
307308OUTPUT=$( ./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
310311one_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'
319320log_i ' test main/strace'
320321
321322OUTPUT=$( ./dist/" strace${_BIN_SUFFIX} " --version)
322- assert_grep ' strace -- version 6.12 ' " $OUTPUT "
323+ assert_grep ' strace -- version 6.13 ' " $OUTPUT "
323324
324325OUTPUT=$( ./dist/" strace${_BIN_SUFFIX} " -o temp_test_strace.txt cat /dev/null)
325326OUTPUT=$( cat temp_test_strace.txt)
@@ -374,5 +375,63 @@ assert_grep 'one_time_httpd' "$OUTPUT"
374375
375376log_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+
378437log_i ' all tests success'
0 commit comments