From 630a1fd3cd44edc64834b341cb04e438ef11f35b Mon Sep 17 00:00:00 2001 From: rick Date: Thu, 20 Jun 2024 01:29:43 +0000 Subject: [PATCH 1/5] test: add e2e testing base on docker compose --- .github/workflows/e2e.yaml | 21 ++++++++++++++++ docker-compose.yml | 33 +++++++++++++++++++++++++ e2e/Dockerfile | 6 +++++ e2e/entrypoint.sh | 3 +++ e2e/testsuite.yaml | 50 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 113 insertions(+) create mode 100644 .github/workflows/e2e.yaml create mode 100644 e2e/Dockerfile create mode 100755 e2e/entrypoint.sh create mode 100644 e2e/testsuite.yaml diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml new file mode 100644 index 00000000..883ead32 --- /dev/null +++ b/.github/workflows/e2e.yaml @@ -0,0 +1,21 @@ +name: E2E + +on: + pull_request: + branches: + - main + +concurrency: + group: ${{github.workflow}} - ${{github.ref}} + cancel-in-progress: true + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: E2E Testing + run: | + sudo curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose + sudo chmod u+x /usr/local/bin/docker-compose + docker compose up --build testing --exit-code-from testing --remove-orphans diff --git a/docker-compose.yml b/docker-compose.yml index 802a7426..49f3b7d9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,7 +17,18 @@ services: - DEMO_MODE=false volumes: - /data/orion-visor-space/docker-volumes/orion-visor-service/root-orion:/root/orion + healthcheck: + test: ["CMD", "curl", "-f", "http://127.0.0.1/login"] + interval: 3s + timeout: 180s + retries: 30 + start_period: 3s depends_on: + orion-visor-mysql: + condition: service_healthy + orion-visor-redis: + condition: service_healthy + links: - orion-visor-mysql - orion-visor-redis orion-visor-mysql: @@ -34,6 +45,12 @@ services: - /data/orion-visor-space/docker-volumes/orion-visor-mysql/var-lib-mysql:/var/lib/mysql - /data/orion-visor-space/docker-volumes/orion-visor-mysql/var-lib-mysql-files:/var/lib/mysql-files - /data/orion-visor-space/docker-volumes/orion-visor-mysql/etc-mysql:/etc/mysql + healthcheck: + test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/3306"] + interval: 3s + timeout: 60s + retries: 10 + start_period: 3s orion-visor-redis: image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-redis:2.0.9 privileged: true @@ -44,7 +61,23 @@ services: volumes: - /data/orion-visor-space/docker-volumes/orion-visor-redis/data:/data command: sh -c "redis-server /usr/local/redis.conf --requirepass $${REDIS_PASSWORD}" + healthcheck: + test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ] + interval: 3s + timeout: 60s + retries: 10 + start_period: 3s orion-visor-adminer: image: adminer ports: - 8081:8080 + testing: + build: + context: e2e + environment: + SERVER: http://orion-visor-service:80 + depends_on: + orion-visor-service: + condition: service_healthy + links: + - orion-visor-service diff --git a/e2e/Dockerfile b/e2e/Dockerfile new file mode 100644 index 00000000..886f4f12 --- /dev/null +++ b/e2e/Dockerfile @@ -0,0 +1,6 @@ +FROM ghcr.io/linuxsuren/api-testing:v0.0.17 + +WORKDIR /workspace +COPY . . + +CMD [ "/workspace/entrypoint.sh" ] diff --git a/e2e/entrypoint.sh b/e2e/entrypoint.sh new file mode 100755 index 00000000..2aa71863 --- /dev/null +++ b/e2e/entrypoint.sh @@ -0,0 +1,3 @@ +#!/bin/bash +set -e +atest run -p testsuite.yaml --report md diff --git a/e2e/testsuite.yaml b/e2e/testsuite.yaml new file mode 100644 index 00000000..05f4e806 --- /dev/null +++ b/e2e/testsuite.yaml @@ -0,0 +1,50 @@ +#!api-testing +# yaml-language-server: $schema=https://linuxsuren.github.io/api-testing/api-testing-schema.json +name: orion-visor +api: | + {{default "http://orion-visor-service:80" (env "SERVER")}} +items: +- name: login + request: + api: /orion-visor/api/infra/auth/login + method: POST + header: + Content-type: application/json + body: | + {"username":"admin","password":"admin"} + expect: + bodyFieldsExpect: + code: 200 +- name: userPermission + request: + api: /orion-visor/api/infra/permission/user?s={{.login.data.token}} + header: + Authorization: Bearer {{.login.data.token}} + expect: + bodyFieldsExpect: + code: 200 + message: "success" +- name: menu + request: + api: /orion-visor/api/infra/permission/menu + expect: + bodyFieldsExpect: + code: 200 + message: "success" +- name: haveUnRead + request: + api: /orion-visor/api/infra/system-message/has-unread + expect: + bodyFieldsExpect: + data: false +- name: queryOperatorLog + request: + api: /orion-visor/api/infra/mine/query-operator-log + method: POST +- name: hostList + request: + api: /orion-visor/api/infra/tag/list?type=HOST +- name: queryHost + request: + api: /orion-visor/api/asset/host/query + method: POST From 1ca93116256a8f5beb1f8a0a4cb7e21fc46b9e68 Mon Sep 17 00:00:00 2001 From: rick Date: Thu, 20 Jun 2024 01:52:10 +0000 Subject: [PATCH 2/5] fix the password in e2e --- e2e/Dockerfile | 3 ++- e2e/testsuite.yaml | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/e2e/Dockerfile b/e2e/Dockerfile index 886f4f12..946e571f 100644 --- a/e2e/Dockerfile +++ b/e2e/Dockerfile @@ -1,4 +1,5 @@ -FROM ghcr.io/linuxsuren/api-testing:v0.0.17 +FROM ghcr.io/linuxsuren/api-testing:master +#v0.0.17 WORKDIR /workspace COPY . . diff --git a/e2e/testsuite.yaml b/e2e/testsuite.yaml index 05f4e806..76a444d6 100644 --- a/e2e/testsuite.yaml +++ b/e2e/testsuite.yaml @@ -11,29 +11,33 @@ items: header: Content-type: application/json body: | - {"username":"admin","password":"admin"} + {"username":"admin","password":"21232f297a57a5a743894a0e4a801fc3"} expect: bodyFieldsExpect: code: 200 - name: userPermission request: - api: /orion-visor/api/infra/permission/user?s={{.login.data.token}} + api: /orion-visor/api/infra/permission/user header: Authorization: Bearer {{.login.data.token}} expect: bodyFieldsExpect: code: 200 - message: "success" + msg: "success" - name: menu request: api: /orion-visor/api/infra/permission/menu + header: + Authorization: Bearer {{.login.data.token}} expect: bodyFieldsExpect: code: 200 - message: "success" + msg: "success" - name: haveUnRead request: api: /orion-visor/api/infra/system-message/has-unread + header: + Authorization: Bearer {{.login.data.token}} expect: bodyFieldsExpect: data: false From e04a972df55b952db52abac902390a98d2182da7 Mon Sep 17 00:00:00 2001 From: Rick <1450685+LinuxSuRen@users.noreply.github.com> Date: Thu, 20 Jun 2024 10:24:58 +0800 Subject: [PATCH 3/5] Update Dockerfile --- e2e/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/e2e/Dockerfile b/e2e/Dockerfile index 946e571f..886f4f12 100644 --- a/e2e/Dockerfile +++ b/e2e/Dockerfile @@ -1,5 +1,4 @@ -FROM ghcr.io/linuxsuren/api-testing:master -#v0.0.17 +FROM ghcr.io/linuxsuren/api-testing:v0.0.17 WORKDIR /workspace COPY . . From 95d8988f110c12673ed0e54ab0922280c934591b Mon Sep 17 00:00:00 2001 From: Rick <1450685+LinuxSuRen@users.noreply.github.com> Date: Thu, 20 Jun 2024 10:25:23 +0800 Subject: [PATCH 4/5] Update e2e.yaml --- .github/workflows/e2e.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 883ead32..90551896 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -4,6 +4,7 @@ on: pull_request: branches: - main + - dev concurrency: group: ${{github.workflow}} - ${{github.ref}} From 2a49e7670d46ccbf41708584b3566effd0d98fe8 Mon Sep 17 00:00:00 2001 From: rick Date: Thu, 20 Jun 2024 02:56:16 +0000 Subject: [PATCH 5/5] fix the health check command --- docker-compose.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 49f3b7d9..1d6fd3a3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,10 +18,10 @@ services: volumes: - /data/orion-visor-space/docker-volumes/orion-visor-service/root-orion:/root/orion healthcheck: - test: ["CMD", "curl", "-f", "http://127.0.0.1/login"] + test: ["CMD", "curl", "http://127.0.0.1:9200/orion-visor/api/server/bootstrap/health"] interval: 3s - timeout: 180s - retries: 30 + timeout: 300s + retries: 200 start_period: 3s depends_on: orion-visor-mysql: