diff --git a/.github/workflows/automation-test.yml b/.github/workflows/automation-test.yml index 9521f3230ba..5bf4630d6de 100644 --- a/.github/workflows/automation-test.yml +++ b/.github/workflows/automation-test.yml @@ -1,4 +1,4 @@ -name: automation_test +name: automation test on: workflow_dispatch: @@ -11,26 +11,26 @@ on: description: 'agent image tag' required: true default: 'latest' - PYTEST_XDIST_WORKER_NUMBER: + WORKER_NUMBER: description: 'Worker number, recommend 3-6' required: false default: '3' - PYTEST_DF_ENV_NUMBER: + DF_ENV_NUMBER: description: 'Deepflow env number, recommend 1-3' required: false default: '1' TEST_CASE: - description: 'case name' + description: 'case name, support [basic, querier, cloud_k8s, cloud_workloadv, upgrade]' required: false default: 'basic' DF_TEST_BRANCH: - description: 'df-test branch' - required: false - default: 'master' + description: 'df-test branch' + required: false + default: 'master' DEBUG: - description: 'reserve case environment, 1 means reserve' - required: false - default: '0' + description: 'reserve case environment at end of the use case, 1 means reserve' + required: false + default: '0' jobs: test: @@ -39,8 +39,8 @@ jobs: steps: - name: Check Parameter Max Value run: | - worker_num="${{ github.event.inputs.PYTEST_XDIST_WORKER_NUMBER }}" - df_env_num="${{ github.event.inputs.PYTEST_DF_ENV_NUMBER }}" + worker_num="${{ github.event.inputs.WORKER_NUMBER }}" + df_env_num="${{ github.event.inputs.DF_ENV_NUMBER }}" worker_max_value=10 env_max_value=5 if [ "$worker_num" -gt "$worker_max_value" ]; then @@ -51,6 +51,25 @@ jobs: echo "Parameter exceeds the maximum value of $env_max_value." exit 1 fi + + - name: Check Server And Agent Image + run: | + server_tag="${{ github.event.inputs.DEEPFLOW_SERVER_IMAGE_TAG }}" + server=$(skopeo inspect docker://registry.cn-beijing.aliyuncs.com/deepflow-ce/deepflow-agent:${server_tag} 2>&1 | grep "Error parsing image name" || :) + if [ -n "$server" ]; then + echo "Get Server Image Failed: " + echo "$server" + exit 1 + fi + agent_tag="${{ github.event.inputs.DEEPFLOW_AGENT_IMAGE_TAG }}" + agent=$(skopeo inspect docker://registry.cn-beijing.aliyuncs.com/deepflow-ce/deepflow-agent:${agent_tag} 2>&1 | grep "Error parsing image name" || :) + if [ -n "$agent" ]; then + echo "Get Agent Image Failed: " + echo "$agent" + exit 1 + fi + exit 0 + - name: Checkout code uses: actions/checkout@v3 @@ -68,8 +87,8 @@ jobs: - name: set environment vars run: | echo "LC_ALL=en_US.utf8" >> $GITHUB_ENV - echo "PYTEST_XDIST_WORKER_NUMBER=${{ github.event.inputs.PYTEST_XDIST_WORKER_NUMBER }}" >> $GITHUB_ENV - echo "PYTEST_DF_ENV_NUMBER=${{ github.event.inputs.PYTEST_DF_ENV_NUMBER }}" >> $GITHUB_ENV + echo "WORKER_NUMBER=${{ github.event.inputs.WORKER_NUMBER }}" >> $GITHUB_ENV + echo "DF_ENV_NUMBER=${{ github.event.inputs.DF_ENV_NUMBER }}" >> $GITHUB_ENV echo "TEST_CASE=${{ github.event.inputs.TEST_CASE }}" >> $GITHUB_ENV echo "DEEPFLOW_SERVER_IMAGE_TAG=${{ github.event.inputs.DEEPFLOW_SERVER_IMAGE_TAG }}" >> $GITHUB_ENV echo "DEEPFLOW_AGENT_IMAGE_TAG=${{ github.event.inputs.DEEPFLOW_AGENT_IMAGE_TAG }}" >> $GITHUB_ENV diff --git a/automation_test/README.md b/automation_test/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/automation_test/ws_client.py b/automation_test/ws_client.py index 35dd6b064e1..e118cfadf1f 100644 --- a/automation_test/ws_client.py +++ b/automation_test/ws_client.py @@ -7,6 +7,15 @@ import getopt import os +public_support_test_case = { + "basic": "basic", + "querier": "interface/querier_sql/", + "cloud_k8s": "cloud/k8s", + "cloud_workloadv": "cloud/agent_sync_workloadv", + "upgrade": "upgrade", +} +public_supoort_worker_number_max = 6 +public_supoort_df_env_number_max = 3 UUID = "" execed = False sio = socketio.Client() @@ -31,8 +40,8 @@ "DEBUG": 0, } params_env_key = { - "WORKER_NUMBER": "PYTEST_XDIST_WORKER_NUMBER", - "DF_ENV_NUMBER": "PYTEST_DF_ENV_NUMBER", + "WORKER_NUMBER": "WORKER_NUMBER", + "DF_ENV_NUMBER": "DF_ENV_NUMBER", "TEST_CASE": "TEST_CASE", "DF_SERVER_IMAGE_TAG": "DEEPFLOW_SERVER_IMAGE_TAG", "DF_AGENT_IMAGE_TAG": "DEEPFLOW_AGENT_IMAGE_TAG", @@ -83,6 +92,28 @@ def finished(data): sio.disconnect() +def check_variables(params): + # check TEST_CASE + test_case = params.get("TEST_CASE") + if test_case not in public_support_test_case.keys(): + print(f"TEST_CASE {test_case} not support") + assert False + else: + params["TEST_CASE"] = public_support_test_case[test_case] + + # check WORKER_NUMBER + worker_number = params.get("WORKER_NUMBER") + if worker_number > public_supoort_worker_number_max: + print(f"WORKER_NUMBER {worker_number} over limit") + assert False + + # check DF_ENV_NUMBER + df_env_number = params.get("DF_ENV_NUMBER") + if df_env_number > public_supoort_df_env_number_max: + print(f"DF_ENV_NUMBER {df_env_number} over limit") + assert False + + if __name__ == '__main__': opts, args = getopt.getopt(sys.argv[1:], '', [f"{key}=" for key in keys]) UUID = str(uuid.uuid4())[:7] @@ -106,5 +137,6 @@ def finished(data): params[key] = params_default[key] print(params) params["AUTOMATION_TEST_TOKEN"] = token - sio.connect(f'ws://{url}', wait_timeout = 10) + check_variables(params) + sio.connect(f'ws://{url}', wait_timeout=10) sio.wait()