From 0f78eb927c8137a76a6b95ada06c6b4880a313cc Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Wed, 13 Dec 2023 12:20:08 +0530 Subject: [PATCH 01/19] feat: enabling regapic by giving an option to user to use http --- .../cloud/datastore/DatastoreOptions.java | 22 +- .../com/google/cloud/datastore/Transport.java | 23 ++ .../cloud/datastore/spi/v1/DatastoreRpc.java | 15 ++ .../datastore/spi/v1/GrpcDatastoreRpc.java | 14 -- .../datastore/spi/v1/HttpDatastoreRpc.java | 200 ++++++------------ .../cloud/datastore/DatastoreOptionsTest.java | 13 ++ 6 files changed, 134 insertions(+), 153 deletions(-) create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/Transport.java diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java index 1eb7f5105..601bbb7b6 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java @@ -16,6 +16,7 @@ package com.google.cloud.datastore; +import static com.google.cloud.datastore.Transport.GRPC; import static com.google.cloud.datastore.Validator.validateNamespace; import com.google.api.core.BetaApi; @@ -26,8 +27,10 @@ import com.google.cloud.datastore.spi.DatastoreRpcFactory; import com.google.cloud.datastore.spi.v1.DatastoreRpc; import com.google.cloud.datastore.spi.v1.GrpcDatastoreRpc; +import com.google.cloud.datastore.spi.v1.HttpDatastoreRpc; import com.google.cloud.datastore.v1.DatastoreSettings; import com.google.cloud.http.HttpTransportOptions; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableSet; import java.io.IOException; @@ -45,6 +48,7 @@ public class DatastoreOptions extends ServiceOptions Date: Wed, 13 Dec 2023 12:29:50 +0530 Subject: [PATCH 02/19] enabling retry settings --- .../cloud/datastore/spi/v1/HttpDatastoreRpc.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java index 3edb7b23a..c6c7b8ec8 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java @@ -19,8 +19,10 @@ import static com.google.cloud.datastore.DatastoreUtils.isLocalHost; import static java.util.concurrent.TimeUnit.SECONDS; +import com.google.api.core.ApiFunction; import com.google.api.gax.core.BackgroundResource; import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.UnaryCallSettings; import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.datastore.v1.DatastoreSettings; import com.google.cloud.datastore.v1.stub.DatastoreStubSettings; @@ -62,9 +64,16 @@ public HttpDatastoreRpc(DatastoreOptions options) throws IOException { clientContext = ClientContext.create(datastoreSettings); - // TODO(gapic_upgrade) retry setting in DatastoreStubSettings + ApiFunction, Void> retrySettingsSetter = + builder -> { + builder.setRetrySettings(options.getRetrySettings()); + return null; + }; DatastoreStubSettings datastoreStubSettings = - DatastoreStubSettings.newBuilder(clientContext).build(); + DatastoreStubSettings.newBuilder(clientContext) + .applyToAllUnaryMethods(retrySettingsSetter) + .build(); + datastoreStub = HttpJsonDatastoreStub.create(datastoreStubSettings); } From e399ea3f95951ad8199c7da6d7a2dd4066f2ae15 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Wed, 13 Dec 2023 13:51:01 +0530 Subject: [PATCH 03/19] fix lint --- .../com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java | 1 - .../java/com/google/cloud/datastore/DatastoreOptionsTest.java | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java index c6c7b8ec8..36e81291c 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java @@ -74,7 +74,6 @@ public HttpDatastoreRpc(DatastoreOptions options) throws IOException { .applyToAllUnaryMethods(retrySettingsSetter) .build(); - datastoreStub = HttpJsonDatastoreStub.create(datastoreStubSettings); } diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java index d598a90f0..aee20d2af 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java @@ -90,7 +90,8 @@ public void testTransport() { assertThat(options.build().getTransport()).isEqualTo(GRPC); // custom http transport - DatastoreOptions httpDatastoreOptions = DatastoreOptions.newBuilder().useHttp().build(); + DatastoreOptions httpDatastoreOptions = + DatastoreOptions.newBuilder().useHttp().setProjectId(PROJECT_ID).build(); assertThat(httpDatastoreOptions.getTransport()).isEqualTo(HTTP); } From d7241cfe3fb1007146c89f7f5745e3b7e7a0c017 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Wed, 13 Dec 2023 14:00:36 +0530 Subject: [PATCH 04/19] fix deps failure --- google-cloud-datastore/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 59b4b30ed..25cc33270 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -34,6 +34,10 @@ com.google.cloud google-cloud-core-grpc + + com.google.auth + google-auth-library-oauth2-http + com.google.api.grpc proto-google-cloud-datastore-v1 From 3e7bc7364c42b5cd0998ecbf46571b2c77821abe Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Wed, 13 Dec 2023 14:05:17 +0530 Subject: [PATCH 05/19] fix deps failure --- google-cloud-datastore/pom.xml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 25cc33270..a4b0434eb 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -34,10 +34,6 @@ com.google.cloud google-cloud-core-grpc - - com.google.auth - google-auth-library-oauth2-http - com.google.api.grpc proto-google-cloud-datastore-v1 @@ -110,10 +106,6 @@ com.google.oauth-client google-oauth-client - - com.google.auth - google-auth-library-oauth2-http - io.opencensus opencensus-api From 1bf0e299b163df5ad7c510fdce6dc71d681801b5 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Wed, 13 Dec 2023 22:26:17 +0530 Subject: [PATCH 06/19] trying out ipv6 address resolution --- .../test/java/com/google/cloud/datastore/DatastoreTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java index 5f42e2aeb..4119dd518 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java @@ -96,9 +96,6 @@ public class DatastoreTest { private static final int NUMBER_OF_ATTEMPTS = 5; - @ClassRule - public static MultipleAttemptsRule rr = new MultipleAttemptsRule(NUMBER_OF_ATTEMPTS, 10); - private static LocalDatastoreHelper helper = LocalDatastoreHelper.create(1.0); private static final DatastoreOptions options = helper.getOptions(); private static final Datastore datastore = options.getService(); @@ -176,6 +173,7 @@ public class DatastoreTest { @BeforeClass public static void beforeClass() throws IOException, InterruptedException { + System.setProperty("java.net.preferIPv6Addresses", "true"); helper.start(); } From 3e0216816fd858889694ac6aaa673516710310a4 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Wed, 13 Dec 2023 22:29:29 +0530 Subject: [PATCH 07/19] Revert "trying out ipv6 address resolution" This reverts commit 1bf0e299b163df5ad7c510fdce6dc71d681801b5. --- .../test/java/com/google/cloud/datastore/DatastoreTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java index 4119dd518..5f42e2aeb 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java @@ -96,6 +96,9 @@ public class DatastoreTest { private static final int NUMBER_OF_ATTEMPTS = 5; + @ClassRule + public static MultipleAttemptsRule rr = new MultipleAttemptsRule(NUMBER_OF_ATTEMPTS, 10); + private static LocalDatastoreHelper helper = LocalDatastoreHelper.create(1.0); private static final DatastoreOptions options = helper.getOptions(); private static final Datastore datastore = options.getService(); @@ -173,7 +176,6 @@ public class DatastoreTest { @BeforeClass public static void beforeClass() throws IOException, InterruptedException { - System.setProperty("java.net.preferIPv6Addresses", "true"); helper.start(); } From 61a7c3e70236591542f8480d7ac3f3a4f2098e41 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Thu, 14 Dec 2023 10:19:35 +0530 Subject: [PATCH 08/19] upgrading emulator --- .../google/cloud/datastore/testing/LocalDatastoreHelper.java | 4 ++-- .../test/java/com/google/cloud/datastore/DatastoreTest.java | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java index 26b892186..1f6b51a2f 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java @@ -57,12 +57,12 @@ public class LocalDatastoreHelper extends BaseEmulatorHelper { private static final String GCLOUD_CMD_TEXT = "gcloud beta emulators datastore start"; private static final String GCLOUD_CMD_PORT_FLAG = "--host-port="; private static final String VERSION_PREFIX = "cloud-datastore-emulator "; - private static final String MIN_VERSION = "1.2.0"; + private static final String MIN_VERSION = "2.3.1"; // Downloadable emulator settings private static final String BIN_NAME = "cloud-datastore-emulator/cloud_datastore_emulator"; private static final String FILENAME = "cloud-datastore-emulator-" + MIN_VERSION + ".zip"; - private static final String MD5_CHECKSUM = "ec2237a0f0ac54964c6bd95e12c73720"; + private static final String MD5_CHECKSUM = "7c1f5a3276241a8f78cb1a837daaaa47"; private static final String BIN_CMD_PORT_FLAG = "--port="; private static final URL EMULATOR_URL; private static final String EMULATOR_URL_ENV_VAR = "DATASTORE_EMULATOR_URL"; diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java index 5f42e2aeb..19986ce62 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java @@ -96,9 +96,6 @@ public class DatastoreTest { private static final int NUMBER_OF_ATTEMPTS = 5; - @ClassRule - public static MultipleAttemptsRule rr = new MultipleAttemptsRule(NUMBER_OF_ATTEMPTS, 10); - private static LocalDatastoreHelper helper = LocalDatastoreHelper.create(1.0); private static final DatastoreOptions options = helper.getOptions(); private static final Datastore datastore = options.getService(); From e0200058df638e9ddeee01c4af7e6560141e7be0 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Thu, 14 Dec 2023 10:24:05 +0530 Subject: [PATCH 09/19] fix lint --- .../src/test/java/com/google/cloud/datastore/DatastoreTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java index 19986ce62..66ed9aa97 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java @@ -39,7 +39,6 @@ import com.google.cloud.datastore.Query.ResultType; import com.google.cloud.datastore.StructuredQuery.OrderBy; import com.google.cloud.datastore.StructuredQuery.PropertyFilter; -import com.google.cloud.datastore.it.MultipleAttemptsRule; import com.google.cloud.datastore.spi.DatastoreRpcFactory; import com.google.cloud.datastore.spi.v1.DatastoreRpc; import com.google.cloud.datastore.testing.LocalDatastoreHelper; @@ -86,7 +85,6 @@ import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; -import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; From 1386c1dce0d80a04e34909b62e14a785c8f55027 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Thu, 14 Dec 2023 10:57:06 +0530 Subject: [PATCH 10/19] downgrading to 2.0.2 to maintain java 8 compatibility --- .../google/cloud/datastore/testing/LocalDatastoreHelper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java index 1f6b51a2f..927a6cf23 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java @@ -57,12 +57,12 @@ public class LocalDatastoreHelper extends BaseEmulatorHelper { private static final String GCLOUD_CMD_TEXT = "gcloud beta emulators datastore start"; private static final String GCLOUD_CMD_PORT_FLAG = "--host-port="; private static final String VERSION_PREFIX = "cloud-datastore-emulator "; - private static final String MIN_VERSION = "2.3.1"; + private static final String MIN_VERSION = "2.0.2"; // latest version compatible with java 8 // Downloadable emulator settings private static final String BIN_NAME = "cloud-datastore-emulator/cloud_datastore_emulator"; private static final String FILENAME = "cloud-datastore-emulator-" + MIN_VERSION + ".zip"; - private static final String MD5_CHECKSUM = "7c1f5a3276241a8f78cb1a837daaaa47"; + private static final String MD5_CHECKSUM = "e0d1170519cf52e2e5f9f93892cdf70c"; private static final String BIN_CMD_PORT_FLAG = "--port="; private static final URL EMULATOR_URL; private static final String EMULATOR_URL_ENV_VAR = "DATASTORE_EMULATOR_URL"; From 63bb83163afc2445975b488881df3e5fb8cc8176 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Thu, 14 Dec 2023 13:19:17 +0530 Subject: [PATCH 11/19] incorporating feedbacks --- .../cloud/datastore/DatastoreOptions.java | 3 ++- .../com/google/cloud/datastore/Transport.java | 23 ------------------- .../cloud/datastore/spi/v1/DatastoreRpc.java | 8 +++++++ .../datastore/spi/v1/HttpDatastoreRpc.java | 4 +++- .../cloud/datastore/DatastoreOptionsTest.java | 4 ++-- 5 files changed, 15 insertions(+), 27 deletions(-) delete mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/Transport.java diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java index 601bbb7b6..ae36a3b2c 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java @@ -16,8 +16,8 @@ package com.google.cloud.datastore; -import static com.google.cloud.datastore.Transport.GRPC; import static com.google.cloud.datastore.Validator.validateNamespace; +import static com.google.cloud.datastore.spi.v1.DatastoreRpc.Transport.GRPC; import com.google.api.core.BetaApi; import com.google.cloud.ServiceDefaults; @@ -26,6 +26,7 @@ import com.google.cloud.TransportOptions; import com.google.cloud.datastore.spi.DatastoreRpcFactory; import com.google.cloud.datastore.spi.v1.DatastoreRpc; +import com.google.cloud.datastore.spi.v1.DatastoreRpc.Transport; import com.google.cloud.datastore.spi.v1.GrpcDatastoreRpc; import com.google.cloud.datastore.spi.v1.HttpDatastoreRpc; import com.google.cloud.datastore.v1.DatastoreSettings; diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Transport.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Transport.java deleted file mode 100644 index ad045a8e2..000000000 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Transport.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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 - * - * http://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.cloud.datastore; - -/** Transport used to sending requests. */ -public enum Transport { - GRPC, - HTTP -} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java index 305c1c9f2..1f73429f8 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java @@ -16,6 +16,7 @@ package com.google.cloud.datastore.spi.v1; +import com.google.api.core.InternalApi; import com.google.api.gax.rpc.HeaderProvider; import com.google.cloud.ServiceRpc; import com.google.cloud.datastore.DatastoreException; @@ -116,4 +117,11 @@ protected DatastoreSettings.Builder setInternalHeaderProvider( return super.setInternalHeaderProvider(internalHeaderProvider); } } + + /** Transport used to sending requests. */ + @InternalApi + enum Transport { + GRPC, + HTTP + } } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java index 546d9632d..0263ec775 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java @@ -20,6 +20,7 @@ import static java.util.concurrent.TimeUnit.SECONDS; import com.google.api.core.ApiFunction; +import com.google.api.core.InternalApi; import com.google.api.gax.core.BackgroundResource; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnaryCallSettings; @@ -45,7 +46,8 @@ import com.google.datastore.v1.RunQueryResponse; import java.io.IOException; -public class HttpDatastoreRpc implements AutoCloseable, DatastoreRpc { +@InternalApi +public class HttpDatastoreRpc implements DatastoreRpc { private final ClientContext clientContext; private final HttpJsonDatastoreStub datastoreStub; diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java index aee20d2af..92905b320 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java @@ -16,8 +16,8 @@ package com.google.cloud.datastore; -import static com.google.cloud.datastore.Transport.GRPC; -import static com.google.cloud.datastore.Transport.HTTP; +import static com.google.cloud.datastore.spi.v1.DatastoreRpc.Transport.GRPC; +import static com.google.cloud.datastore.spi.v1.DatastoreRpc.Transport.HTTP; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; From c21f0278f7c6672cc5f41eae3a90761c84e943e2 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Thu, 14 Dec 2023 14:58:59 +0530 Subject: [PATCH 12/19] test retry settings while configuring DatastoreRpc instance --- .../cloud/datastore/spi/v1/DatastoreRpc.java | 17 ++++++++++++ .../datastore/spi/v1/GrpcDatastoreRpc.java | 11 +++----- .../datastore/spi/v1/HttpDatastoreRpc.java | 14 +++------- .../datastore/spi/v1/DatastoreRpcTest.java | 27 +++++++++++++++++++ 4 files changed, 51 insertions(+), 18 deletions(-) create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java index 1f73429f8..1dccf7632 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java @@ -16,10 +16,17 @@ package com.google.cloud.datastore.spi.v1; +import static com.google.api.gax.rpc.StatusCode.Code.ABORTED; +import static com.google.api.gax.rpc.StatusCode.Code.DEADLINE_EXCEEDED; +import static com.google.api.gax.rpc.StatusCode.Code.UNAVAILABLE; + +import com.google.api.core.ApiFunction; import com.google.api.core.InternalApi; import com.google.api.gax.rpc.HeaderProvider; +import com.google.api.gax.rpc.UnaryCallSettings; import com.google.cloud.ServiceRpc; import com.google.cloud.datastore.DatastoreException; +import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.datastore.v1.DatastoreSettings; import com.google.datastore.v1.AllocateIdsRequest; import com.google.datastore.v1.AllocateIdsResponse; @@ -105,6 +112,16 @@ default RunAggregationQueryResponse runAggregationQuery(RunAggregationQueryReque /** Returns true if this background resource has been shut down. */ boolean isClosed(); + @InternalApi + static ApiFunction, Void> retrySettingSetter( + DatastoreOptions datastoreOptions) { + return builder -> { + builder.setRetryableCodes(ABORTED, DEADLINE_EXCEEDED, UNAVAILABLE); + builder.setRetrySettings(datastoreOptions.getRetrySettings()); + return null; + }; + } + // This class is needed solely to get access to protected method setInternalHeaderProvider() class DatastoreSettingsBuilder extends DatastoreSettings.Builder { DatastoreSettingsBuilder(DatastoreSettings settings) { diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java index a0f977a44..e32472c16 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java @@ -18,9 +18,9 @@ import static com.google.cloud.datastore.DatastoreUtils.isLocalHost; import static com.google.cloud.datastore.DatastoreUtils.removeScheme; +import static com.google.cloud.datastore.spi.v1.DatastoreRpc.retrySettingSetter; import static java.util.concurrent.TimeUnit.SECONDS; -import com.google.api.core.ApiFunction; import com.google.api.core.InternalApi; import com.google.api.gax.core.BackgroundResource; import com.google.api.gax.core.GaxProperties; @@ -30,7 +30,6 @@ import com.google.api.gax.rpc.HeaderProvider; import com.google.api.gax.rpc.NoHeaderProvider; import com.google.api.gax.rpc.TransportChannel; -import com.google.api.gax.rpc.UnaryCallSettings; import com.google.cloud.NoCredentials; import com.google.cloud.ServiceOptions; import com.google.cloud.datastore.DatastoreException; @@ -76,14 +75,10 @@ public GrpcDatastoreRpc(DatastoreOptions datastoreOptions) throws IOException { isEmulator(datastoreOptions) ? getClientContextForEmulator(datastoreOptions) : getClientContext(datastoreOptions); - ApiFunction, Void> retrySettingsSetter = - builder -> { - builder.setRetrySettings(datastoreOptions.getRetrySettings()); - return null; - }; + DatastoreStubSettings datastoreStubSettings = DatastoreStubSettings.newBuilder(clientContext) - .applyToAllUnaryMethods(retrySettingsSetter) + .applyToAllUnaryMethods(retrySettingSetter(datastoreOptions)) .build(); datastoreStub = GrpcDatastoreStub.create(datastoreStubSettings); } catch (IOException e) { diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java index 0263ec775..4568c202f 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java @@ -17,13 +17,12 @@ package com.google.cloud.datastore.spi.v1; import static com.google.cloud.datastore.DatastoreUtils.isLocalHost; +import static com.google.cloud.datastore.spi.v1.DatastoreRpc.retrySettingSetter; import static java.util.concurrent.TimeUnit.SECONDS; -import com.google.api.core.ApiFunction; import com.google.api.core.InternalApi; import com.google.api.gax.core.BackgroundResource; import com.google.api.gax.rpc.ClientContext; -import com.google.api.gax.rpc.UnaryCallSettings; import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.datastore.v1.DatastoreSettings; import com.google.cloud.datastore.v1.stub.DatastoreStubSettings; @@ -54,26 +53,21 @@ public class HttpDatastoreRpc implements DatastoreRpc { private boolean closed; - public HttpDatastoreRpc(DatastoreOptions options) throws IOException { + public HttpDatastoreRpc(DatastoreOptions datastoreOptions) throws IOException { DatastoreSettings datastoreSettings = new DatastoreSettingsBuilder(DatastoreSettings.newBuilder().build()) .setInternalHeaderProvider( DatastoreStubSettings.defaultHttpJsonApiClientHeaderProviderBuilder().build()) .setTransportChannelProvider( DatastoreStubSettings.defaultHttpJsonTransportProviderBuilder().build()) - .setEndpoint(getHost(options)) + .setEndpoint(getHost(datastoreOptions)) .build(); clientContext = ClientContext.create(datastoreSettings); - ApiFunction, Void> retrySettingsSetter = - builder -> { - builder.setRetrySettings(options.getRetrySettings()); - return null; - }; DatastoreStubSettings datastoreStubSettings = DatastoreStubSettings.newBuilder(clientContext) - .applyToAllUnaryMethods(retrySettingsSetter) + .applyToAllUnaryMethods(retrySettingSetter(datastoreOptions)) .build(); datastoreStub = HttpJsonDatastoreStub.create(datastoreStubSettings); diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java new file mode 100644 index 000000000..b1b40f192 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java @@ -0,0 +1,27 @@ +package com.google.cloud.datastore.spi.v1; + +import static com.google.api.gax.rpc.StatusCode.Code.ABORTED; +import static com.google.api.gax.rpc.StatusCode.Code.DEADLINE_EXCEEDED; +import static com.google.api.gax.rpc.StatusCode.Code.UNAVAILABLE; +import static com.google.common.truth.Truth.assertThat; + +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.cloud.datastore.DatastoreOptions; +import com.google.common.collect.Sets; +import org.junit.Test; + +public class DatastoreRpcTest { + + @Test + public void testRetrySettingSetter() { + DatastoreOptions datastoreOptions = DatastoreOptions.getDefaultInstance(); + UnaryCallSettings.Builder builder = + UnaryCallSettings.newUnaryCallSettingsBuilder(); + + DatastoreRpc.retrySettingSetter(datastoreOptions).apply(builder); + + assertThat(builder.getRetryableCodes()) + .isEqualTo(Sets.newHashSet(ABORTED, UNAVAILABLE, DEADLINE_EXCEEDED)); + assertThat(builder.getRetrySettings()).isEqualTo(datastoreOptions.getRetrySettings()); + } +} From fa7b61f4b960fd41d7a572b35b6218cc8cb2566a Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Thu, 14 Dec 2023 15:02:58 +0530 Subject: [PATCH 13/19] fix test --- .../com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java index b1b40f192..08e3d994c 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java @@ -14,7 +14,8 @@ public class DatastoreRpcTest { @Test public void testRetrySettingSetter() { - DatastoreOptions datastoreOptions = DatastoreOptions.getDefaultInstance(); + DatastoreOptions datastoreOptions = + DatastoreOptions.newBuilder().setProjectId("project-id").build(); UnaryCallSettings.Builder builder = UnaryCallSettings.newUnaryCallSettingsBuilder(); From cd6c22e56898c0b4b1bb9a950a87dcdaf0204384 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Thu, 14 Dec 2023 15:20:17 +0530 Subject: [PATCH 14/19] fix header --- .../cloud/datastore/spi/v1/DatastoreRpcTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java index 08e3d994c..c48c14d26 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java @@ -1,3 +1,19 @@ +/* + * 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 + * + * http://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.cloud.datastore.spi.v1; import static com.google.api.gax.rpc.StatusCode.Code.ABORTED; From 242bc2ac4c1b2d5d3829fe417258ea237f0a2dd4 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Thu, 14 Dec 2023 15:36:13 +0530 Subject: [PATCH 15/19] fix clirr check --- .../cloud/datastore/spi/v1/DatastoreRpc.java | 16 -------- .../datastore/spi/v1/GrpcDatastoreRpc.java | 2 +- .../datastore/spi/v1/HttpDatastoreRpc.java | 2 +- .../cloud/datastore/spi/v1/RpcUtils.java | 39 +++++++++++++++++++ ...atastoreRpcTest.java => RpcUtilsTest.java} | 4 +- 5 files changed, 43 insertions(+), 20 deletions(-) create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java rename google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/{DatastoreRpcTest.java => RpcUtilsTest.java} (93%) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java index 1dccf7632..cf7842e6e 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java @@ -16,17 +16,11 @@ package com.google.cloud.datastore.spi.v1; -import static com.google.api.gax.rpc.StatusCode.Code.ABORTED; -import static com.google.api.gax.rpc.StatusCode.Code.DEADLINE_EXCEEDED; -import static com.google.api.gax.rpc.StatusCode.Code.UNAVAILABLE; -import com.google.api.core.ApiFunction; import com.google.api.core.InternalApi; import com.google.api.gax.rpc.HeaderProvider; -import com.google.api.gax.rpc.UnaryCallSettings; import com.google.cloud.ServiceRpc; import com.google.cloud.datastore.DatastoreException; -import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.datastore.v1.DatastoreSettings; import com.google.datastore.v1.AllocateIdsRequest; import com.google.datastore.v1.AllocateIdsResponse; @@ -112,16 +106,6 @@ default RunAggregationQueryResponse runAggregationQuery(RunAggregationQueryReque /** Returns true if this background resource has been shut down. */ boolean isClosed(); - @InternalApi - static ApiFunction, Void> retrySettingSetter( - DatastoreOptions datastoreOptions) { - return builder -> { - builder.setRetryableCodes(ABORTED, DEADLINE_EXCEEDED, UNAVAILABLE); - builder.setRetrySettings(datastoreOptions.getRetrySettings()); - return null; - }; - } - // This class is needed solely to get access to protected method setInternalHeaderProvider() class DatastoreSettingsBuilder extends DatastoreSettings.Builder { DatastoreSettingsBuilder(DatastoreSettings settings) { diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java index e32472c16..ffcab0560 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java @@ -18,7 +18,7 @@ import static com.google.cloud.datastore.DatastoreUtils.isLocalHost; import static com.google.cloud.datastore.DatastoreUtils.removeScheme; -import static com.google.cloud.datastore.spi.v1.DatastoreRpc.retrySettingSetter; +import static com.google.cloud.datastore.spi.v1.RpcUtils.retrySettingSetter; import static java.util.concurrent.TimeUnit.SECONDS; import com.google.api.core.InternalApi; diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java index 4568c202f..f5a6ebb42 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java @@ -17,7 +17,7 @@ package com.google.cloud.datastore.spi.v1; import static com.google.cloud.datastore.DatastoreUtils.isLocalHost; -import static com.google.cloud.datastore.spi.v1.DatastoreRpc.retrySettingSetter; +import static com.google.cloud.datastore.spi.v1.RpcUtils.retrySettingSetter; import static java.util.concurrent.TimeUnit.SECONDS; import com.google.api.core.InternalApi; diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java new file mode 100644 index 000000000..ddcc34474 --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java @@ -0,0 +1,39 @@ +/* + * 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 + * + * http://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.cloud.datastore.spi.v1; + +import static com.google.api.gax.rpc.StatusCode.Code.ABORTED; +import static com.google.api.gax.rpc.StatusCode.Code.DEADLINE_EXCEEDED; +import static com.google.api.gax.rpc.StatusCode.Code.UNAVAILABLE; + +import com.google.api.core.ApiFunction; +import com.google.api.core.InternalApi; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.cloud.datastore.DatastoreOptions; + +@InternalApi +public class RpcUtils { + @InternalApi + static ApiFunction, Void> retrySettingSetter( + DatastoreOptions datastoreOptions) { + return builder -> { + builder.setRetryableCodes(ABORTED, DEADLINE_EXCEEDED, UNAVAILABLE); + builder.setRetrySettings(datastoreOptions.getRetrySettings()); + return null; + }; + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java similarity index 93% rename from google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java rename to google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java index c48c14d26..e905547f2 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/DatastoreRpcTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java @@ -26,7 +26,7 @@ import com.google.common.collect.Sets; import org.junit.Test; -public class DatastoreRpcTest { +public class RpcUtilsTest { @Test public void testRetrySettingSetter() { @@ -35,7 +35,7 @@ public void testRetrySettingSetter() { UnaryCallSettings.Builder builder = UnaryCallSettings.newUnaryCallSettingsBuilder(); - DatastoreRpc.retrySettingSetter(datastoreOptions).apply(builder); + RpcUtils.retrySettingSetter(datastoreOptions).apply(builder); assertThat(builder.getRetryableCodes()) .isEqualTo(Sets.newHashSet(ABORTED, UNAVAILABLE, DEADLINE_EXCEEDED)); From 153c2d4927c49c2d3131b788610d76244c456ebf Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Thu, 14 Dec 2023 15:39:11 +0530 Subject: [PATCH 16/19] fix lint --- .../java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java | 1 - 1 file changed, 1 deletion(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java index cf7842e6e..1f73429f8 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java @@ -16,7 +16,6 @@ package com.google.cloud.datastore.spi.v1; - import com.google.api.core.InternalApi; import com.google.api.gax.rpc.HeaderProvider; import com.google.cloud.ServiceRpc; From b2d2a5f88512b10f90e8f086d5a32565b5bb1c28 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Thu, 14 Dec 2023 20:51:32 +0530 Subject: [PATCH 17/19] fix integration test --- .../java/com/google/cloud/datastore/spi/v1/RpcUtils.java | 4 ---- .../com/google/cloud/datastore/spi/v1/RpcUtilsTest.java | 6 ------ 2 files changed, 10 deletions(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java index ddcc34474..ea1f17890 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java @@ -16,9 +16,6 @@ package com.google.cloud.datastore.spi.v1; -import static com.google.api.gax.rpc.StatusCode.Code.ABORTED; -import static com.google.api.gax.rpc.StatusCode.Code.DEADLINE_EXCEEDED; -import static com.google.api.gax.rpc.StatusCode.Code.UNAVAILABLE; import com.google.api.core.ApiFunction; import com.google.api.core.InternalApi; @@ -31,7 +28,6 @@ public class RpcUtils { static ApiFunction, Void> retrySettingSetter( DatastoreOptions datastoreOptions) { return builder -> { - builder.setRetryableCodes(ABORTED, DEADLINE_EXCEEDED, UNAVAILABLE); builder.setRetrySettings(datastoreOptions.getRetrySettings()); return null; }; diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java index e905547f2..f657e8ce3 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java @@ -16,14 +16,10 @@ package com.google.cloud.datastore.spi.v1; -import static com.google.api.gax.rpc.StatusCode.Code.ABORTED; -import static com.google.api.gax.rpc.StatusCode.Code.DEADLINE_EXCEEDED; -import static com.google.api.gax.rpc.StatusCode.Code.UNAVAILABLE; import static com.google.common.truth.Truth.assertThat; import com.google.api.gax.rpc.UnaryCallSettings; import com.google.cloud.datastore.DatastoreOptions; -import com.google.common.collect.Sets; import org.junit.Test; public class RpcUtilsTest { @@ -37,8 +33,6 @@ public void testRetrySettingSetter() { RpcUtils.retrySettingSetter(datastoreOptions).apply(builder); - assertThat(builder.getRetryableCodes()) - .isEqualTo(Sets.newHashSet(ABORTED, UNAVAILABLE, DEADLINE_EXCEEDED)); assertThat(builder.getRetrySettings()).isEqualTo(datastoreOptions.getRetrySettings()); } } From 971344c2e298c59d8e3479b3a7cc1cead8a0c139 Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Thu, 14 Dec 2023 20:55:42 +0530 Subject: [PATCH 18/19] fix lint --- .../main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java | 1 - 1 file changed, 1 deletion(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java index ea1f17890..dee8d6920 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java @@ -16,7 +16,6 @@ package com.google.cloud.datastore.spi.v1; - import com.google.api.core.ApiFunction; import com.google.api.core.InternalApi; import com.google.api.gax.rpc.UnaryCallSettings; From caa5b9adbc6c1f0f7b079be08284f8ad92d426ab Mon Sep 17 00:00:00 2001 From: Prateek Jain Date: Fri, 15 Dec 2023 11:08:38 +0530 Subject: [PATCH 19/19] incorporating feedback --- .../cloud/datastore/DatastoreOptions.java | 4 +-- .../cloud/datastore/DatastoreOptionsTest.java | 7 +++++- .../cloud/datastore/spi/v1/RpcUtilsTest.java | 25 ++++++++++++++++--- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java index ae36a3b2c..a166a45ae 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java @@ -118,8 +118,8 @@ public Builder setDatabaseId(String databaseId) { return this; } - public Builder useHttp() { - this.transport = Transport.HTTP; + public Builder setTransport(Transport transport) { + this.transport = transport; return this; } } diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java index 92905b320..6444b1a2d 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java @@ -91,8 +91,13 @@ public void testTransport() { // custom http transport DatastoreOptions httpDatastoreOptions = - DatastoreOptions.newBuilder().useHttp().setProjectId(PROJECT_ID).build(); + DatastoreOptions.newBuilder().setTransport(HTTP).setProjectId(PROJECT_ID).build(); assertThat(httpDatastoreOptions.getTransport()).isEqualTo(HTTP); + + // custom grpc transport + DatastoreOptions grpcDatastoreOptions = + DatastoreOptions.newBuilder().setTransport(GRPC).setProjectId(PROJECT_ID).build(); + assertThat(grpcDatastoreOptions.getTransport()).isEqualTo(GRPC); } @Test diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java index f657e8ce3..76fd00580 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java @@ -18,21 +18,40 @@ import static com.google.common.truth.Truth.assertThat; +import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.UnaryCallSettings; import com.google.cloud.datastore.DatastoreOptions; import org.junit.Test; +import org.threeten.bp.Duration; public class RpcUtilsTest { @Test public void testRetrySettingSetter() { - DatastoreOptions datastoreOptions = - DatastoreOptions.newBuilder().setProjectId("project-id").build(); UnaryCallSettings.Builder builder = UnaryCallSettings.newUnaryCallSettingsBuilder(); + // datastoreOptions with default retry settings + DatastoreOptions datastoreOptions = + DatastoreOptions.newBuilder().setProjectId("project-id").build(); RpcUtils.retrySettingSetter(datastoreOptions).apply(builder); - assertThat(builder.getRetrySettings()).isEqualTo(datastoreOptions.getRetrySettings()); + + // datastoreOptions with custom retry settings + RetrySettings customRetrySettings = + RetrySettings.newBuilder() + .setTotalTimeout(Duration.ofMinutes(2)) + .setInitialRpcTimeout(Duration.ofSeconds(5)) + .setMaxRpcTimeout(Duration.ofSeconds(10)) + .setRetryDelayMultiplier(1.5) + .setMaxAttempts(5) + .build(); + DatastoreOptions datastoreOptionsWithCustomRetrySettings = + DatastoreOptions.newBuilder() + .setProjectId("project-id") + .setRetrySettings(customRetrySettings) + .build(); + RpcUtils.retrySettingSetter(datastoreOptionsWithCustomRetrySettings).apply(builder); + assertThat(builder.getRetrySettings()).isEqualTo(customRetrySettings); } }