@@ -2070,4 +2070,48 @@ TEST_F(ServerTest, auth) {
20702070 ASSERT_EQ (0 , server.Join ());
20712071}
20722072
2073+ void TestClientHost (const butil::EndPoint& ep,
2074+ brpc::Controller& cntl,
2075+ int error_code, bool failed,
2076+ brpc::ChannelOptions& copt) {
2077+ brpc::Channel chan;
2078+ copt.max_retry = 0 ;
2079+ ASSERT_EQ (0 , chan.Init (ep, &copt));
2080+
2081+ test::EchoRequest req;
2082+ test::EchoResponse res;
2083+ req.set_message (EXP_REQUEST);
2084+ test::EchoService_Stub stub (&chan);
2085+ stub.Echo (&cntl, &req, &res, NULL );
2086+ ASSERT_EQ (cntl.Failed (), failed) << cntl.ErrorText ();
2087+ ASSERT_EQ (cntl.ErrorCode (), error_code);
2088+ }
2089+
2090+ TEST_F (ServerTest, client_host) {
2091+ butil::EndPoint ep;
2092+ ASSERT_EQ (0 , str2endpoint (" 127.0.0.1:8613" , &ep));
2093+ brpc::Server server;
2094+ EchoServiceImpl service;
2095+ ASSERT_EQ (0 , server.AddService (&service, brpc::SERVER_DOESNT_OWN_SERVICE));
2096+ brpc::ServerOptions opt;
2097+ ASSERT_EQ (0 , server.Start (ep, &opt));
2098+
2099+ brpc::Controller cntl;
2100+ brpc::ChannelOptions copt;
2101+ copt.client_host = " localhost" ;
2102+ std::vector<brpc::ConnectionType> connection_types = {
2103+ brpc::CONNECTION_TYPE_SINGLE,
2104+ brpc::CONNECTION_TYPE_POOLED,
2105+ brpc::CONNECTION_TYPE_SHORT
2106+ };
2107+ for (auto connect_type : connection_types) {
2108+ copt.connection_type = connect_type;
2109+ TestClientHost (ep, cntl, 0 , false , copt);
2110+ cntl.Reset ();
2111+ }
2112+
2113+ ASSERT_EQ (0 , server.Stop (0 ));
2114+ ASSERT_EQ (0 , server.Join ());
2115+ }
2116+
20732117} // namespace
0 commit comments