目录
测试逻辑
我们可以使用一个简单的业务处理逻辑来进行测试。
最简单的,我们业务逻辑就直接返回一个固定的字符串
void Message(const PtrConnection&con,Buffer* inbuffer) //模拟用户新数据回调
{
inbuffer->MoveReadOffset(inbuffer->ReadSize()); //直接读完
std::string resp = "OKOK";
con->Send(resp.c_str(),resp.size());
}
void Close(const PtrConnection&con)
{
NORMAL_LOG("连接关闭: %p",con.get());
}
void Connect(const PtrConnection&con)
{
NORMAL_LOG("连接建立: %p",con.get());
}
//任意事件回调
void Event(const PtrConnection&con)
{
// NORMAL_LOG("事件到来:%d",con->Fd());
}
那么主函数的逻辑:
int main()
{
TcpServer svr(8080);
svr.EnableInactiveRelease(30);
svr.SetThreadCount(3);
svr.SetConnectCallBack(Connect);
svr.SetMessageCallBack(Message);
svr.SetEventCallBack(Event);
svr.SetCloseCallBack(Close);
svr.Start();
return 0;
}
测试工具
现阶段我们使用webbench来进行测试,
我们在Web Bench Homepage下载webbench的源码。然后传送到云服务器。
然后下载一个组件:
解下来解压缩
这个文件的后缀虽然是 .gz ,但是我们使用 tar zxvf 进行解压缩时会发现它提示并不是 .gz 格式,这时候我们可以把文件名的 .gz 后缀去掉,然后只用 tar xvf 进行解压缩
然后进入该目录,使用make命令进行编译
这时候我们会发现他会有一个报错
我们可以进入这个webbench.c文件找到报错的地方
很明显这个参数没用到,我们可以把这个参数删除
这时候再使用make编译就没问题了。
测试
接下来就是测试了。
webbench 的使用方式也很简单,我们可以看一下他的使用手册
-c 用于设置客户端数量,-t设置测试的时间,然后我们还需要给出服务器的网址,也就是给一个url,我们可以在url中携带一个参数,虽然也没什么用。
后续我们就可以开始进行测试了:
我们设置的服务器的端口号是8080,所以我们可以用下面的命令行来测试
./webbench -c 5000 -t 30 http://127.0.0.1:8080/hello
其实我们这样子测试是不严谨的,因为我们使用的是云服务器,同时,我们测试的客户端和服务器都在一台主机上,所以他收到网络带宽的影响很小。 但是由于我们的云服务器的配置一般很低,带宽很小,资源也很少,所以我们目前也只能这样进行简单的测试,后续我们可以使用postman进行测试。 因为目前我们只是简单的对服务器的逻辑进行测试,具体的性能测试其实我们是不好做的。