测试和验证

编辑
  1. 构建您要验证的软件包(例如 apache

    cd apache
    elastic-package build
  2. 启动测试环境

    从 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
  3. 验证您的集成是否在正确的版本中可用。例如,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 镜像可用于[[系统测试,系统测试]]。如果您更喜欢使用 Elastic Agent 的本地实例,请继续执行步骤 4 和 5

  4. (可选)下载Elastic Agent
  5. (可选)注册 Elastic Agent 并启动它

    使用 Kibana UI 中的“注册新代理”选项(摄取管理器 → Fleet → 创建用户并启用 Fleet)并运行类似的命令

    ./elastic-agent enroll https://127.0.0.1:5601/rel cFhNVlZIRUIxYjhmbFhqNTBoS2o6OUhMWkF4SFJRZmFNZTh3QmtvR1cxZw==
    ./elastic-agent run

    elastic-agent 启动其他两个进程:metricbeatfilebeat

  6. 运行您正在集成的产品(例如,带有 MySQL 的 Docker 镜像)。
  7. 安装软件包。

    在 Kibana UI 中点击配置,部署它并等待代理提取更新的配置。

  8. 使用 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`
  • 文件数据流`
  • :测试类型(管道测试系统测试 等)
  • 方法:如果存在任何测试,则为“OK”。

对于包含实际源代码覆盖率的管道测试,映射不同

  • 软件包integration.data_stream
  • 文件:摄取管道文件的路径
  • :摄取管道名称
  • 方法:摄取处理器