Skip to content

Commit d8a990d

Browse files
authored
chore: add workflow to check the initialization SQL handling (#273)
1 parent 3e9610d commit d8a990d

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

.github/workflows/server-test.yml

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,89 @@ jobs:
7474
echo "DuckDB features test failed"
7575
exit 1
7676
fi
77+
78+
- name: Check the loaded extensions, created secrets and global variables
79+
run: |
80+
# Check AWS extension status
81+
if ! psql -h 127.0.0.1 -p 15432 -U postgres -c "SELECT extension_name, installed, description FROM duckdb_extensions() where extension_name = 'aws'" | grep -q "aws.*f"; then
82+
echo "AWS extension check failed, extension is installed"
83+
psql -h 127.0.0.1 -p 15432 -U postgres -c "SELECT extension_name, installed, description FROM duckdb_extensions() where extension_name = 'aws'"
84+
exit 1
85+
fi
86+
87+
# Check secrets
88+
if [ $(psql -h 127.0.0.1 -p 15432 -U postgres -c "SELECT name, type, provider, persistent, storage, secret_string FROM duckdb_secrets()" | grep -c ".") -gt 3 ]; then
89+
echo "Secrets check failed - unexpected secrets found"
90+
psql -h 127.0.0.1 -p 15432 -U postgres -c "SELECT name, type, provider, persistent, storage, secret_string FROM duckdb_secrets()"
91+
exit 1
92+
fi
93+
94+
# Check if binlog_expire_logs_seconds equals '12345'
95+
if mysql -h127.0.0.1 -P13306 -uroot -e "SHOW VARIABLES LIKE 'binlog_expire_logs_seconds'" | grep -q "12345"; then
96+
echo "MySQL variable check failed"
97+
mysql -h127.0.0.1 -P13306 -uroot -e "SHOW VARIABLES LIKE 'binlog_expire_logs_seconds'"
98+
exit 1
99+
fi
100+
101+
echo "Extension, secrets and global variable check successful"
102+
103+
- name: Stop MyDuck Server
104+
run: |
105+
docker rm -f myduck
106+
107+
- name: Start MyDuck Server in server mode with initialization SQLs
108+
run: |
109+
# This will be executed on PostgreSQL protocol.
110+
cat <<EOF > init_duckdb.sql
111+
INSTALL aws;
112+
CREATE SECRET my_secret (
113+
TYPE S3,
114+
KEY_ID 'my_secret_key',
115+
SECRET 'my_secret_value',
116+
REGION 'my_region'
117+
);
118+
EOF
119+
120+
# This will be executed on MySQL protocol.
121+
cat <<EOF > init_mysql.sql
122+
SET GLOBAL binlog_expire_logs_seconds = 12345;
123+
EOF
124+
125+
docker run -d --name myduck \
126+
-p 13306:3306 \
127+
-p 15432:5432 \
128+
--env=SETUP_MODE=SERVER \
129+
-v ./init_duckdb.sql:/docker-entrypoint-initdb.d/postgres/init_duckdb.sql \
130+
-v ./init_mysql.sql:/docker-entrypoint-initdb.d/mysql/init_mysql.sql \
131+
apecloud/myduckserver:latest
132+
133+
# Wait for MyDuck to be ready
134+
sleep 10
135+
136+
- name: Check the loaded extensions, created secrets and global variables after initialization
137+
run: |
138+
# Check AWS extension status
139+
if ! psql -h 127.0.0.1 -p 15432 -U postgres -c "SELECT extension_name, installed, description FROM duckdb_extensions() where extension_name = 'aws'" | grep -q "aws.*t"; then
140+
echo "AWS extension check failed, extension is not installed"
141+
psql -h 127.0.0.1 -p 15432 -U postgres -c "SELECT extension_name, installed, description FROM duckdb_extensions() where extension_name = 'aws'"
142+
exit 1
143+
fi
144+
145+
# Check secrets
146+
if [ $(psql -h 127.0.0.1 -p 15432 -U postgres -c "SELECT name, type, provider, persistent, storage, secret_string FROM duckdb_secrets()" | grep -c ".") -ne 4 ]; then
147+
echo "Secrets check failed - expected 4 secrets"
148+
psql -h 127.0.0.1 -p 15432 -U postgres -c "SELECT name, type, provider, persistent, storage, secret_string FROM duckdb_secrets()"
149+
exit 1
150+
fi
151+
152+
# Check if binlog_expire_logs_seconds equals '12345'
153+
if ! mysql -h127.0.0.1 -P13306 -uroot -e "SHOW VARIABLES LIKE 'binlog_expire_logs_seconds'" | grep -q "12345"; then
154+
echo "MySQL variable check failed"
155+
mysql -h127.0.0.1 -P13306 -uroot -e "SHOW VARIABLES LIKE 'binlog_expire_logs_seconds'"
156+
exit 1
157+
fi
158+
159+
echo "Extension, secrets and global variable check successful"
77160
78161
- name: Cleanup
79162
if: always()

0 commit comments

Comments
 (0)