Skip to content

Commit 02986f6

Browse files
authored
Merge pull request #2 from louloulin/feature-gaussdb
fix tokio-gaussdb tests and doc complete
2 parents b049521 + 08013a7 commit 02986f6

File tree

13 files changed

+1669
-141
lines changed

13 files changed

+1669
-141
lines changed

.github/workflows/ci.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ jobs:
7272
with:
7373
path: target
7474
key: check-wasm32-target-${{ runner.os }}-${{ steps.rust-version.outputs.version }}-${{ hashFiles('Cargo.lock') }}
75-
- run: cargo check --target wasm32-unknown-unknown --manifest-path tokio-postgres/Cargo.toml --no-default-features --features js
75+
- run: cargo check --target wasm32-unknown-unknown --manifest-path tokio-gaussdb/Cargo.toml --no-default-features --features js
7676
env:
7777
RUSTFLAGS: --cfg getrandom_backend="wasm_js"
7878

@@ -82,6 +82,17 @@ jobs:
8282
steps:
8383
- uses: actions/checkout@v4
8484
- run: docker compose up -d
85+
- name: Wait for OpenGauss to be ready
86+
run: |
87+
echo "Waiting for OpenGauss to start..."
88+
for i in {1..30}; do
89+
if docker exec opengauss-ci gsql -U gaussdb -d postgres -c "SELECT 1;" 2>/dev/null; then
90+
echo "OpenGauss is ready!"
91+
break
92+
fi
93+
echo "Waiting... ($i/30)"
94+
sleep 2
95+
done
8596
- uses: sfackler/actions/rustup@master
8697
with:
8798
version: 1.81.0
@@ -103,6 +114,13 @@ jobs:
103114
with:
104115
path: target
105116
key: test-target-${{ runner.os }}-${{ steps.rust-version.outputs.version }}-${{ hashFiles('Cargo.lock') }}y
106-
- run: cargo test --all
107-
- run: cargo test --manifest-path tokio-postgres/Cargo.toml --no-default-features
108-
- run: cargo test --manifest-path tokio-postgres/Cargo.toml --all-features
117+
- name: Run comprehensive tests
118+
run: |
119+
chmod +x scripts/ci-test.sh
120+
./scripts/ci-test.sh
121+
- name: Run feature tests
122+
run: |
123+
cargo test --manifest-path tokio-gaussdb/Cargo.toml --no-default-features --lib
124+
cargo test --manifest-path tokio-gaussdb/Cargo.toml --all-features --lib
125+
env:
126+
DATABASE_URL: "host=localhost port=5433 user=gaussdb password=Gaussdb@123 dbname=postgres"

docker-compose-opengauss.yml

Lines changed: 0 additions & 30 deletions
This file was deleted.

docker-compose.yml

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,30 @@
1-
version: '2'
1+
version: '3.8'
2+
23
services:
3-
postgres:
4-
image: docker.io/postgres:17
4+
opengauss:
5+
image: opengauss/opengauss-server:latest
6+
container_name: opengauss-test
7+
privileged: true
8+
restart: unless-stopped
59
ports:
6-
- 5433:5433
7-
volumes:
8-
- ./docker/sql_setup.sh:/docker-entrypoint-initdb.d/sql_setup.sh
10+
- "5433:5432" # 映射到5433端口,与现有PostgreSQL测试保持一致
911
environment:
10-
POSTGRES_PASSWORD: postgres
12+
- GS_PASSWORD=Gaussdb@123 # OpenGauss密码:大写字母+小写字母+数字+特殊字符,长度>=8
13+
- GS_NODENAME=opengauss
14+
- GS_USERNAME=gaussdb # 自定义用户名
15+
16+
#volumes:
17+
#- opengauss_data:/var/lib/opengauss/data
18+
#- ./docker/opengauss_setup.sh:/docker-entrypoint-initdb.d/opengauss_setup.sh
19+
networks:
20+
- gaussdb_network
21+
healthcheck:
22+
test: ["CMD-SHELL", "gsql -d postgres -U gaussdb -c 'SELECT 1;' || exit 1"]
23+
interval: 30s
24+
timeout: 10s
25+
retries: 5
26+
start_period: 60s
27+
28+
networks:
29+
gaussdb_network:
30+
driver: bridge

