From 8a14a0ad50c96c7b915ce5cee19356478f0e7af1 Mon Sep 17 00:00:00 2001 From: Nithin Nayak Sujir Date: Mon, 24 Sep 2018 14:09:22 -0700 Subject: [PATCH 1/3] spanner: Expand test coverage for SpannerClient Expands coverage from 53% to 78%. --- .../cloud/spanner/v1/SpannerClientTest.java | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java index 08a3e92f23c8..bb306191ad2b 100644 --- a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java +++ b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.v1; import static com.google.cloud.spanner.v1.SpannerClient.ListSessionsPagedResponse; +import static com.google.common.truth.Truth.assertThat; import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.grpc.GaxGrpcProperties; @@ -27,6 +28,8 @@ import com.google.api.gax.rpc.InvalidArgumentException; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.StatusCode; +import com.google.cloud.spanner.v1.stub.SpannerStub; +import com.google.cloud.spanner.v1.stub.SpannerStubSettings; import com.google.common.collect.Lists; import com.google.protobuf.ByteString; import com.google.protobuf.Empty; @@ -101,6 +104,17 @@ public void tearDown() throws Exception { client.close(); } + @Test + public void createClientTest() throws IOException { + SpannerClient client1 = SpannerClient.create(); + assertThat(client1.getSettings()).isNotNull(); + + SpannerStub stub = SpannerStubSettings.newBuilder().build().createStub(); + client1 = SpannerClient.create(stub); + assertThat(client1.getStub()).isEqualTo(stub); + assertThat(client1.getSettings()).isNull(); + } + @Test @SuppressWarnings("all") public void createSessionTest() { @@ -124,6 +138,27 @@ public void createSessionTest() { GaxGrpcProperties.getDefaultApiClientHeaderPattern())); } + @Test + public void createSessionWithStringName() { + String name = "projects/[PROJECT]/instances/[INSTANCE]/databases/[DATABASE]"; + Session expectedResponse = Session.newBuilder().setName(name).build(); + mockSpanner.addResponse(expectedResponse); + + DatabaseName database = DatabaseName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]"); + + Session actualResponse = client.createSession(name); + assertThat(actualResponse).isEqualTo(expectedResponse); + + List actualRequests = mockSpanner.getRequests(); + assertThat(actualRequests.size()).isEqualTo(1); + + CreateSessionRequest actualRequest = (CreateSessionRequest) actualRequests.get(0); + assertThat(DatabaseName.parse(actualRequest.getDatabase())).isEqualTo(database); + assertThat(channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())).isTrue(); + } + @Test @SuppressWarnings("all") public void createSessionExceptionTest() throws Exception { @@ -163,6 +198,24 @@ public void getSessionTest() { GaxGrpcProperties.getDefaultApiClientHeaderPattern())); } + @Test + public void getSessionByStringNameTest() { + String name = "projects/[PROJECT]/instances/[INSTANCE]/databases/[DATABASE]/sessions/[SESSION]"; + SessionName sessionName = SessionName.parse(name); + Session expectedResponse = Session.newBuilder().setName(name).build(); + mockSpanner.addResponse(expectedResponse); + + Session actualResponse = client.getSession(name); + assertThat(actualResponse).isEqualTo(expectedResponse); + + List actualRequests = mockSpanner.getRequests(); + assertThat(actualRequests.size()).isEqualTo(1); + + GetSessionRequest actualRequest = (GetSessionRequest) actualRequests.get(0); + assertThat(SessionName.parse(actualRequest.getName())).isEqualTo(sessionName); + + } + @Test @SuppressWarnings("all") public void getSessionExceptionTest() throws Exception { @@ -211,6 +264,27 @@ public void listSessionsTest() { GaxGrpcProperties.getDefaultApiClientHeaderPattern())); } + @Test + public void listSessionsCallableTest() { + List sessions = Arrays.asList(Session.newBuilder().build()); + ListSessionsResponse expectedResponse = + ListSessionsResponse.newBuilder() + .addAllSessions(sessions) + .build(); + mockSpanner.addResponse(expectedResponse); + + String formattedDatabase = DatabaseName.format("[PROJECT]", "[INSTANCE]", "[DATABASE]"); + + ListSessionsRequest request = ListSessionsRequest.newBuilder() + .setDatabase(formattedDatabase) + .build(); + + ListSessionsResponse listSessionsResponse = client.listSessionsCallable().call(request); + List resources = Lists.newArrayList(listSessionsResponse.getSessionsList()); + assertThat(resources.size()).isEqualTo(1); + assertThat(expectedResponse.getSessionsList().get(0)).isEqualTo(resources.get(0)); + } + @Test @SuppressWarnings("all") public void listSessionsExceptionTest() throws Exception { @@ -248,6 +322,25 @@ public void deleteSessionTest() { GaxGrpcProperties.getDefaultApiClientHeaderPattern())); } + @Test + public void deleteSessionWithStringName() { + Empty expectedResponse = Empty.newBuilder().build(); + mockSpanner.addResponse(expectedResponse); + + String name = "projects/[PROJECT]/instances/[INSTANCE]/databases/[DATABASE]/sessions/[SESSION]"; + SessionName sessionName = SessionName.parse(name); + client.deleteSession(name); + + List actualRequests = mockSpanner.getRequests(); + assertThat(actualRequests.size()).isEqualTo(1); + + DeleteSessionRequest actualRequest = (DeleteSessionRequest) actualRequests.get(0); + assertThat(SessionName.parse(actualRequest.getName())).isEqualTo(sessionName); + assertThat(channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())).isTrue(); + } + @Test @SuppressWarnings("all") public void deleteSessionExceptionTest() throws Exception { @@ -426,6 +519,31 @@ public void beginTransactionExceptionTest() throws Exception { } } + @Test + public void commitWithStringNameTest() { + CommitResponse expectedResponse = CommitResponse.newBuilder().build(); + mockSpanner.addResponse(expectedResponse); + + ByteString transactionId = ByteString.copyFromUtf8("28"); + List mutations = new ArrayList<>(); + + String name = "projects/[PROJECT]/instances/[INSTANCE]/databases/[DATABASE]/sessions/[SESSION]"; + SessionName sessionName = SessionName.parse(name); + CommitResponse actualResponse = client.commit(name, transactionId, mutations); + assertThat(actualResponse).isEqualTo(expectedResponse); + + List actualRequests = mockSpanner.getRequests(); + assertThat(actualRequests.size()).isEqualTo(1); + + CommitRequest actualRequest = (CommitRequest) actualRequests.get(0); + assertThat(SessionName.parse(actualRequest.getSession())).isEqualTo(sessionName); + assertThat(actualRequest.getTransactionId()).isEqualTo(transactionId); + assertThat(actualRequest.getMutationsList()).isEqualTo(mutations); + assertThat(channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())).isTrue(); + } + @Test @SuppressWarnings("all") public void commitTest() { @@ -470,6 +588,29 @@ public void commitExceptionTest() throws Exception { } } + @Test + public void commitWithStringNameViaTransactionTest() { + CommitResponse expectedResponse = CommitResponse.newBuilder().build(); + mockSpanner.addResponse(expectedResponse); + + String name = "projects/[PROJECT]/instances/[INSTANCE]/databases/[DATABASE]/sessions/[SESSION]"; + TransactionOptions singleUseTransaction = TransactionOptions.newBuilder().build(); + List mutations = new ArrayList<>(); + + CommitResponse actualResponse = client.commit(name, singleUseTransaction, mutations); + assertThat(actualResponse).isEqualTo(expectedResponse); + + List actualRequests = mockSpanner.getRequests(); + assertThat(actualRequests.size()).isEqualTo(1); + + CommitRequest actualRequest = (CommitRequest) actualRequests.get(0); + assertThat(actualRequest.getSingleUseTransaction()).isEqualTo(singleUseTransaction); + assertThat(actualRequest.getMutationsList()).isEqualTo(mutations); + assertThat(channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())).isTrue(); + } + @Test @SuppressWarnings("all") public void commitTest2() { @@ -514,6 +655,26 @@ public void commitExceptionTest2() throws Exception { } } + @Test + public void rollbackWithStringNameTest() { + Empty expectedResponse = Empty.newBuilder().build(); + mockSpanner.addResponse(expectedResponse); + + String name = "projects/[PROJECT]/instances/[INSTANCE]/databases/[DATABASE]/sessions/[SESSION]"; + ByteString transactionId = ByteString.copyFromUtf8("28"); + + client.rollback(name, transactionId); + + List actualRequests = mockSpanner.getRequests(); + assertThat(actualRequests.size()).isEqualTo(1); + + RollbackRequest actualRequest = (RollbackRequest) actualRequests.get(0); + assertThat(actualRequest.getTransactionId()).isEqualTo(transactionId); + assertThat(channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())).isTrue(); + } + @Test @SuppressWarnings("all") public void rollbackTest() { From a3b3a05746b71749afa3f637a2703542e4c8e9a8 Mon Sep 17 00:00:00 2001 From: Nithin Nayak Sujir Date: Wed, 26 Sep 2018 09:01:18 -0700 Subject: [PATCH 2/3] Use .hasSize() --- .../google/cloud/spanner/v1/SpannerClientTest.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java index bb306191ad2b..9abd506bbdc2 100644 --- a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java +++ b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java @@ -150,7 +150,7 @@ public void createSessionWithStringName() { assertThat(actualResponse).isEqualTo(expectedResponse); List actualRequests = mockSpanner.getRequests(); - assertThat(actualRequests.size()).isEqualTo(1); + assertThat(actualRequests).hasSize(1); CreateSessionRequest actualRequest = (CreateSessionRequest) actualRequests.get(0); assertThat(DatabaseName.parse(actualRequest.getDatabase())).isEqualTo(database); @@ -209,7 +209,7 @@ public void getSessionByStringNameTest() { assertThat(actualResponse).isEqualTo(expectedResponse); List actualRequests = mockSpanner.getRequests(); - assertThat(actualRequests.size()).isEqualTo(1); + assertThat(actualRequests).hasSize(1); GetSessionRequest actualRequest = (GetSessionRequest) actualRequests.get(0); assertThat(SessionName.parse(actualRequest.getName())).isEqualTo(sessionName); @@ -281,7 +281,7 @@ public void listSessionsCallableTest() { ListSessionsResponse listSessionsResponse = client.listSessionsCallable().call(request); List resources = Lists.newArrayList(listSessionsResponse.getSessionsList()); - assertThat(resources.size()).isEqualTo(1); + assertThat(resources).hasSize(1); assertThat(expectedResponse.getSessionsList().get(0)).isEqualTo(resources.get(0)); } @@ -332,7 +332,7 @@ public void deleteSessionWithStringName() { client.deleteSession(name); List actualRequests = mockSpanner.getRequests(); - assertThat(actualRequests.size()).isEqualTo(1); + assertThat(actualRequests).hasSize(1); DeleteSessionRequest actualRequest = (DeleteSessionRequest) actualRequests.get(0); assertThat(SessionName.parse(actualRequest.getName())).isEqualTo(sessionName); @@ -533,7 +533,7 @@ public void commitWithStringNameTest() { assertThat(actualResponse).isEqualTo(expectedResponse); List actualRequests = mockSpanner.getRequests(); - assertThat(actualRequests.size()).isEqualTo(1); + assertThat(actualRequests).hasSize(1); CommitRequest actualRequest = (CommitRequest) actualRequests.get(0); assertThat(SessionName.parse(actualRequest.getSession())).isEqualTo(sessionName); @@ -666,7 +666,7 @@ public void rollbackWithStringNameTest() { client.rollback(name, transactionId); List actualRequests = mockSpanner.getRequests(); - assertThat(actualRequests.size()).isEqualTo(1); + assertThat(actualRequests).hasSize(1); RollbackRequest actualRequest = (RollbackRequest) actualRequests.get(0); assertThat(actualRequest.getTransactionId()).isEqualTo(transactionId); From cd5d179b8b8045e56113b9ee870c77cc6371c0cf Mon Sep 17 00:00:00 2001 From: Nithin Nayak Sujir Date: Wed, 26 Sep 2018 09:23:03 -0700 Subject: [PATCH 3/3] Remove empty client create test because it fails in circleci --- .../com/google/cloud/spanner/v1/SpannerClientTest.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java index 9abd506bbdc2..92ba718a0a0e 100644 --- a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java +++ b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java @@ -106,11 +106,10 @@ public void tearDown() throws Exception { @Test public void createClientTest() throws IOException { - SpannerClient client1 = SpannerClient.create(); - assertThat(client1.getSettings()).isNotNull(); - - SpannerStub stub = SpannerStubSettings.newBuilder().build().createStub(); - client1 = SpannerClient.create(stub); + SpannerStub stub = + SpannerStubSettings.newBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()).build().createStub(); + SpannerClient client1 = SpannerClient.create(stub); assertThat(client1.getStub()).isEqualTo(stub); assertThat(client1.getSettings()).isNull(); }