|
|
|
@ -93,6 +93,15 @@ void CheckServerAuthContext(const ServerContext* context) { |
|
|
|
|
EXPECT_TRUE(auth_ctx->GetPeerIdentity().empty()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool CheckIsLocalhost(const grpc::string& addr) { |
|
|
|
|
const grpc::string kIpv6("ipv6:[::1]:"); |
|
|
|
|
const grpc::string kIpv4MappedIpv6("ipv6:[::ffff:127.0.0.1]:"); |
|
|
|
|
const grpc::string kIpv4("ipv4:127.0.0.1:"); |
|
|
|
|
return addr.substr(0, kIpv4.size()) == kIpv4 || |
|
|
|
|
addr.substr(0, kIpv4MappedIpv6.size()) == kIpv4MappedIpv6 || |
|
|
|
|
addr.substr(0, kIpv6.size()) == kIpv6; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
|
|
class TestServiceImpl : public ::grpc::cpp::test::util::TestService::Service { |
|
|
|
@ -148,6 +157,9 @@ class TestServiceImpl : public ::grpc::cpp::test::util::TestService::Service { |
|
|
|
|
response->set_message( |
|
|
|
|
grpc::string(request->param().response_message_length(), '\0')); |
|
|
|
|
} |
|
|
|
|
if (request->has_param() && request->param().echo_peer()) { |
|
|
|
|
response->mutable_param()->set_peer(context->peer()); |
|
|
|
|
} |
|
|
|
|
return Status::OK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -236,7 +248,7 @@ class End2endTest : public ::testing::Test { |
|
|
|
|
|
|
|
|
|
void SetUp() GRPC_OVERRIDE { |
|
|
|
|
int port = grpc_pick_unused_port_or_die(); |
|
|
|
|
server_address_ << "localhost:" << port; |
|
|
|
|
server_address_ << "127.0.0.1:" << port; |
|
|
|
|
// Setup server
|
|
|
|
|
ServerBuilder builder; |
|
|
|
|
SslServerCredentialsOptions::PemKeyCertPair pkcp = {test_server1_key, |
|
|
|
@ -818,6 +830,21 @@ TEST_F(End2endTest, HugeResponse) { |
|
|
|
|
EXPECT_TRUE(s.ok()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_F(End2endTest, Peer) { |
|
|
|
|
ResetStub(); |
|
|
|
|
EchoRequest request; |
|
|
|
|
EchoResponse response; |
|
|
|
|
request.set_message("hello"); |
|
|
|
|
request.mutable_param()->set_echo_peer(true); |
|
|
|
|
|
|
|
|
|
ClientContext context; |
|
|
|
|
Status s = stub_->Echo(&context, request, &response); |
|
|
|
|
EXPECT_EQ(response.message(), request.message()); |
|
|
|
|
EXPECT_TRUE(s.ok()); |
|
|
|
|
EXPECT_TRUE(CheckIsLocalhost(response.param().peer())); |
|
|
|
|
EXPECT_TRUE(CheckIsLocalhost(context.peer())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} // namespace testing
|
|
|
|
|
} // namespace grpc
|
|
|
|
|
|
|
|
|
|