From 1ccf9195b2c53642e9a0daab2a9b030aa1b1643d Mon Sep 17 00:00:00 2001 From: Hinsteny Hisoka Date: Wed, 21 Jun 2023 10:17:03 +0800 Subject: [PATCH] Add e2e testing description for wasm-plugin-go (#389) --- plugins/wasm-go/README.md | 52 ++++++++++++++++++++++++++++++++++++ plugins/wasm-go/README_EN.md | 52 ++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) diff --git a/plugins/wasm-go/README.md b/plugins/wasm-go/README.md index 28da884c7..2d560f49c 100644 --- a/plugins/wasm-go/README.md +++ b/plugins/wasm-go/README.md @@ -143,3 +143,55 @@ spec: ``` 所有规则会按上面配置的顺序一次执行匹配,当有一个规则匹配时,就停止匹配,并选择匹配的配置执行插件逻辑。 + +## E2E测试 + +当你完成一个GO语言的插件功能时, 可以同时创建关联的e2e test cases, 并在本地对插件功能完成测试验证。 + +### step1. 编写 test cases +在目录./test/ingress/conformance下面, 分别添加xxx.yaml文件和xxx.go文件, 比如测试插件request-block + +./test/ingress/conformance/request-block.yaml +``` +apiVersion: networking.k8s.io/v1 +kind: Ingress +... +... +spec: + defaultConfig: + block_urls: + - "swagger.html" + url: file:///opt/plugins/wasm-go/extensions/request-block/plugin.wasm +``` +`其中url中extensions后面的'request-block'为插件所在文件夹名称` + +./test/ingress/conformance/request-block.go + +### step2. 添加 test cases +将上述所写test cases添加到e2e测试列表中, + +./test/ingress/conformance/request-block.yaml + +``` +... +cSuite.Setup(t) + var higressTests []suite.ConformanceTest + + if *isWasmPluginTest { + higressTests = []suite.ConformanceTest{ + tests.WasmPluginsRequestBlock, + //这里新增你新写的case方法名称 + } + } else { + higressTests = []suite.ConformanceTest{ + tests.HTTPRouteSimpleSameNamespace, + tests.HTTPRouteHostNameSameNamespace, +... +``` + +### step3. 编译插件并执行 test cases +考虑到本地构建wasm比较耗时, 我们支持只构建需要测试的插件(同时你也可以临时修改上面第二小步的测试cases列表, 只执行你新写的case)。 + +```bash +PLUGIN_NAME=request-block make ingress-wasmplugin-test +``` \ No newline at end of file diff --git a/plugins/wasm-go/README_EN.md b/plugins/wasm-go/README_EN.md index d90b59db3..7f9c63d5f 100644 --- a/plugins/wasm-go/README_EN.md +++ b/plugins/wasm-go/README_EN.md @@ -138,3 +138,55 @@ spec: The rules will be matched in the order of configuration. If one match is found, it will stop, and the matching configuration will take effect. + +## E2E test + +When you complete a GO plug-in function, you can create associated e2e test cases at the same time, and complete the test verification of the plug-in function locally. + +### step1. write test cases +In the directory of `./ test/ingress/conformance`, add the xxx.yaml file and xxx.go file. Such as test for `request-block` wasm-plugin, + +./test/ingress/conformance/request-block.yaml +``` +apiVersion: networking.k8s.io/v1 +kind: Ingress +... +... +spec: + defaultConfig: + block_urls: + - "swagger.html" + url: file:///opt/plugins/wasm-go/extensions/request-block/plugin.wasm +``` +`Above of the url, the name of after extensions indicates the name of the folder where the plug-in resides.` + +./test/ingress/conformance/request-block.go + +### step2. add test cases +Add the test cases written above to the e2e test list, + +./test/ingress/conformance/request-block.yaml + +``` +... +cSuite.Setup(t) + var higressTests []suite.ConformanceTest + + if *isWasmPluginTest { + higressTests = []suite.ConformanceTest{ + tests.WasmPluginsRequestBlock, + //Add your newly written case method name here + } + } else { + higressTests = []suite.ConformanceTest{ + tests.HTTPRouteSimpleSameNamespace, + tests.HTTPRouteHostNameSameNamespace, +... +``` + +### step3. compile and run test cases +Considering that building wasm locally is time-consuming, we support building only the plug-ins that need to be tested (at the same time, you can also temporarily modify the list of test cases in the second small step above, and only execute your newly written cases). + +```bash +PLUGIN_NAME=request-block make ingress-wasmplugin-test +``` \ No newline at end of file