Add attachment test
diff --git a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcClient.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcClient.java
new file mode 100644
index 0000000..8a644f6
--- /dev/null
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcClient.java
@@ -0,0 +1,38 @@
+package org.apache.dubbo.sample.tri;
+
+import io.grpc.ManagedChannel;
+import io.grpc.ManagedChannelBuilder;
+import io.grpc.Metadata;
+import io.grpc.stub.MetadataUtils;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.util.concurrent.TimeUnit;
+
+public class GrpcClient {
+ private static PbGreeterGrpc.PbGreeterStub stub;
+
+ @BeforeClass
+ public static void init() {
+ final ManagedChannel channel = ManagedChannelBuilder.forAddress("127.0.0.1", 50051)
+ .usePlaintext()
+ .build();
+ stub = PbGreeterGrpc.newStub(channel);
+ }
+
+ @Test
+ public void clientSendLargeSizeHeader() throws InterruptedException {
+ final Metadata.Key<String> key = Metadata.Key.of("large_size", Metadata.ASCII_STRING_MARSHALLER);
+ StringBuilder sb = new StringBuilder("a");
+ for (int j = 0; j < 15; j++) {
+ sb.append(sb);
+ }
+ Metadata meta = new Metadata();
+ meta.put(key, sb.toString());
+ final PbGreeterGrpc.PbGreeterStub stub = MetadataUtils.attachHeaders(GrpcClient.stub, meta);
+ stub.greet(GreeterRequest.newBuilder().setName("metadata").build(),
+ new GrpcStreamObserverAdapter<>(new StdoutStreamObserver<>("meta")));
+ TimeUnit.SECONDS.sleep(1);
+ }
+}
+
diff --git a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcPbGreeterImpl.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcPbGreeterImpl.java
index 5dc4de2..4cd2529 100644
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcPbGreeterImpl.java
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcPbGreeterImpl.java
@@ -12,7 +12,7 @@
@Override
public void greet(GreeterRequest request, StreamObserver<GreeterReply> responseObserver) {
try {
- final GreeterReply response = delegate.Greet(request);
+ final GreeterReply response = delegate.greet(request);
responseObserver.onNext(response);
responseObserver.onCompleted();
} catch (Throwable t) {
@@ -23,7 +23,7 @@
@Override
public void greetException(GreeterRequest request, StreamObserver<GreeterReply> responseObserver) {
try {
- final GreeterReply response = delegate.GreetException(request);
+ final GreeterReply response = delegate.greetException(request);
responseObserver.onNext(response);
responseObserver.onCompleted();
} catch (Throwable t) {
@@ -33,11 +33,11 @@
@Override
public StreamObserver<GreeterRequest> greetStream(StreamObserver<GreeterReply> responseObserver) {
- return new GrpcStreamObserverAdapter<>(delegate.GreetStream(new StreamObserverAdapter<>(responseObserver)));
+ return new GrpcStreamObserverAdapter<>(delegate.greetStream(new StreamObserverAdapter<>(responseObserver)));
}
@Override
public void greetServerStream(GreeterRequest request, StreamObserver<GreeterReply> responseObserver) {
- delegate.GreetServerStream(request, new StreamObserverAdapter<>(responseObserver));
+ delegate.greetServerStream(request, new StreamObserverAdapter<>(responseObserver));
}
}
\ No newline at end of file
diff --git a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbGreeter.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbGreeter.java
index 243abe8..b65bc20 100644
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbGreeter.java
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbGreeter.java
@@ -3,11 +3,13 @@
import org.apache.dubbo.common.stream.StreamObserver;
public interface PbGreeter {
- GreeterReply Greet(GreeterRequest request);
+ GreeterReply greetWithAttachment(GreeterRequest request);
- GreeterReply GreetException(GreeterRequest request);
+ GreeterReply greet(GreeterRequest request);
- StreamObserver<GreeterRequest> GreetStream(StreamObserver<GreeterReply> replyStream);
+ GreeterReply greetException(GreeterRequest request);
- void GreetServerStream(GreeterRequest request, StreamObserver<GreeterReply> replyStream);
+ StreamObserver<GreeterRequest> greetStream(StreamObserver<GreeterReply> replyStream);
+
+ void greetServerStream(GreeterRequest request, StreamObserver<GreeterReply> replyStream);
}
diff --git a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbGreeterImpl.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbGreeterImpl.java
index d696d2c..f88edc5 100644
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbGreeterImpl.java
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbGreeterImpl.java
@@ -5,14 +5,22 @@
public class PbGreeterImpl implements PbGreeter {
@Override
- public GreeterReply Greet(GreeterRequest request) {
+ public GreeterReply greetWithAttachment(GreeterRequest request) {
+ final String key = "user-attachment";
+ final String value = RpcContext.getServerAttachment().getAttachment(key);
+ RpcContext.getServerContext().setObjectAttachment(key, value);
+ return GreeterReply.newBuilder().setMessage("hello," + request.getName()).build();
+ }
+
+ @Override
+ public GreeterReply greet(GreeterRequest request) {
return GreeterReply.newBuilder()
.setMessage(request.getName())
.build();
}
- public GreeterReply GreetException(GreeterRequest request) {
+ public GreeterReply greetException(GreeterRequest request) {
RpcContext.getServerContext().setAttachment("str", "str")
.setAttachment("integer", 1)
.setAttachment("raw", new byte[]{1, 2, 3, 4});
@@ -20,7 +28,7 @@
}
@Override
- public StreamObserver<GreeterRequest> GreetStream(StreamObserver<GreeterReply> replyStream) {
+ public StreamObserver<GreeterRequest> greetStream(StreamObserver<GreeterReply> replyStream) {
return new StreamObserver<GreeterRequest>() {
@Override
public void onNext(GreeterRequest data) {
@@ -43,7 +51,7 @@
}
@Override
- public void GreetServerStream(GreeterRequest request, StreamObserver<GreeterReply> replyStream) {
+ public void greetServerStream(GreeterRequest request, StreamObserver<GreeterReply> replyStream) {
for (int i = 0; i < 10; i++) {
replyStream.onNext(GreeterReply.newBuilder()
.setMessage(request.getName())
diff --git a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbTest.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbTest.java
index e5895c7..5ba7037 100644
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbTest.java
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbTest.java
@@ -5,6 +5,8 @@
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+import org.apache.dubbo.rpc.RpcContext;
+import org.apache.dubbo.rpc.RpcException;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -44,7 +46,7 @@
final GreeterRequest request = GreeterRequest.newBuilder()
.setName("request")
.build();
- delegate.GreetServerStream(request, new StdoutStreamObserver<GreeterReply>("sayGreeterServerStream") {
+ delegate.greetServerStream(request, new StdoutStreamObserver<GreeterReply>("sayGreeterServerStream") {
@Override
public void onNext(GreeterReply data) {
super.onNext(data);
@@ -61,7 +63,7 @@
final GreeterRequest request = GreeterRequest.newBuilder()
.setName("stream request")
.build();
- final StreamObserver<GreeterRequest> requestObserver = delegate.GreetStream(new StdoutStreamObserver<GreeterReply>("sayGreeterStream") {
+ final StreamObserver<GreeterRequest> requestObserver = delegate.greetStream(new StdoutStreamObserver<GreeterReply>("sayGreeterStream") {
@Override
public void onNext(GreeterReply data) {
super.onNext(data);
@@ -77,10 +79,31 @@
@Test
public void unaryGreeter() {
- final GreeterReply reply = delegate.Greet(GreeterRequest.newBuilder()
+ final GreeterReply reply = delegate.greet(GreeterRequest.newBuilder()
.setName("name")
.build());
Assert.assertNotNull(reply);
}
+
+ @Test(expected = RpcException.class)
+ public void clientSendLargeSizeHeader() throws InterruptedException {
+ StringBuilder sb = new StringBuilder("a");
+ for (int j = 0; j < 15; j++) {
+ sb.append(sb);
+ }
+ sb.setLength(8191);
+ RpcContext.getClientAttachment().setObjectAttachment("large-size-meta", sb.toString());
+ delegate.greet(GreeterRequest.newBuilder().setName("meta").build());
+ }
+
+ @Test
+ public void attachmentTest() {
+ final String key = "user-attachment";
+ final String value = "attachment-value";
+ RpcContext.getClientAttachment().setAttachment(key, value);
+ delegate.greetWithAttachment(GreeterRequest.newBuilder().setName("meta").build());
+ final String returned = (String) RpcContext.getServiceContext().getObjectAttachment(key);
+ Assert.assertEquals(value, returned);
+ }
}
diff --git a/dubbo-samples-triple/src/test/proto/prototest.proto b/dubbo-samples-triple/src/test/proto/prototest.proto
index 4d0e857..c05cfc1 100644
--- a/dubbo-samples-triple/src/test/proto/prototest.proto
+++ b/dubbo-samples-triple/src/test/proto/prototest.proto
@@ -16,11 +16,11 @@
}
service PbGreeter{
- rpc Greet(GreeterRequest) returns (GreeterReply);
+ rpc greet(GreeterRequest) returns (GreeterReply);
- rpc GreetException(GreeterRequest) returns (GreeterReply);
+ rpc greetException(GreeterRequest) returns (GreeterReply);
- rpc GreetStream(stream GreeterRequest) returns (stream GreeterReply);
+ rpc greetStream(stream GreeterRequest) returns (stream GreeterReply);
- rpc GreetServerStream(GreeterRequest) returns (stream GreeterReply);
+ rpc greetServerStream(GreeterRequest) returns (stream GreeterReply);
}