From e6e4424cfb2140e9191842e3653161a81668f85d Mon Sep 17 00:00:00 2001 From: Thiago Nunes Date: Wed, 12 Aug 2020 15:56:54 +1000 Subject: [PATCH 1/4] fix: enables emulator tests Enables emulator for integration tests that were previously being skipped. The emulator now provides the features for theses tests to run with it. --- .../spanner/testing/RemoteSpannerHelper.java | 5 --- .../testing/SpannerEmulatorHelper.java | 29 ++++++++++++++++ .../cloud/spanner/IntegrationTestEnv.java | 3 +- .../connection/it/ITReadOnlySpannerTest.java | 3 +- .../it/ITReadWriteAutocommitSpannerTest.java | 3 +- .../connection/it/ITSqlMusicScriptTest.java | 3 +- .../connection/it/ITSqlScriptTest.java | 6 ++-- .../connection/it/ITTransactionRetryTest.java | 33 ++++++++++--------- .../cloud/spanner/it/ITAsyncAPITest.java | 4 --- .../google/cloud/spanner/it/ITBackupTest.java | 3 +- .../cloud/spanner/it/ITClosedSessionTest.java | 5 --- .../spanner/it/ITCommitTimestampTest.java | 8 +---- .../cloud/spanner/it/ITDatabaseAdminTest.java | 3 +- .../cloud/spanner/it/ITDatabaseTest.java | 5 +-- .../cloud/spanner/it/ITInstanceAdminTest.java | 5 +-- .../cloud/spanner/it/ITQueryOptionsTest.java | 3 +- .../google/cloud/spanner/it/ITQueryTest.java | 9 ++--- .../it/ITTransactionManagerAsyncTest.java | 3 +- .../spanner/it/ITTransactionManagerTest.java | 3 +- .../cloud/spanner/it/ITTransactionTest.java | 9 ++--- 20 files changed, 85 insertions(+), 60 deletions(-) create mode 100644 google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java index f20354950f0..98cb8022ffa 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java @@ -25,7 +25,6 @@ import com.google.cloud.spanner.SpannerException; import com.google.cloud.spanner.SpannerExceptionFactory; import com.google.cloud.spanner.SpannerOptions; -import com.google.common.base.Strings; import com.google.spanner.admin.database.v1.CreateDatabaseMetadata; import java.util.ArrayList; import java.util.Arrays; @@ -58,10 +57,6 @@ public SpannerOptions getOptions() { return options; } - public boolean isEmulator() { - return !Strings.isNullOrEmpty(System.getenv("SPANNER_EMULATOR_HOST")); - } - public Spanner getClient() { return client; } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java new file mode 100644 index 00000000000..3c6107bd51f --- /dev/null +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java @@ -0,0 +1,29 @@ +/* + * Copyright 2020 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.spanner.testing; + +import com.google.common.base.Strings; + +/** + * Utility class for checking emulator state for tests + */ +public class SpannerEmulatorHelper { + + public static boolean isUsingEmulator() { + return !Strings.isNullOrEmpty(System.getenv("SPANNER_EMULATOR_HOST")); + } +} diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/IntegrationTestEnv.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/IntegrationTestEnv.java index b67f970273c..168c14cb8bd 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/IntegrationTestEnv.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/IntegrationTestEnv.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static com.google.common.base.Preconditions.checkState; import com.google.api.gax.longrunning.OperationFuture; @@ -79,7 +80,7 @@ protected void before() throws Throwable { SpannerOptions options = config.spannerOptions(); String instanceProperty = System.getProperty(TEST_INSTANCE_PROPERTY, ""); InstanceId instanceId; - if (!instanceProperty.isEmpty()) { + if (!instanceProperty.isEmpty() && !isUsingEmulator()) { instanceId = InstanceId.of(instanceProperty); isOwnedInstance = false; logger.log(Level.INFO, "Using existing test instance: {0}", instanceId); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadOnlySpannerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadOnlySpannerTest.java index db833492323..062046e4674 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadOnlySpannerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadOnlySpannerTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.connection.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.CoreMatchers.nullValue; @@ -169,7 +170,7 @@ public void testStatementTimeoutAutocommit() { @Test public void testAnalyzeQuery() { - assumeFalse("analyze query is not supported on the emulator", env.getTestHelper().isEmulator()); + assumeFalse("analyze query is not supported on the emulator", isUsingEmulator()); try (ITConnection connection = createConnection()) { for (QueryAnalyzeMode mode : QueryAnalyzeMode.values()) { try (ResultSet rs = diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadWriteAutocommitSpannerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadWriteAutocommitSpannerTest.java index 6b85d8b44be..a3bde0f111c 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadWriteAutocommitSpannerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadWriteAutocommitSpannerTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.connection.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; @@ -76,7 +77,7 @@ public void test02_WriteMutation() { public void test03_MultipleStatements_WithTimeouts() { assumeFalse( "Rolling back a transaction while an update statement is still in flight can cause the transaction to remain active on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); try (ITConnection connection = createConnection()) { // do an insert that should succeed assertThat( diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java index 5f239f2c9ec..f7e7f25d356 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.connection.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; @@ -61,7 +62,7 @@ public void test01_RunScript() throws Exception { public void test02_RunAbortedTest() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); final long SINGER_ID = 2L; final long VENUE_ID = 68L; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlScriptTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlScriptTest.java index 9ff245ffe58..1933a48e624 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlScriptTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlScriptTest.java @@ -16,6 +16,8 @@ package com.google.cloud.spanner.connection.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; + import com.google.cloud.spanner.ErrorCode; import com.google.cloud.spanner.ParallelIntegrationTest; import com.google.cloud.spanner.SpannerException; @@ -76,7 +78,7 @@ public void test02_InsertTestData() throws Exception { INSERT_AND_VERIFY_TEST_DATA, SqlScriptVerifier.class); } catch (SpannerException e) { - if (env.getTestHelper().isEmulator() && e.getErrorCode() == ErrorCode.ALREADY_EXISTS) { + if (isUsingEmulator() && e.getErrorCode() == ErrorCode.ALREADY_EXISTS) { // Errors in a transaction are 'sticky' on the emulator, so any query in the same // transaction will return the same error as the error generated by a previous (update) // statement. @@ -102,7 +104,7 @@ public void test04_TestGetCommitTimestamp() throws Exception { TEST_GET_COMMIT_TIMESTAMP, SqlScriptVerifier.class); } catch (SpannerException e) { - if (env.getTestHelper().isEmulator() && e.getErrorCode() == ErrorCode.INVALID_ARGUMENT) { + if (isUsingEmulator() && e.getErrorCode() == ErrorCode.INVALID_ARGUMENT) { // Errors in a transaction are 'sticky' on the emulator, so any query in the same // transaction will return the same error as the error generated by a previous statement. } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java index 1259e2ab8d3..50aa6a91183 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.connection.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; @@ -490,7 +491,7 @@ public void testAbortWithResultSetFullyConsumed() { public void testAbortWithConcurrentInsert() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); try (ITConnection connection = createConnection(interceptor, new CountTransactionRetryListener())) { @@ -527,7 +528,7 @@ public void testAbortWithConcurrentInsert() { public void testAbortWithConcurrentDelete() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records try (ITConnection connection = createConnection()) { @@ -568,7 +569,7 @@ public void testAbortWithConcurrentDelete() { public void testAbortWithConcurrentUpdate() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records try (ITConnection connection = createConnection()) { @@ -614,7 +615,7 @@ public void testAbortWithConcurrentUpdate() { public void testAbortWithUnseenConcurrentInsert() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); try (ITConnection connection = createConnection(interceptor, new CountTransactionRetryListener())) { @@ -664,7 +665,7 @@ public void testAbortWithUnseenConcurrentInsert() { public void testAbortWithUnseenConcurrentInsertAbortOnNext() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); // no calls to next(), this should succeed assertThat(testAbortWithUnseenConcurrentInsertAbortOnNext(0) >= 1, is(true)); // 1 call to next() should also succeed, as there were 2 records in the original result set @@ -688,7 +689,7 @@ private int testAbortWithUnseenConcurrentInsertAbortOnNext(int callsToNext) throws AbortedDueToConcurrentModificationException { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); int retries = 0; clearTable(); clearStatistics(); @@ -750,7 +751,7 @@ private int testAbortWithUnseenConcurrentInsertAbortOnNext(int callsToNext) public void testAbortWithConcurrentInsertAndContinue() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); try (ITConnection connection = createConnection(interceptor, new CountTransactionRetryListener())) { @@ -962,7 +963,7 @@ protected boolean shouldAbort(String statement, ExecutionStep step) { public void testNestedAbortWithConcurrentInsert() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0) { private boolean alreadyAborted = false; @@ -1027,7 +1028,7 @@ protected boolean shouldAbort(String statement, ExecutionStep step) { public void testAbortWithDifferentUpdateCount() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records try (ITConnection connection = createConnection()) { @@ -1075,7 +1076,7 @@ public void testAbortWithDifferentUpdateCount() { public void testAbortWithExceptionOnSelect() { assumeFalse( "resume after error in transaction is not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records try (ITConnection connection = createConnection()) { @@ -1127,7 +1128,7 @@ public void testAbortWithExceptionOnSelect() { public void testAbortWithExceptionOnSelectAndConcurrentModification() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1197,7 +1198,7 @@ public void testAbortWithExceptionOnSelectAndConcurrentModification() { public void testAbortWithExceptionOnInsertAndConcurrentModification() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1266,7 +1267,7 @@ public void testAbortWithExceptionOnInsertAndConcurrentModification() { public void testAbortWithDroppedTableConcurrentModification() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1331,7 +1332,7 @@ public void testAbortWithDroppedTableConcurrentModification() { public void testAbortWithInsertOnDroppedTableConcurrentModification() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1393,7 +1394,7 @@ public void testAbortWithInsertOnDroppedTableConcurrentModification() { public void testAbortWithCursorHalfwayDroppedTableConcurrentModification() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1548,7 +1549,7 @@ public void testRetryHighAbortRate() { public void testAbortWithConcurrentInsertOnEmptyTable() { assumeFalse( "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); try (ITConnection connection = createConnection(interceptor, new CountTransactionRetryListener())) { diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITAsyncAPITest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITAsyncAPITest.java index a2239aa3b98..721536cb6b3 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITAsyncAPITest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITAsyncAPITest.java @@ -18,7 +18,6 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; -import static org.junit.Assume.assumeFalse; import com.google.api.core.ApiFuture; import com.google.cloud.spanner.AsyncResultSet; @@ -279,9 +278,6 @@ public void columnNotFound() throws Exception { @Test public void asyncRunnerFireAndForgetInvalidUpdate() throws Exception { - assumeFalse( - "errors in read/write transactions on emulator are sticky", - env.getTestHelper().isEmulator()); try { assertThat(client.singleUse().readRow("TestTable", Key.of("k999"), ALL_COLUMNS)).isNull(); AsyncRunner runner = client.runAsync(); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITBackupTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITBackupTest.java index 2a35a170838..6e41eba95c2 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITBackupTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITBackupTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; @@ -93,7 +94,7 @@ public class ITBackupTest { @BeforeClass public static void doNotRunOnEmulator() { - assumeFalse("backups are not supported on the emulator", env.getTestHelper().isEmulator()); + assumeFalse("backups are not supported on the emulator", isUsingEmulator()); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITClosedSessionTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITClosedSessionTest.java index 3031b0edd85..1e00015cdfb 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITClosedSessionTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITClosedSessionTest.java @@ -19,7 +19,6 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; -import static org.junit.Assume.assumeFalse; import com.google.cloud.spanner.AbortedException; import com.google.cloud.spanner.Database; @@ -61,10 +60,6 @@ public class ITClosedSessionTest { @BeforeClass public static void setUpDatabase() { - // TODO: Enable when the emulator returns ResourceInfo for Session not found errors. - assumeFalse( - "Emulator does not return ResourceInfo for Session not found errors", - env.getTestHelper().isEmulator()); // Empty database. db = env.getTestHelper().createTestDatabase(); client = (DatabaseClientWithClosedSessionImpl) env.getTestHelper().getDatabaseClient(db); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITCommitTimestampTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITCommitTimestampTest.java index 84d1a675597..187f1e9f129 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITCommitTimestampTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITCommitTimestampTest.java @@ -18,7 +18,6 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; -import static org.junit.Assume.assumeFalse; import com.google.cloud.Timestamp; import com.google.cloud.spanner.Database; @@ -325,10 +324,7 @@ public void interleavedTableHierarchy1() { .build())); fail("missing expected exception"); } catch (SpannerException e) { - // TODO: Remove when the emulator returns the same error code as Cloud Spanner. - if (!env.getTestHelper().isEmulator()) { - assertThat(e.getErrorCode()).isEqualTo(ErrorCode.FAILED_PRECONDITION); - } + assertThat(e.getErrorCode()).isEqualTo(ErrorCode.FAILED_PRECONDITION); } } @@ -336,8 +332,6 @@ public void interleavedTableHierarchy1() { // allowed if child tables are not allow_commmit_timestamp=true @Test public void interleavedTableHierarchy2() { - // TODO: Remove the following line once the emulator is as strict as Cloud Spanner. - assumeFalse("The emulator allows this situation", env.getTestHelper().isEmulator()); Database db = testHelper.createTestDatabase( "CREATE TABLE T1 (ts TIMESTAMP OPTIONS (allow_commit_timestamp = true)) " diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java index f66154d66c2..23bc94f500b 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; @@ -266,7 +267,7 @@ public void onClose(Status status, Metadata metadata) { public void testRetryNonIdempotentRpcsReturningLongRunningOperations() throws Exception { assumeFalse( "Querying long-running operations is not supported on the emulator", - env.getTestHelper().isEmulator()); + isUsingEmulator()); // RPCs that return a long-running operation such as CreateDatabase, CreateBackup and // RestoreDatabase are non-idempotent and can normally not be automatically retried in case of a diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java index 450c7463c50..d1c9fb3d3f2 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; @@ -65,7 +66,7 @@ public void databaseDeletedTest() throws Exception { // errors. assumeFalse( "Emulator does not return ResourceInfo for Database not found errors", - env.getTestHelper().isEmulator()); + isUsingEmulator()); // Create a test db, do a query, then delete it and verify that it returns // DatabaseNotFoundExceptions. @@ -136,7 +137,7 @@ public void instanceNotFound() { // errors. assumeFalse( "Emulator does not return ResourceInfo for Instance not found errors", - env.getTestHelper().isEmulator()); + isUsingEmulator()); InstanceId testId = env.getTestHelper().getInstanceId(); InstanceId nonExistingInstanceId = diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java index 68e4e615a39..c2af8e8b1a4 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assume.assumeFalse; @@ -79,7 +80,7 @@ public void listInstances() { @Test public void updateInstance() throws Exception { assumeFalse( - "The emulator does not support updating instances", env.getTestHelper().isEmulator()); + "The emulator does not support updating instances", isUsingEmulator()); Instance instance = instanceClient.getInstance(env.getTestHelper().getInstanceId().getInstance()); @@ -109,7 +110,7 @@ public void updateInstance() throws Exception { @Test public void updateInstanceViaEntity() throws Exception { assumeFalse( - "The emulator does not support updating instances", env.getTestHelper().isEmulator()); + "The emulator does not support updating instances", isUsingEmulator()); Instance instance = instanceClient.getInstance(env.getTestHelper().getInstanceId().getInstance()); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryOptionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryOptionsTest.java index 30cfa80c458..d14f51480b7 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryOptionsTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryOptionsTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; @@ -48,7 +49,7 @@ public class ITQueryOptionsTest { @BeforeClass public static void setUpDatabase() { - assumeFalse("Emulator ignores query options", env.getTestHelper().isEmulator()); + assumeFalse("Emulator ignores query options", isUsingEmulator()); // Empty database. db = diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java index b54984362d7..f613fedee55 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java @@ -17,6 +17,7 @@ package com.google.cloud.spanner.it; import static com.google.cloud.spanner.Type.StructField; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static java.util.Arrays.asList; import static org.junit.Assert.fail; @@ -495,7 +496,7 @@ public void bindDateArrayNull() { @Test public void unsupportedSelectStructValue() { - assumeFalse("The emulator accepts this query", env.getTestHelper().isEmulator()); + assumeFalse("The emulator accepts this query", isUsingEmulator()); Struct p = structValue(); try { execute(Statement.newBuilder("SELECT @p").bind("p").to(p).build(), p.getType()); @@ -512,7 +513,7 @@ public void unsupportedSelectStructValue() { public void unsupportedSelectArrayStructValue() { assumeFalse( "Emulator evaluates this expression differently than Cloud Spanner", - env.getTestHelper().isEmulator()); + isUsingEmulator()); Struct p = structValue(); try { @@ -829,7 +830,7 @@ public void queryRealTable() { @Test public void analyzePlan() { - assumeFalse("Emulator does not support Analyze Plan", env.getTestHelper().isEmulator()); + assumeFalse("Emulator does not support Analyze Plan", isUsingEmulator()); Statement statement = Statement.of("SELECT 1 AS column UNION ALL SELECT 2"); ResultSet resultSet = @@ -844,7 +845,7 @@ public void analyzePlan() { @Test public void analyzeProfile() { - assumeFalse("Emulator does not support Analyze Profile", env.getTestHelper().isEmulator()); + assumeFalse("Emulator does not support Analyze Profile", isUsingEmulator()); Statement statement = Statement.of("SELECT 1 AS column UNION ALL SELECT 2 AS column ORDER BY column"); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerAsyncTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerAsyncTest.java index c802493dec5..7f05cc696d4 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerAsyncTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerAsyncTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; @@ -218,7 +219,7 @@ public void testAbortAndRetry() throws InterruptedException, ExecutionException assumeFalse( "Emulator does not support more than 1 simultanous transaction. " + "This test would therefore loop indefinetly on the emulator.", - env.getTestHelper().isEmulator()); + isUsingEmulator()); client.write( Arrays.asList( diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerTest.java index 281977af6a0..f955e445818 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.it; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; @@ -151,7 +152,7 @@ public void abortAndRetry() throws InterruptedException { assumeFalse( "Emulator does not support more than 1 simultanous transaction. " + "This test would therefore loop indefinetly on the emulator.", - env.getTestHelper().isEmulator()); + isUsingEmulator()); client.write( Arrays.asList( diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java index 5e3c1483e7d..caab2088433 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java @@ -18,6 +18,7 @@ import static com.google.cloud.spanner.SpannerExceptionFactory.newSpannerException; import static com.google.cloud.spanner.TransactionRunner.TransactionCallable; +import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; @@ -155,7 +156,7 @@ public void run() { public void basicsUsingRead() throws InterruptedException { assumeFalse( "Emulator does not support multiple parallel transactions", - env.getTestHelper().isEmulator()); + isUsingEmulator()); doBasicsTest( new ReadStrategy() { @@ -170,7 +171,7 @@ public Struct read(ReadContext ctx, String key) { public void basicsUsingQuery() throws InterruptedException { assumeFalse( "Emulator does not support multiple parallel transactions", - env.getTestHelper().isEmulator()); + isUsingEmulator()); doBasicsTest( new ReadStrategy() { @@ -253,7 +254,7 @@ public Void run(TransactionContext transaction) { public void readAbort() throws Exception { assumeFalse( "Emulator does not support multiple parallel transactions", - env.getTestHelper().isEmulator()); + isUsingEmulator()); final String key1 = uniqueKey(); final String key2 = uniqueKey(); @@ -498,7 +499,7 @@ public Void run(TransactionContext transaction) throws SpannerException { public void nestedTxnSucceedsWhenAllowed() { assumeFalse( "Emulator does not support multiple parallel transactions", - env.getTestHelper().isEmulator()); + isUsingEmulator()); client .readWriteTransaction() From 49921046645696f44a7c13b20866ea7d74157608 Mon Sep 17 00:00:00 2001 From: Thiago Nunes Date: Wed, 12 Aug 2020 16:14:35 +1000 Subject: [PATCH 2/4] fix: formatting Fixes formatting of code --- .../testing/SpannerEmulatorHelper.java | 4 +- .../connection/it/ITSqlMusicScriptTest.java | 4 +- .../connection/it/ITTransactionRetryTest.java | 63 +++++-------------- .../cloud/spanner/it/ITDatabaseAdminTest.java | 3 +- .../cloud/spanner/it/ITDatabaseTest.java | 6 +- .../cloud/spanner/it/ITInstanceAdminTest.java | 6 +- .../google/cloud/spanner/it/ITQueryTest.java | 3 +- .../cloud/spanner/it/ITTransactionTest.java | 16 ++--- 8 files changed, 28 insertions(+), 77 deletions(-) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java index 3c6107bd51f..03c7776bb1c 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java @@ -18,9 +18,7 @@ import com.google.common.base.Strings; -/** - * Utility class for checking emulator state for tests - */ +/** Utility class for checking emulator state for tests */ public class SpannerEmulatorHelper { public static boolean isUsingEmulator() { diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java index f7e7f25d356..eef3c9135b4 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java @@ -60,9 +60,7 @@ public void test01_RunScript() throws Exception { @Test public void test02_RunAbortedTest() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); final long SINGER_ID = 2L; final long VENUE_ID = 68L; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java index 50aa6a91183..78f98ed828f 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java @@ -489,9 +489,7 @@ public void testAbortWithResultSetFullyConsumed() { @Test public void testAbortWithConcurrentInsert() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); try (ITConnection connection = createConnection(interceptor, new CountTransactionRetryListener())) { @@ -526,9 +524,7 @@ public void testAbortWithConcurrentInsert() { @Test public void testAbortWithConcurrentDelete() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records try (ITConnection connection = createConnection()) { @@ -567,9 +563,7 @@ public void testAbortWithConcurrentDelete() { @Test public void testAbortWithConcurrentUpdate() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records try (ITConnection connection = createConnection()) { @@ -613,9 +607,7 @@ public void testAbortWithConcurrentUpdate() { */ @Test public void testAbortWithUnseenConcurrentInsert() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); try (ITConnection connection = createConnection(interceptor, new CountTransactionRetryListener())) { @@ -663,9 +655,7 @@ public void testAbortWithUnseenConcurrentInsert() { */ @Test public void testAbortWithUnseenConcurrentInsertAbortOnNext() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); // no calls to next(), this should succeed assertThat(testAbortWithUnseenConcurrentInsertAbortOnNext(0) >= 1, is(true)); // 1 call to next() should also succeed, as there were 2 records in the original result set @@ -687,9 +677,7 @@ public void testAbortWithUnseenConcurrentInsertAbortOnNext() { private int testAbortWithUnseenConcurrentInsertAbortOnNext(int callsToNext) throws AbortedDueToConcurrentModificationException { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); int retries = 0; clearTable(); clearStatistics(); @@ -749,9 +737,7 @@ private int testAbortWithUnseenConcurrentInsertAbortOnNext(int callsToNext) */ @Test public void testAbortWithConcurrentInsertAndContinue() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); try (ITConnection connection = createConnection(interceptor, new CountTransactionRetryListener())) { @@ -961,9 +947,7 @@ protected boolean shouldAbort(String statement, ExecutionStep step) { */ @Test public void testNestedAbortWithConcurrentInsert() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0) { private boolean alreadyAborted = false; @@ -1026,9 +1010,7 @@ protected boolean shouldAbort(String statement, ExecutionStep step) { */ @Test public void testAbortWithDifferentUpdateCount() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records try (ITConnection connection = createConnection()) { @@ -1075,8 +1057,7 @@ public void testAbortWithDifferentUpdateCount() { @Test public void testAbortWithExceptionOnSelect() { assumeFalse( - "resume after error in transaction is not supported on the emulator", - isUsingEmulator()); + "resume after error in transaction is not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records try (ITConnection connection = createConnection()) { @@ -1126,9 +1107,7 @@ public void testAbortWithExceptionOnSelect() { */ @Test public void testAbortWithExceptionOnSelectAndConcurrentModification() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1196,9 +1175,7 @@ public void testAbortWithExceptionOnSelectAndConcurrentModification() { */ @Test public void testAbortWithExceptionOnInsertAndConcurrentModification() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1265,9 +1242,7 @@ public void testAbortWithExceptionOnInsertAndConcurrentModification() { */ @Test public void testAbortWithDroppedTableConcurrentModification() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1330,9 +1305,7 @@ public void testAbortWithDroppedTableConcurrentModification() { */ @Test public void testAbortWithInsertOnDroppedTableConcurrentModification() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1392,9 +1365,7 @@ public void testAbortWithInsertOnDroppedTableConcurrentModification() { */ @Test public void testAbortWithCursorHalfwayDroppedTableConcurrentModification() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1547,9 +1518,7 @@ public void testRetryHighAbortRate() { @Test public void testAbortWithConcurrentInsertOnEmptyTable() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - isUsingEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); try (ITConnection connection = createConnection(interceptor, new CountTransactionRetryListener())) { diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java index 23bc94f500b..b44c9b70d67 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java @@ -266,8 +266,7 @@ public void onClose(Status status, Metadata metadata) { @Test public void testRetryNonIdempotentRpcsReturningLongRunningOperations() throws Exception { assumeFalse( - "Querying long-running operations is not supported on the emulator", - isUsingEmulator()); + "Querying long-running operations is not supported on the emulator", isUsingEmulator()); // RPCs that return a long-running operation such as CreateDatabase, CreateBackup and // RestoreDatabase are non-idempotent and can normally not be automatically retried in case of a diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java index d1c9fb3d3f2..3615985c951 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java @@ -65,8 +65,7 @@ public void databaseDeletedTest() throws Exception { // TODO: Remove the following line once the emulator returns ResourceInfo for Database not found // errors. assumeFalse( - "Emulator does not return ResourceInfo for Database not found errors", - isUsingEmulator()); + "Emulator does not return ResourceInfo for Database not found errors", isUsingEmulator()); // Create a test db, do a query, then delete it and verify that it returns // DatabaseNotFoundExceptions. @@ -136,8 +135,7 @@ public void instanceNotFound() { // TODO: Remove the following line when the emulator returns ResourceInfo for Instance not found // errors. assumeFalse( - "Emulator does not return ResourceInfo for Instance not found errors", - isUsingEmulator()); + "Emulator does not return ResourceInfo for Instance not found errors", isUsingEmulator()); InstanceId testId = env.getTestHelper().getInstanceId(); InstanceId nonExistingInstanceId = diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java index c2af8e8b1a4..8c4f03ce6f7 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java @@ -79,8 +79,7 @@ public void listInstances() { @Test public void updateInstance() throws Exception { - assumeFalse( - "The emulator does not support updating instances", isUsingEmulator()); + assumeFalse("The emulator does not support updating instances", isUsingEmulator()); Instance instance = instanceClient.getInstance(env.getTestHelper().getInstanceId().getInstance()); @@ -109,8 +108,7 @@ public void updateInstance() throws Exception { @Test public void updateInstanceViaEntity() throws Exception { - assumeFalse( - "The emulator does not support updating instances", isUsingEmulator()); + assumeFalse("The emulator does not support updating instances", isUsingEmulator()); Instance instance = instanceClient.getInstance(env.getTestHelper().getInstanceId().getInstance()); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java index f613fedee55..c67914bb7a7 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java @@ -512,8 +512,7 @@ public void unsupportedSelectStructValue() { @Test public void unsupportedSelectArrayStructValue() { assumeFalse( - "Emulator evaluates this expression differently than Cloud Spanner", - isUsingEmulator()); + "Emulator evaluates this expression differently than Cloud Spanner", isUsingEmulator()); Struct p = structValue(); try { diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java index caab2088433..2b72ee323e7 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java @@ -154,9 +154,7 @@ public void run() { @Test public void basicsUsingRead() throws InterruptedException { - assumeFalse( - "Emulator does not support multiple parallel transactions", - isUsingEmulator()); + assumeFalse("Emulator does not support multiple parallel transactions", isUsingEmulator()); doBasicsTest( new ReadStrategy() { @@ -169,9 +167,7 @@ public Struct read(ReadContext ctx, String key) { @Test public void basicsUsingQuery() throws InterruptedException { - assumeFalse( - "Emulator does not support multiple parallel transactions", - isUsingEmulator()); + assumeFalse("Emulator does not support multiple parallel transactions", isUsingEmulator()); doBasicsTest( new ReadStrategy() { @@ -252,9 +248,7 @@ public Void run(TransactionContext transaction) { @Test public void readAbort() throws Exception { - assumeFalse( - "Emulator does not support multiple parallel transactions", - isUsingEmulator()); + assumeFalse("Emulator does not support multiple parallel transactions", isUsingEmulator()); final String key1 = uniqueKey(); final String key2 = uniqueKey(); @@ -497,9 +491,7 @@ public Void run(TransactionContext transaction) throws SpannerException { @Test public void nestedTxnSucceedsWhenAllowed() { - assumeFalse( - "Emulator does not support multiple parallel transactions", - isUsingEmulator()); + assumeFalse("Emulator does not support multiple parallel transactions", isUsingEmulator()); client .readWriteTransaction() From 75197c65e64c33a8b1361755aa88170b7ead3e5d Mon Sep 17 00:00:00 2001 From: Thiago Nunes Date: Wed, 12 Aug 2020 16:21:34 +1000 Subject: [PATCH 3/4] fix: deprecates method for emulator check Deprecates method to check for the emulator and uses the new SpannerEmulatorHelper class. --- .../cloud/spanner/testing/RemoteSpannerHelper.java | 11 +++++++++++ .../cloud/spanner/testing/SpannerEmulatorHelper.java | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java index 98cb8022ffa..52ef06db91f 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java @@ -57,6 +57,17 @@ public SpannerOptions getOptions() { return options; } + /** + * Checks whether the emulator is being used. + * + * @deprecated use {@link SpannerEmulatorHelper#isUsingEmulator()} instead. + * @return true if the emulator is being used. Returns false otherwise. + */ + @Deprecated + public boolean isEmulator() { + return SpannerEmulatorHelper.isUsingEmulator(); + } + public Spanner getClient() { return client; } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java index 03c7776bb1c..5f66620fc75 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java @@ -21,6 +21,12 @@ /** Utility class for checking emulator state for tests */ public class SpannerEmulatorHelper { + /** + * Checks whether the emulator is being used. This is done by checking if the + * SPANNER_EMULATOR_HOST environment variable is set. + * + * @return true if the emulator is being used. Returns false otherwise. + */ public static boolean isUsingEmulator() { return !Strings.isNullOrEmpty(System.getenv("SPANNER_EMULATOR_HOST")); } From 11dc86f2f3c472dcccd2da00e7bb19b453be0069 Mon Sep 17 00:00:00 2001 From: Thiago Nunes Date: Wed, 12 Aug 2020 16:24:52 +1000 Subject: [PATCH 4/4] refactor: renames class Renames helper class --- ...pannerEmulatorHelper.java => EmulatorSpannerHelper.java} | 6 ++++-- .../google/cloud/spanner/testing/RemoteSpannerHelper.java | 4 ++-- .../java/com/google/cloud/spanner/IntegrationTestEnv.java | 2 +- .../cloud/spanner/connection/it/ITReadOnlySpannerTest.java | 2 +- .../connection/it/ITReadWriteAutocommitSpannerTest.java | 2 +- .../cloud/spanner/connection/it/ITSqlMusicScriptTest.java | 2 +- .../google/cloud/spanner/connection/it/ITSqlScriptTest.java | 2 +- .../cloud/spanner/connection/it/ITTransactionRetryTest.java | 2 +- .../test/java/com/google/cloud/spanner/it/ITBackupTest.java | 2 +- .../com/google/cloud/spanner/it/ITDatabaseAdminTest.java | 2 +- .../java/com/google/cloud/spanner/it/ITDatabaseTest.java | 2 +- .../com/google/cloud/spanner/it/ITInstanceAdminTest.java | 2 +- .../com/google/cloud/spanner/it/ITQueryOptionsTest.java | 2 +- .../test/java/com/google/cloud/spanner/it/ITQueryTest.java | 2 +- .../cloud/spanner/it/ITTransactionManagerAsyncTest.java | 2 +- .../google/cloud/spanner/it/ITTransactionManagerTest.java | 2 +- .../java/com/google/cloud/spanner/it/ITTransactionTest.java | 2 +- 17 files changed, 21 insertions(+), 19 deletions(-) rename google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/{SpannerEmulatorHelper.java => EmulatorSpannerHelper.java} (84%) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/EmulatorSpannerHelper.java similarity index 84% rename from google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java rename to google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/EmulatorSpannerHelper.java index 5f66620fc75..e7a4cb85225 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/SpannerEmulatorHelper.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/EmulatorSpannerHelper.java @@ -19,7 +19,9 @@ import com.google.common.base.Strings; /** Utility class for checking emulator state for tests */ -public class SpannerEmulatorHelper { +public class EmulatorSpannerHelper { + + public static final String SPANNER_EMULATOR_HOST = "SPANNER_EMULATOR_HOST"; /** * Checks whether the emulator is being used. This is done by checking if the @@ -28,6 +30,6 @@ public class SpannerEmulatorHelper { * @return true if the emulator is being used. Returns false otherwise. */ public static boolean isUsingEmulator() { - return !Strings.isNullOrEmpty(System.getenv("SPANNER_EMULATOR_HOST")); + return !Strings.isNullOrEmpty(System.getenv(SPANNER_EMULATOR_HOST)); } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java index 52ef06db91f..e8a16d648a0 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java @@ -60,12 +60,12 @@ public SpannerOptions getOptions() { /** * Checks whether the emulator is being used. * - * @deprecated use {@link SpannerEmulatorHelper#isUsingEmulator()} instead. + * @deprecated use {@link EmulatorSpannerHelper#isUsingEmulator()} instead. * @return true if the emulator is being used. Returns false otherwise. */ @Deprecated public boolean isEmulator() { - return SpannerEmulatorHelper.isUsingEmulator(); + return EmulatorSpannerHelper.isUsingEmulator(); } public Spanner getClient() { diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/IntegrationTestEnv.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/IntegrationTestEnv.java index 168c14cb8bd..3d5263fb08f 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/IntegrationTestEnv.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/IntegrationTestEnv.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.base.Preconditions.checkState; import com.google.api.gax.longrunning.OperationFuture; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadOnlySpannerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadOnlySpannerTest.java index 062046e4674..d6c89c65d93 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadOnlySpannerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadOnlySpannerTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.connection.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.CoreMatchers.nullValue; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadWriteAutocommitSpannerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadWriteAutocommitSpannerTest.java index a3bde0f111c..5963cacb902 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadWriteAutocommitSpannerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITReadWriteAutocommitSpannerTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.connection.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java index eef3c9135b4..a6b4fc88734 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlMusicScriptTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.connection.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlScriptTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlScriptTest.java index 1933a48e624..5a1e9bb6282 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlScriptTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlScriptTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.connection.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import com.google.cloud.spanner.ErrorCode; import com.google.cloud.spanner.ParallelIntegrationTest; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java index 78f98ed828f..c1567496bc1 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITTransactionRetryTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.connection.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITBackupTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITBackupTest.java index 6e41eba95c2..0fbd0702ec5 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITBackupTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITBackupTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java index b44c9b70d67..167ab97ce4f 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseAdminTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java index 3615985c951..49ce8f18f07 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java index 8c4f03ce6f7..340f0a5958c 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assume.assumeFalse; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryOptionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryOptionsTest.java index d14f51480b7..910effb0cd5 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryOptionsTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryOptionsTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java index c67914bb7a7..4bb788031b9 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryTest.java @@ -17,7 +17,7 @@ package com.google.cloud.spanner.it; import static com.google.cloud.spanner.Type.StructField; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static java.util.Arrays.asList; import static org.junit.Assert.fail; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerAsyncTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerAsyncTest.java index 7f05cc696d4..ab9acd90156 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerAsyncTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerAsyncTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerTest.java index f955e445818..06087b9afec 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionManagerTest.java @@ -16,7 +16,7 @@ package com.google.cloud.spanner.it; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java index 2b72ee323e7..ed3450893d9 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java @@ -18,7 +18,7 @@ import static com.google.cloud.spanner.SpannerExceptionFactory.newSpannerException; import static com.google.cloud.spanner.TransactionRunner.TransactionCallable; -import static com.google.cloud.spanner.testing.SpannerEmulatorHelper.isUsingEmulator; +import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse;