代碼邏輯場(chǎng)景
本文列出了故障演練支持的代碼邏輯場(chǎng)景。
篡改Java方法返回值
修改Java指定方法的返回值,返回指定的值。具體示例,請(qǐng)參見JVM注入動(dòng)態(tài)腳本。
參數(shù)名稱 | 是否必選 | 默認(rèn)值 | 參數(shù)說明 |
類名 | 是 | 無 | 完整的類名,包含包名。例如:com.alibaba.service.XxxService。如果模擬接口故障,需填寫接口的實(shí)現(xiàn)類。 |
方法名 | 是 | 無 | 方法名,例如:方法getUser(Long userId),則填寫getUser。如果存在多個(gè)重載方法,例如: |
返回值 | 是 | 無 | 指定方法的期望返回值,僅支持基礎(chǔ)類型、基礎(chǔ)類型的包裝類、String類型。如果返回空值,填寫null。 |
進(jìn)程關(guān)鍵字 | 必選其一 | 無 | 用于識(shí)別唯一的關(guān)鍵字,可以通過該關(guān)鍵字查找到唯一進(jìn)程,使用 |
進(jìn)程ID | 無 | 進(jìn)程的ID。 | |
受影響的請(qǐng)求數(shù) | 否 | 0 | 限制最多發(fā)生故障的請(qǐng)求總數(shù),每生效一次故障計(jì)數(shù)加1,累計(jì)發(fā)生故障請(qǐng)求數(shù)超出設(shè)定值后,請(qǐng)求則不再發(fā)生故障。填寫數(shù)值小于等于0時(shí),則表示不限制。 |
受影響的請(qǐng)求占比(%) | 否 | 0 | 限制發(fā)生故障的請(qǐng)求數(shù)占所有應(yīng)該發(fā)生故障請(qǐng)求數(shù)的百分比,也可代表每次請(qǐng)求發(fā)生故障的概率。填寫小于或等于0,則表示100%發(fā)生故障。 說明 僅填寫百分比數(shù)字部分即可,即80%,填寫80。 |
請(qǐng)求過濾規(guī)則 | 否 | 無 | 通過腳本方式自定義規(guī)則,通過自定義規(guī)則決策是否對(duì)請(qǐng)求產(chǎn)生故障。自定義規(guī)則生效前提為需滿足其他設(shè)定條件。 |
過濾規(guī)則執(zhí)行階段 | 否 | 無 | 自定義過濾規(guī)則執(zhí)行的階段,可選擇Java方法調(diào)用前執(zhí)行或Java方法調(diào)用后執(zhí)行。 |
開啟Debug | 否 | False | 選擇是否開啟Debug日志,用于排查演練執(zhí)行過程中遇到的問題。開啟Debug后,請(qǐng)到~/logs/chaosblade/chaosblade.log路徑下查看日志。 |
Java方法調(diào)用延遲
模擬Java指定方法調(diào)用延遲。
參數(shù)名稱 | 是否必選 | 默認(rèn)值 | 參數(shù)說明 |
類名 | 是 | 無 | 完整的類名,包含包名。例如:com.alibaba.service.XxxService。如果模擬接口故障,需填寫接口的實(shí)現(xiàn)類。 |
方法名 | 是 | 無 | 方法名,例如:方法getUser(Long userId),則填寫getUser。如果存在多個(gè)重載方法,如:getUser(String name) 和getUser(Long userId),則對(duì)兩個(gè)方法均生效。 |
延遲時(shí)間 | 是 | 無 | 延遲的時(shí)長,單位ms。 |
延遲波動(dòng)范圍 | 是 | 無 | 延遲時(shí)間的上下波動(dòng)范圍,例如:延遲時(shí)間為2ms,波動(dòng)范圍為1ms,則實(shí)際延遲時(shí)間為[1-3] ms。 |
進(jìn)程關(guān)鍵字 | 必選其一 | 無 | 用于識(shí)別唯一的關(guān)鍵字,可以通過該關(guān)鍵字查找到唯一進(jìn)程,使用 |
進(jìn)程ID | 無 | 進(jìn)程的ID。 | |
受影響的請(qǐng)求數(shù) | 否 | 0 | 限制最多發(fā)生故障的請(qǐng)求總數(shù),每生效一次故障計(jì)數(shù)加1,累計(jì)發(fā)生故障請(qǐng)求數(shù)超出設(shè)定值后,請(qǐng)求則不再發(fā)生故障。填寫數(shù)值小于等于0時(shí),則表示不限制。 |
受影響的請(qǐng)求占比(%) | 否 | 0 | 限制發(fā)生故障的請(qǐng)求數(shù)占所有應(yīng)該發(fā)生故障請(qǐng)求數(shù)的百分比,也可代表每次請(qǐng)求發(fā)生故障的概率。填寫小于或等于0,則表示100%發(fā)生故障。 說明 僅填寫百分比數(shù)字部分即可,即80%,填寫80。 |
請(qǐng)求過濾規(guī)則 | 否 | 無 | 通過腳本方式自定義規(guī)則,通過自定義規(guī)則決策是否對(duì)請(qǐng)求產(chǎn)生故障。自定義規(guī)則生效前提為需滿足其他設(shè)定條件。 |
過濾規(guī)則執(zhí)行階段 | 否 | 無 | 自定義過濾規(guī)則執(zhí)行的階段,可選擇Java方法調(diào)用前執(zhí)行或Java方法調(diào)用后執(zhí)行。 |
開啟Debug | 否 | False | 選擇是否開啟Debug日志,用于排查演練執(zhí)行過程中遇到的問題。開啟Debug后,請(qǐng)到 ~/logs/chaosblade/chaosblade.log路徑下查看日志。 |
Java方法拋出異常
模擬Java指定方法調(diào)用時(shí)拋出指定異常。
參數(shù)名稱 | 是否必選 | 默認(rèn)值 | 參數(shù)說明 |
類名 | 是 | 無 | 完整的類名,包含包名。例如:com.alibaba.service.XxxService。如果模擬接口故障,需填寫接口的實(shí)現(xiàn)類。 |
方法名 | 是 | 無 | 方法名,例如:方法getUser(Long userId),則填寫getUser。如果存在多個(gè)重載方法,例如: |
異常 | 是 | 無 | 拋出的異常的完成類名,拋出的異常類必須是java.lang.Exception的子類。例如:java.io.IOException。 |
異常信息 | 否 | chaosblade-mock-exception | 指定拋出異常時(shí)的異常信息,默認(rèn)為chaosblade-mock-exception。 說明 異常信息中請(qǐng)勿包含空格。 |
進(jìn)程關(guān)鍵字 | 必選其一 | 無 | 用于識(shí)別唯一的關(guān)鍵字,可以通過該關(guān)鍵字查找到唯一進(jìn)程,使用 |
進(jìn)程ID | 無 | 進(jìn)程的ID。 | |
受影響的請(qǐng)求數(shù) | 否 | 0 | 限制最多發(fā)生故障的請(qǐng)求總數(shù),每生效一次故障計(jì)數(shù)加1,累計(jì)發(fā)生故障請(qǐng)求數(shù)超出設(shè)定值后,請(qǐng)求則不再發(fā)生故障。填寫數(shù)值小于等于0時(shí),則表示不限制。 |
受影響的請(qǐng)求占比(%) | 否 | 0 | 限制發(fā)生故障的請(qǐng)求數(shù)占所有應(yīng)該發(fā)生故障請(qǐng)求數(shù)的百分比,也可代表每次請(qǐng)求發(fā)生故障的概率。填寫小于或等于0,則表示100% 發(fā)生故障。 說明 僅填寫百分比數(shù)字部分即可,即80%,填寫80。 |
請(qǐng)求過濾規(guī)則 | 否 | 無 | 通過腳本方式自定義規(guī)則,通過自定義規(guī)則決策是否對(duì)請(qǐng)求產(chǎn)生故障。自定義規(guī)則生效前提為需滿足其他設(shè)定條件。 |
過濾規(guī)則執(zhí)行階段 | 否 | 無 | 自定義過濾規(guī)則執(zhí)行的階段,可選擇Java方法調(diào)用前執(zhí)行或Java方法調(diào)用后執(zhí)行。 |
開啟Debug | 否 | False | 選擇是否開啟Debug日志,用于排查演練執(zhí)行過程中遇到的問題。開啟Debug后,請(qǐng)到~/logs/chaosblade/chaosblade.log路徑下查看日志。 |
Java方法拋出第一個(gè)異常
模擬Java指定方法調(diào)用時(shí)拋出方法聲明中的第一個(gè)異常(按照聲明順序)。
參數(shù)說明如下:
參數(shù)名稱 | 是否必選 | 默認(rèn)值 | 參數(shù)說明 |
類名 | 是 | 無 | 完整的類名,包含包名。例如:com.alibaba.service.xxxService。如果模擬接口故障,需填寫接口的實(shí)現(xiàn)類。 |
方法名 | 是 | 無 | 方法名,例如:方法getUser(Long userId),則填寫getUser。如果存在多個(gè)重載方法,例如: |
進(jìn)程關(guān)鍵字 | 必選其一 | 無 | 用于識(shí)別唯一的關(guān)鍵字,可以通過該關(guān)鍵字查找到唯一進(jìn)程,使用 |
進(jìn)程ID | 無 | 進(jìn)程的ID。 | |
受影響的請(qǐng)求數(shù) | 否 | 0 | 限制最多發(fā)生故障的請(qǐng)求總數(shù),每生效一次故障計(jì)數(shù)加1,累計(jì)發(fā)生故障請(qǐng)求數(shù)超出設(shè)定值后,請(qǐng)求則不再發(fā)生故障。填寫數(shù)值小于等于0時(shí),則表示不限制。 |
受影響的請(qǐng)求占比(%) | 否 | 0 | 限制發(fā)生故障的請(qǐng)求數(shù)占所有應(yīng)該發(fā)生故障請(qǐng)求數(shù)的百分比,也可代表每次請(qǐng)求發(fā)生故障的概率。填寫小于或等于0,則表示100%發(fā)生故障。 說明 僅填寫百分比數(shù)字部分即可,即80%,填寫80。 |
請(qǐng)求過濾規(guī)則 | 否 | 無 | 通過腳本方式自定義規(guī)則,通過自定義規(guī)則決策是否對(duì)請(qǐng)求產(chǎn)生故障。自定義規(guī)則生效前提為需滿足其他設(shè)定條件。 |
過濾規(guī)則執(zhí)行階段 | 否 | 無 | 自定義過濾規(guī)則執(zhí)行的階段,可選擇Java方法調(diào)用前執(zhí)行或Java方法調(diào)用后執(zhí)行。 |
開啟Debug | 否 | false | 選擇是否開啟Debug日志,用于排查演練執(zhí)行過程中遇到的問題。開啟Debug后,請(qǐng)到~/logs/chaosblade/chaosblade.log路徑下查看日志。 |