工具和库的使用--pomelo-robot

#pomelo-robot
pomelo-robot 是一个用来对pomelo游戏服务器框架进行性能测试的工具, 也可以测试其他基于socket.io服务的性能.
该模块可以采用单机或者分布式测试两种模式.
【工具和库的使用--pomelo-robot】#功能
对游戏项目进行自动化的性能测试和分析, 为游戏服务器提供机器人及其运行脚本, 最终输出性能测试分析报告.
pomelo-robot 模块通过沙箱的方式执行用户自定义的JS脚本. 运行过程中各客户端会自动把数据汇报给主节点, 主节点把所有节点的测试数据进行提炼汇总, 计算出平均响应时间等统计数据, 然后定时发给内置的HTTP服务器进行界面展示.
#模块结构
模块内部运行结构如下:
工具和库的使用--pomelo-robot
文章图片

"Master"负责收集所有"Client"的运行数据并展示统计结果.

"Client"负责在多个沙箱(“User”)中运行自定义脚本, 同时向"Master"汇报运行数据.
##使用示例
创建Node.js测试工程, 工程目录结构如下图所示:

工具和库的使用--pomelo-robot
文章图片

安装依赖库:

npm install pomelo-robot

###config.json配置
"config.json"分为两种运行环境: 开发(dev)或生产(prod)环境, "prod"环境的文件内容如下:
{ "master": {"host": "127.0.0.1", "port":8888, "webport":8889, "interval":500} }

“master”:主服务器的IP, 与客户端的通讯端口, WEB界面端口, 间隔多少毫秒运行一个自定义JS脚本(如:lord.js).

###实现自定义脚本配置
#####在"env.json"中配置自定义脚本路径:

{ "env": "prod", "script": "/app/script/lord.js" }

#####实现自定义脚本"lord.js":
// ... var queryHero = require(cwd + '/app/data/mysql').queryHero; // ... function entry(host, port, token, callback) { // ... // 初始化socketClient pomelo.init({host: host, port: port, log: true}, function() { pomelo.request('connector.entryHandler.entry', {token: token}, function(data) { // ... afterLogin(pomelo,data); }); }); } // ...

"/app/data/mysql.js"中查找登录角色的代码如下:
// ... queryHero = function(client,limit,offset,cb){ var users = []; var sql = "SELECT User.* FROM User,Player where User.id = Player.userId and User.name like 'pomelo%' limit ? offset ? "; // ... }; // ...

上面的代码运行在沙箱中: 首先登录游戏服务器, 登录成功后回调"afterLogin"函数, 用户可以进行后续的相关操作.

###启动入口文件app.js
"app.js"会根据启动参数判断是启动"master"服务还是"client"服务.

var envConfig = require('./app/config/env.json'); var config = require('./app/config/' + envConfig.env + '/config'); //... if (mode === 'master') { robot.runMaster(__filename); } else { var script = (process.cwd() + envConfig.script); robot.runAgent(script); } // ...

具体代码可参考工程.

###运行测试
运行如下命令, 启动"master"服务:

“node app.js master”

打开浏览器访问地址"http://masterIp:8889"

运行如下命令, 启动"client"服务:

“node app.js client”

注: 可以在多台机器上启动"client"服务进行性能和压力测试.
WEB界面会显示连接到"master"的"client"数量, 可以在"Per Agent Users"一栏中配置每个"client"将要运行的沙箱数量, 点击"Go"按钮通知所有的"client"开始运行. WEB界面会定时获取后台数据进行展示.

运行界面如下图所示:

工具和库的使用--pomelo-robot
文章图片

工具和库的使用--pomelo-robot
文章图片

###其他
源代码请参考工程

    推荐阅读