如何为包含kafka、postgres和RESTAPI docker容器的应用程序编写e2e测试自动化

如何为包含kafka、postgres和RESTAPI docker容器的应用程序编写e2e测试自动化,rest,apache-kafka,docker-compose,end-to-end,Rest,Apache Kafka,Docker Compose,End To End,我有一个应用程序是由docker compose设置的。该应用程序包含用于kafka、postgres和RESTAPI端点的docker容器 一个测试用例是将数据发布到端点。在数据中,有一个名为回调URL的字段。应用程序将解析数据并将数据发送到回调URL 我很好奇是否有类似测试用例的测试框架。如何验证回调URL中是否有数据?Docker compose支持已添加到。在应用程序(app.yaml)的管道工作流中,您可以添加“部署”任务,并通过调用docker compose up启动docker服

我有一个应用程序是由docker compose设置的。该应用程序包含用于kafka、postgres和RESTAPI端点的docker容器

一个测试用例是将数据发布到端点。在数据中,有一个名为
回调URL
的字段。应用程序将解析数据并将数据发送到
回调URL


我很好奇是否有类似测试用例的测试框架。如何验证
回调URL
中是否有数据?

Docker compose支持已添加到。在应用程序(app.yaml)的管道工作流中,您可以添加“部署”任务,并通过调用docker compose up启动docker服务

测试任务完成并调用回调url后,在验证任务中,可以检查是否使用预期数据调用了回调url。为此,您可以利用endly的it来验证回调请求

下面是使用docker compose with endly启动docker服务的ETL应用程序app.yaml的示例。希望能有帮助

tasks: $tasks
defaults:
  app: $app
  version: $version
  sdk: $sdk
  useRegistry: false
pipeline:
  build:
    name: Build GBQ ETL
    description: Using a endly shared workflow to build
    workflow: app/docker/build
    origin:
      URL: ./../../
      credentials: localhost
    buildPath: /tmp/go/src/etl/app
    secrets:
      github: git
    commands:
      - apt-get -y install git
      - export GOPATH=/tmp/go
      - export GIT_TERMINAL_PROMPT=1
      - cd $buildPath
      - go get -u .
      - $output:/Username/? ${github.username}
      - $output:/Password/? ${github.password}
      - export CGO_ENABLED=0
      - go build -o $app
      - chmod +x $app
    download:
      /$buildPath/${app}: $releasePath
      /$buildPath/startup.sh: $releasePath
      /$buildPath/docker-entrypoint.sh: $releasePath
      /$buildPath/VERSION: $releasePath
      /$buildPath/docker-compose.yaml: $releasePath
  deploy:
    start:
      action: docker:composeUp
      target: $target
      source:
        URL: ${releasePath}docker-compose.yaml

在你下面的问题中,卡夫卡在哪里?两者听起来都像HTTP调用

1) 将数据发布到端点

2) 将数据发送到回调URL

一个测试用例是将数据发布到端点。在数据中,有一个称为回调URL的字段。应用程序将解析数据并将数据发送到回调URL


假设回调URL是带有POST/PUT api的HTTP端点(例如REST或SOAP),那么最好在同一资源上公开GET端点。在这种情况下,当调用回调POST/PUT时,服务器端状态/数据将发生更改,接下来,使用GETAPI验证数据是否正确。GET API的输出是发送到回调URL的Kafka数据(这假设您的第一条帖子是发送到Kafka主题的)。

您可以使用传统的JUnit方式(使用代码位)或通过声明式方式(您可以完全绕过编码)来实现这一点

该示例已停靠Kafka容器,以便在本地启动并运行测试

本节介绍REST api测试与Kafka数据流组合的自动化测试方法

e、 g

---
scenarioName:Kafka和RESTAPI验证示例
步骤:
-名称:制作卡夫卡
url:kafka主题:人物地址
操作:生产
请求:
记录类型:JSON
记录:
-密钥:id-lon-123
价值:
id:id-lon-123
邮政编码:UK-BA9
核实:
状态:Ok
recordMetadata:“$NOT.NULL”
-名称:验证\u更新的\u地址
url:“/api/v1/addresses/${$.product\u to\u kafka.request.records[0].value.id}”
操作:获取
请求:
标题:
X-GOVT-API-KEY:只有secu知道的顶级密钥已清除
核实:
现状:200
价值:
id:“${$.product\u to\u kafka.request.records[0].value.id}”
邮政编码:“${$.product\u to\u kafka.request.records[0].value.postCode}”