Zeppelin 测试 - Qihoo360/zeppelin GitHub Wiki
Zeppelin 测试
基础测试
主测试项 | 子测试项 | 预期结果 |
---|---|---|
创建表 | 新表 | 正常增加表,成功后pull table显示的信息和manager dump的建表信息一致 |
已存在表 | 返回已经存在 | |
删除表 | 正常删除表,表的数据删除到回收站 | |
Node节点异常 | Slave宕机 | 集群epoch不增加,对应Master一直重复尝试发送Binlog |
Slave 恢复 | 正常恢复主从关系 | |
Slave快速重启 | epoch不增加,正常恢复主从关系 | |
Master宕机 | 集群epoch增加,重新选出新主提供服务,其他节点正常主从关系 | |
Master恢复 | epoch不变化,旧主重新加入恢复主从关系 | |
Master快速重启 | epoch不增加,启动后旧Slave主动重新发起连接 | |
多节点宕机 | epoch增加,切主,存活的Master一直尝试发送 | |
多节点宕机恢复 | 恢复 | |
Meta节点异常 | Slave宕机 | 集群正常,Node连接重新连接 |
Slave恢复 | 恢复 | |
Master宕机 超过Leader Timeout | 重新选主,元信息恢复 | |
Master宕机 不到Leader Timeout | 不发生切主 | |
Master恢复 | 以Slave的角色重新加入 | |
过半数Meta宕机 | Meta集群停止服务,已连接Node的请求不受影响 | |
集群恢复 | Node重新连接,不引起epoch变化 | |
Node节点Meta节点同时异常 | 部分Meta宕机,Meta集群正常 | 同Node节点异常 |
过半数Meta宕机,Meta集群停止服务 | 宕机Node无法正常摘掉,可能仍然作为Master存在 | |
Meta集群先恢复,Node再回复 | 宕机Node被正常摘掉 | |
Node集群先恢复,Meta再回复 | Node无法加入,知道Meta恢复 | |
选主 | Master Down, 多个slave | binlog最长slave选成新主 |
同步测试
主测试项 | 子测试项 | 预期结果 |
---|---|---|
部分同步 | 正常写入,停止 | 不同副本间偏移量一致 |
写入中,Slave宕机 | Master合理时间间隔不断重试发送 | |
写入中,Slave恢复 | 一段时间后恢复,停写后偏移量一致 | |
写入中,Master宕机 | 发生切主 | |
写入中,旧Master恢复,旧Master偏移量小于新Master | 旧主偏移量被新主fallback, 重新trysync后一段时间恢复,停写后偏移量一致,replinfo中能看到正确的fallback信息,binlog目录不会有多余历史binlog | |
写入中,旧Master恢复,旧Master偏移量大于新Master | 旧主偏移量被新主fallback, 重新trysync后一段时间恢复,停写后偏移量一致,replinfo中能看到正确的fallback信息, binlog目录不会有多余历史binlog | |
写入中,Master快速重启 | 不引起epoch变化,一段时间后Slave由于lease超时,发起重连,一段时间后恢复,停写后偏移量一致 | |
写入中,多节点接连宕机后恢复 | 一段时间后恢复 | |
全同步 | addslave增加新副本,binlog位置已经不在 | 正常dump,dbsync,建立主从关系, slave的binlog文件正确删除 |
rsync不成功 | 一段时间后Slave超时重试, 重新建立全同步 | |
Fallback | Master宕机,epoch变化后很快重启 | offset被新主reset,统计信息可以看到fallback相关 |
功能测试
主测试项 | 子测试项 | 预期结果 |
---|---|---|
回收站 | Delete Slave | 该节点对应Partition的数据移入对应回收站 |
Slave完成全同步 | 旧DB被移入回收站obsolete | |
FlushDB | 对应Partition数据移入回收站 obsolete | |
删除表 | 对应Partition数据移入回收站 | |
Purge Log | 持续写入数据 | 超过配置数量的binlog被删除 |
超过配置时间的binlog被删除 | ||
被Slave占用的binlog不会被删除 |
元信息测试
主测试项 | 子测试项 | 预期结果 |
---|---|---|
SetMaster | 设置节点是从 | 则提升为主,不影响其他表,正常建立主从关系 |
设置节点是Master或Single | 返回错误 | |
AddSlave | 增加是新节点切不在该parititon中 | 增加副本,同步数据,不影响其他表 |
增加节点不存在 | 阻止,返回错误 | |
增加节点已经是主 | 阻止,返回错误 | |
增加节点已经是从 | 阻止,返回错误 | |
DeleteSlave | 删除是Slave | 删除副本,不影响其他表 |
删除是Master | 阻止并返回错误 | |
已有Migrate任务 | 阻止并返回错误 | |
Migrate | 通过Expand或Shrink开始Migrate任务 | 正常开始,运行,按预期完成迁移后结束,通过MetaStatus可以看到状态 |
已有在运行的Migrate任务 | 阻止并返回错误 | |
已经存在的node | 阻止并返回错误 | |
源节点不负责对应partition | skip diff | |
目的节点已经负责对应的parititon | skip diff | |
CacleMigrate | 有Migrate任务 | migrate任务退出 |
没有Migrate任务 | 阻止并返回错误 | |
RemoveNodes | 目的节点还负责某些表 | 阻止并返回错误 |
目的节点不存在 | 继续 | |
目的节点在线 | 阻止并返回错误 | |
目的节点下线了并不负责任何table | 从Meta中尝试移除该node并返回结果 | |
AddMetaNode | meta,node及client获得新的meta集群信息,并重写meta_add配置 | |
RemoveMetaNode | meta,node及client获得新的meta集群信息,并重写meta_add配置,被删除节点自动退出 |
接口测试
测试项 | 测试方法 | 预期结果 |
---|---|---|
同步接口测试 | zeppelin-client/tools/zp_parade | 五种同步接口在合理时间内正常完成 |
异步接口测试 | zeppelin-client/libzp/libzp/example/zp_async | 结果正常 |
Table store接口测试 | zeppelin-client/libzp/libzp/example/zp_table | 结果正常 |
接口超时测试 | zeppelin-client/libzp/libzp/example/zp_timeout | 给出不同timeout,正常反应 |
链接数测试 | zeppelin-client/libzp/libzp/example/zp_mget | 过程中观察与node建立的链接,被node超时断开后应该能正常销毁并重建 |
内存溢出测试 | valgrind 执行zp_parade | 无溢出 |
压力测试
测试项 | 测试方法 | 预期结果 |
---|---|---|
暴力测试 | zeppelin-client/libzp/libzp/example/zp_parallel | |
压力测试 | zeppelin-client/libzp/libzp/tool/zp_benchmark |