测试和验证
编辑测试和验证编辑
-
构建您要验证的包(例如
apache
)cd apache elastic-package build
-
启动测试环境
从集成库内部运行
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://127.0.0.1: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 中使用“注册新代理”选项(摄取管理器 → Fleet → 创建用户并启用 Fleet)并运行类似的命令
./elastic-agent enroll https://127.0.0.1:5601/rel cFhNVlZIRUIxYjhmbFhqNTBoS2o6OUhMWkF4SFJRZmFNZTh3QmtvR1cxZw== ./elastic-agent run
elastic-agent
启动了另外两个进程:metricbeat
和filebeat
。 - 运行您正在集成的产品(例如,带有 MySQL 的 Docker 镜像)。
-
安装包。
在 Kibana UI 中点击配置,部署它并等待代理获取更新的配置。
- 使用 Kibana UI 导航到新安装的仪表板,验证指标/日志流。
使用测试运行器编辑
elastic-package
提供不同类型的测试运行器。请参阅 测试集成,了解有关测试包的各种方法。
test
子命令需要引用实时 Elastic Stack。您可以使用环境变量定义服务端点。如果您使用的是用 elastic-package
创建的 Elastic Stack,可以使用 elastic-package stack shellinit
来导出端点
$ eval "$(elastic-package stack shellinit)"
要预览环境变量
$ elastic-package stack shellinit export ELASTIC_PACKAGE_ELASTICSEARCH_HOST=http://127.0.0.1:9200 export ELASTIC_PACKAGE_ELASTICSEARCH_USERNAME=elastic export ELASTIC_PACKAGE_ELASTICSEARCH_PASSWORD=changeme export ELASTIC_PACKAGE_KIBANA_HOST=http://127.0.0.1:5601
查看测试覆盖率编辑
elastic-package
工具可以计算包的测试覆盖率并以 Cobertura 格式导出覆盖率报告。覆盖率报告包含有关现有或缺少管道以及系统和静态测试的信息,因此它们有助于识别未经测试的集成。对于管道测试,它提供了详细的源代码覆盖率报告,突出显示测试期间覆盖的摄取处理器。
CI 作业运行器收集覆盖率数据并将其与构建工件一起存储。Cobertura 插件(覆盖率报告 选项卡)使用这些数据来可视化按包、数据流和测试类型分组的测试覆盖率。
Cobertura 格式与包域语言编辑
由于 Cobertura 报告格式引用了包、类、方法等,因此不幸的是它并不能轻松映射到包域。我们决定对 Cobertura 分类做出一些假设
-
包:
integration`
-
文件:
数据流`
-
类: 测试类型(
管道测试
、系统测试
等) - 方法: 如果存在任何测试,则为“确定”。
对于包含实际源代码覆盖率的管道测试,映射方式有所不同
-
包:
integration.data_stream
- 文件: 摄取管道文件路径
- 类: 摄取管道名称
- 方法: 摄取处理器