From ec8362361496399298096a178adf59b502d054c1 Mon Sep 17 00:00:00 2001 From: Se7en Date: Mon, 26 May 2025 10:20:05 +0800 Subject: [PATCH] feat: allow skipping higress dev image build during wasmplugin e2e tests (#2264) --- Makefile.core.mk | 21 +++++++++++++++++++++ test/README.md | 21 +++++++++++++-------- test/README_CN.md | 6 ++++-- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/Makefile.core.mk b/Makefile.core.mk index 32b9706b0..e4f1dc64a 100644 --- a/Makefile.core.mk +++ b/Makefile.core.mk @@ -191,6 +191,7 @@ install: pre-install cd helm/higress; helm dependency build helm install higress helm/higress -n higress-system --create-namespace --set 'global.local=true' +HIGRESS_LATEST_IMAGE_TAG ?= latest ENVOY_LATEST_IMAGE_TAG ?= 958467a353d411ae3f06e03b096bfd342cddb2c6 ISTIO_LATEST_IMAGE_TAG ?= d9c728d3b01f64855e012b08d136e306f1160397 @@ -268,10 +269,26 @@ higress-conformance-test-clean: $(tools/kind) delete-cluster .PHONY: higress-wasmplugin-test-prepare higress-wasmplugin-test-prepare: $(tools/kind) delete-cluster create-cluster docker-build kube-load-image install-dev-wasmplugin +# higress-wasmplugin-test-prepare-skip-docker-build prepares the environment for higress wasmplugin tests without build higress docker image. +.PHONY: higress-wasmplugin-test-prepare-skip-docker-build +higress-wasmplugin-test-prepare-skip-docker-build: $(tools/kind) delete-cluster create-cluster prebuild + @export TAG="$(HIGRESS_LATEST_IMAGE_TAG)" && \ + $(MAKE) kube-load-image && \ + $(MAKE) install-dev-wasmplugin + # higress-wasmplugin-test runs ingress wasmplugin tests. .PHONY: higress-wasmplugin-test higress-wasmplugin-test: $(tools/kind) delete-cluster create-cluster docker-build kube-load-image install-dev-wasmplugin run-higress-e2e-test-wasmplugin delete-cluster +# higress-wasmplugin-test-skip-docker-build runs ingress wasmplugin tests without build higress docker image +.PHONY: higress-wasmplugin-test-skip-docker-build +higress-wasmplugin-test-skip-docker-build: $(tools/kind) delete-cluster create-cluster prebuild + @export TAG="$(HIGRESS_LATEST_IMAGE_TAG)" && \ + $(MAKE) kube-load-image && \ + $(MAKE) install-dev-wasmplugin && \ + $(MAKE) run-higress-e2e-test-wasmplugin && \ + $(MAKE) delete-cluster + # higress-wasmplugin-test-clean cleans the environment for higress wasmplugin tests. .PHONY: higress-wasmplugin-test-clean higress-wasmplugin-test-clean: $(tools/kind) delete-cluster @@ -290,8 +307,12 @@ delete-cluster: $(tools/kind) ## Delete kind cluster. # dubbo-provider-demo和nacos-standlone-rc3的镜像已经上传到阿里云镜像库,第一次需要先拉到本地 # docker pull registry.cn-hangzhou.aliyuncs.com/hinsteny/dubbo-provider-demo:0.0.1 # docker pull registry.cn-hangzhou.aliyuncs.com/hinsteny/nacos-standlone-rc3:1.0.0-RC3 +# If TAG is HIGRESS_LATEST_IMAGE_TAG, means we skip building higress docker image, so we need to pull the image first. .PHONY: kube-load-image kube-load-image: $(tools/kind) ## Install the Higress image to a kind cluster using the provided $IMAGE and $TAG. + @if [ "$(TAG)" = "$(HIGRESS_LATEST_IMAGE_TAG)" ]; then \ + tools/hack/docker-pull-image.sh higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/higress $(TAG); \ + fi tools/hack/kind-load-image.sh higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/higress $(TAG) tools/hack/docker-pull-image.sh higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/pilot $(ISTIO_LATEST_IMAGE_TAG) tools/hack/docker-pull-image.sh higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/gateway $(ENVOY_LATEST_IMAGE_TAG) diff --git a/test/README.md b/test/README.md index 9fb69cf86..c8dde1952 100644 --- a/test/README.md +++ b/test/README.md @@ -17,12 +17,17 @@ Higress e2e tests are mainly focusing on two parts for now: Higress provides make target to run ingress api conformance tests and wasmplugin tests, -+ API Tests: `make higress-conformance-test` -+ WasmPlugin Tests: `make higress-wasmplugin-test` - + Build ALL GO WasmPlugins for testing: `make higress-wasmplugin-test` - + Only build one GO WasmPlugin for testing: `PLUGIN_NAME=request-block make higress-wasmplugin-test` - + Only build one CPP WasmPlugin for testing: `PLUGIN_TYPE=CPP PLUGIN_NAME=key_auth make higress-wasmplugin-test` - + Only run the specific test, splited by comma `TEST_SHORTNAME=WasmPluginsIPRestrictionAllow,WasmPluginsIPRestrictionDeny make higress-wasmplugin-test` ++ API Tests: `make higress-conformance-test` ++ WasmPlugin Tests: `make higress-wasmplugin-test` + + Build all Go WasmPlugins for testing: `make higress-wasmplugin-test` + + Build tests for a specific Go WasmPlugin only: `PLUGIN_NAME=request-block make higress-wasmplugin-test` + + Build tests for a specific C++ WasmPlugin only: `PLUGIN_TYPE=CPP PLUGIN_NAME=key_auth make higress-wasmplugin-test` + + Build all Rust WasmPlugins for testing: `PLUGIN_TYPE=RUST make higress-wasmplugin-test` + + Build tests for a specific Rust WasmPlugin only: `PLUGIN_TYPE=RUST PLUGIN_NAME=request-block make higress-wasmplugin-test` + + Run specific tests only (separated by commas): `TEST_SHORTNAME=WasmPluginsIPRestrictionAllow,WasmPluginsIPRestrictionDeny make higress-wasmplugin-test` + + Build a specific Go WasmPlugin and run selected tests only: `PLUGIN_NAME=ip-restriction TEST_SHORTNAME=WasmPluginsIPRestrictionAllow,WasmPluginsIPRestrictionDeny make higress-wasmplugin-test` + + Skip building the higress dev image, build only a specific Go WasmPlugin and run selected tests: `PLUGIN_NAME=ip-restriction TEST_SHORTNAME=WasmPluginsIPRestrictionAllow,WasmPluginsIPRestrictionDeny make higress-wasmplugin-test-skip-docker-build` + It can be divided into below steps: @@ -56,8 +61,8 @@ The test environment reusability is primarily achieved through the following tar - **make run-higress-e2e-test-clean:** Can be used to clean up the basic resources installed during the setup phase of the test cases. - **make higress-conformance-test-clean:** Used to clean up the test environment for deployments like higress-controller, higress-gateway, etc. -2. **make higress-wasmplugin-test:** Used to run the entire WasmPlugin testing process, including setting up the test environment, compiling WasmPlugin plugins, executing test cases, and cleaning up the test environment. - - **make higress-wasmplugin-test-prepare:** Can be used to set up the environment for deployments such as higress-controller, higress-gateway, and compile WasmPlugin plugins. +2. **make higress-wasmplugin-test:** Used to run the entire WasmPlugin testing process, including setting up the test environment, compiling WasmPlugin plugins, executing test cases, and cleaning up the test environment. Using **make higress-wasmplugin-test-skip-docker-build** can skip building the higress dev image. + - **make higress-wasmplugin-test-prepare:** Can be used to set up the environment for deployments such as higress-controller, higress-gateway, and compile WasmPlugin plugins. Using **make higress-wasmplugin-test-prepare-skip-docker-build** can skip building the higress dev image. - **make run-higress-e2e-test-wasmplugin:** Used to run the test cases. - **make run-higress-e2e-test-wasmplugin-setup:** Can be used to install the basic resources required for the test cases, such as nacos, dubbo, etc. - **make run-higress-e2e-test-wasmplugin-run:** Used to execute the test cases. diff --git a/test/README_CN.md b/test/README_CN.md index 0f8cf338e..0ba3ef359 100644 --- a/test/README_CN.md +++ b/test/README_CN.md @@ -25,6 +25,8 @@ Higress 提供了运行 Ingress API 一致性测试和 wasmplugin 测试的 make + 为测试构建所有 Rust WasmPlugins: `PLUGIN_TYPE=RUST make higress-wasmplugin-test` + 仅为一个 Rust WasmPlugin 构建测试: `PLUGIN_TYPE=RUST PLUGIN_NAME=request-block make higress-wasmplugin-test` + 仅运行指定测试,用逗号分隔 `TEST_SHORTNAME=WasmPluginsIPRestrictionAllow,WasmPluginsIPRestrictionDeny make higress-wasmplugin-test` + + 仅构建一个 Go WasmPlugin 并运行指定测试: `PLUGIN_NAME=ip-restriction TEST_SHORTNAME=WasmPluginsIPRestrictionAllow,WasmPluginsIPRestrictionDeny make higress-wasmplugin-test` + + 跳过构建 higress dev 镜像,仅构建一个 Go WasmPlugin 并运行指定测试: `PLUGIN_NAME=ip-restriction TEST_SHORTNAME=WasmPluginsIPRestrictionAllow,WasmPluginsIPRestrictionDeny make higress-wasmplugin-test-skip-docker-build` 可以分为以下步骤: @@ -58,8 +60,8 @@ Higress 提供了运行 Ingress API 一致性测试和 wasmplugin 测试的 make - **make run-higress-e2e-test-clean:** 可用于清理测试用例在 setup 阶段所安装的基础资源。 - **make higress-conformance-test-clean:** 可用于清理 higress-controller、higress-gateway 等 deployment 的测试环境。 -2. **make higress-wasmplugin-test:** 用于运行整个 WasmPlugin 测试流程,包括搭建测试环境、编译 WasmPlugin 插件、运行测试用例、清理测试环境。 - - **make higress-wasmplugin-test-prepare:** 可用于搭建 higress-controller、higress-gateway 等 deployment 的环境,并编译 WasmPlugin 插件。通过设置变量`PLUGIN_NAME`仅编译指定插件。 +2. **make higress-wasmplugin-test:** 用于运行整个 WasmPlugin 测试流程,包括搭建测试环境、编译 WasmPlugin 插件、运行测试用例、清理测试环境。使用 `make higress-wasmplugin-test-skip-docker-build` 可以跳过构建 higress dev 镜像。 + - **make higress-wasmplugin-test-prepare:** 可用于搭建 higress-controller、higress-gateway 等 deployment 的环境,并编译 WasmPlugin 插件。通过设置变量`PLUGIN_NAME`仅编译指定插件。使用 **make higress-wasmplugin-test-prepare-skip-docker-build** 可以跳过构建 higress dev 镜像。 - **make run-higress-e2e-test-wasmplugin:** 可用于运行测试用例。 - **make run-higress-e2e-test-wasmplugin-setup:** 可用于安装测试用例所需的基础资源,例如 nacos、dubbo 等。 - **make run-higress-e2e-test-wasmplugin-run:** 可用于运行测试用例。通过设置变量`TEST_SHORTNAME`仅运行指定测试。