@@ -92,32 +92,7 @@ private EchoRequest buildErrorRequest() {
9292 }
9393
9494 @ Test
95- void testGrpc_actionableErrorLogged () {
96- EchoRequest request = buildErrorRequest ();
97-
98- assertThrows (ApiException .class , () -> grpcClient .echo (request ));
99-
100- assertThat (testLogger .getMessageList ().size ()).isAtLeast (1 );
101- String loggedMessage = testLogger .getMessageList ().get (testLogger .getMessageList ().size () - 1 );
102-
103- assertThat (loggedMessage ).contains ("This is a test error" );
104-
105- Map <String , Object > kvps = testLogger .getKeyValuePairsMap ();
106- assertThat (kvps ).containsEntry ("rpc.system.name" , "grpc" );
107- assertThat (kvps ).containsEntry ("rpc.method" , "google.showcase.v1beta1.Echo/Echo" );
108- assertThat (kvps ).containsEntry ("rpc.response.status_code" , "INVALID_ARGUMENT" );
109- assertThat (kvps ).containsEntry ("error.type" , "TEST_REASON" );
110- assertThat (kvps ).containsEntry ("gcp.errors.domain" , "test.googleapis.com" );
111- assertThat (kvps ).containsEntry ("gcp.errors.metadata.test_metadata" , "test_value" );
112- }
113-
114- @ Test
115- void testHttpJson_actionableErrorLogged () throws Exception {
116- // The gapic-showcase server currently returns text/plain for failEchoWithDetails instead of
117- // JSON.
118- // Additionally, sending an ErrorInfo in a request over REST fails serialization.
119- // To test HTTP JSON actionable errors logic, we use a MockHttpTransport that simulates the
120- // correct JSON format.
95+ void testHttpJson_logEmittedForLowLevelRequestFailure () throws Exception {
12196 MockHttpTransport mockTransport =
12297 new MockHttpTransport () {
12398 @ Override
@@ -170,7 +145,6 @@ public LowLevelHttpResponse execute() throws IOException {
170145 EchoClient mockHttpJsonClient = EchoClient .create (stub );
171146
172147 EchoRequest request = EchoRequest .newBuilder ().build ();
173-
174148 assertThrows (ApiException .class , () -> mockHttpJsonClient .echo (request ));
175149
176150 assertThat (testLogger .getMessageList ().size ()).isAtLeast (1 );
@@ -188,7 +162,82 @@ public LowLevelHttpResponse execute() throws IOException {
188162 assertThat (kvps ).containsEntry ("gcp.errors.metadata.mock_key" , "mock_value" );
189163
190164 mockHttpJsonClient .close ();
191- mockHttpJsonClient .awaitTermination (
192- TestClientInitializer .AWAIT_TERMINATION_SECONDS , TimeUnit .SECONDS );
165+ mockHttpJsonClient .awaitTermination (TestClientInitializer .AWAIT_TERMINATION_SECONDS , TimeUnit .SECONDS );
166+ }
167+
168+ @ Test
169+ void testHttpJson_noLogEmittedForSuccess () {
170+ EchoRequest request = EchoRequest .newBuilder ().setContent ("Success" ).build ();
171+ httpjsonClient .echo (request );
172+ assertThat (testLogger .getMessageList ().size ()).isEqualTo (0 );
173+ }
174+
175+ @ Test
176+ void testHttpJson_clientLevelFailureAttributes () throws Exception {
177+ com .google .showcase .v1beta1 .stub .EchoStubSettings .Builder stubSettingsBuilder =
178+ com .google .showcase .v1beta1 .stub .EchoStubSettings .newHttpJsonBuilder ();
179+ stubSettingsBuilder .echoSettings ().setRetrySettings (
180+ com .google .api .gax .retrying .RetrySettings .newBuilder ()
181+ .setInitialRpcTimeoutDuration (java .time .Duration .ofMillis (0 ))
182+ .setTotalTimeoutDuration (java .time .Duration .ofMillis (0 ))
183+ .setMaxAttempts (1 )
184+ .build ());
185+ stubSettingsBuilder .setTracerFactory (new LoggingTracerFactory ());
186+ stubSettingsBuilder .setEndpoint (TestClientInitializer .DEFAULT_HTTPJSON_ENDPOINT );
187+
188+ try (com .google .showcase .v1beta1 .stub .EchoStub stub = stubSettingsBuilder .build ().createStub ();
189+ EchoClient client = EchoClient .create (stub )) {
190+ assertThrows (ApiException .class , () -> client .echo (EchoRequest .newBuilder ().build ()));
191+ assertThat (testLogger .getMessageList ().size ()).isAtLeast (1 );
192+ Map <String , Object > kvps = testLogger .getKeyValuePairsMap ();
193+ assertThat (kvps ).containsEntry ("rpc.system.name" , "http" );
194+ }
195+ }
196+
197+ @ Test
198+ void testGrpc_logEmittedForLowLevelRequestFailure () {
199+ EchoRequest request = buildErrorRequest ();
200+ assertThrows (ApiException .class , () -> grpcClient .echo (request ));
201+
202+ assertThat (testLogger .getMessageList ().size ()).isAtLeast (1 );
203+ String loggedMessage = testLogger .getMessageList ().get (testLogger .getMessageList ().size () - 1 );
204+ assertThat (loggedMessage ).contains ("This is a test error" );
205+
206+ Map <String , Object > kvps = testLogger .getKeyValuePairsMap ();
207+ assertThat (kvps ).containsEntry ("rpc.system.name" , "grpc" );
208+ assertThat (kvps ).containsEntry ("rpc.method" , "google.showcase.v1beta1.Echo/Echo" );
209+ assertThat (kvps ).containsEntry ("rpc.response.status_code" , "INVALID_ARGUMENT" );
210+ assertThat (kvps ).containsEntry ("error.type" , "TEST_REASON" );
211+ assertThat (kvps ).containsEntry ("gcp.errors.domain" , "test.googleapis.com" );
212+ assertThat (kvps ).containsEntry ("gcp.errors.metadata.test_metadata" , "test_value" );
213+ }
214+
215+ @ Test
216+ void testGrpc_noLogEmittedForSuccess () {
217+ EchoRequest request = EchoRequest .newBuilder ().setContent ("Success" ).build ();
218+ grpcClient .echo (request );
219+ assertThat (testLogger .getMessageList ().size ()).isEqualTo (0 );
220+ }
221+
222+ @ Test
223+ void testGrpc_clientLevelFailureAttributes () throws Exception {
224+ com .google .showcase .v1beta1 .stub .EchoStubSettings .Builder stubSettingsBuilder =
225+ com .google .showcase .v1beta1 .stub .EchoStubSettings .newBuilder ();
226+ stubSettingsBuilder .echoSettings ().setRetrySettings (
227+ com .google .api .gax .retrying .RetrySettings .newBuilder ()
228+ .setInitialRpcTimeoutDuration (java .time .Duration .ofMillis (0 ))
229+ .setTotalTimeoutDuration (java .time .Duration .ofMillis (0 ))
230+ .setMaxAttempts (1 )
231+ .build ());
232+ stubSettingsBuilder .setTracerFactory (new LoggingTracerFactory ());
233+ stubSettingsBuilder .setEndpoint (TestClientInitializer .DEFAULT_GRPC_ENDPOINT );
234+
235+ try (com .google .showcase .v1beta1 .stub .EchoStub stub = stubSettingsBuilder .build ().createStub ();
236+ EchoClient client = EchoClient .create (stub )) {
237+ assertThrows (ApiException .class , () -> client .echo (EchoRequest .newBuilder ().build ()));
238+ assertThat (testLogger .getMessageList ().size ()).isAtLeast (1 );
239+ Map <String , Object > kvps = testLogger .getKeyValuePairsMap ();
240+ assertThat (kvps ).containsEntry ("rpc.system.name" , "grpc" );
241+ }
193242 }
194243}
0 commit comments