欢迎光临
我们一直在努力

Strimzi Kafka Operator connect 标签系统测试索引:测试范围、自动生成机制与运行方式

Strimzi Kafka Operator connect 标签系统测试索引:测试范围、自动生成机制与运行方式

【免费下载链接】strimzi-kafka-operator Apache Kafka® running on Kubernetes 【免费下载链接】strimzi-kafka-operator 项目地址: https://gitcode.com/GitHub_Trending/st/strimzi-kafka-operator

本文以 Strimzi Kafka Operator 仓库中的系统测试标签索引文档 connect.md 为主体,完整梳理该标签下覆盖的 34 个 Kafka Connect 系统测试的测试范围与场景划分,并结合同仓库的 systemtest/pom.xml、标签常量定义与测试源码,讲清这份索引的自动生成机制与使用方法。读完后,你将能够:准确判断某个 Connect 相关行为变更应回归哪些系统测试、通过标签筛选并运行对应测试集,以及理解每个测试项背后验证的 Kafka Connect 能力边界(插件构建、扩缩容、认证安全、偏移量管理等)。

一、这份文档是什么:connect 测试标签索引

connect.md 是 Strimzi 系统测试(systemtest)子项目中按“标签(label)”组织的一组测试索引页之一,与同目录下的 bridge.md、kafka.md、metrics.md、security.md 等 12 份标签索引文件并列存放于 development-docs/systemtests/labels/ 目录。

