Add grpc tri integration test
diff --git a/dubbo-samples-triple/README.MD b/dubbo-samples-triple/README.MD
index a427a13..736a402 100644
--- a/dubbo-samples-triple/README.MD
+++ b/dubbo-samples-triple/README.MD
@@ -17,10 +17,21 @@
Code under `test` folder is a general interoperation test suite for both Dubbo/Dubbo and Dubbo/GRPC.
#### Dubbo/Dubbo test
-1. Run `org.apache.dubbo.sample.tri.TestProvider`
-2. Run `org.apache.dubbo.sample.tri.PbTest` , `org.apache.dubbo.sample.tri.WrapConsumerTest` and `org.apache.dubbo.sample.tri.GenericTest`
+1. Run `org.apache.dubbo.sample.tri.TriProvider`
+2. Run `org.apache.dubbo.sample.tri.TriPbConsumerTest` , `org.apache.dubbo.sample.tri.TriWrapConsumerTest` and `org.apache.dubbo.sample.tri.TriGenericTest`
#### DUbbo/GRPC test
-TBD
+
+##### GRPC --> Dubbo
+
+1. Run `org.apache.dubbo.sample.tri.TriProvider`
+2. Run `org.apache.dubbo.sample.tri.GrpcConsumerTest`
+
+##### Dubbo --> GRPC
+
+1. Run `org.apache.dubbo.sample.tri.GrpcProvider`
+2. Run `org.apache.dubbo.sample.tri.TriPbConsumerTest`
+
+
diff --git a/dubbo-samples-triple/pom.xml b/dubbo-samples-triple/pom.xml
index 0882567..ae8f9fc 100644
--- a/dubbo-samples-triple/pom.xml
+++ b/dubbo-samples-triple/pom.xml
@@ -39,6 +39,7 @@
<maven-failsafe-plugin.version>2.21.0</maven-failsafe-plugin.version>
<spring-boot.version>1.5.13.RELEASE</spring-boot.version>
<protoc.version>3.7.1</protoc.version>
+ <dubbo.compiler.version>0.0.4-SNAPSHOT</dubbo.compiler.version>
</properties>
<dependencies>
@@ -62,7 +63,7 @@
<groupId>io.grpc</groupId>
<artifactId>grpc-all</artifactId>
<version>${grpc.version}</version>
- <scope>test</scope>
+<!-- <scope>test</scope>-->
</dependency>
<dependency>
<groupId>junit</groupId>
@@ -119,6 +120,15 @@
<protocArtifact>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
+ <protocPlugins>
+ <protocPlugin>
+ <id>dubbo</id>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-compiler</artifactId>
+ <version>${dubbo.compiler.version}</version>
+ <mainClass>org.apache.dubbo.gen.dubbo.Dubbo3Generator</mainClass>
+ </protocPlugin>
+ </protocPlugins>
</configuration>
<executions>
<execution>
diff --git a/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/EchoStreamObserver.java b/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/EchoStreamObserver.java
new file mode 100644
index 0000000..509a973
--- /dev/null
+++ b/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/EchoStreamObserver.java
@@ -0,0 +1,36 @@
+package org.apache.dubbo.sample.tri;
+
+import org.apache.dubbo.common.stream.StreamObserver;
+
+import java.util.function.Function;
+
+/**
+ * @author earthchen
+ * @date 2021/9/6
+ **/
+public class EchoStreamObserver<T, R> implements StreamObserver<T> {
+
+ private final Function<T, R> echoFunc;
+ private final StreamObserver<R> responseObserver;
+
+ public EchoStreamObserver(Function<T, R> echoFunc, StreamObserver<R> responseObserver) {
+ this.echoFunc = echoFunc;
+ this.responseObserver = responseObserver;
+ }
+
+ @Override
+ public void onNext(T data) {
+ responseObserver.onNext(echoFunc.apply(data));
+ }
+
+ @Override
+ public void onError(Throwable throwable) {
+ throwable.printStackTrace();
+ responseObserver.onError(new IllegalStateException("Stream err"));
+ }
+
+ @Override
+ public void onCompleted() {
+ responseObserver.onCompleted();
+ }
+}
diff --git a/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/Helper.java b/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/Helper.java
deleted file mode 100644
index a874c6a..0000000
--- a/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/Helper.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.apache.dubbo.sample.tri;
-
-import org.apache.dubbo.common.stream.StreamObserver;
-
-import java.util.function.Function;
-
-public class Helper {
-}
-
-
-class EchoStreamObserver<T, R> implements StreamObserver<T> {
- private final Function<T, R> echoFunc;
- private final StreamObserver<R> responseObserver;
-
- EchoStreamObserver(Function<T, R> echoFunc, StreamObserver<R> responseObserver) {
- this.echoFunc = echoFunc;
- this.responseObserver = responseObserver;
- }
-
- @Override
- public void onNext(T data) {
- responseObserver.onNext(echoFunc.apply(data));
- }
-
- @Override
- public void onError(Throwable throwable) {
- throwable.printStackTrace();
- responseObserver.onError(new IllegalStateException("Stream err"));
- }
-
- @Override
- public void onCompleted() {
- responseObserver.onCompleted();
- }
-}
-
-class StdoutStreamObserver<T> implements StreamObserver<T> {
- private final String name;
-
- StdoutStreamObserver(String name) {
- this.name = name;
- }
-
- @Override
- public void onNext(T data) {
- System.out.println("[" + name + "] stream reply:" + data);
- }
-
- @Override
- public void onError(Throwable throwable) {
- System.err.println("[" + name + "] Error:");
- throwable.printStackTrace();
- }
-
- @Override
- public void onCompleted() {
- System.out.println("[" + name + "] stream done");
- }
-}
diff --git a/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/StdoutStreamObserver.java b/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/StdoutStreamObserver.java
new file mode 100644
index 0000000..232e0c5
--- /dev/null
+++ b/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/StdoutStreamObserver.java
@@ -0,0 +1,33 @@
+package org.apache.dubbo.sample.tri;
+
+import org.apache.dubbo.common.stream.StreamObserver;
+
+/**
+ * @author earthchen
+ * @date 2021/9/6
+ **/
+public class StdoutStreamObserver<T> implements StreamObserver<T>, io.grpc.stub.StreamObserver<T> {
+
+
+ private final String name;
+
+ StdoutStreamObserver(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public void onNext(T data) {
+ System.out.println("[" + name + "] stream reply:" + data);
+ }
+
+ @Override
+ public void onError(Throwable throwable) {
+ System.err.println("[" + name + "] Error:");
+ throwable.printStackTrace();
+ }
+
+ @Override
+ public void onCompleted() {
+ System.out.println("[" + name + "] stream done");
+ }
+}
\ No newline at end of file
diff --git a/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/TriSampleConstants.java b/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/TriSampleConstants.java
index e86d6d3..0e64ef7 100644
--- a/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/TriSampleConstants.java
+++ b/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/TriSampleConstants.java
@@ -25,5 +25,7 @@
public static final String ZK_ADDRESS = "zookeeper://127.0.0.1:2181";
- public static final String DEFAULT_ADDRESS = "tri://127.0.0.1:" + SERVER_POINT;
+ public static final String HOST = "127.0.0.1";
+
+ public static final String DEFAULT_ADDRESS = "tri://" + HOST + ":" + SERVER_POINT;
}
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
deleted file mode 100644
index 8a644f6..0000000
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcClient.java
+++ /dev/null
@@ -1,38 +0,0 @@
-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/GrpcConsumerTest.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcConsumerTest.java
new file mode 100644
index 0000000..dd5af33
--- /dev/null
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcConsumerTest.java
@@ -0,0 +1,101 @@
+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.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+public class GrpcConsumerTest {
+ private static PbGreeterGrpc.PbGreeterStub stub;
+ private static PbGreeterGrpc.PbGreeterBlockingStub blockingStub;
+
+ @BeforeClass
+ public static void init() {
+ final ManagedChannel channel = ManagedChannelBuilder.forAddress(TriSampleConstants.HOST, TriSampleConstants.SERVER_POINT)
+ .usePlaintext()
+ .build();
+ stub = PbGreeterGrpc.newStub(channel);
+ blockingStub = PbGreeterGrpc.newBlockingStub(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 curStub = MetadataUtils.attachHeaders(GrpcConsumerTest.stub, meta);
+ curStub.greet(GreeterRequest.newBuilder().setName("metadata").build(), new StdoutStreamObserver<>("meta"));
+ TimeUnit.SECONDS.sleep(1);
+ }
+
+
+ @Test
+ public void serverStream() throws InterruptedException {
+ int n = 10;
+ CountDownLatch latch = new CountDownLatch(n);
+ final GreeterRequest request = GreeterRequest.newBuilder()
+ .setName("request")
+ .build();
+ stub.greetServerStream(request, new StdoutStreamObserver<GreeterReply>("grpc sayGreeterServerStream") {
+ @Override
+ public void onNext(GreeterReply data) {
+ super.onNext(data);
+ latch.countDown();
+ }
+ });
+ Assert.assertTrue(latch.await(3, TimeUnit.SECONDS));
+ }
+
+
+ @Test
+ public void stream() throws InterruptedException {
+ int n = 10;
+ CountDownLatch latch = new CountDownLatch(n);
+ final GreeterRequest request = GreeterRequest.newBuilder()
+ .setName("stream request")
+ .build();
+ final io.grpc.stub.StreamObserver<GreeterRequest> requestObserver = stub.greetStream(new StdoutStreamObserver<GreeterReply>("sayGreeterStream") {
+ @Override
+ public void onNext(GreeterReply data) {
+ super.onNext(data);
+ latch.countDown();
+ }
+ });
+ for (int i = 0; i < n; i++) {
+ requestObserver.onNext(request);
+ }
+ requestObserver.onCompleted();
+ Assert.assertTrue(latch.await(3, TimeUnit.SECONDS));
+ }
+
+ @Test
+ public void unaryGreeter() {
+ final GreeterReply reply = blockingStub.greet(GreeterRequest.newBuilder()
+ .setName("name")
+ .build());
+ Assert.assertNotNull(reply);
+ }
+
+
+ @Test
+ public void attachmentTest() {
+ final Metadata.Key<String> key = Metadata.Key.of("large_size", Metadata.ASCII_STRING_MARSHALLER);
+ Metadata meta = new Metadata();
+ meta.put(key, "test");
+ final PbGreeterGrpc.PbGreeterBlockingStub curStub = MetadataUtils.attachHeaders(GrpcConsumerTest.blockingStub, meta);
+ GreeterReply reply = curStub.greetWithAttachment(GreeterRequest.newBuilder().setName("meta").build());
+ Assert.assertEquals("hello,meta", reply.getMessage());
+ }
+
+}
+
diff --git a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcProvider.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcProvider.java
index ae8bca4..fd4a62f 100644
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcProvider.java
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcProvider.java
@@ -1,5 +1,8 @@
package org.apache.dubbo.sample.tri;
+import org.apache.dubbo.sample.tri.service.impl.GrpcPbGreeterImpl;
+import org.apache.dubbo.sample.tri.service.impl.PbGreeterImpl;
+
import io.grpc.ForwardingServerCall;
import io.grpc.Metadata;
import io.grpc.Server;
diff --git a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcStreamObserverAdapter.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcStreamObserverAdapter.java
index b728e7b..af5985e 100644
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcStreamObserverAdapter.java
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcStreamObserverAdapter.java
@@ -4,6 +4,7 @@
import io.grpc.stub.StreamObserver;
public class GrpcStreamObserverAdapter<T> implements StreamObserver<T> {
+
private final org.apache.dubbo.common.stream.StreamObserver<T> delegate;
public GrpcStreamObserverAdapter(org.apache.dubbo.common.stream.StreamObserver<T> delegate) {
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
deleted file mode 100644
index 070d84d..0000000
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbGreeter.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.apache.dubbo.sample.tri;
-
-import org.apache.dubbo.common.stream.StreamObserver;
-
-public interface PbGreeter {
- GreeterReply greetWithAttachment(GreeterRequest request);
-
- GreeterReply greet(GreeterRequest request);
-
- GreeterReply methodNonExist(GreeterRequest request);
-
- GreeterReply greetException(GreeterRequest request);
-
- 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/GenericTest.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TriGenericTest.java
similarity index 95%
rename from dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GenericTest.java
rename to dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TriGenericTest.java
index 923bc5b..a9632af 100644
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GenericTest.java
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TriGenericTest.java
@@ -12,13 +12,13 @@
import org.junit.BeforeClass;
import org.junit.Test;
-public class GenericTest {
+public class TriGenericTest {
private static GenericService generic;
@BeforeClass
public static void init() {
ReferenceConfig<GenericService> ref = new ReferenceConfig<>();
- ref.setInterface("org.apache.dubbo.sample.tri.WrapGreeter");
+ ref.setInterface("org.apache.dubbo.sample.tri.service.WrapGreeter");
ref.setCheck(false);
ref.setTimeout(30000);
ref.setProtocol(CommonConstants.TRIPLE);
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/TriPbConsumerTest.java
similarity index 85%
rename from dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbTest.java
rename to dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TriPbConsumerTest.java
index 863c67d..1b03681 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/TriPbConsumerTest.java
@@ -7,6 +7,7 @@
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.sample.tri.service.PbGreeterManual;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -16,9 +17,12 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-public class PbTest {
+public class TriPbConsumerTest {
+
private static PbGreeter delegate;
+ private static PbGreeterManual delegateManual;
+
@BeforeClass
public static void init() {
ReferenceConfig<PbGreeter> ref = new ReferenceConfig<>();
@@ -29,6 +33,14 @@
ref.setLazy(true);
ref.setTimeout(10000);
+ ReferenceConfig<PbGreeterManual> ref2 = new ReferenceConfig<>();
+ ref2.setInterface(PbGreeterManual.class);
+ ref2.setCheck(false);
+ ref2.setUrl(TriSampleConstants.DEFAULT_ADDRESS);
+ ref2.setProtocol(CommonConstants.TRIPLE);
+ ref2.setLazy(true);
+ ref2.setTimeout(10000);
+
DubboBootstrap bootstrap = DubboBootstrap.getInstance();
bootstrap.application(new ApplicationConfig("demo-consumer"))
// .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
@@ -36,6 +48,7 @@
.start();
delegate = ref.get();
+ delegateManual = ref2.get();
}
@Test
@@ -108,12 +121,13 @@
final String returned = (String) RpcContext.getServiceContext().getObjectAttachment(key);
Assert.assertEquals(value, returned);
}
+
@Test
public void methodNotFound() {
try {
- delegate.methodNonExist(GreeterRequest.newBuilder().setName("meta").build());
+ delegateManual.methodNonExist(GreeterRequest.newBuilder().setName("meta").build());
TimeUnit.SECONDS.sleep(1);
- }catch (RpcException | InterruptedException e){
+ } catch (RpcException | InterruptedException e) {
Assert.assertTrue(e.getMessage().contains("not found"));
}
}
diff --git a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TestProvider.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TriProvider.java
similarity index 65%
rename from dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TestProvider.java
rename to dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TriProvider.java
index 4b764dd..bda7395 100644
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TestProvider.java
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TriProvider.java
@@ -6,13 +6,22 @@
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+import org.apache.dubbo.sample.tri.service.impl.PbGreeterImpl;
+import org.apache.dubbo.sample.tri.service.PbGreeterManual;
+import org.apache.dubbo.sample.tri.service.WrapGreeter;
+import org.apache.dubbo.sample.tri.service.impl.WrapGreeterImpl;
-public class TestProvider {
+public class TriProvider {
public static void main(String[] args) {
ServiceConfig<PbGreeter> pbService = new ServiceConfig<>();
pbService.setInterface(PbGreeter.class);
- pbService.setRef(new PbGreeterImpl());
+ PbGreeterImpl greeterImpl = new PbGreeterImpl();
+ pbService.setRef(greeterImpl);
+
+ ServiceConfig<PbGreeterManual> pbManualService = new ServiceConfig<>();
+ pbManualService.setInterface(PbGreeterManual.class);
+ pbManualService.setRef(new PbGreeterImpl());
ServiceConfig<WrapGreeter> wrapService = new ServiceConfig<>();
wrapService.setInterface(WrapGreeter.class);
@@ -24,6 +33,7 @@
.registry(new RegistryConfig(TriSampleConstants.ZK_ADDRESS))
.protocol(new ProtocolConfig(CommonConstants.TRIPLE, TriSampleConstants.SERVER_POINT))
.service(pbService)
+ .service(pbManualService)
.service(wrapService)
.start()
.await();
diff --git a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/WrapConsumerTest.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TriWrapConsumerTest.java
similarity index 97%
rename from dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/WrapConsumerTest.java
rename to dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TriWrapConsumerTest.java
index 639beb3..3893d68 100644
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/WrapConsumerTest.java
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/TriWrapConsumerTest.java
@@ -6,6 +6,7 @@
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.sample.tri.service.WrapGreeter;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -14,7 +15,8 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-public class WrapConsumerTest {
+public class TriWrapConsumerTest {
+
private static WrapGreeter delegate;
@BeforeClass
diff --git a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/service/PbGreeterManual.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/service/PbGreeterManual.java
new file mode 100644
index 0000000..8627e13
--- /dev/null
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/service/PbGreeterManual.java
@@ -0,0 +1,21 @@
+package org.apache.dubbo.sample.tri.service;
+
+import org.apache.dubbo.sample.tri.GreeterReply;
+import org.apache.dubbo.sample.tri.GreeterRequest;
+
+/**
+ * this is by manual and other by dubbo compiler
+ */
+public interface PbGreeterManual {
+// GreeterReply greetWithAttachment(GreeterRequest request);
+//
+// GreeterReply greet(GreeterRequest request);
+
+ GreeterReply methodNonExist(GreeterRequest request);
+//
+// GreeterReply greetException(GreeterRequest request);
+//
+// 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/WrapGreeter.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/service/WrapGreeter.java
similarity index 93%
rename from dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/WrapGreeter.java
rename to dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/service/WrapGreeter.java
index cadde5a..7f28536 100644
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/WrapGreeter.java
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/service/WrapGreeter.java
@@ -1,4 +1,4 @@
-package org.apache.dubbo.sample.tri;
+package org.apache.dubbo.sample.tri.service;
import org.apache.dubbo.common.stream.StreamObserver;
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/service/impl/GrpcPbGreeterImpl.java
similarity index 83%
rename from dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/GrpcPbGreeterImpl.java
rename to dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/service/impl/GrpcPbGreeterImpl.java
index 17bb7c4..30f0c7b 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/service/impl/GrpcPbGreeterImpl.java
@@ -1,8 +1,16 @@
-package org.apache.dubbo.sample.tri;
+package org.apache.dubbo.sample.tri.service.impl;
+
+import org.apache.dubbo.sample.tri.GreeterReply;
+import org.apache.dubbo.sample.tri.GreeterRequest;
+import org.apache.dubbo.sample.tri.GrpcStreamObserverAdapter;
+import org.apache.dubbo.sample.tri.PbGreeter;
+import org.apache.dubbo.sample.tri.PbGreeterGrpc;
+import org.apache.dubbo.sample.tri.StreamObserverAdapter;
import io.grpc.stub.StreamObserver;
public class GrpcPbGreeterImpl extends PbGreeterGrpc.PbGreeterImplBase {
+
private final PbGreeter delegate;
public GrpcPbGreeterImpl(PbGreeter delegate) {
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/service/impl/PbGreeterImpl.java
similarity index 84%
rename from dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/PbGreeterImpl.java
rename to dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/service/impl/PbGreeterImpl.java
index 0424ac5..b9becff 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/service/impl/PbGreeterImpl.java
@@ -1,9 +1,14 @@
-package org.apache.dubbo.sample.tri;
+package org.apache.dubbo.sample.tri.service.impl;
import org.apache.dubbo.common.stream.StreamObserver;
import org.apache.dubbo.rpc.RpcContext;
+import org.apache.dubbo.sample.tri.GreeterReply;
+import org.apache.dubbo.sample.tri.GreeterRequest;
+import org.apache.dubbo.sample.tri.PbGreeter;
+import org.apache.dubbo.sample.tri.service.PbGreeterManual;
-public class PbGreeterImpl implements PbGreeter {
+public class PbGreeterImpl implements PbGreeter, PbGreeterManual {
+
@Override
public GreeterReply greetWithAttachment(GreeterRequest request) {
final String key = "user-attachment";
@@ -59,7 +64,7 @@
public void greetServerStream(GreeterRequest request, StreamObserver<GreeterReply> replyStream) {
for (int i = 0; i < 10; i++) {
replyStream.onNext(GreeterReply.newBuilder()
- .setMessage(request.getName())
+ .setMessage(request.getName() + "--" + i)
.build());
}
replyStream.onCompleted();
diff --git a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/WrapGreeterImpl.java b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/service/impl/WrapGreeterImpl.java
similarity index 92%
rename from dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/WrapGreeterImpl.java
rename to dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/service/impl/WrapGreeterImpl.java
index 723a727..808eea3 100644
--- a/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/WrapGreeterImpl.java
+++ b/dubbo-samples-triple/src/test/java/org/apache/dubbo/sample/tri/service/impl/WrapGreeterImpl.java
@@ -1,8 +1,9 @@
-package org.apache.dubbo.sample.tri;
+package org.apache.dubbo.sample.tri.service.impl;
import org.apache.dubbo.common.stream.StreamObserver;
import org.apache.dubbo.rpc.RpcContext;
-
+import org.apache.dubbo.sample.tri.EchoStreamObserver;
+import org.apache.dubbo.sample.tri.service.WrapGreeter;
public class WrapGreeterImpl implements WrapGreeter {
@Override
diff --git a/dubbo-samples-triple/src/test/proto/test.proto b/dubbo-samples-triple/src/test/proto/test.proto
index 13445b7..3fdf9c1 100644
--- a/dubbo-samples-triple/src/test/proto/test.proto
+++ b/dubbo-samples-triple/src/test/proto/test.proto
@@ -17,6 +17,8 @@
// of unary/streaming requests/responses.
syntax = "proto3";
+option java_multiple_files = true;
+
import "empty.proto";
import "messages.proto";