diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/EmulatorSpannerHelper.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/EmulatorSpannerHelper.java new file mode 100644 index 0000000000..e7a4cb8522 --- /dev/null +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/EmulatorSpannerHelper.java @@ -0,0 +1,35 @@ +/* + * 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 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 + * 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)); + } +} 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 f20354950f..e8a16d648a 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,8 +57,15 @@ public SpannerOptions getOptions() { return options; } + /** + * Checks whether the emulator is being used. + * + * @deprecated use {@link EmulatorSpannerHelper#isUsingEmulator()} instead. + * @return true if the emulator is being used. Returns false otherwise. + */ + @Deprecated public boolean isEmulator() { - return !Strings.isNullOrEmpty(System.getenv("SPANNER_EMULATOR_HOST")); + 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 b67f970273..3d5263fb08 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.EmulatorSpannerHelper.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 db83349232..d6c89c65d9 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.EmulatorSpannerHelper.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 6b85d8b44b..5963cacb90 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.EmulatorSpannerHelper.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 5f239f2c9e..a6b4fc8873 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.EmulatorSpannerHelper.isUsingEmulator; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; @@ -59,9 +60,7 @@ public void test01_RunScript() throws Exception { @Test public void test02_RunAbortedTest() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + 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/ITSqlScriptTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITSqlScriptTest.java index 9ff245ffe5..5a1e9bb628 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.EmulatorSpannerHelper.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 1259e2ab8d..c1567496bc 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.EmulatorSpannerHelper.isUsingEmulator; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; @@ -488,9 +489,7 @@ public void testAbortWithResultSetFullyConsumed() { @Test public void testAbortWithConcurrentInsert() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); try (ITConnection connection = createConnection(interceptor, new CountTransactionRetryListener())) { @@ -525,9 +524,7 @@ public void testAbortWithConcurrentInsert() { @Test public void testAbortWithConcurrentDelete() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records try (ITConnection connection = createConnection()) { @@ -566,9 +563,7 @@ public void testAbortWithConcurrentDelete() { @Test public void testAbortWithConcurrentUpdate() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records try (ITConnection connection = createConnection()) { @@ -612,9 +607,7 @@ public void testAbortWithConcurrentUpdate() { */ @Test public void testAbortWithUnseenConcurrentInsert() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); try (ITConnection connection = createConnection(interceptor, new CountTransactionRetryListener())) { @@ -662,9 +655,7 @@ public void testAbortWithUnseenConcurrentInsert() { */ @Test public void testAbortWithUnseenConcurrentInsertAbortOnNext() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + 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 @@ -686,9 +677,7 @@ public void testAbortWithUnseenConcurrentInsertAbortOnNext() { private int testAbortWithUnseenConcurrentInsertAbortOnNext(int callsToNext) throws AbortedDueToConcurrentModificationException { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); int retries = 0; clearTable(); clearStatistics(); @@ -748,9 +737,7 @@ private int testAbortWithUnseenConcurrentInsertAbortOnNext(int callsToNext) */ @Test public void testAbortWithConcurrentInsertAndContinue() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); try (ITConnection connection = createConnection(interceptor, new CountTransactionRetryListener())) { @@ -960,9 +947,7 @@ protected boolean shouldAbort(String statement, ExecutionStep step) { */ @Test public void testNestedAbortWithConcurrentInsert() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0) { private boolean alreadyAborted = false; @@ -1025,9 +1010,7 @@ protected boolean shouldAbort(String statement, ExecutionStep step) { */ @Test public void testAbortWithDifferentUpdateCount() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records try (ITConnection connection = createConnection()) { @@ -1074,8 +1057,7 @@ public void testAbortWithDifferentUpdateCount() { @Test public void testAbortWithExceptionOnSelect() { assumeFalse( - "resume after error in transaction is not supported on the emulator", - env.getTestHelper().isEmulator()); + "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()) { @@ -1125,9 +1107,7 @@ public void testAbortWithExceptionOnSelect() { */ @Test public void testAbortWithExceptionOnSelectAndConcurrentModification() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1195,9 +1175,7 @@ public void testAbortWithExceptionOnSelectAndConcurrentModification() { */ @Test public void testAbortWithExceptionOnInsertAndConcurrentModification() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1264,9 +1242,7 @@ public void testAbortWithExceptionOnInsertAndConcurrentModification() { */ @Test public void testAbortWithDroppedTableConcurrentModification() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1329,9 +1305,7 @@ public void testAbortWithDroppedTableConcurrentModification() { */ @Test public void testAbortWithInsertOnDroppedTableConcurrentModification() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1391,9 +1365,7 @@ public void testAbortWithInsertOnDroppedTableConcurrentModification() { */ @Test public void testAbortWithCursorHalfwayDroppedTableConcurrentModification() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + assumeFalse("concurrent transactions are not supported on the emulator", isUsingEmulator()); boolean abortedDueToConcurrentModification = false; AbortInterceptor interceptor = new AbortInterceptor(0); // first insert two test records @@ -1546,9 +1518,7 @@ public void testRetryHighAbortRate() { @Test public void testAbortWithConcurrentInsertOnEmptyTable() { - assumeFalse( - "concurrent transactions are not supported on the emulator", - env.getTestHelper().isEmulator()); + 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/ITAsyncAPITest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITAsyncAPITest.java index a2239aa3b9..721536cb6b 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 2a35a17083..0fbd0702ec 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.EmulatorSpannerHelper.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 3031b0edd8..1e00015cdf 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 84d1a67559..187f1e9f12 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 f66154d66c..167ab97ce4 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.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; @@ -265,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", - env.getTestHelper().isEmulator()); + "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 450c7463c5..49ce8f18f0 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.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; @@ -64,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", - env.getTestHelper().isEmulator()); + "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. @@ -135,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", - env.getTestHelper().isEmulator()); + "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 68e4e615a3..340f0a5958 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.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assume.assumeFalse; @@ -78,8 +79,7 @@ public void listInstances() { @Test public void updateInstance() throws Exception { - assumeFalse( - "The emulator does not support updating instances", env.getTestHelper().isEmulator()); + assumeFalse("The emulator does not support updating instances", isUsingEmulator()); Instance instance = instanceClient.getInstance(env.getTestHelper().getInstanceId().getInstance()); @@ -108,8 +108,7 @@ public void updateInstance() throws Exception { @Test public void updateInstanceViaEntity() throws Exception { - assumeFalse( - "The emulator does not support updating instances", env.getTestHelper().isEmulator()); + 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/ITQueryOptionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITQueryOptionsTest.java index 30cfa80c45..910effb0cd 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.EmulatorSpannerHelper.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 b54984362d..4bb788031b 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.EmulatorSpannerHelper.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()); @@ -511,8 +512,7 @@ public void unsupportedSelectStructValue() { @Test public void unsupportedSelectArrayStructValue() { assumeFalse( - "Emulator evaluates this expression differently than Cloud Spanner", - env.getTestHelper().isEmulator()); + "Emulator evaluates this expression differently than Cloud Spanner", isUsingEmulator()); Struct p = structValue(); try { @@ -829,7 +829,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 +844,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 c802493dec..ab9acd9015 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.EmulatorSpannerHelper.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 281977af6a..06087b9afe 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.EmulatorSpannerHelper.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 5e3c1483e7..ed3450893d 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.EmulatorSpannerHelper.isUsingEmulator; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; @@ -153,9 +154,7 @@ public void run() { @Test public void basicsUsingRead() throws InterruptedException { - assumeFalse( - "Emulator does not support multiple parallel transactions", - env.getTestHelper().isEmulator()); + assumeFalse("Emulator does not support multiple parallel transactions", isUsingEmulator()); doBasicsTest( new ReadStrategy() { @@ -168,9 +167,7 @@ public Struct read(ReadContext ctx, String key) { @Test public void basicsUsingQuery() throws InterruptedException { - assumeFalse( - "Emulator does not support multiple parallel transactions", - env.getTestHelper().isEmulator()); + assumeFalse("Emulator does not support multiple parallel transactions", isUsingEmulator()); doBasicsTest( new ReadStrategy() { @@ -251,9 +248,7 @@ public Void run(TransactionContext transaction) { @Test public void readAbort() throws Exception { - assumeFalse( - "Emulator does not support multiple parallel transactions", - env.getTestHelper().isEmulator()); + assumeFalse("Emulator does not support multiple parallel transactions", isUsingEmulator()); final String key1 = uniqueKey(); final String key2 = uniqueKey(); @@ -496,9 +491,7 @@ public Void run(TransactionContext transaction) throws SpannerException { @Test public void nestedTxnSucceedsWhenAllowed() { - assumeFalse( - "Emulator does not support multiple parallel transactions", - env.getTestHelper().isEmulator()); + assumeFalse("Emulator does not support multiple parallel transactions", isUsingEmulator()); client .readWriteTransaction()