higress icon indicating copy to clipboard operation
higress copied to clipboard

WASM插件开发框架proxy-wasm-go-sdk的单元测试框架适配

Open TJKkking opened this issue 7 months ago • 3 comments

描述

Higress使用基于proxy-wasm-go-sdk项目fork了自己的WASM插件开发SDK,在此基础之上还用一层wrapper屏蔽了插件开发中很多重复性工作,使开发者可以将精力集中于功能开发。但是,wrapper层的加入使proxy-wasm-go-sdk原生的单元测试框架变得不可用,在对使用了wrapper的插件进行单测时会报错。

分析

  • 测试框架调用了被wrapper封装的函数,比如OnPluginStart,如下图所示。因此插件里用了wrapper会导致测试时没法读取配置报错以及类似的其他问题。 image
  • 因此需要对wrapper作出改动,使之支持除默认从envoy.yaml读取配置外还可以从测试代码传入插件配置。
    • wrapper默认从配置文件读取配置 image
    • 可以尝试在CommonVmCtx中增加一个字段testConfig(或者其他名字),当这个字段不为空且合法,则视为测试环境,将之用于解析配置,不再从envoy.yaml文件中读取。(不保证正确,除了配置读取外还可能存在别的问题。)
  • 结论:Wrapper和测试框架不兼容,需要对wrapper做出改进使之适配proxy-wasm-go-sdk的测试框架。

TJKkking avatar Jun 25 '24 09:06 TJKkking