|
|
|
@ -61,29 +61,33 @@ extern "C" { |
|
|
|
|
namespace grpc { |
|
|
|
|
namespace testing { |
|
|
|
|
|
|
|
|
|
static void ApplyCommonServerBuilderConfig(ServerBuilder* b) { |
|
|
|
|
b->SetMaxReceiveMessageSize(INT_MAX); |
|
|
|
|
b->SetMaxSendMessageSize(INT_MAX); |
|
|
|
|
} |
|
|
|
|
class FixtureConfiguration { |
|
|
|
|
public: |
|
|
|
|
virtual void ApplyCommonChannelArguments(ChannelArguments* c) const { |
|
|
|
|
c->SetInt(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH, INT_MAX); |
|
|
|
|
c->SetInt(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH, INT_MAX); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void ApplyCommonChannelArguments(ChannelArguments* c) { |
|
|
|
|
c->SetInt(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH, INT_MAX); |
|
|
|
|
c->SetInt(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH, INT_MAX); |
|
|
|
|
} |
|
|
|
|
virtual void ApplyCommonServerBuilderConfig(ServerBuilder* b) const { |
|
|
|
|
b->SetMaxReceiveMessageSize(INT_MAX); |
|
|
|
|
b->SetMaxSendMessageSize(INT_MAX); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class BaseFixture : public TrackCounters {}; |
|
|
|
|
|
|
|
|
|
class FullstackFixture : public BaseFixture { |
|
|
|
|
public: |
|
|
|
|
FullstackFixture(Service* service, const grpc::string& address) { |
|
|
|
|
FullstackFixture(Service* service, const FixtureConfiguration& config, |
|
|
|
|
const grpc::string& address) { |
|
|
|
|
ServerBuilder b; |
|
|
|
|
b.AddListeningPort(address, InsecureServerCredentials()); |
|
|
|
|
cq_ = b.AddCompletionQueue(true); |
|
|
|
|
b.RegisterService(service); |
|
|
|
|
ApplyCommonServerBuilderConfig(&b); |
|
|
|
|
config.ApplyCommonServerBuilderConfig(&b); |
|
|
|
|
server_ = b.BuildAndStart(); |
|
|
|
|
ChannelArguments args; |
|
|
|
|
ApplyCommonChannelArguments(&args); |
|
|
|
|
config.ApplyCommonChannelArguments(&args); |
|
|
|
|
channel_ = CreateCustomChannel(address, InsecureChannelCredentials(), args); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -107,7 +111,9 @@ class FullstackFixture : public BaseFixture { |
|
|
|
|
|
|
|
|
|
class TCP : public FullstackFixture { |
|
|
|
|
public: |
|
|
|
|
TCP(Service* service) : FullstackFixture(service, MakeAddress()) {} |
|
|
|
|
TCP(Service* service, const FixtureConfiguration& fixture_configuration = |
|
|
|
|
FixtureConfiguration()) |
|
|
|
|
: FullstackFixture(service, fixture_configuration, MakeAddress()) {} |
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
static grpc::string MakeAddress() { |
|
|
|
@ -120,7 +126,9 @@ class TCP : public FullstackFixture { |
|
|
|
|
|
|
|
|
|
class UDS : public FullstackFixture { |
|
|
|
|
public: |
|
|
|
|
UDS(Service* service) : FullstackFixture(service, MakeAddress()) {} |
|
|
|
|
UDS(Service* service, const FixtureConfiguration& fixture_configuration = |
|
|
|
|
FixtureConfiguration()) |
|
|
|
|
: FullstackFixture(service, fixture_configuration, MakeAddress()) {} |
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
static grpc::string MakeAddress() { |
|
|
|
@ -134,12 +142,13 @@ class UDS : public FullstackFixture { |
|
|
|
|
|
|
|
|
|
class EndpointPairFixture : public BaseFixture { |
|
|
|
|
public: |
|
|
|
|
EndpointPairFixture(Service* service, grpc_endpoint_pair endpoints) |
|
|
|
|
EndpointPairFixture(Service* service, grpc_endpoint_pair endpoints, |
|
|
|
|
const FixtureConfiguration& fixture_configuration) |
|
|
|
|
: endpoint_pair_(endpoints) { |
|
|
|
|
ServerBuilder b; |
|
|
|
|
cq_ = b.AddCompletionQueue(true); |
|
|
|
|
b.RegisterService(service); |
|
|
|
|
ApplyCommonServerBuilderConfig(&b); |
|
|
|
|
fixture_configuration.ApplyCommonServerBuilderConfig(&b); |
|
|
|
|
server_ = b.BuildAndStart(); |
|
|
|
|
|
|
|
|
|
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; |
|
|
|
@ -169,7 +178,7 @@ class EndpointPairFixture : public BaseFixture { |
|
|
|
|
{ |
|
|
|
|
ChannelArguments args; |
|
|
|
|
args.SetString(GRPC_ARG_DEFAULT_AUTHORITY, "test.authority"); |
|
|
|
|
ApplyCommonChannelArguments(&args); |
|
|
|
|
fixture_configuration.ApplyCommonChannelArguments(&args); |
|
|
|
|
|
|
|
|
|
grpc_channel_args c_args = args.c_channel_args(); |
|
|
|
|
client_transport_ = |
|
|
|
@ -211,15 +220,19 @@ class EndpointPairFixture : public BaseFixture { |
|
|
|
|
|
|
|
|
|
class SockPair : public EndpointPairFixture { |
|
|
|
|
public: |
|
|
|
|
SockPair(Service* service) |
|
|
|
|
SockPair(Service* service, const FixtureConfiguration& fixture_configuration = |
|
|
|
|
FixtureConfiguration()) |
|
|
|
|
: EndpointPairFixture(service, grpc_iomgr_create_endpoint_pair( |
|
|
|
|
"test", Library::get().rq(), 8192)) {} |
|
|
|
|
"test", Library::get().rq(), 8192), |
|
|
|
|
fixture_configuration) {} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class InProcessCHTTP2 : public EndpointPairFixture { |
|
|
|
|
public: |
|
|
|
|
InProcessCHTTP2(Service* service) |
|
|
|
|
: EndpointPairFixture(service, MakeEndpoints()) {} |
|
|
|
|
InProcessCHTTP2(Service* service, |
|
|
|
|
const FixtureConfiguration& fixture_configuration = |
|
|
|
|
FixtureConfiguration()) |
|
|
|
|
: EndpointPairFixture(service, MakeEndpoints(), fixture_configuration) {} |
|
|
|
|
|
|
|
|
|
void AddToLabel(std::ostream& out, benchmark::State& state) { |
|
|
|
|
EndpointPairFixture::AddToLabel(out, state); |
|
|
|
@ -238,6 +251,32 @@ class InProcessCHTTP2 : public EndpointPairFixture { |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// Minimal stack fixtures
|
|
|
|
|
|
|
|
|
|
class MinStackConfiguration : public FixtureConfiguration { |
|
|
|
|
void ApplyCommonChannelArguments(ChannelArguments* a) const override { |
|
|
|
|
a->SetInt(GRPC_ARG_MINIMAL_STACK, 1); |
|
|
|
|
FixtureConfiguration::ApplyCommonChannelArguments(a); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void ApplyCommonServerBuilderConfig(ServerBuilder* b) const override { |
|
|
|
|
b->AddChannelArgument(GRPC_ARG_MINIMAL_STACK, 1); |
|
|
|
|
FixtureConfiguration::ApplyCommonServerBuilderConfig(b); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <class Base> |
|
|
|
|
class MinStackize : public Base { |
|
|
|
|
public: |
|
|
|
|
MinStackize(Service* service) : Base(service, MinStackConfiguration()) {} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
typedef MinStackize<TCP> MinTCP; |
|
|
|
|
typedef MinStackize<UDS> MinUDS; |
|
|
|
|
typedef MinStackize<SockPair> MinSockPair; |
|
|
|
|
typedef MinStackize<InProcessCHTTP2> MinInProcessCHTTP2; |
|
|
|
|
|
|
|
|
|
} // namespace testing
|
|
|
|
|
} // namespace grpc
|
|
|
|
|
|
|
|
|
|