chore: add unary-unary showcase test for gRPC support (#1501) * chore: add simple unary callable showcase test for gRPC support
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fa9625d..a53a3b2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml
@@ -181,7 +181,10 @@ - name: Install maven modules run: | mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip - + - name: Java Linter + working-directory: showcase + run: | + mvn -B -ntp fmt:check - name: Showcase golden tests working-directory: showcase run: |
diff --git a/showcase/gapic-showcase/pom.xml b/showcase/gapic-showcase/pom.xml index c9ced7d..3ff935c 100644 --- a/showcase/gapic-showcase/pom.xml +++ b/showcase/gapic-showcase/pom.xml
@@ -18,10 +18,6 @@ <version>0.0.1-SNAPSHOT</version> </parent> - <properties> - <fmt.skip>true</fmt.skip> - </properties> - <profiles> <profile> <id>enable-golden-tests</id> @@ -102,6 +98,14 @@ </execution> </executions> </plugin> + <plugin> + <groupId>com.coveo</groupId> + <artifactId>fmt-maven-plugin</artifactId> + <version>2.9</version> + <configuration> + <filesNamePattern>(IT.*\.java)|(.*Test.java)</filesNamePattern> + </configuration> + </plugin> </plugins> </build> @@ -163,6 +167,13 @@ </dependency> <dependency> + <groupId>com.google.truth</groupId> + <artifactId>truth</artifactId> + <version>1.1.3</version> + <scope>test</scope> + </dependency> + + <dependency> <groupId>com.google.api.grpc</groupId> <artifactId>grpc-gapic-showcase-v1beta1</artifactId> <scope>test</scope>
diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITFirstHttp.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITFirstHttp.java deleted file mode 100644 index e1a66d6..0000000 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITFirstHttp.java +++ /dev/null
@@ -1,68 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.it; - -import static org.junit.Assert.assertEquals; - -import com.google.api.client.http.javanet.NetHttpTransport; -import com.google.api.gax.core.NoCredentialsProvider; -import com.google.showcase.v1beta1.EchoClient; -import com.google.showcase.v1beta1.EchoRequest; -import com.google.showcase.v1beta1.EchoResponse; -import com.google.showcase.v1beta1.EchoSettings; -import java.io.IOException; -import java.security.GeneralSecurityException; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -public class ITFirstHttp { - - private static EchoClient client; - - @BeforeClass - public static void createClient() throws IOException, GeneralSecurityException { - EchoSettings echoSettings = - EchoSettings.newHttpJsonBuilder() - .setCredentialsProvider(NoCredentialsProvider.create()) - .setTransportChannelProvider( - EchoSettings.defaultHttpJsonTransportProviderBuilder() - .setHttpTransport( - new NetHttpTransport.Builder().doNotValidateCertificate().build()) - .setEndpoint("http://localhost:7469") - .build()) - .build(); - - client = EchoClient.create(echoSettings); - } - - @AfterClass - public static void destroyClient() { - client.close(); - } - - @Test - public void testEcho() { - assertEquals("http-echo?", echo("http-echo?")); - assertEquals("http-echo!", echo("http-echo!")); - } - - private String echo(String value) { - EchoResponse response = client.echo(EchoRequest.newBuilder().setContent(value).build()); - return response.getContent(); - } -} \ No newline at end of file
diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITFirstRpc.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITFirstRpc.java deleted file mode 100644 index 46e681b..0000000 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITFirstRpc.java +++ /dev/null
@@ -1,75 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.it; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import com.google.api.gax.core.NoCredentialsProvider; -import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; -import com.google.showcase.v1beta1.EchoClient; -import com.google.showcase.v1beta1.EchoRequest; -import com.google.showcase.v1beta1.EchoResponse; -import com.google.showcase.v1beta1.EchoSettings; -import io.grpc.ManagedChannelBuilder; -import java.io.IOException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -public class ITFirstRpc { - - private static EchoClient client; - - @Before - public void createClient() throws IOException { - EchoSettings echoSettings = - EchoSettings.newBuilder() - .setCredentialsProvider(NoCredentialsProvider.create()) - .setTransportChannelProvider( - InstantiatingGrpcChannelProvider.newBuilder() - .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) - .build()) - .build(); - - client = EchoClient.create(echoSettings); - } - - @After - public void destroyClient() { - client.close(); - } - - @Test - public void testEcho() { - assertEquals("grpc-echo?", echo("grpc-echo?")); - assertEquals("grpc-echo!", echo("grpc-echo!")); - } - - @Test - public void testShutdown() { - assertFalse(client.isShutdown()); - client.shutdown(); - assertTrue(client.isShutdown()); - } - - private String echo(String value) { - EchoResponse response = client.echo(EchoRequest.newBuilder().setContent(value).build()); - return response.getContent(); - } -} \ No newline at end of file
diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITNumericEnums.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITNumericEnums.java index 7d87b37..232c339 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITNumericEnums.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITNumericEnums.java
@@ -23,10 +23,9 @@ import com.google.showcase.v1beta1.ComplianceClient; import com.google.showcase.v1beta1.ComplianceSettings; import com.google.showcase.v1beta1.EnumRequest; +import com.google.showcase.v1beta1.EnumResponse; import java.io.IOException; import java.security.GeneralSecurityException; - -import com.google.showcase.v1beta1.EnumResponse; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -61,4 +60,4 @@ EnumResponse initialResponse = client.getEnum(request); assertEquals(initialResponse, client.verifyEnum(initialResponse)); } -} \ No newline at end of file +}
diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITUnaryCallable.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITUnaryCallable.java new file mode 100644 index 0000000..82fb80b --- /dev/null +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITUnaryCallable.java
@@ -0,0 +1,117 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.it; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import com.google.api.client.http.javanet.NetHttpTransport; +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.grpc.GrpcStatusCode; +import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.rpc.CancelledException; +import com.google.api.gax.rpc.StatusCode; +import com.google.rpc.Status; +import com.google.showcase.v1beta1.EchoClient; +import com.google.showcase.v1beta1.EchoRequest; +import com.google.showcase.v1beta1.EchoResponse; +import com.google.showcase.v1beta1.EchoSettings; +import io.grpc.ManagedChannelBuilder; +import java.io.IOException; +import java.security.GeneralSecurityException; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class ITUnaryCallable { + + private EchoClient grpcClient; + + private EchoClient httpJsonClient; + + @Before + public void createClients() throws IOException, GeneralSecurityException { + // Create gRPC Echo Client + EchoSettings grpcEchoSettings = + EchoSettings.newBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()) + .setTransportChannelProvider( + InstantiatingGrpcChannelProvider.newBuilder() + .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) + .build()) + .build(); + grpcClient = EchoClient.create(grpcEchoSettings); + + // Create Http JSON Echo Client + EchoSettings httpJsonEchoSettings = + EchoSettings.newHttpJsonBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()) + .setTransportChannelProvider( + EchoSettings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport( + new NetHttpTransport.Builder().doNotValidateCertificate().build()) + .setEndpoint("http://localhost:7469") + .build()) + .build(); + httpJsonClient = EchoClient.create(httpJsonEchoSettings); + } + + @After + public void destroyClient() { + grpcClient.close(); + httpJsonClient.close(); + } + + @Test + public void testGrpc_receiveContent() { + assertThat(echoGrpc("grpc-echo?")).isEqualTo("grpc-echo?"); + assertThat(echoGrpc("grpc-echo!")).isEqualTo("grpc-echo!"); + } + + @Test + public void testGrpc_serverResponseError_throwsException() { + Status cancelledStatus = + Status.newBuilder().setCode(StatusCode.Code.CANCELLED.ordinal()).build(); + EchoRequest requestWithServerError = EchoRequest.newBuilder().setError(cancelledStatus).build(); + CancelledException exception = + assertThrows(CancelledException.class, () -> grpcClient.echo(requestWithServerError)); + assertThat(exception.getStatusCode().getCode()).isEqualTo(GrpcStatusCode.Code.CANCELLED); + } + + @Test + public void testGrpc_shutdown() { + assertThat(grpcClient.isShutdown()).isFalse(); + grpcClient.shutdown(); + assertThat(grpcClient.isShutdown()).isTrue(); + } + + @Test + public void testHttpJson() { + assertThat(echoHttpJson("http-echo?")).isEqualTo("http-echo?"); + assertThat(echoHttpJson("http-echo!")).isEqualTo("http-echo!"); + } + + private String echoGrpc(String value) { + EchoResponse response = grpcClient.echo(EchoRequest.newBuilder().setContent(value).build()); + return response.getContent(); + } + + private String echoHttpJson(String value) { + EchoResponse response = httpJsonClient.echo(EchoRequest.newBuilder().setContent(value).build()); + return response.getContent(); + } +}