docker/opengauss_init.sh

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
#!/bin/bash
2+
# OpenGauss CI环境初始化脚本
3+
4+
set -e
5+
6+
echo "🔧 开始配置OpenGauss测试环境..."
7+
8+
# 等待OpenGauss启动
9+
echo "⏳ 等待OpenGauss启动..."
10+
until gsql -U gaussdb -d postgres -c '\q' 2>/dev/null; do
11+
echo "等待数据库启动..."
12+
sleep 2
13+
done
14+
15+
echo "✅ OpenGauss已启动,开始配置..."
16+
17+
# 创建测试用户
18+
echo "👥 创建测试用户..."
19+
gsql -U gaussdb -d postgres << 'EOSQL'
20+
-- 创建测试用户
21+
DO $$
22+
BEGIN
23+
-- pass_user (明文密码)
24+
IF NOT EXISTS (SELECT FROM pg_catalog.pg_user WHERE usename = 'pass_user') THEN
25+
CREATE USER pass_user WITH PASSWORD 'password';
26+
GRANT CONNECT ON DATABASE postgres TO pass_user;
27+
GRANT USAGE ON SCHEMA public TO pass_user;
28+
GRANT CREATE ON SCHEMA public TO pass_user;
29+
GRANT ALL PRIVILEGES ON SCHEMA public TO pass_user;
30+
RAISE NOTICE 'Created user: pass_user';
31+
END IF;
32+
33+
-- md5_user (MD5认证)
34+
IF NOT EXISTS (SELECT FROM pg_catalog.pg_user WHERE usename = 'md5_user') THEN
35+
CREATE USER md5_user WITH PASSWORD 'password';
36+
GRANT CONNECT ON DATABASE postgres TO md5_user;
37+
GRANT USAGE ON SCHEMA public TO md5_user;
38+
GRANT CREATE ON SCHEMA public TO md5_user;
39+
GRANT ALL PRIVILEGES ON SCHEMA public TO md5_user;
40+
RAISE NOTICE 'Created user: md5_user';
41+
END IF;
42+
43+
-- scram_user (SCRAM-SHA-256认证)
44+
IF NOT EXISTS (SELECT FROM pg_catalog.pg_user WHERE usename = 'scram_user') THEN
45+
CREATE USER scram_user WITH PASSWORD 'password';
46+
GRANT CONNECT ON DATABASE postgres TO scram_user;
47+
GRANT USAGE ON SCHEMA public TO scram_user;
48+
GRANT CREATE ON SCHEMA public TO scram_user;
49+
GRANT ALL PRIVILEGES ON SCHEMA public TO scram_user;
50+
RAISE NOTICE 'Created user: scram_user';
51+
END IF;
52+
53+
-- 确保postgres用户权限
54+
GRANT ALL PRIVILEGES ON DATABASE postgres TO postgres;
55+
56+
-- 确保gaussdb用户权限
57+
GRANT ALL PRIVILEGES ON DATABASE postgres TO gaussdb;
58+
END
59+
$$;
60+
61+
-- 创建一些测试需要的扩展 (如果支持的话)
62+
DO $$
63+
BEGIN
64+
-- 尝试创建hstore扩展
65+
BEGIN
66+
CREATE EXTENSION IF NOT EXISTS hstore;
67+
RAISE NOTICE 'Created extension: hstore';
68+
EXCEPTION WHEN OTHERS THEN
69+
RAISE NOTICE 'hstore extension not available: %', SQLERRM;
70+
END;
71+
72+
-- 尝试创建citext扩展
73+
BEGIN
74+
CREATE EXTENSION IF NOT EXISTS citext;
75+
RAISE NOTICE 'Created extension: citext';
76+
EXCEPTION WHEN OTHERS THEN
77+
RAISE NOTICE 'citext extension not available: %', SQLERRM;
78+
END;
79+
END
80+
$$;
81+
82+
-- 显示创建的用户
83+
SELECT 'User Summary:' as info;
84+
SELECT usename, usecreatedb, usesuper, userepl
85+
FROM pg_user
86+
WHERE usename IN ('pass_user', 'md5_user', 'scram_user', 'postgres', 'gaussdb')
87+
ORDER BY usename;
88+
89+
-- 显示数据库版本
90+
SELECT version() as database_version;
91+
92+
-- 测试连接
93+
SELECT 'OpenGauss test environment setup completed successfully!' as status;
94+
EOSQL
95+
96+
echo "✅ OpenGauss测试环境配置完成!"
97+
echo "📊 测试用户:"
98+
echo " - pass_user (password认证)"
99+
echo " - md5_user (md5认证)"
100+
echo " - scram_user (scram-sha-256认证)"
101+
echo " - postgres (trust认证)"
102+
echo " - gaussdb (sha256认证)"

0 commit comments

Comments
 (0)