本文列出了故障演练支持的代码逻辑场景。
篡改Java方法返回值
修改Java指定方法的返回值,返回指定的值。具体示例,请参见JVM注入动态脚本。
参数名称 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|
类名 | 是 | 无 | 完整的类名,包含包名。例如:com.alibaba.service.XxxService。如果模拟接口故障,需填写接口的实现类。 |
方法名 | 是 | 无 | 方法名,例如:方法getUser(Long userId),则填写getUser。如果存在多个重载方法,例如:getUser(String name) 和getUser(Long userId) ,则对两个方法均生效。 |
返回值 | 是 | 无 | 指定方法的期望返回值,仅支持基础类型、基础类型的包装类、String类型。如果返回空值,填写null。 |
进程关键字 | 必选其一 | 无 | 用于识别唯一的关键字,可以通过该关键字查找到唯一进程,使用ps -ef | grep <key> 来尝试查找进程,能找到唯一进程则正确。 |
进程ID | 无 | 进程的ID。 | |
受影响的请求数 | 否 | 0 | 限制最多发生故障的请求总数,每生效一次故障计数加1,累计发生故障请求数超出设定值后,请求则不再发生故障。填写数值小于等于0时,则表示不限制。 |
受影响的请求占比(%) | 否 | 0 | 限制发生故障的请求数占所有应该发生故障请求数的百分比,也可代表每次请求发生故障的概率。填写小于或等于0,则表示100%发生故障。 说明 仅填写百分比数字部分即可,即80%,填写80。 |
请求过滤规则 | 否 | 无 | 通过脚本方式自定义规则,通过自定义规则决策是否对请求产生故障。自定义规则生效前提为需满足其它设定条件。 |
过滤规则执行阶段 | 否 | 无 | 自定义过滤规则执行的阶段,可选择Java方法调用前执行或Java方法调用后执行。 |
开启Debug | 否 | False | 选择是否开启Debug日志,用于排查演练执行过程中遇到的问题。开启Debug后,请到~/logs/chaosblade/chaosblade.log路径下查看日志。 |
Java方法调用延迟
模拟Java指定方法调用延迟。
参数名称 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|
类名 | 是 | 无 | 完整的类名,包含包名。例如:com.alibaba.service.XxxService。如果模拟接口故障,需填写接口的实现类。 |
方法名 | 是 | 无 | 方法名,例如:方法getUser(Long userId),则填写getUser。如果存在多个重载方法,如:getUser(String name) 和getUser(Long userId),则对两个方法均生效。 |
延迟时间 | 是 | 无 | 延迟的时长,单位ms。 |
延迟波动范围 | 是 | 无 | 延迟时间的上下波动范围,例如:延迟时间为2 ms,波动范围为1 ms,则实际延迟时间为[1-3] ms。 |
进程关键字 | 必选其一 | 无 | 用于识别唯一的关键字,可以通过该关键字查找到唯一进程,使用ps -ef | grep <key> 来尝试查找进程,能找到唯一进程则正确。 |
进程ID | 无 | 进程的ID。 | |
受影响的请求数 | 否 | 0 | 限制最多发生故障的请求总数,每生效一次故障计数加1,累计发生故障请求数超出设定值后,请求则不再发生故障。填写数值小于等于0时,则表示不限制。 |
受影响的请求占比(%) | 否 | 0 | 限制发生故障的请求数占所有应该发生故障请求数的百分比,也可代表每次请求发生故障的概率。填写小于或等于0,则表示100%发生故障。 说明 仅填写百分比数字部分即可,即80%,填写80。 |
请求过滤规则 | 否 | 无 | 通过脚本方式自定义规则,通过自定义规则决策是否对请求产生故障。自定义规则生效前提为需满足其它设定条件。 |
过滤规则执行阶段 | 否 | 无 | 自定义过滤规则执行的阶段,可选择Java方法调用前执行或Java方法调用后执行。 |
开启Debug | 否 | False | 选择是否开启Debug日志,用于排查演练执行过程中遇到的问题。开启Debug后,请到 ~/logs/chaosblade/chaosblade.log路径下查看日志。 |
Java方法抛出异常
模拟Java指定方法调用时抛出指定异常。
参数名称 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|
类名 | 是 | 无 | 完整的类名,包含包名。例如:com.alibaba.service.XxxService。如果模拟接口故障,需填写接口的实现类。 |
方法名 | 是 | 无 | 方法名,例如:方法getUser(Long userId),则填写getUser。如果存在多个重载方法,例如:getUser(String name) 和getUser(Long userId) ,则对两个方法均生效。 |
异常 | 是 | 无 | 抛出的异常的完成类名,抛出的异常类必须是java.lang.Exception的子类。例如:java.io.IOException。 |
异常信息 | 否 | chaosblade-mock-exception | 指定抛出异常时的异常信息,默认为chaosblade-mock-exception。 说明 异常信息中请勿包含空格。 |
进程关键字 | 必选其一 | 无 | 用于识别唯一的关键字,可以通过该关键字查找到唯一进程,使用ps -ef | grep <key> 来尝试查找进程,能找到唯一进程则正确。 |
进程ID | 无 | 进程的ID。 | |
受影响的请求数 | 否 | 0 | 限制最多发生故障的请求总数,每生效一次故障计数加1,累计发生故障请求数超出设定值后,请求则不再发生故障。填写数值小于等于0时,则表示不限制。 |
受影响的请求占比(%) | 否 | 0 | 限制发生故障的请求数占所有应该发生故障请求数的百分比,也可代表每次请求发生故障的概率。填写小于或等于0,则表示100% 发生故障。 说明 仅填写百分比数字部分即可,即80%,填写80。 |
请求过滤规则 | 否 | 无 | 通过脚本方式自定义规则,通过自定义规则决策是否对请求产生故障。自定义规则生效前提为需满足其它设定条件。 |
过滤规则执行阶段 | 否 | 无 | 自定义过滤规则执行的阶段,可选择Java方法调用前执行或Java方法调用后执行。 |
开启Debug | 否 | False | 选择是否开启Debug日志,用于排查演练执行过程中遇到的问题。开启Debug后,请到~/logs/chaosblade/chaosblade.log路径下查看日志。 |
Java方法抛出第一个异常
模拟Java指定方法调用时抛出方法声明中的第一个异常(按照声明顺序)。
参数说明如下:
参数名称 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|
类名 | 是 | 无 | 完整的类名,包含包名。例如:com.alibaba.service.XxxService。如果模拟接口故障,需填写接口的实现类。 |
方法名 | 是 | 无 | 方法名,例如:方法getUser(Long userId),则填写getUser。如果存在多个重载方法,例如:getUser(String name) 和getUser(Long userId) ,则对两个方法均生效。 |
进程关键字 | 必选其一 | 无 | 用于识别唯一的关键字,可以通过该关键字查找到唯一进程,使用ps -ef | grep <key> 来尝试查找进程,能找到唯一进程则正确。 |
进程ID | 无 | 进程的ID。 | |
受影响的请求数 | 否 | 0 | 限制最多发生故障的请求总数,每生效一次故障计数加1,累计发生故障请求数超出设定值后,请求则不再发生故障。填写数值小于等于0时,则表示不限制。 |
受影响的请求占比(%) | 否 | 0 | 限制发生故障的请求数占所有应该发生故障请求数的百分比,也可代表每次请求发生故障的概率。填写小于或等于0,则表示100%发生故障。 说明 仅填写百分比数字部分即可,即80%,填写80。 |
请求过滤规则 | 否 | 无 | 通过脚本方式自定义规则,通过自定义规则决策是否对请求产生故障。自定义规则生效前提为需满足其它设定条件。 |
过滤规则执行阶段 | 否 | 无 | 自定义过滤规则执行的阶段,可选择Java方法调用前执行或Java方法调用后执行。 |
开启Debug | 否 | false | 选择是否开启Debug日志,用于排查演练执行过程中遇到的问题。开启Debug后,请到~/logs/chaosblade/chaosblade.log路径下查看日志。 |