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