higress
higress copied to clipboard
WASM插件开发框架proxy-wasm-go-sdk的单元测试框架适配
描述
Higress使用基于proxy-wasm-go-sdk项目fork了自己的WASM插件开发SDK,在此基础之上还用一层wrapper屏蔽了插件开发中很多重复性工作,使开发者可以将精力集中于功能开发。但是,wrapper层的加入使proxy-wasm-go-sdk原生的单元测试框架变得不可用,在对使用了wrapper的插件进行单测时会报错。
分析
- 测试框架调用了被wrapper封装的函数,比如OnPluginStart,如下图所示。因此插件里用了wrapper会导致测试时没法读取配置报错以及类似的其他问题。
- 因此需要对wrapper作出改动,使之支持除默认从envoy.yaml读取配置外还可以从测试代码传入插件配置。
- wrapper默认从配置文件读取配置
- 可以尝试在CommonVmCtx中增加一个字段testConfig(或者其他名字),当这个字段不为空且合法,则视为测试环境,将之用于解析配置,不再从envoy.yaml文件中读取。(不保证正确,除了配置读取外还可能存在别的问题。)
- wrapper默认从配置文件读取配置
- 结论:Wrapper和测试框架不兼容,需要对wrapper做出改进使之适配proxy-wasm-go-sdk的测试框架。