|
|
@ -34,13 +34,15 @@ typedef std::function<void(const InteropClientContextInspector&, |
|
|
|
const SimpleRequest*, const SimpleResponse*)> |
|
|
|
const SimpleRequest*, const SimpleResponse*)> |
|
|
|
CheckerFn; |
|
|
|
CheckerFn; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef std::function<std::shared_ptr<Channel>(void)> ChannelCreationFunc; |
|
|
|
|
|
|
|
|
|
|
|
class InteropClient { |
|
|
|
class InteropClient { |
|
|
|
public: |
|
|
|
public: |
|
|
|
/// If new_stub_every_test_case is true, a new TestService::Stub object is
|
|
|
|
/// If new_stub_every_test_case is true, a new TestService::Stub object is
|
|
|
|
/// created for every test case
|
|
|
|
/// created for every test case
|
|
|
|
/// If do_not_abort_on_transient_failures is true, abort() is not called in
|
|
|
|
/// If do_not_abort_on_transient_failures is true, abort() is not called in
|
|
|
|
/// case of transient failures (like connection failures)
|
|
|
|
/// case of transient failures (like connection failures)
|
|
|
|
explicit InteropClient(const std::shared_ptr<Channel>& channel, |
|
|
|
explicit InteropClient(ChannelCreationFunc channel_creation_func, |
|
|
|
bool new_stub_every_test_case, |
|
|
|
bool new_stub_every_test_case, |
|
|
|
bool do_not_abort_on_transient_failures); |
|
|
|
bool do_not_abort_on_transient_failures); |
|
|
|
~InteropClient() {} |
|
|
|
~InteropClient() {} |
|
|
@ -67,6 +69,14 @@ class InteropClient { |
|
|
|
bool DoUnimplementedMethod(); |
|
|
|
bool DoUnimplementedMethod(); |
|
|
|
bool DoUnimplementedService(); |
|
|
|
bool DoUnimplementedService(); |
|
|
|
bool DoCacheableUnary(); |
|
|
|
bool DoCacheableUnary(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// The following interop test are not yet part of the interop spec, and are
|
|
|
|
|
|
|
|
// not implemented cross-language. They are considered experimental for now,
|
|
|
|
|
|
|
|
// but at some point in the future, might be codified and implemented in all
|
|
|
|
|
|
|
|
// languages
|
|
|
|
|
|
|
|
bool DoChannelSoakTest(); |
|
|
|
|
|
|
|
bool DoRpcSoakTest(); |
|
|
|
|
|
|
|
|
|
|
|
// Auth tests.
|
|
|
|
// Auth tests.
|
|
|
|
// username is a string containing the user email
|
|
|
|
// username is a string containing the user email
|
|
|
|
bool DoJwtTokenCreds(const grpc::string& username); |
|
|
|
bool DoJwtTokenCreds(const grpc::string& username); |
|
|
@ -83,15 +93,17 @@ class InteropClient { |
|
|
|
public: |
|
|
|
public: |
|
|
|
// If new_stub_every_call = true, pointer to a new instance of
|
|
|
|
// If new_stub_every_call = true, pointer to a new instance of
|
|
|
|
// TestServce::Stub is returned by Get() everytime it is called
|
|
|
|
// TestServce::Stub is returned by Get() everytime it is called
|
|
|
|
ServiceStub(const std::shared_ptr<Channel>& channel, |
|
|
|
ServiceStub(ChannelCreationFunc channel_creation_func, |
|
|
|
bool new_stub_every_call); |
|
|
|
bool new_stub_every_call); |
|
|
|
|
|
|
|
|
|
|
|
TestService::Stub* Get(); |
|
|
|
TestService::Stub* Get(); |
|
|
|
UnimplementedService::Stub* GetUnimplementedServiceStub(); |
|
|
|
UnimplementedService::Stub* GetUnimplementedServiceStub(); |
|
|
|
|
|
|
|
|
|
|
|
void Reset(const std::shared_ptr<Channel>& channel); |
|
|
|
// forces channel to be recreated.
|
|
|
|
|
|
|
|
void ResetChannel(); |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
private: |
|
|
|
|
|
|
|
ChannelCreationFunc channel_creation_func_; |
|
|
|
std::unique_ptr<TestService::Stub> stub_; |
|
|
|
std::unique_ptr<TestService::Stub> stub_; |
|
|
|
std::unique_ptr<UnimplementedService::Stub> unimplemented_service_stub_; |
|
|
|
std::unique_ptr<UnimplementedService::Stub> unimplemented_service_stub_; |
|
|
|
std::shared_ptr<Channel> channel_; |
|
|
|
std::shared_ptr<Channel> channel_; |
|
|
@ -109,8 +121,8 @@ class InteropClient { |
|
|
|
bool AssertStatusCode(const Status& s, StatusCode expected_code, |
|
|
|
bool AssertStatusCode(const Status& s, StatusCode expected_code, |
|
|
|
const grpc::string& optional_debug_string); |
|
|
|
const grpc::string& optional_debug_string); |
|
|
|
bool TransientFailureOrAbort(); |
|
|
|
bool TransientFailureOrAbort(); |
|
|
|
ServiceStub serviceStub_; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ServiceStub serviceStub_; |
|
|
|
/// If true, abort() is not called for transient failures
|
|
|
|
/// If true, abort() is not called for transient failures
|
|
|
|
bool do_not_abort_on_transient_failures_; |
|
|
|
bool do_not_abort_on_transient_failures_; |
|
|
|
}; |
|
|
|
}; |
|
|
|