diff --git a/src/main/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposer.java index b200f74b5b..4707ea0744 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposer.java @@ -37,6 +37,7 @@ import com.google.api.generator.engine.ast.ClassDefinition; import com.google.api.generator.engine.ast.CommentStatement; import com.google.api.generator.engine.ast.ConcreteReference; +import com.google.api.generator.engine.ast.EmptyLineStatement; import com.google.api.generator.engine.ast.EnumRefExpr; import com.google.api.generator.engine.ast.Expr; import com.google.api.generator.engine.ast.ExprStatement; @@ -94,6 +95,8 @@ // TODO(miraleung): Refactor classComposer. public class ServiceClientTestClassComposer { + private static final Statement EMPTY_LINE_STATEMENT = EmptyLineStatement.create(); + private static final String CHANNEL_PROVIDER_VAR_NAME = "channelProvider"; private static final String CLASS_NAME_PATTERN = "%sClientTest"; private static final String CLIENT_VAR_NAME = "client"; @@ -565,7 +568,11 @@ private static MethodDefinition createRpcTestMethod( .setArguments(expectedResponseVarExpr) .build()); } - // TODO(miraleung): Empty line here. + List methodStatements = new ArrayList<>(); + methodStatements.addAll( + methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + methodExprs.clear(); + methodStatements.add(EMPTY_LINE_STATEMENT); // Construct the request or method arguments. boolean isRequestArg = methodSignature.isEmpty(); @@ -602,7 +609,10 @@ private static MethodDefinition createRpcTestMethod( .build()); } } - // TODO(miraleung): Empty line here. + methodStatements.addAll( + methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + methodExprs.clear(); + methodStatements.add(EMPTY_LINE_STATEMENT); // Call the RPC Java method. VariableExpr actualResponseVarExpr = @@ -658,11 +668,19 @@ private static MethodDefinition createRpcTestMethod( .setArguments(iterateAllExpr) .setReturnType(resourcesVarExpr.type()) .build(); - methodExprs.add( - AssignmentExpr.builder() - .setVariableExpr(resourcesVarExpr) - .setValueExpr(resourcesValExpr) - .build()); + + methodStatements.addAll( + methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + methodExprs.clear(); + methodStatements.add(EMPTY_LINE_STATEMENT); + + methodStatements.add( + ExprStatement.withExpr( + AssignmentExpr.builder() + .setVariableExpr(resourcesVarExpr.toBuilder().setIsDecl(true).build()) + .setValueExpr(resourcesValExpr) + .build())); + methodStatements.add(EMPTY_LINE_STATEMENT); // Assert the size is equivalent. methodExprs.add( @@ -714,7 +732,10 @@ private static MethodDefinition createRpcTestMethod( .setArguments(expectedResponseVarExpr, actualResponseVarExpr) .build()); } - // TODO(miraleung): Empty line here. + methodStatements.addAll( + methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + methodExprs.clear(); + methodStatements.add(EMPTY_LINE_STATEMENT); // Construct the request checker logic. VariableExpr actualRequestsVarExpr = @@ -773,7 +794,10 @@ private static MethodDefinition createRpcTestMethod( .setVariableExpr(actualRequestVarExpr.toBuilder().setIsDecl(true).build()) .setValueExpr(getFirstRequestExpr) .build()); - // TODO(miraleung): Empty line here. + methodStatements.addAll( + methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + methodExprs.clear(); + methodStatements.add(EMPTY_LINE_STATEMENT); // Assert field equality. if (isRequestArg) { @@ -860,6 +884,9 @@ private static MethodDefinition createRpcTestMethod( .setMethodName("assertTrue") .setArguments(headerSentExpr) .build()); + methodStatements.addAll( + methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + methodExprs.clear(); String testMethodName = String.format( @@ -871,8 +898,7 @@ private static MethodDefinition createRpcTestMethod( .setScope(ScopeNode.PUBLIC) .setReturnType(TypeNode.VOID) .setName(testMethodName) - .setBody( - methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())) + .setBody(methodStatements) .build(); } @@ -937,7 +963,6 @@ private static MethodDefinition createStreamingRpcTestMethod( .setArguments(expectedResponseVarExpr) .build()); } - // TODO(miraleung): Empty line here. // Construct the request or method arguments. VariableExpr requestVarExpr = @@ -954,6 +979,12 @@ private static MethodDefinition createStreamingRpcTestMethod( .setValueExpr(valExpr) .build()); + List methodStatements = new ArrayList<>(); + methodStatements.addAll( + methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + methodExprs.clear(); + methodStatements.add(EMPTY_LINE_STATEMENT); + // Construct the mock stream observer. VariableExpr responseObserverVarExpr = VariableExpr.withVariable( @@ -967,15 +998,17 @@ private static MethodDefinition createStreamingRpcTestMethod( .setName("responseObserver") .build()); - methodExprs.add( - AssignmentExpr.builder() - .setVariableExpr(responseObserverVarExpr.toBuilder().setIsDecl(true).build()) - .setValueExpr( - NewObjectExpr.builder() - .setType(STATIC_TYPES.get("MockStreamObserver")) - .setIsGeneric(true) - .build()) - .build()); + methodStatements.add( + ExprStatement.withExpr( + AssignmentExpr.builder() + .setVariableExpr(responseObserverVarExpr.toBuilder().setIsDecl(true).build()) + .setValueExpr( + NewObjectExpr.builder() + .setType(STATIC_TYPES.get("MockStreamObserver")) + .setIsGeneric(true) + .build()) + .build())); + methodStatements.add(EMPTY_LINE_STATEMENT); // Build the callable variable and assign it. VariableExpr callableVarExpr = @@ -1025,7 +1058,11 @@ private static MethodDefinition createStreamingRpcTestMethod( .build()) .build()); - // TODO(miraleung): Empty line here. + methodStatements.addAll( + methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + methodExprs.clear(); + methodStatements.add(EMPTY_LINE_STATEMENT); + methodExprs.add( MethodInvocationExpr.builder() .setExprReferenceExpr(requestObserverVarExpr) @@ -1038,6 +1075,10 @@ private static MethodDefinition createStreamingRpcTestMethod( .setMethodName("onCompleted") .build()); } + methodStatements.addAll( + methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + methodExprs.clear(); + methodStatements.add(EMPTY_LINE_STATEMENT); // Check the actual responses. VariableExpr actualResponsesVarExpr = @@ -1101,14 +1142,18 @@ private static MethodDefinition createStreamingRpcTestMethod( .setArguments(expectedResponseVarExpr, actualResponseExpr) .build()); + methodStatements.addAll( + methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + methodExprs.clear(); + methodStatements.add(EMPTY_LINE_STATEMENT); + String testMethodName = String.format("%sTest", JavaStyle.toLowerCamelCase(method.name())); return MethodDefinition.builder() .setAnnotations(Arrays.asList(TEST_ANNOTATION)) .setScope(ScopeNode.PUBLIC) .setReturnType(TypeNode.VOID) .setName(testMethodName) - .setBody( - methodExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())) + .setBody(methodStatements) .build(); } @@ -1193,12 +1238,14 @@ private static List createStreamingRpcExceptionTestStatements( DefaultValueComposer.createSimpleMessageBuilderExpr( requestMessage, resourceNames, messageTypes); - List exprs = new ArrayList<>(); - exprs.add( - AssignmentExpr.builder() - .setVariableExpr(requestVarExpr.toBuilder().setIsDecl(true).build()) - .setValueExpr(valExpr) - .build()); + List statements = new ArrayList<>(); + statements.add( + ExprStatement.withExpr( + AssignmentExpr.builder() + .setVariableExpr(requestVarExpr.toBuilder().setIsDecl(true).build()) + .setValueExpr(valExpr) + .build())); + statements.add(EMPTY_LINE_STATEMENT); // Build the responseObserver variable. VariableExpr responseObserverVarExpr = @@ -1213,15 +1260,17 @@ private static List createStreamingRpcExceptionTestStatements( .setName("responseObserver") .build()); - exprs.add( - AssignmentExpr.builder() - .setVariableExpr(responseObserverVarExpr.toBuilder().setIsDecl(true).build()) - .setValueExpr( - NewObjectExpr.builder() - .setType(STATIC_TYPES.get("MockStreamObserver")) - .setIsGeneric(true) - .build()) - .build()); + statements.add( + ExprStatement.withExpr( + AssignmentExpr.builder() + .setVariableExpr(responseObserverVarExpr.toBuilder().setIsDecl(true).build()) + .setValueExpr( + NewObjectExpr.builder() + .setType(STATIC_TYPES.get("MockStreamObserver")) + .setIsGeneric(true) + .build()) + .build())); + statements.add(EMPTY_LINE_STATEMENT); // Build the callable variable and assign it. VariableExpr callableVarExpr = @@ -1233,17 +1282,22 @@ private static List createStreamingRpcExceptionTestStatements( .setMethodName(String.format("%sCallable", JavaStyle.toLowerCamelCase(method.name()))) .setReturnType(callableVarExpr.type()) .build(); + + List exprs = new ArrayList<>(); + exprs.add( + AssignmentExpr.builder() + .setVariableExpr(callableVarExpr.toBuilder().setIsDecl(true).build()) + .setValueExpr(streamingCallExpr) + .build()); + if (method.stream().equals(Method.Stream.SERVER)) { - exprs.add(streamingCallExpr); - } else { exprs.add( - AssignmentExpr.builder() - .setVariableExpr(callableVarExpr.toBuilder().setIsDecl(true).build()) - .setValueExpr(streamingCallExpr) + MethodInvocationExpr.builder() + .setExprReferenceExpr(callableVarExpr) + .setMethodName("serverStreamingCall") + .setArguments(requestVarExpr, responseObserverVarExpr) .build()); - } - - if (!method.stream().equals(Method.Stream.SERVER)) { + } else { // Call the streaming-variant callable method. VariableExpr requestObserverVarExpr = VariableExpr.withVariable( @@ -1268,6 +1322,11 @@ private static List createStreamingRpcExceptionTestStatements( .build()) .build()); + statements.addAll( + exprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + exprs.clear(); + statements.add(EMPTY_LINE_STATEMENT); + exprs.add( MethodInvocationExpr.builder() .setExprReferenceExpr(requestObserverVarExpr) @@ -1275,6 +1334,10 @@ private static List createStreamingRpcExceptionTestStatements( .setArguments(requestVarExpr) .build()); } + statements.addAll( + exprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); + exprs.clear(); + statements.add(EMPTY_LINE_STATEMENT); List tryBodyExprs = new ArrayList<>(); // TODO(v2): This variable is unused in the generated test, it can be deleted. @@ -1333,9 +1396,6 @@ private static List createStreamingRpcExceptionTestStatements( .setCatchBody(createRpcLroExceptionTestCatchBody(catchExceptionVarExpr, true)) .build(); - List statements = new ArrayList<>(); - statements.addAll( - exprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); statements.add(tryCatchBlock); return statements; } @@ -1435,7 +1495,7 @@ private static List createRpcExceptionTestStatements( .setCatchBody(catchBody) .build(); - return Arrays.asList(tryCatchBlock); + return Arrays.asList(EMPTY_LINE_STATEMENT, tryCatchBlock); } private static List createRpcLroExceptionTestCatchBody( diff --git a/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClientTest.golden b/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClientTest.golden index 1c026587a5..edaebc54b0 100644 --- a/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClientTest.golden +++ b/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClientTest.golden @@ -78,12 +78,16 @@ public class EchoClientTest { EchoResponse expectedResponse = EchoResponse.newBuilder().setContent("content951530617").build(); mockEcho.addResponse(expectedResponse); + ResourceName parent = FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]"); + EchoResponse actualResponse = client.echo(parent); Assert.assertEquals(expectedResponse, actualResponse); + List actualRequests = mockEcho.getRequests(); Assert.assertEquals(1, actualRequests.size()); EchoRequest actualRequest = ((EchoRequest) actualRequests.get(0)); + Assert.assertEquals(parent.toString(), actualRequest.getParent()); Assert.assertTrue( channelProvider.isHeaderSent( @@ -95,6 +99,7 @@ public class EchoClientTest { public void echoExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockEcho.addException(exception); + try { ResourceName parent = FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]"); client.echo(parent); @@ -109,12 +114,16 @@ public class EchoClientTest { EchoResponse expectedResponse = EchoResponse.newBuilder().setContent("content951530617").build(); mockEcho.addResponse(expectedResponse); + Status error = Status.newBuilder().build(); + EchoResponse actualResponse = client.echo(error); Assert.assertEquals(expectedResponse, actualResponse); + List actualRequests = mockEcho.getRequests(); Assert.assertEquals(1, actualRequests.size()); EchoRequest actualRequest = ((EchoRequest) actualRequests.get(0)); + Assert.assertEquals(error, actualRequest.getError()); Assert.assertTrue( channelProvider.isHeaderSent( @@ -126,6 +135,7 @@ public class EchoClientTest { public void echoExceptionTest2() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockEcho.addException(exception); + try { Status error = Status.newBuilder().build(); client.echo(error); @@ -140,12 +150,16 @@ public class EchoClientTest { EchoResponse expectedResponse = EchoResponse.newBuilder().setContent("content951530617").build(); mockEcho.addResponse(expectedResponse); + FoobarName name = FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]"); + EchoResponse actualResponse = client.echo(name); Assert.assertEquals(expectedResponse, actualResponse); + List actualRequests = mockEcho.getRequests(); Assert.assertEquals(1, actualRequests.size()); EchoRequest actualRequest = ((EchoRequest) actualRequests.get(0)); + Assert.assertEquals(name.toString(), actualRequest.getName()); Assert.assertTrue( channelProvider.isHeaderSent( @@ -157,6 +171,7 @@ public class EchoClientTest { public void echoExceptionTest3() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockEcho.addException(exception); + try { FoobarName name = FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]"); client.echo(name); @@ -171,12 +186,16 @@ public class EchoClientTest { EchoResponse expectedResponse = EchoResponse.newBuilder().setContent("content951530617").build(); mockEcho.addResponse(expectedResponse); + String content = "content951530617"; + EchoResponse actualResponse = client.echo(content); Assert.assertEquals(expectedResponse, actualResponse); + List actualRequests = mockEcho.getRequests(); Assert.assertEquals(1, actualRequests.size()); EchoRequest actualRequest = ((EchoRequest) actualRequests.get(0)); + Assert.assertEquals(content, actualRequest.getContent()); Assert.assertTrue( channelProvider.isHeaderSent( @@ -188,6 +207,7 @@ public class EchoClientTest { public void echoExceptionTest4() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockEcho.addException(exception); + try { String content = "content951530617"; client.echo(content); @@ -202,12 +222,16 @@ public class EchoClientTest { EchoResponse expectedResponse = EchoResponse.newBuilder().setContent("content951530617").build(); mockEcho.addResponse(expectedResponse); + String name = "name3373707"; + EchoResponse actualResponse = client.echo(name); Assert.assertEquals(expectedResponse, actualResponse); + List actualRequests = mockEcho.getRequests(); Assert.assertEquals(1, actualRequests.size()); EchoRequest actualRequest = ((EchoRequest) actualRequests.get(0)); + Assert.assertEquals(name, actualRequest.getName()); Assert.assertTrue( channelProvider.isHeaderSent( @@ -219,6 +243,7 @@ public class EchoClientTest { public void echoExceptionTest5() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockEcho.addException(exception); + try { String name = "name3373707"; client.echo(name); @@ -233,12 +258,16 @@ public class EchoClientTest { EchoResponse expectedResponse = EchoResponse.newBuilder().setContent("content951530617").build(); mockEcho.addResponse(expectedResponse); + String parent = "parent-995424086"; + EchoResponse actualResponse = client.echo(parent); Assert.assertEquals(expectedResponse, actualResponse); + List actualRequests = mockEcho.getRequests(); Assert.assertEquals(1, actualRequests.size()); EchoRequest actualRequest = ((EchoRequest) actualRequests.get(0)); + Assert.assertEquals(parent, actualRequest.getParent()); Assert.assertTrue( channelProvider.isHeaderSent( @@ -250,6 +279,7 @@ public class EchoClientTest { public void echoExceptionTest6() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockEcho.addException(exception); + try { String parent = "parent-995424086"; client.echo(parent); @@ -264,13 +294,17 @@ public class EchoClientTest { EchoResponse expectedResponse = EchoResponse.newBuilder().setContent("content951530617").build(); mockEcho.addResponse(expectedResponse); + String content = "content951530617"; Severity severity = Severity.forNumber(0); + EchoResponse actualResponse = client.echo(content, severity); Assert.assertEquals(expectedResponse, actualResponse); + List actualRequests = mockEcho.getRequests(); Assert.assertEquals(1, actualRequests.size()); EchoRequest actualRequest = ((EchoRequest) actualRequests.get(0)); + Assert.assertEquals(content, actualRequest.getContent()); Assert.assertEquals(severity, actualRequest.getSeverity()); Assert.assertTrue( @@ -283,6 +317,7 @@ public class EchoClientTest { public void echoExceptionTest7() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockEcho.addException(exception); + try { String content = "content951530617"; Severity severity = Severity.forNumber(0); @@ -300,9 +335,12 @@ public class EchoClientTest { mockEcho.addResponse(expectedResponse); ExpandRequest request = ExpandRequest.newBuilder().setContent("content951530617").setInfo("info3237038").build(); + MockStreamObserver responseObserver = new MockStreamObserver<>(); + ServerStreamingCallable callable = client.expandCallable(); callable.serverStreamingCall(request, responseObserver); + List actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); @@ -314,8 +352,12 @@ public class EchoClientTest { mockEcho.addException(exception); ExpandRequest request = ExpandRequest.newBuilder().setContent("content951530617").setInfo("info3237038").build(); + MockStreamObserver responseObserver = new MockStreamObserver<>(); - client.expandCallable(); + + ServerStreamingCallable callable = client.expandCallable(); + callable.serverStreamingCall(request, responseObserver); + try { List actualResponses = responseObserver.future().get(); Assert.fail("No exception thrown"); @@ -337,12 +379,16 @@ public class EchoClientTest { .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setFoobar(Foobar.newBuilder().build()) .build(); + MockStreamObserver responseObserver = new MockStreamObserver<>(); + ClientStreamingCallable callable = client.collectCallable(); ApiStreamObserver requestObserver = callable.clientStreamingCall(request, responseObserver); + requestObserver.onNext(request); requestObserver.onCompleted(); + List actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); @@ -358,11 +404,15 @@ public class EchoClientTest { .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setFoobar(Foobar.newBuilder().build()) .build(); + MockStreamObserver responseObserver = new MockStreamObserver<>(); + ClientStreamingCallable callable = client.collectCallable(); ApiStreamObserver requestObserver = callable.clientStreamingCall(request, responseObserver); + requestObserver.onNext(request); + try { List actualResponses = responseObserver.future().get(); Assert.fail("No exception thrown"); @@ -384,12 +434,16 @@ public class EchoClientTest { .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setFoobar(Foobar.newBuilder().build()) .build(); + MockStreamObserver responseObserver = new MockStreamObserver<>(); + BidiStreamingCallable callable = client.chatCallable(); ApiStreamObserver requestObserver = callable.bidiStreamingCall(request, responseObserver); + requestObserver.onNext(request); requestObserver.onCompleted(); + List actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); @@ -405,11 +459,15 @@ public class EchoClientTest { .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setFoobar(Foobar.newBuilder().build()) .build(); + MockStreamObserver responseObserver = new MockStreamObserver<>(); + BidiStreamingCallable callable = client.chatCallable(); ApiStreamObserver requestObserver = callable.bidiStreamingCall(request, responseObserver); + requestObserver.onNext(request); + try { List actualResponses = responseObserver.future().get(); Assert.fail("No exception thrown"); @@ -431,12 +489,16 @@ public class EchoClientTest { .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setFoobar(Foobar.newBuilder().build()) .build(); + MockStreamObserver responseObserver = new MockStreamObserver<>(); + BidiStreamingCallable callable = client.chatAgainCallable(); ApiStreamObserver requestObserver = callable.bidiStreamingCall(request, responseObserver); + requestObserver.onNext(request); requestObserver.onCompleted(); + List actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); @@ -452,11 +514,15 @@ public class EchoClientTest { .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setFoobar(Foobar.newBuilder().build()) .build(); + MockStreamObserver responseObserver = new MockStreamObserver<>(); + BidiStreamingCallable callable = client.chatAgainCallable(); ApiStreamObserver requestObserver = callable.bidiStreamingCall(request, responseObserver); + requestObserver.onNext(request); + try { List actualResponses = responseObserver.future().get(); Assert.fail("No exception thrown"); @@ -476,19 +542,25 @@ public class EchoClientTest { .addAllResponses(Arrays.asList(responsesElement)) .build(); mockEcho.addResponse(expectedResponse); + PagedExpandRequest request = PagedExpandRequest.newBuilder() .setContent("content951530617") .setPageSize(883849137) .setPageToken("page_token1630607433") .build(); + PagedExpandResponse pagedListResponse = client.pagedExpand(request); - resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + Assert.assertEquals(1, resources.size()); Assert.assertEquals(expectedResponse.getResponsesList().get(0), resources.get(0)); + List actualRequests = mockEcho.getRequests(); Assert.assertEquals(1, actualRequests.size()); PagedExpandRequest actualRequest = ((PagedExpandRequest) actualRequests.get(0)); + Assert.assertEquals(request.getContent(), actualRequest.getContent()); Assert.assertEquals(request.getPageSize(), actualRequest.getPageSize()); Assert.assertEquals(request.getPageToken(), actualRequest.getPageToken()); @@ -502,6 +574,7 @@ public class EchoClientTest { public void pagedExpandExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockEcho.addException(exception); + try { PagedExpandRequest request = PagedExpandRequest.newBuilder() @@ -527,12 +600,16 @@ public class EchoClientTest { .setResponse(Any.pack(expectedResponse)) .build(); mockEcho.addResponse(resultOperation); + Duration ttl = Duration.newBuilder().build(); + WaitResponse actualResponse = client.waitAsync(ttl).get(); Assert.assertEquals(expectedResponse, actualResponse); + List actualRequests = mockEcho.getRequests(); Assert.assertEquals(1, actualRequests.size()); WaitRequest actualRequest = ((WaitRequest) actualRequests.get(0)); + Assert.assertEquals(ttl, actualRequest.getTtl()); Assert.assertTrue( channelProvider.isHeaderSent( @@ -544,6 +621,7 @@ public class EchoClientTest { public void waitExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockEcho.addException(exception); + try { Duration ttl = Duration.newBuilder().build(); client.waitAsync(ttl).get(); @@ -566,12 +644,16 @@ public class EchoClientTest { .setResponse(Any.pack(expectedResponse)) .build(); mockEcho.addResponse(resultOperation); + Timestamp endTime = Timestamp.newBuilder().build(); + WaitResponse actualResponse = client.waitAsync(endTime).get(); Assert.assertEquals(expectedResponse, actualResponse); + List actualRequests = mockEcho.getRequests(); Assert.assertEquals(1, actualRequests.size()); WaitRequest actualRequest = ((WaitRequest) actualRequests.get(0)); + Assert.assertEquals(endTime, actualRequest.getEndTime()); Assert.assertTrue( channelProvider.isHeaderSent( @@ -583,6 +665,7 @@ public class EchoClientTest { public void waitExceptionTest2() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockEcho.addException(exception); + try { Timestamp endTime = Timestamp.newBuilder().build(); client.waitAsync(endTime).get(); @@ -599,12 +682,16 @@ public class EchoClientTest { BlockResponse expectedResponse = BlockResponse.newBuilder().setContent("content951530617").build(); mockEcho.addResponse(expectedResponse); + BlockRequest request = BlockRequest.newBuilder().build(); + BlockResponse actualResponse = client.block(request); Assert.assertEquals(expectedResponse, actualResponse); + List actualRequests = mockEcho.getRequests(); Assert.assertEquals(1, actualRequests.size()); BlockRequest actualRequest = ((BlockRequest) actualRequests.get(0)); + Assert.assertEquals(request.getResponseDelay(), actualRequest.getResponseDelay()); Assert.assertEquals(request.getError(), actualRequest.getError()); Assert.assertEquals(request.getSuccess(), actualRequest.getSuccess()); @@ -618,6 +705,7 @@ public class EchoClientTest { public void blockExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockEcho.addException(exception); + try { BlockRequest request = BlockRequest.newBuilder().build(); client.block(request);