自定义协议
Ryze框架支持通过SPI机制扩展新的协议支持。
核心组件
取样器
继承AbstractSampler抽象类,定义协议的具体执行逻辑:
java
public class CustomSampler extends AbstractSampler<CustomSampler, CustomConfigureItem, CustomSampleResult> {
@Override
protected void sample(ContextWrapper contextWrapper, DefaultSampleResult result) {
// 实现协议执行逻辑
}
}实现Sampler接口,定义协议的具体执行逻辑:
java
public class CustomSampler implements Sampler {
@Override
public Result sample(Context context) {
// 实现协议执行逻辑
return new Result();
}
}前置处理器
继承AbstractProcessor抽象类并实现Preprocessor接口,定义协议的具体执行逻辑:
java
public class CustomPreprocessor extends AbstractProcessor<CustomPreprocessor, CustomConfigureItem, CustomSampleResult> implements Preprocessor {
@Override
protected void sample(ContextWrapper context, DefaultSampleResult result) {
// 实现协议执行逻辑
}
}实现Preprocessor接口,定义协议的具体执行逻辑:
java
public class CustomPreprocessor implements Preprocessor {
@Override
public void process(ContextWrapper context) {
// 实现前置处理逻辑
}
}后置处理器
继承AbstractProcessor抽象类并实现Postprocessor接口,定义协议的具体执行逻辑:
java
public class CustomPostprocessor extends AbstractProcessor<CustomPostprocessor, CustomConfigureItem, CustomSampleResult> implements Postprocessor {
@Override
protected void sample(ContextWrapper context, DefaultSampleResult result) {
// 实现协议执行逻辑
}
}实现Postprocessor接口,定义协议的具体执行逻辑:
java
public class CustomPostprocessor implements Postprocessor {
@Override
public void process(ContextWrapper context) {
// 实现前置处理逻辑
}
}配置元件
继承AbstractConfigureElement抽象类,定义协议的具体执行逻辑:
java
public class CustomConfigureElement extends AbstractConfigureElement<CustomConfigureElement, CustomConfigureItem, TestSuiteResult> {
@Override
protected void doProcess(ContextWrapper context) {
// 实现协议执行逻辑
}
}实现ConfigureElement接口,定义协议的具体执行逻辑:
java
public class CustomConfigureElement implements ConfigureElement<TestSuiteResult> {
@Override
public TestSuiteResult process(ContextWrapper context) {
// 实现配置应用逻辑
}
}注册自定义协议
在相应的META-INF/services/目录下注册实现类:
# META-INF/services/io.github.xiaomisum.ryze.testelement.sampler.Sampler
com.example.CustomSampler
# META-INF/services/io.github.xiaomisum.ryze.testelement.processor.Preprocessor
com.example.CustomPreprocessor
# META-INF/services/io.github.xiaomisum.ryze.testelement.processor.Postprocessor
com.example.CustomPostprocessor
# META-INF/services/io.github.xiaomisum.ryze.testelement.configelement.ConfigureElement
com.example.CustomConfigureElement使用自定义协议
在测试配置中使用自定义协议:
yaml
testclass: custom
config:
customProperty: value