|
|
@@ -7,52 +7,74 @@ namespace Egametang {
|
|
|
|
|
|
static int port = 10001;
|
|
|
|
|
|
-class RpcServerTest
|
|
|
+class RPCServerTest: public RPCCommunicator
|
|
|
{
|
|
|
public:
|
|
|
- boost::asio::io_service io_service_;
|
|
|
+ CountBarrier& barrier_;
|
|
|
+ std::string recv_string_;
|
|
|
boost::asio::ip::tcp::acceptor acceptor_;
|
|
|
- boost::asio::ip::tcp::socket socket_;
|
|
|
-
|
|
|
- int size;
|
|
|
|
|
|
public:
|
|
|
- RpcServerTest(boost::asio::io_service& service, int port):
|
|
|
- io_service_(service), size(0)
|
|
|
+ RPCServerTest(boost::asio::io_service& io_service, int port, CountBarrier& barrier):
|
|
|
+ RPCCommunicator(io_service), acceptor_(io_service),
|
|
|
+ barrier_(barrier)
|
|
|
{
|
|
|
boost::asio::ip::address address;
|
|
|
- address.from_string("localhost");
|
|
|
+ address.from_string("127.0.0.1");
|
|
|
boost::asio::ip::tcp::endpoint endpoint(address, port);
|
|
|
- boost::asio::ip::tcp::acceptor acceptor;
|
|
|
- acceptor.open(endpoint.protocol());
|
|
|
- acceptor.set_option(
|
|
|
- boost::asio::ip::tcp::acceptor::reuse_address(true));
|
|
|
- acceptor.bind(endpoint);
|
|
|
- acceptor.listen();
|
|
|
- acceptor.async_accept(socket_);
|
|
|
+ acceptor_.open(endpoint.protocol());
|
|
|
+ acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));
|
|
|
+ acceptor_.bind(endpoint);
|
|
|
+ acceptor_.listen();
|
|
|
+ acceptor_.async_accept(socket_,
|
|
|
+ boost::bind(&RPCServerTest::OnAsyncAccept, this,
|
|
|
+ boost::asio::placeholders::error));
|
|
|
}
|
|
|
- ~RpcServerTest();
|
|
|
|
|
|
- void RecvMessageSize()
|
|
|
+ void OnAsyncAccept(const boost::system::error_code& err)
|
|
|
{
|
|
|
+ if (err)
|
|
|
+ {
|
|
|
+ LOG(ERROR) << "async accept failed: " << err.message();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ RecvSize();
|
|
|
}
|
|
|
-};
|
|
|
|
|
|
-class RpcChannelTest: public testing::Test
|
|
|
-{
|
|
|
-private:
|
|
|
- int port;
|
|
|
-public:
|
|
|
- RpcChannelTest()
|
|
|
+ void Start()
|
|
|
{
|
|
|
+ VLOG(2) << "Start Server";
|
|
|
+ io_service_.run();
|
|
|
}
|
|
|
|
|
|
- void SetUp()
|
|
|
+ void Stop()
|
|
|
{
|
|
|
- port = 10001;
|
|
|
+ acceptor_.close();
|
|
|
+ socket_.close();
|
|
|
}
|
|
|
|
|
|
- void TearDown()
|
|
|
+ virtual void OnRecvMessage(StringPtr ss)
|
|
|
+ {
|
|
|
+ VLOG(2) << "Server Recv string: " << *ss;
|
|
|
+ recv_string_ = *ss;
|
|
|
+ std::string send_string("response test rpc communicator string");
|
|
|
+ SendSize(send_string.size(), send_string);
|
|
|
+ barrier_.Signal();
|
|
|
+ }
|
|
|
+ virtual void OnSendMessage()
|
|
|
+ {
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+class RpcChannelTest: public testing::Test
|
|
|
+{
|
|
|
+private:
|
|
|
+ boost::asio::io_service io_server_;
|
|
|
+ boost::asio::io_service io_client_;
|
|
|
+ RPCServerTest rpc_server_;
|
|
|
+
|
|
|
+public:
|
|
|
+ RpcChannelTest(): rpc_server_()
|
|
|
{
|
|
|
}
|
|
|
};
|