iLogtail

1756
下载
iLogtail 是阿里云日志服务(Log Service)中的一款高性能、可扩展的日志采集工具。它被设计用于实时收集、解析和传输各类日志数据,支持多种数据源和复杂的日志处理场景,广泛应用于分布式系统、Web 服务器、应用程序等环境中的日志管理。

E2E测试


iLogtail提供了一个完整的E2E测试引擎,方便您快速开展集成测试,从而进一步保证代码质量。在大部分情况下,您只需要编写一个配置文件来定义测试行为,即可轻松完成测试。

工作原理

E2E测试采用行为驱动开发(Behavior-Driven Development)的设计思路,通过定义一系列测试行为,并通过配置文件的方式来描述测试场景,从而实现对插件的集成测试。测试引擎会根据配置文件中的内容,正则匹配对应的函数,并解析配置文件中的参数,传递给对应的函数。从而完成自动创建测试环境、启动iLogtail、触发日志生成、验证日志内容等一系列操作,最终输出测试报告。
相关参考:

测试流程

环境准备

在准备开始进行集成测试前,您首先需要准备以下内容:

  • 测试环境:主机(可通过SSH访问)、K8s集群(可通过kubeconfig访问)、Docker-Compose环境(需在本地安装docker-compose)
  • 部署 iLogtail

配置文件

对于每一个新的功能,您都需要在./test/e2e/test_cases目录下创建一个新的feature配置文件。每个配置文件中可以包含多个测试场景,每个测试场景由一个或多个步骤组成。

配置文件的基本框架如下所示:

@input
Feature: input static file
Test input static file
@e2e @docker-compose
Scenario: TestInputStaticFile
Given {docker-compose} environment
Given subcribe data from {grpc} with config
"""
"""
Given {input-static-file-case} local config as below
"""
enable: true
global:
UsingOldContentTag: true
DefaultLogQueueSize: 10
inputs:
- Type: input_file
FilePaths:
- "/root/test/**/a*.log"
MaxDirSearchDepth: 10
"""
Given iLogtail container mount {./a.log} to {/root/test/1/2/3/axxxx.log}
When start docker-compose {input_static_file}
Then there is at least {1000} logs
Then the log fields match kv
"""
"__tag__:__path__": "^/root/test/1/2/3/axxxx.log$"
content: "^\\d+===="
"""
  • Feature定义了一个测试功能,下面为这个功能的描述信息。在Feature下可以定义多个测试场景。
  • Scenario定义了一个测试场景。在Scenario下可以定义多个行为。
  • 行为定义分为三类:
    • Given:定义了一些准备测试条件的行为。
    • When:定义了一些触发测试条件的行为。
    • Then:定义了一些验证测试条件的行为。
  • 行为中使用{}作为标识符,该部分内容将作为参数,传递给对应的Go函数。
  • @表示一个tag,在运行测试时,会根据tag的不同,分别运行。除了自定义的tag外,测试框架定义了一些默认的tag:
    • @e2e:表示该测试场景为E2E测试。
    • @regression:表示该测试场景为回归测试。
    • @host:表示该测试场景在host环境下运行。
    • @k8s:表示该测试场景在k8s环境下运行。
    • @docker-compose:表示该测试场景在本地启动docker-compose运行

运行测试

在所有测试内容准备完毕后,您可以直接在test目录下以go test的方式运行E2E测试。根据您的需求,可以选择运行所有测试或者指定测试。

Terminal window
# 运行所有测试
go test -v -timeout 30m -run ^TestE2EOnDockerCompose$ github.com/alibaba/ilogtail/test/e2e
# 运行指定测试,以input_canal为例
TEST_CASE=input_canal go test -v -timeout 30m -run ^TestE2EOnDockerCompose$ github.com/alibaba/ilogtail/test/e2e

拓展

如果目前engine中已有的测试行为无法满足您的需求,您可以参考以下添加指南,自行拓展测试行为。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32