Skip to content

Commit 4d40e67

Browse files
committed
added DebugClientInterceptorTest
1 parent 99d5093 commit 4d40e67

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/*
2+
* Copyright (c) 2019, Salesforce.com, Inc.
3+
* All rights reserved.
4+
* Licensed under the BSD 3-Clause license.
5+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6+
*/
7+
8+
package com.salesforce.grpc.contrib.interceptor;
9+
10+
import static org.assertj.core.api.Assertions.assertThat;
11+
12+
import java.util.LinkedList;
13+
14+
import org.junit.Rule;
15+
import org.junit.Test;
16+
17+
import com.salesforce.grpc.contrib.GreeterGrpc;
18+
import com.salesforce.grpc.contrib.HelloRequest;
19+
import com.salesforce.grpc.contrib.HelloResponse;
20+
import com.salesforce.grpc.contrib.interceptor.DebugClientInterceptor.Level;
21+
22+
import io.grpc.ForwardingServerCall.SimpleForwardingServerCall;
23+
import io.grpc.Metadata;
24+
import io.grpc.ServerCall;
25+
import io.grpc.ServerCall.Listener;
26+
import io.grpc.ServerCallHandler;
27+
import io.grpc.ServerInterceptor;
28+
import io.grpc.ServerInterceptors;
29+
import io.grpc.stub.MetadataUtils;
30+
import io.grpc.stub.StreamObserver;
31+
import io.grpc.testing.GrpcServerRule;
32+
33+
public class DebugClientInterceptorTest {
34+
35+
@Rule
36+
public final GrpcServerRule serverRule = new GrpcServerRule().directExecutor();
37+
38+
private GreeterGrpc.GreeterImplBase svc = new GreeterGrpc.GreeterImplBase() {
39+
@Override
40+
public void sayHello(HelloRequest request, StreamObserver<HelloResponse> responseObserver) {
41+
responseObserver.onNext(HelloResponse.newBuilder().setMessage("Hello " + request.getName()).build());
42+
responseObserver.onCompleted();
43+
}
44+
};
45+
46+
@Test
47+
public void clientStopwatchWorks() {
48+
LinkedList<String> logs = new LinkedList<String>();
49+
Metadata requestHeaders = new Metadata();
50+
requestHeaders.put(Metadata.Key.of("request_header", Metadata.ASCII_STRING_MARSHALLER), "request_header_value");
51+
//Setup
52+
serverRule.getServiceRegistry().addService(ServerInterceptors.intercept(svc, new ServerInterceptor() {
53+
@Override
54+
public <ReqT, RespT> Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers,
55+
ServerCallHandler<ReqT, RespT> next) {
56+
return next.startCall(new SimpleForwardingServerCall<ReqT, RespT>(call) {
57+
@Override
58+
public void sendHeaders(Metadata responseHeaders) {
59+
responseHeaders.put(Metadata.Key.of("response_header", Metadata.ASCII_STRING_MARSHALLER), "response_header_value");
60+
super.sendHeaders(responseHeaders);
61+
}
62+
}, headers);
63+
}
64+
}));
65+
GreeterGrpc.GreeterBlockingStub stub = GreeterGrpc
66+
.newBlockingStub(serverRule.getChannel())
67+
.withInterceptors(new DebugClientInterceptor(Level.STATUS, Level.HEADERS, Level.MESSAGE) {
68+
@Override
69+
protected void log(String message) {
70+
logs.add(message);
71+
}
72+
73+
}, MetadataUtils.newAttachHeadersInterceptor(requestHeaders));
74+
75+
stub.sayHello(HelloRequest.newBuilder().setName("World").build());
76+
assertThat(logs.poll()).contains("SayHello"); //request method name
77+
assertThat(logs.poll()).contains(requestHeaders.toString()); //request header value
78+
assertThat(logs.poll()).contains("World"); //request message
79+
assertThat(logs.poll()).contains("response_header_value"); //response header
80+
assertThat(logs.poll()).contains("Hello World"); //response message
81+
assertThat(logs.poll()).contains("0 OK"); //response status
82+
}
83+
84+
}

0 commit comments

Comments
 (0)