测试与验证
构建您想要验证的包(例如
apache)cd apache elastic-package build启动测试环境
在 Integrations 仓库内运行
elastic-package stack up -d -v上面的命令将使用 Docker 容器启动 Elastic Stack(Elasticsearch、Kibana 和 Elastic Package Registry)。它会使用第 1 步中构建的包重新构建 Elastic Package Registry Docker 镜像,并启动 Elastic Package Registry。
要重新加载已部署的 Elastic Package Registry,请使用以下命令
elastic-package stack up -v -d --services package-registry验证您的集成是否以正确的版本提供。例如,MySQL:https://:8080/search?package=mysql(如果包处于实验版本,请使用
experimental=true参数。或者,如果适用,请在包的manifest.yml中将release设置为beta或更高版本。)[ { "description": "MySQL Integration", "download": "/epr/mysql/mysql-0.0.1.tar.gz", "icons": [ { "src": "/package/mysql/0.0.1/img/logo_mysql.svg", "title": "logo mysql", "size": "32x32", "type": "image/svg+xml" } ], "name": "mysql", "path": "/package/mysql/0.0.1", "title": "MySQL", "type": "integration", "version": "0.0.1" } ]elastic-package stack提供了一个已注册的 Elastic Agent 实例。如果您可以在 Docker 网络中运行(您正在集成的)服务,并且不需要重新构建 Elastic-Agent 或其子进程(例如 Filebeat 或 Metricbeat),请使用该实例,而不是本地应用程序。服务 Docker 镜像可用于 <<system-testing,系统测试]。如果您更喜欢使用 Elastic Agent 的本地实例,请继续执行第 4 步和第 5 步(可选) 下载 Elastic Agent。
(可选) 注册 Elastic Agent 并启动它
在 Kibana UI 中使用“Enroll new agent”(注册新代理)选项(Ingest Manager → Fleet → 创建用户并启用 Fleet),并运行类似的命令
./elastic-agent enroll https://:5601/rel cFhNVlZIRUIxYjhmbFhqNTBoS2o6OUhMWkF4SFJRZmFNZTh3QmtvR1cxZw== ./elastic-agent runelastic-agent会启动另外两个进程:metricbeat和filebeat。运行您正在集成的产品(例如带有 MySQL 的 Docker 镜像)。
安装包。
在 Kibana UI 中完成配置点击操作,进行部署,并等待代理获取更新后的配置。
使用 Kibana UI 导航到新安装的仪表板,验证指标/日志流。
elastic-package 提供了不同类型的测试运行器。请参阅 Test an integration 了解关于测试包的各种方法。
test 子命令需要引用一个实时运行的 Elastic Stack。这可以通过 elastic-package stack up 命令进行设置。
elastic-package 工具可以计算包的测试覆盖率,并以 Cobertura 格式导出覆盖率报告。覆盖率报告包含有关存在或缺失的管道以及系统和静态测试的信息,因此它们有助于识别未测试的集成。对于管道测试,它提供详细的源代码覆盖率报告,突出显示在测试期间覆盖的采集处理器(ingest processors)。
CI 作业运行器收集覆盖率数据并将其与构建产物一起存储。Cobertura 插件(Coverage Report 选项卡)使用这些数据来可视化按包、数据流和测试类型分组的测试覆盖率。
由于 Cobertura 报告格式涉及包、类、方法等,不幸的是,它无法轻易映射到包领域。我们决定对 Cobertura 分类做一些假设:
- 包 (Package):
integration - 文件 (File):
data stream - 类 (Class): 测试类型(
pipeline tests、system tests等) - 方法 (Method): 如果存在任何测试,则为 "OK"。
对于包含实际源代码覆盖率的管道测试,映射有所不同:
- 包 (Package):
integration.data_stream - 文件 (File): 采集管道文件的路径
- 类 (Class): 采集管道名称
- 方法 (Method): 采集处理器