Skip to content

Commit fd6cbc5

Browse files
committed
docs: add testcase
1 parent 8f69f1e commit fd6cbc5

2 files changed

Lines changed: 41 additions & 0 deletions

File tree

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ jdbc:mysql:lb:remote://config-server.xxx.com:8080/mydatabase?connectTimeout=5000
6868

6969
config-server的部署配置,参考:[config_server](doc/config_server.md)
7070

71+
## 测试用例
72+
73+
参考:[test_case](doc/test_case.md)
7174

7275
## 示例代码
7376

doc/test_case.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
2+
## 测试用例
3+
4+
| 用例 | 测试类型 | 预期结果 | 测试结果 |
5+
|:-------------------------------------:|:----:|:----------------------------------------------------------------------------------------------------------------------:|:----:|
6+
| 常规select/delete/update/insert | 功能 | sql正确执行 | |
7+
| 多条sql的事务 | 功能 | sql正确执行,事务正确提交 | |
8+
| 多条sql的事务,执行过程中出现异常 | 功能 | 事务正确回滚,且连接可以被复用 | |
9+
| sql-proxy返回异常,如ip白名单移除后导致的access-deny | 功能 | 请求报错,且连接可以被复用 | |
10+
| sql-proxy扩缩容(操作etcd/nacos等) | 功能 | sql正确执行 <br>扩容后,连接逐步均衡到所有sql-proxy <br>缩容后,连接逐步均衡到剩余所有sql-proxy | |
11+
| sql-proxy宕机1台,10分钟后拉起 | 异常 | 业务短暂报错后恢复正常,故障sql-proxy被标记为不可达,重新拉起后,重新被标记为可达,且流量重新均衡到该节点 | |
12+
| sql-proxy断电1台 | 异常 | 短暂报错后自行恢复 <br> 断电情况下,tcp的fin包不会发到客户端,此时lb-driver不应该被hang住 <br> 请求需要触发底层tcp的sockettimeout异常,并且能被正确的标记为sql-proxy不可达 <br> | |
13+
| 某台sql-proxy网卡延时1s、20s | 异常 | 设置socketTimeout为10s,则延时1s的会导致请求变慢,延时20s的会请求超时,请求超时的节点应该被判定为不可达而自动排除掉 | |
14+
| 某台sql-proxy进程hang住(kill -19) | 异常 | 业务短暂报错后恢复正常,因为该节点被判定为不可达 | |
15+
| 访问某台sql-proxy网卡丢包100% | 异常 | 业务短暂报错后恢复正常,因为该节点被判定为不可达 | |
16+
| 所有sql-proxy节点宕机,5分钟后逐台拉起 | 异常 | 宕机后业务异常,重新拉起后业务自行恢复且流量均衡 | |
17+
| config-server宕机1台 | 异常 | 有短暂报错,随后自行恢复,但是业务流量无影响 <br>业务重启无影响 | |
18+
| config-server宕机全部 | 异常 | 有持续报错,但是业务流量无影响 <br>业务重启会失败 | |
19+
| config-server一个节点hang住(kill -19) | 异常 | 有短暂报错,随后自行恢复,但是业务流量无影响 <br>业务重启无影响 | |
20+
| config-server一个节点丢包100% | 异常 | 有短暂报错,随后自行恢复,但是业务流量无影响 <br>业务重启无影响 | |
21+
| etcd宕机1台 | 异常 | config-server有短暂报错,随后自行恢复,但是业务流量无影响 <br>业务重启无影响 <br>config-server重启无影响 | |
22+
| etcd宕机全部 | 异常 | config-server有持续报错,但是业务流量无影响 <br>业务重启无影响 <br>config-server重启失败 | |
23+
| etcd一个节点hang住(kill -19) | 异常 | config-server有短暂报错,随后自行恢复,但是业务流量无影响 <br>业务重启无影响 <br>config-server重启无影响 | |
24+
| etcd一个节点丢包100% | 异常 | config-server有短暂报错,随后自行恢复,但是业务流量无影响 <br>业务重启无影响 <br>config-server重启无影响 | |
25+
| etcd错误配置,json格式错误 | 异常 | config-server报错,但是业务流量无影响 <br>业务重启无影响 <br>config-server重启失败 | |
26+
| etcd错误配置,json格式正确,里面的节点有一个错误 | 异常 | config-server报警,但是业务流量无影响 <br>业务重启无影响 <br>config-server重启无影响 | |
27+
| etcd错误配置,json格式正确,里面的节点全部错误 | 异常 | config-server报警,但是业务流量无影响 <br>业务重启失败 <br>config-server重启成功,但是实际不可用 | |
28+
29+
30+
### 备注
31+
32+
* lb-driver定时检查连接数是否在各个sql-proxy中平衡,如果不平衡,则会尝试rebalance
33+
* lb-driver定时检查sql-proxy是否可达(通过建立一个jdbc连接来判断),如果不可达,则不再分配
34+
* lb-driver定时从config-server获取sql-proxy节点列表,和本地配置进行比对,diff后,先增加,后减少
35+
* lb-driver新增sql-proxy时,会判断是否可达,如果不可达,则虽然加入列表但是不对外分配,在定时检查任务中如果发现可达,则会对外分配
36+
* lb-driver减少sql-proxy时,会判断剩余sql-proxy是否为空或者已无可达节点,如果是,则跳过本次操作
37+
* config-server从etcd/nacos获取配置时,会校验格式,如果校验失败,则跳过,如果校验成功,则更新本地配置
38+
* config-server会校验etcd/nacos获取到的sql-proxy节点是否telnet能通,如果不能通,则会打印日志/报警,但是不影响下发lb-driver

0 commit comments

Comments
 (0)