Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 22 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ jobs:
with:
path: target
key: check-wasm32-target-${{ runner.os }}-${{ steps.rust-version.outputs.version }}-${{ hashFiles('Cargo.lock') }}
- run: cargo check --target wasm32-unknown-unknown --manifest-path tokio-postgres/Cargo.toml --no-default-features --features js
- run: cargo check --target wasm32-unknown-unknown --manifest-path tokio-gaussdb/Cargo.toml --no-default-features --features js
env:
RUSTFLAGS: --cfg getrandom_backend="wasm_js"

Expand All @@ -82,6 +82,17 @@ jobs:
steps:
- uses: actions/checkout@v4
- run: docker compose up -d
- name: Wait for OpenGauss to be ready
run: |
echo "Waiting for OpenGauss to start..."
for i in {1..30}; do
if docker exec opengauss-ci gsql -U gaussdb -d postgres -c "SELECT 1;" 2>/dev/null; then
echo "OpenGauss is ready!"
break
fi
echo "Waiting... ($i/30)"
sleep 2
done
- uses: sfackler/actions/rustup@master
with:
version: 1.81.0
Expand All @@ -103,6 +114,13 @@ jobs:
with:
path: target
key: test-target-${{ runner.os }}-${{ steps.rust-version.outputs.version }}-${{ hashFiles('Cargo.lock') }}y
- run: cargo test --all
- run: cargo test --manifest-path tokio-postgres/Cargo.toml --no-default-features
- run: cargo test --manifest-path tokio-postgres/Cargo.toml --all-features
- name: Run comprehensive tests
run: |
chmod +x scripts/ci-test.sh
./scripts/ci-test.sh
- name: Run feature tests
run: |
cargo test --manifest-path tokio-gaussdb/Cargo.toml --no-default-features --lib
cargo test --manifest-path tokio-gaussdb/Cargo.toml --all-features --lib
env:
DATABASE_URL: "host=localhost port=5433 user=gaussdb password=Gaussdb@123 dbname=postgres"
30 changes: 0 additions & 30 deletions docker-compose-opengauss.yml

This file was deleted.

34 changes: 27 additions & 7 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,30 @@
version: '2'
version: '3.8'

services:
postgres:
image: docker.io/postgres:17
opengauss:
image: opengauss/opengauss-server:latest
container_name: opengauss-test
privileged: true
restart: unless-stopped
ports:
- 5433:5433
volumes:
- ./docker/sql_setup.sh:/docker-entrypoint-initdb.d/sql_setup.sh
- "5433:5432" # 映射到5433端口,与现有PostgreSQL测试保持一致
environment:
POSTGRES_PASSWORD: postgres
- GS_PASSWORD=Gaussdb@123 # OpenGauss密码:大写字母+小写字母+数字+特殊字符,长度>=8
- GS_NODENAME=opengauss
- GS_USERNAME=gaussdb # 自定义用户名

#volumes:
#- opengauss_data:/var/lib/opengauss/data
#- ./docker/opengauss_setup.sh:/docker-entrypoint-initdb.d/opengauss_setup.sh
networks:
- gaussdb_network
healthcheck:
test: ["CMD-SHELL", "gsql -d postgres -U gaussdb -c 'SELECT 1;' || exit 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s

networks:
gaussdb_network:
driver: bridge
102 changes: 102 additions & 0 deletions docker/opengauss_init.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
#!/bin/bash
# OpenGauss CI环境初始化脚本

set -e

echo "🔧 开始配置OpenGauss测试环境..."

# 等待OpenGauss启动
echo "⏳ 等待OpenGauss启动..."
until gsql -U gaussdb -d postgres -c '\q' 2>/dev/null; do
echo "等待数据库启动..."
sleep 2
done

echo "✅ OpenGauss已启动,开始配置..."

# 创建测试用户
echo "👥 创建测试用户..."
gsql -U gaussdb -d postgres << 'EOSQL'
-- 创建测试用户
DO $$
BEGIN
-- pass_user (明文密码)
IF NOT EXISTS (SELECT FROM pg_catalog.pg_user WHERE usename = 'pass_user') THEN
CREATE USER pass_user WITH PASSWORD 'password';
GRANT CONNECT ON DATABASE postgres TO pass_user;
GRANT USAGE ON SCHEMA public TO pass_user;
GRANT CREATE ON SCHEMA public TO pass_user;
GRANT ALL PRIVILEGES ON SCHEMA public TO pass_user;
RAISE NOTICE 'Created user: pass_user';
END IF;

-- md5_user (MD5认证)
IF NOT EXISTS (SELECT FROM pg_catalog.pg_user WHERE usename = 'md5_user') THEN
CREATE USER md5_user WITH PASSWORD 'password';
GRANT CONNECT ON DATABASE postgres TO md5_user;
GRANT USAGE ON SCHEMA public TO md5_user;
GRANT CREATE ON SCHEMA public TO md5_user;
GRANT ALL PRIVILEGES ON SCHEMA public TO md5_user;
RAISE NOTICE 'Created user: md5_user';
END IF;

-- scram_user (SCRAM-SHA-256认证)
IF NOT EXISTS (SELECT FROM pg_catalog.pg_user WHERE usename = 'scram_user') THEN
CREATE USER scram_user WITH PASSWORD 'password';
GRANT CONNECT ON DATABASE postgres TO scram_user;
GRANT USAGE ON SCHEMA public TO scram_user;
GRANT CREATE ON SCHEMA public TO scram_user;
GRANT ALL PRIVILEGES ON SCHEMA public TO scram_user;
RAISE NOTICE 'Created user: scram_user';
END IF;

-- 确保postgres用户权限
GRANT ALL PRIVILEGES ON DATABASE postgres TO postgres;

-- 确保gaussdb用户权限
GRANT ALL PRIVILEGES ON DATABASE postgres TO gaussdb;
END
$$;

-- 创建一些测试需要的扩展 (如果支持的话)
DO $$
BEGIN
-- 尝试创建hstore扩展
BEGIN
CREATE EXTENSION IF NOT EXISTS hstore;
RAISE NOTICE 'Created extension: hstore';
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'hstore extension not available: %', SQLERRM;
END;

-- 尝试创建citext扩展
BEGIN
CREATE EXTENSION IF NOT EXISTS citext;
RAISE NOTICE 'Created extension: citext';
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'citext extension not available: %', SQLERRM;
END;
END
$$;

-- 显示创建的用户
SELECT 'User Summary:' as info;
SELECT usename, usecreatedb, usesuper, userepl
FROM pg_user
WHERE usename IN ('pass_user', 'md5_user', 'scram_user', 'postgres', 'gaussdb')
ORDER BY usename;

-- 显示数据库版本
SELECT version() as database_version;

-- 测试连接
SELECT 'OpenGauss test environment setup completed successfully!' as status;
EOSQL

echo "✅ OpenGauss测试环境配置完成!"
echo "📊 测试用户:"
echo " - pass_user (password认证)"
echo " - md5_user (md5认证)"
echo " - scram_user (scram-sha-256认证)"
echo " - postgres (trust认证)"
echo " - gaussdb (sha256认证)"
Loading
Loading