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

rjee0c15  于 2021-06-07  发布在  Kafka
关注(0)|答案(3)|浏览(413)

我有一个应用程序,这是由docker组装。该应用程序包含用于kafka、postgres和restapi端点的docker容器。
一个测试用例是将数据发布到端点。在数据中,有一个字段称为 callback URL . 应用程序将解析数据并将数据发送到 callback URL .
我很好奇是否有类似测试用例的测试框架。以及如何验证 callback URL 有数据吗?

5gfr0r5j

5gfr0r5j1#

您可以使用传统的junit方式(使用代码位)或通过声明性方式(完全绕过编码)来实现这一点。
该示例已停靠kafka容器,以便在本地调出并运行测试
本节kafkawithrestapi解释了测试restapi测试与kafka数据流的自动组合方式。
例如

---
scenarioName: Kafka and REST api validation example
steps:
- name: produce_to_kafka
  url: kafka-topic:people-address
  operation: PRODUCE
  request:
    recordType: JSON
    records:
    - key: id-lon-123
      value:
        id: id-lon-123
        postCode: UK-BA9
  verify:
    status: Ok
    recordMetadata: "$NOT.NULL"
- name: verify_updated_address
  url: "/api/v1/addresses/${$.produce_to_kafka.request.records[0].value.id}"
  operation: GET
  request:
    headers:
      X-GOVT-API-KEY: top-key-only-known-to-secu-cleared
  verify:
    status: 200
    value:
      id: "${$.produce_to_kafka.request.records[0].value.id}"
      postCode: "${$.produce_to_kafka.request.records[0].value.postcode}"
gcuhipw9

gcuhipw92#

在你下面的问题中,Kafka在哪里?两者听起来都像http调用。
1) 将数据发布到终结点
2) 将数据发送到回调url
一个测试用例是将数据发布到端点。在数据中,有一个名为回调url的字段。应用程序将解析数据并将数据发送到回调url。
假设回调url是带有post/put api的http端点(例如rest或soap),那么最好在同一资源上公开get端点。在这种情况下,调用回调post/put时,服务器端状态/数据会发生变化,接下来,使用getapi验证数据是否正确。get api的输出是发送到回调url的kafka数据(假设您的第一条post消息是发送到kafka主题的)。

pbwdgjma

pbwdgjma3#

docker compose支持已添加到endly。在应用程序的管道工作流(app.yaml)中,您可以添加一个“deploy”任务,并通过调用docker compose up来启动docker服务。
一旦测试任务完成并调用了回调url,在验证任务中,可以检查是否使用预期数据调用了回调url。为此,您可以利用endly的录制功能并重放它来验证回调请求。
下面是一个使用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

相关问题