21 #include <gtest/gtest.h>
23 #include "absl/memory/memory.h"
55 void SetAuthMetadataProcessor(
56 const std::shared_ptr<AuthMetadataProcessor>& )
override {
61 bool IsInsecure()
const override {
return true; }
67 return std::shared_ptr<ServerCredentials>(
new BinderServerCredentialsImpl());
71 std::unique_ptr<grpc_binder::Binder> endpoint_binder) {
81 std::vector<std::unique_ptr<
96 ~BinderServerTest()
override {
103 #ifndef GPR_SUPPORT_BINDER_TRANSPORT
104 TEST(BinderServerCredentialsTest,
105 FailedInEnvironmentsNotSupportingBinderTransport) {
116 #endif // !GPR_SUPPORT_BINDER_TRANSPORT
118 TEST_F(BinderServerTest, BuildAndStart) {
132 TEST_F(BinderServerTest, BuildAndStartFailed) {
143 TEST_F(BinderServerTest, CreateChannelWithEndpointBinder) {
150 void* raw_endpoint_binder =
152 std::unique_ptr<grpc_binder::Binder> endpoint_binder =
153 absl::make_unique<grpc_binder::end2end_testing::FakeBinder>(
155 raw_endpoint_binder));
156 std::shared_ptr<grpc::Channel>
channel =
158 std::unique_ptr<grpc::testing::EchoTestService::Stub>
stub =
159 grpc::testing::EchoTestService::NewStub(
channel);
160 grpc::testing::EchoRequest
request;
161 grpc::testing::EchoResponse
response;
163 request.set_message(
"BinderServerBuilder");
170 TEST_F(BinderServerTest, CreateChannelWithEndpointBinderMultipleConnections) {
174 server_builder.
AddListeningPort(
"binder:example.service.multiple.connections",
178 "example.service.multiple.connections");
181 auto thread_fn = [&](
size_t id) {
182 std::unique_ptr<grpc_binder::Binder> endpoint_binder =
183 absl::make_unique<grpc_binder::end2end_testing::FakeBinder>(
185 raw_endpoint_binder));
186 std::shared_ptr<grpc::Channel>
channel =
188 std::unique_ptr<grpc::testing::EchoTestService::Stub>
stub =
189 grpc::testing::EchoTestService::NewStub(
channel);
190 grpc::testing::EchoRequest
request;
191 grpc::testing::EchoResponse
response;
210 TEST_F(BinderServerTest, CreateChannelWithEndpointBinderParallelRequests) {
217 void* raw_endpoint_binder =
219 std::unique_ptr<grpc_binder::Binder> endpoint_binder =
220 absl::make_unique<grpc_binder::end2end_testing::FakeBinder>(
222 raw_endpoint_binder));
223 std::shared_ptr<grpc::Channel>
channel =
225 std::unique_ptr<grpc::testing::EchoTestService::Stub>
stub =
226 grpc::testing::EchoTestService::NewStub(
channel);
228 constexpr
size_t kNumRequests = 128;
230 auto thread_fn = [&](
size_t id) {
231 grpc::testing::EchoRequest
request;
234 grpc::testing::EchoResponse
response;
240 std::vector<std::thread>
threads(kNumRequests);
241 for (
size_t i = 0;
i < kNumRequests; ++
i) {
252 int main(
int argc,
char** argv) {