文档由两部分构成:

  • 人工维护的 Description 部分——说明该标签下测试的验证目标:“验证 Kafka Connect 组件,通过连接器确保 Kafka 与外部系统之间可靠的集成。Kafka Connect 实现 Kafka 集群与各类数据源/数据汇之间的数据流。这些测试覆盖插件管理、构建流程、网络配置和多种安全协议等场景。在不同配置与扩缩容场景下保证 Kafka Connect 行为正确,对维护流式生态中的数据一致性与可用性至关重要。”
  • <!– generated part –> 标记之后的自动生成部分——一份带链接的测试清单,每个测试名链接到对应测试类的详细文档页。该注释标记明确提示:此段内容由工具生成,不应手工编辑。
  • 清单中的每个条目都指向按测试类组织的单页文档,例如:

    • io.strimzi.systemtest.connect.ConnectST.md——Kafka Connect 主测试套件,含部署/滚动更新/卸载、扩缩容、认证、偏移量管理等 19 个测试;
    • io.strimzi.systemtest.connect.ConnectBuilderST.md——Connect Builder 插件构建与镜像推送测试,含 7 个测试;
    • 以及散落在其他测试类中但同样与 Connect 相关、被打上 connect 标签的测试,如 CustomResourceStatusST.md、MetricsST.md、LogSettingST.md、ClusterOperatorRbacST.md、MultipleClusterOperatorsST.md、ReconciliationST.md。

    这种“一个标签聚合跨测试类的相关用例”的组织方式,使回归时不必关心测试分布在哪个类里,只需按业务主题(这里是 connect)整组筛选。

    二、自动生成机制:test-docs-generator 插件

    2.1 插件配置

    在 systemtest/pom.xml#L312-L331 中,Maven 构建绑定了 io.skodjob:test-docs-generator-maven-plugin,其关键配置为:

    <plugin>
    <groupId>io.skodjob</groupId>
    <artifactId>test-docs-generator-maven-plugin</artifactId>
    <version>${skodjob-doc.version}</version>
    <executions>
    <execution>
    <phase>install</phase>
    <goals>
    <goal>test-docs-generator</goal>
    </goals>
    </execution>
    </executions>
    <configuration>
    <testsPath>${project.basedir}/src/test/java/io/strimzi/systemtest</testsPath>
    <docsPath>${strimziRootDirectory}/development-docs/systemtests/</docsPath>
    <generateFmf>false</generateFmf>
    <generateDirs>false</generateDirs>
    <includeDependencies>true</includeDependencies>
    </configuration>
    </plugin>

    由此可以确认以下实现事实:

    • 生成时机:插件绑定在 install 阶段,即执行 mvn install 构建 systemtest 模块时,扫描 testsPath(systemtest/src/test/java/io/strimzi/systemtest)下的测试源码,将结果写入 docsPath(仓库根目录下的 development-docs/systemtests/)。
    • 输出形态:每个测试类生成一份 <全限定类名>.md 文档页(含 Description、前置步骤、Steps 步骤表和 Labels),每个标签生成一份 labels/<标签名>.md 聚合索引。connect.md 正是 connect 标签的产物。
    • includeDependencies=true 意味着测试所依赖的前置条件等描述也会一并纳入生成文档。

    这也解释了为什么文档里带有 <!– generated part –> 注释——它是生成器写入的分界标记,开发者修改测试代码后重新构建即可刷新索引,而无需手工维护链接清单。

    2.2 标签常量与注解:connect 标签的声明位置

    标签在源码中有两处平行的定义,分工不同:

  • 文档标签 TestDocsLabels.java#L15:
  • public interface TestDocsLabels {
    String KAFKA = "kafka";
    String BRIDGE = "bridge";
    String CONNECT = "connect";
    …
    }

    该类注释说明这些常量用于 @SuiteDoc#labels() 或 @TestDoc#labels() 注解,即专供文档生成器读取。

  • JUnit 分组标签 TestTags.java#L102 中的 String CONNECT = "connect";,用于测试运行时的分组筛选。
  • 在测试类中,标签通过 skodjob 注解声明。以 ConnectST.java#L120-L126 为例,类上带 @SuiteDoc 与 @Label(value = TestDocsLabels.CONNECT);每个测试方法上则带 @TestDoc 及相同的 @Label(value = TestDocsLabels.CONNECT)。正是这些注解驱动了 connect.md 中测试清单的生成——文档里出现的 34 个测试名,与源码中打了 connect 标签的测试方法一一对应,例如 ConnectST 中的 testDeployRollUndeploy(第 148 行)、testConnectorOffsetManagement(第 1809 行)等。

    三、测试范围:34 个测试按主题拆解

    将索引中的 34 个测试按验证目标归类,可以得到如下全景,这也是“connect 标签”对 Kafka Connect 能力覆盖面的真实写照。

    3.1 生命周期、扩缩容与多节点

    • testDeployRollUndeploy(ConnectST.java#L148):部署、手动滚动更新、卸载的完整生命周期。其单页文档(ConnectST.md)的套件描述为“验证 Kafka Connect 组件的部署、手动滚动更新与卸载”,前置步骤是部署一个用于访问其他 Pod 的 scraper Pod;
    • testKafkaConnectScaleUpScaleDown:副本数横向扩缩容;
    • testScaleConnectWithoutConnectorToZero / testScaleConnectWithConnectorToZero:分别在没有连接器、有连接器两种情况下把 KafkaConnect 缩容到 0,验证连接器状态与数据在缩容/扩容过程中的行为;
    • testScaleConnectAndConnectorSubresource:同时调整 KafkaConnect 副本与 KafkaConnector 任务的 subresource 配置;
    • testMultiNodeKafkaConnectWithConnectorCreation:多节点 KafkaConnect 集群上创建连接器的行为。

    3.2 插件管理与 Connect Builder

    Connect Builder 是 Strimzi 用于按声明式规格(KafkaConnect 中的插件配置)自动构建 Connect 镜像的功能,对应测试集中在 ConnectBuilderST.java:

    • testBuildFailsWithWrongChecksumOfArtifact(L191):制品 checksum 错误时构建必须失败,验证完整性校验;
    • testBuildWithJarTgzAndZip(L276):同时提供 jar、tgz、zip 多种形态的插件制品;
    • testBuildPluginUsingMavenCoordinatesArtifacts(L645):以 Maven 坐标形式声明插件制品并构建;
    • testBuildOtherPluginTypeWithAndWithoutFileName(L574):其他插件类型、带与不带文件名的两种声明方式;
    • testMountPluginUsingImageVolume(L348):通过镜像卷挂载插件(mountedPlugin 类场景),而非打进镜像;
    • testPushIntoImageStream(L417):将构建产物推送到 ImageStream(OpenShift 场景);
    • testUpdateConnectWithAnotherPlugin(L472):已有 Connect 部署后更换插件的更新流程;
    • testKafkaConnectAndConnectorFileSinkPlugin(ConnectST.java#L374):使用 File Sink 连接器验证插件加载与数据落盘,是多个测试复用的基础场景。

    3.3 安全与认证

    覆盖 TLS、SCRAM-SHA 与“奇怪用户名”等边界场景:

    • testKafkaConnectWithPlainAndScramShaAuthentication(ConnectST.java#L273):PLAIN 与 SCRAM-SHA 两种客户端认证;
    • testSecretsWithKafkaConnectWithTlsAndTlsClientAuthentication(L551)与 testSecretsWithKafkaConnectWithTlsAndScramShaAuthentication(L661):分别验证 TLS + 双向 TLS 客户端认证、TLS + SCRAM-SHA 的 Secret 处理;
    • testConnectTlsAuthWithWeirdUserName(L1059)与 testConnectScramShaAuthWithWeirdUserName(L1155):用户名包含特殊字符时的认证正确性;
    • testKafkaConnectWithScramShaAuthenticationRolledAfterPasswordChanged(L1659):密码变更后通过滚动重启使新凭据生效。

    3.4 连接器运行时:偏移量管理与任务自动重启

    这是两个最能体现 Strimzi 对 KafkaConnector 资源语义扩展的测试:

    testConnectorOffsetManagement(ConnectST.java#L1809)。据 ConnectST.md 中对该测试的完整步骤描述,它验证偏移量管理的三种操作 list、alter、reset,关键机制包括:

    • 通过 KafkaConnector 上的 strimzi.io/connector-offsets 注解触发操作(取值 list / alter / reset),操作完成后注解会被移除;
    • list 时由集群 Operator 创建一个 ConfigMap 存放偏移量,需在 .spec.listOffsets.toConfigMap 指定;alter 时从 ConfigMap 读入,需在 .spec.alterOffsets.fromConfigMap 指定;
    • 执行 alter 和 reset 前连接器必须处于停止状态(.spec.state),否则会在连接器 status 中产生警告且偏移量不会更新;
    • 测试流程:创建 KafkaConnect + File Sink 连接器 → 生产/消费 100 条消息 → list 后校验 ConfigMap 中偏移量 → 把 ConfigMap 偏移量改为 20、停连接器、alter → 等注解移除后经 Connect REST API 校验偏移量确为 20 → 再 reset → 校验 API 返回偏移量已清空。

    testConnectorTaskAutoRestart(ConnectST.java#L764):验证 Kafka Connect 任务失败后自动重启功能,属于 KafkaConnector 的 autoRestart 配置行为。

    3.5 横切关注点:指标、日志、状态、RBAC 与多 Operator

    connect 标签的价值也体现在这些“不属于 Connect 专属套件、但涉及 Connect”的用例上:

    • 指标:testKafkaConnectAndConnectorMetrics(MetricsST.md)——KafkaConnect 与连接器的 Prometheus 指标;
    • 日志:testConnectLogSetting(LogSettingST.md)——动态修改 Connect 组件日志级别;
    • CR 状态:testKafkaConnectAndConnectorStatus 与 testKafkaConnectorWithoutClusterConfig(CustomResourceStatusST.md)——KafkaConnect/KafkaConnector 的 status 子资源,以及缺少集群配置时连接器的行为;
    • RBAC:testCRBDeletionErrorIsIgnoredWhenRackAwarenessIsNotEnabled / testCRBDeletionErrorsWhenRackAwarenessIsEnabled(ClusterOperatorRbacST.md)——rack awareness 开/关两种情况下删除 ClusterRoleBinding 时的错误处理;
    • 多集群 Operator 与暂停调和:testMultipleCOsInDifferentNamespaces(MultipleClusterOperatorsST.md)、testPauseReconciliationInKafkaAndKafkaConnectWithConnector(ReconciliationST.md);
    • JVM 与资源、卷挂载:testJvmAndResources(ConnectST.java#L445)验证 JVM 参数与资源限制的下发;testMountingSecretAndConfigMapAsVolumesAndEnvVars(L1445)验证把 Secret/ConfigMap 挂为卷与环境变量两种方式;testCustomAndUpdatedValues(L869)验证自定义配置值的新增与更新。

    四、如何使用:按标签定位用例与运行测试

    4.1 定位与阅读测试细节

    索引文档只给出“有哪些测试”,每个测试的详细描述与步骤表在其所属测试类的文档页中。阅读路径为:

  • 在 connect.md 的 Tests 清单中找到目标测试名;
  • 沿链接跳到对应类文档(如 io.strimzi.systemtest.connect.ConnectST.md),查看 Description、Before test execution steps 与逐步 Steps 表;
  • 再跳到测试源码,例如 testConnectorOffsetManagement 位于 ConnectST.java#L1809。
  • 注意该标签页是构建产物:修改了测试注解或文档元数据后,重新执行 systemtest 模块的 Maven 构建(插件绑定在 install 阶段)即可重新生成索引,手工编辑 <!– generated part –> 之后的内容会在下次构建时被覆盖。

    4.2 按标签运行测试

    源码中 TestTags.java#L102 定义的 CONNECT = "connect" 是 JUnit 分组标签;systemtest/pom.xml#L347-L369 则展示了通过 Surefire groups 属性按 profile(如 acceptance、regression)过滤测试的运行模式。可以推断,以相同方式使用 Surefire 的 -Dgroups=connect 参数,即可只运行打了 connect 标签的整套用例,用于聚焦 Kafka Connect 的回归验证(具体参数名以仓库 CI 脚本 run_tests.sh 的约定为准)。

    五、延伸:继续深入的仓库路径

    • 标签索引全族(12 个主题):development-docs/systemtests/labels/;
    • 各 Connect 测试类的完整步骤文档:io.strimzi.systemtest.connect.ConnectST.md、io.strimzi.systemtest.connect.ConnectBuilderST.md;
    • 测试源码:ConnectST.java、ConnectBuilderST.java;
    • 标签与分组常量:TestDocsLabels.java、TestTags.java;
    • 生成器插件配置:systemtest/pom.xml#L312-L331;
    • 系统测试整体说明:development-docs/TESTING.md。

    【免费下载链接】strimzi-kafka-operator Apache Kafka® running on Kubernetes 【免费下载链接】strimzi-kafka-operator 项目地址: https://gitcode.com/GitHub_Trending/st/strimzi-kafka-operator

    创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

    赞(0)
    未经允许不得转载:171主机测评 » Strimzi Kafka Operator connect 标签系统测试索引:测试范围、自动生成机制与运行方式
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址