From 7f3c951967b54f84d2a0393049464e853a637d0a Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:09:51 +0800 Subject: [PATCH 1/4] test: Parameterize DatastoreTest to run for both gRPC and HTTP transports --- .../testing/LocalDatastoreHelper.java | 10 +++ .../src/test/java/com/google/cloud/.DS_Store | Bin 0 -> 6148 bytes ...reTest.java => AbstractDatastoreTest.java} | 24 ++----- .../cloud/datastore/DatastoreTestGrpc.java | 61 ++++++++++++++++++ .../cloud/datastore/DatastoreTestHttp.java | 61 ++++++++++++++++++ .../testing/ITLocalDatastoreHelperTest.java | 19 ++++++ 6 files changed, 157 insertions(+), 18 deletions(-) create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/.DS_Store rename google-cloud-datastore/src/test/java/com/google/cloud/datastore/{DatastoreTest.java => AbstractDatastoreTest.java} (98%) create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java 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 927a6cf23..a2b819e51 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 @@ -21,7 +21,9 @@ import com.google.api.core.InternalApi; import com.google.cloud.NoCredentials; import com.google.cloud.ServiceOptions; +import com.google.cloud.TransportOptions; import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.grpc.GrpcTransportOptions; import com.google.cloud.testing.BaseEmulatorHelper; import com.google.common.collect.ImmutableList; import java.io.IOException; @@ -215,6 +217,14 @@ public DatastoreOptions getOptions(String namespace) { return optionsBuilder.setNamespace(namespace).build(); } + /** + * Returns a {@link DatastoreOptions} instance that sets the host to use the Datastore emulator on + * localhost. The transportOptions is set to {@code grpcTransportOptions}. + */ + public DatastoreOptions getGrpcTransportOptions(GrpcTransportOptions grpcTransportOptions) { + return optionsBuilder.setTransportOptions(grpcTransportOptions).build(); + } + public DatastoreOptions.Builder setNamespace(String namespace) { return optionsBuilder.setNamespace(namespace); } diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/.DS_Store b/google-cloud-datastore/src/test/java/com/google/cloud/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f172ab58d31f03adddb2b8b1d35371f1d00616de GIT binary patch literal 6148 zcmeHKJ8nWj3>*gvqBN8#_X@ee3Xv0VfgpisB9O?ZepSwuqhj~%HV}muB>vR5b z|9aT(^5*MQWu<@=kOERb3P^z)6!6|ln>{2dN&zV#1x^b1_o2}pd*P56pALo?0f data() { + return Arrays.asList( + new Object[][] { + {options, datastore} + }); + } + @BeforeClass + public static void beforeClass() throws IOException, InterruptedException { + helper.start(); + options = helper.getGrpcTransportOptions(GrpcTransportOptions.newBuilder().build()); + datastore = options.getService(); + } + + @AfterClass + public static void afterClass() throws Exception { + datastore.close(); + helper.stop(Duration.ofMinutes(1)); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java new file mode 100644 index 000000000..a569a518d --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java @@ -0,0 +1,61 @@ +/* + * Copyright 2015 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; + +import com.google.cloud.datastore.testing.LocalDatastoreHelper; +import com.google.cloud.grpc.GrpcTransportOptions; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.threeten.bp.Duration; + +import java.io.IOException; +import java.util.Arrays; + +@RunWith(Parameterized.class) +public class DatastoreTestHttp extends AbstractDatastoreTest{ + + private static final LocalDatastoreHelper helper = LocalDatastoreHelper.create(1.0, 9090); + + private static DatastoreOptions options = helper.getOptions(); + private static Datastore datastore = options.getService(); + + public DatastoreTestHttp(DatastoreOptions options, Datastore datastore) { + super(options, datastore); + } + + @Parameterized.Parameters(name = "data options: {0}") + public static Iterable data() { + return Arrays.asList( + new Object[][] { + {options, datastore} + }); + } + @BeforeClass + public static void beforeClass() throws IOException, InterruptedException { + helper.start(); + options = helper.getGrpcTransportOptions(GrpcTransportOptions.newBuilder().build()); + datastore = options.getService(); + } + + @AfterClass + public static void afterClass() throws Exception { + datastore.close(); + helper.stop(Duration.ofMinutes(1)); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java index 3ebd3ef4a..52d3937a4 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java @@ -16,6 +16,7 @@ package com.google.cloud.datastore.testing; +import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -23,6 +24,7 @@ import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; +import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; import com.google.cloud.NoCredentials; import com.google.cloud.datastore.Datastore; import com.google.cloud.datastore.DatastoreException; @@ -33,6 +35,9 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.concurrent.TimeoutException; + +import com.google.cloud.grpc.GrpcTransportOptions; +import com.google.cloud.http.HttpTransportOptions; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -167,6 +172,20 @@ public void testOptions() { assertEquals(NAMESPACE, options.getNamespace()); } + @Test + public void testDefaultHttpTransportOptions() { + LocalDatastoreHelper helper = LocalDatastoreHelper.create(); + DatastoreOptions options = helper.getOptions(); + assertThat(options.getTransportOptions()).isInstanceOf(HttpTransportOptions.class); + } + @Test + public void testSetGrpcTransportOptions() { + LocalDatastoreHelper helper = LocalDatastoreHelper.create(); + DatastoreOptions options = helper.getGrpcTransportOptions(GrpcTransportOptions.newBuilder().build()); + assertThat(options.getTransportOptions()).isInstanceOf(GrpcTransportOptions.class); + assertThat(options.getTransportChannelProvider()).isInstanceOf(InstantiatingGrpcChannelProvider.class); + } + @Test public void testStartStopReset() throws IOException, InterruptedException, TimeoutException { try { From def0d413f31ac1b60cb8c476900f71bef08a209d Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:10:13 +0800 Subject: [PATCH 2/4] test: Parameterize DatastoreTest to run for both gRPC and HTTP transports --- .../test/java/com/google/cloud/datastore/DatastoreTestGrpc.java | 2 ++ .../test/java/com/google/cloud/datastore/DatastoreTestHttp.java | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java index f046638c1..b72bc3b43 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java @@ -18,6 +18,7 @@ import com.google.cloud.datastore.testing.LocalDatastoreHelper; import com.google.cloud.grpc.GrpcTransportOptions; +import com.google.common.truth.Truth; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.threeten.bp.Duration; @@ -56,6 +57,7 @@ public static void beforeClass() throws IOException, InterruptedException { @AfterClass public static void afterClass() throws Exception { datastore.close(); + Truth.assertThat(datastore.isClosed()).isTrue(); helper.stop(Duration.ofMinutes(1)); } } diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java index a569a518d..1a9d473e4 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java @@ -55,7 +55,6 @@ public static void beforeClass() throws IOException, InterruptedException { @AfterClass public static void afterClass() throws Exception { - datastore.close(); helper.stop(Duration.ofMinutes(1)); } } From 5a324cf1f2cc25e5a205f0779676b6869c01b5e1 Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:21:39 +0800 Subject: [PATCH 3/4] fix linting --- .../testing/LocalDatastoreHelper.java | 1 - .../datastore/AbstractDatastoreTest.java | 2 +- .../cloud/datastore/DatastoreTestGrpc.java | 20 +++++++++---------- .../cloud/datastore/DatastoreTestHttp.java | 13 +++++------- .../testing/ITLocalDatastoreHelperTest.java | 12 ++++++----- 5 files changed, 22 insertions(+), 26 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 a2b819e51..13be3d48d 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 @@ -21,7 +21,6 @@ import com.google.api.core.InternalApi; import com.google.cloud.NoCredentials; import com.google.cloud.ServiceOptions; -import com.google.cloud.TransportOptions; import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.grpc.GrpcTransportOptions; import com.google.cloud.testing.BaseEmulatorHelper; diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/AbstractDatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/AbstractDatastoreTest.java index 6709a424f..fdb934d42 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/AbstractDatastoreTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/AbstractDatastoreTest.java @@ -163,7 +163,7 @@ public abstract class AbstractDatastoreTest { private DatastoreRpc rpcMock; public AbstractDatastoreTest(DatastoreOptions options, Datastore datastore) { - this.options =options; + this.options = options; this.datastore = datastore; } diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java index b72bc3b43..67be48f1e 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java @@ -19,21 +19,21 @@ import com.google.cloud.datastore.testing.LocalDatastoreHelper; import com.google.cloud.grpc.GrpcTransportOptions; import com.google.common.truth.Truth; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.threeten.bp.Duration; -import org.junit.BeforeClass; - import java.io.IOException; import java.util.Arrays; import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.threeten.bp.Duration; @RunWith(Parameterized.class) -public class DatastoreTestGrpc extends AbstractDatastoreTest{ +public class DatastoreTestGrpc extends AbstractDatastoreTest { private static final LocalDatastoreHelper helper = LocalDatastoreHelper.create(1.0, 9090); - private static DatastoreOptions options = helper.getGrpcTransportOptions(GrpcTransportOptions.newBuilder().build()); + private static DatastoreOptions options = + helper.getGrpcTransportOptions(GrpcTransportOptions.newBuilder().build()); private static Datastore datastore = options.getService(); public DatastoreTestGrpc(DatastoreOptions options, Datastore datastore) { @@ -42,11 +42,9 @@ public DatastoreTestGrpc(DatastoreOptions options, Datastore datastore) { @Parameterized.Parameters(name = "data options: {0}") public static Iterable data() { - return Arrays.asList( - new Object[][] { - {options, datastore} - }); + return Arrays.asList(new Object[][] {{options, datastore}}); } + @BeforeClass public static void beforeClass() throws IOException, InterruptedException { helper.start(); diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java index 1a9d473e4..245f68a1b 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java @@ -18,17 +18,16 @@ import com.google.cloud.datastore.testing.LocalDatastoreHelper; import com.google.cloud.grpc.GrpcTransportOptions; +import java.io.IOException; +import java.util.Arrays; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.threeten.bp.Duration; -import java.io.IOException; -import java.util.Arrays; - @RunWith(Parameterized.class) -public class DatastoreTestHttp extends AbstractDatastoreTest{ +public class DatastoreTestHttp extends AbstractDatastoreTest { private static final LocalDatastoreHelper helper = LocalDatastoreHelper.create(1.0, 9090); @@ -41,11 +40,9 @@ public DatastoreTestHttp(DatastoreOptions options, Datastore datastore) { @Parameterized.Parameters(name = "data options: {0}") public static Iterable data() { - return Arrays.asList( - new Object[][] { - {options, datastore} - }); + return Arrays.asList(new Object[][] {{options, datastore}}); } + @BeforeClass public static void beforeClass() throws IOException, InterruptedException { helper.start(); diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java index 52d3937a4..51b8bcf1a 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java @@ -31,13 +31,12 @@ import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.datastore.Entity; import com.google.cloud.datastore.Key; +import com.google.cloud.grpc.GrpcTransportOptions; +import com.google.cloud.http.HttpTransportOptions; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.concurrent.TimeoutException; - -import com.google.cloud.grpc.GrpcTransportOptions; -import com.google.cloud.http.HttpTransportOptions; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -178,12 +177,15 @@ public void testDefaultHttpTransportOptions() { DatastoreOptions options = helper.getOptions(); assertThat(options.getTransportOptions()).isInstanceOf(HttpTransportOptions.class); } + @Test public void testSetGrpcTransportOptions() { LocalDatastoreHelper helper = LocalDatastoreHelper.create(); - DatastoreOptions options = helper.getGrpcTransportOptions(GrpcTransportOptions.newBuilder().build()); + DatastoreOptions options = + helper.getGrpcTransportOptions(GrpcTransportOptions.newBuilder().build()); assertThat(options.getTransportOptions()).isInstanceOf(GrpcTransportOptions.class); - assertThat(options.getTransportChannelProvider()).isInstanceOf(InstantiatingGrpcChannelProvider.class); + assertThat(options.getTransportChannelProvider()) + .isInstanceOf(InstantiatingGrpcChannelProvider.class); } @Test From 3ec59f3085a7730ad21d4a1dcfb16ac04bef41fc Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:37:34 +0800 Subject: [PATCH 4/4] update copy right --- .../datastore/testing/LocalDatastoreHelper.java | 2 +- .../datastore/testing/RemoteDatastoreHelper.java | 2 +- .../src/test/java/com/google/cloud/.DS_Store | Bin 6148 -> 0 bytes .../cloud/datastore/AbstractDatastoreTest.java | 2 +- .../cloud/datastore/DatastoreOptionsTest.java | 2 +- .../cloud/datastore/DatastoreTestGrpc.java | 2 +- .../testing/ITLocalDatastoreHelperTest.java | 2 +- 7 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/.DS_Store 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 13be3d48d..4dcf2c953 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 @@ -1,5 +1,5 @@ /* - * Copyright 2015 Google LLC + * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java index 1471328ff..647f54481 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2016 Google LLC + * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/.DS_Store b/google-cloud-datastore/src/test/java/com/google/cloud/.DS_Store deleted file mode 100644 index f172ab58d31f03adddb2b8b1d35371f1d00616de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJ8nWj3>*gvqBN8#_X@ee3Xv0VfgpisB9O?ZepSwuqhj~%HV}muB>vR5b z|9aT(^5*MQWu<@=kOERb3P^z)6!6|ln>{2dN&zV#1x^b1_o2}pd*P56pALo?0f