Pipeline 集成测试

    目前支持 Native 和 Docker 两种环境。

    1. Docker 环境由 Maven 运行,适用于云编译环境和测试 ShardingSphere-Proxy 的场景,如:GitHub Action。

    目前支持的数据库类型:MySQL、PostgreSQL、openGauss。

    模块路径 。

    ${DOCKER-IMAGE} 表示 docker 镜像名称,如 mysql:8${DATABASE-TYPE} 表示数据库类型。 目录:src/test/resources/env

    • it-env.properties:集成测试启动参数。
    • :数据库对应的 ShardingSphere-Proxy 配置文件。
    • ${DATABASE-TYPE}/initdb.sql:数据库初始化 SQL。
    • ${DATABASE-TYPE}/*.cnf,*.conf:以 cnf 或者 conf 结尾的文件,是数据库的配置文件,用于 Docker 挂载。
    • common/command.xml:测试中用到的DistSQL。
    • scenario/:存放测试场景中的 SQL。
    • BaseITCase:提供了通用方法给子类

    用例示例:MySQLGeneralPipelineE2EIT。 覆盖的功能点如下:

    • 库级别迁移(所有表)
    • 表级别迁移(任意多个表)
    • 迁移数据一致性校验
    • 数据迁移过程中支持停写
    • 数据迁移过程中支持重启
    • 数据迁移支持整型主键
    • 数据迁移支持字符串主键
    • 使用非管理员账号进行数据迁移

    it-env.properties 所有属性值都可以通过 Maven 命令行 -D 的方式传入,优先级高于配置文件。

    Native 环境启动

    使用者在本地提前启动 ShardingSphere-Proxy 以及依赖的配置中心(如 ZooKeeper)和数据库。 要求 ShardingSphere-Proxy 的端口是 3307。 以 MySQL 为例,it-env.properties 可以配置如下:

    找到对应的用例,在 IDE 下使用 Junit 的方式启动即可。

    Docker环境启动

    运行以上命令会构建出一个用于集成测试的 Docker 镜像 apache/shardingsphere-proxy-test:latest,该镜像设置了远程调试的端口,默认是3308。 如果仅修改了测试代码,可以复用已有的测试镜像,无须重新构建。

    Docker 模式下,如果需要对 Docker 镜像启动参数进行调整,可以对修改 ShardingSphereProxyDockerContainer 文件中的相关配置。

    ShardingSphere-Proxy 输出的日志带有 :Pipeline-Proxy 前缀。

    使用 Maven 的方式运行用例。以 MySQL 为例: