diff --git a/core/src/test/java/google/registry/beam/common/RegistryJpaReadTest.java b/core/src/test/java/google/registry/beam/common/RegistryJpaReadTest.java index 25a8b5122..907b73c1f 100644 --- a/core/src/test/java/google/registry/beam/common/RegistryJpaReadTest.java +++ b/core/src/test/java/google/registry/beam/common/RegistryJpaReadTest.java @@ -43,14 +43,12 @@ import google.registry.persistence.transaction.CriteriaQueryBuilder; import google.registry.persistence.transaction.JpaTestExtensions; import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationTestExtension; import google.registry.testing.AppEngineExtension; -import google.registry.testing.DatastoreEntityExtension; import google.registry.testing.FakeClock; import org.apache.beam.sdk.coders.StringUtf8Coder; import org.apache.beam.sdk.testing.PAssert; import org.apache.beam.sdk.values.PCollection; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -61,11 +59,6 @@ public class RegistryJpaReadTest { private final FakeClock fakeClock = new FakeClock(START_TIME); - @RegisterExtension - @Order(Order.DEFAULT - 1) - final transient DatastoreEntityExtension datastore = - new DatastoreEntityExtension().allThreads(true); - @RegisterExtension final transient JpaIntegrationTestExtension database = new JpaTestExtensions.Builder() diff --git a/core/src/test/java/google/registry/beam/common/RegistryJpaWriteTest.java b/core/src/test/java/google/registry/beam/common/RegistryJpaWriteTest.java index 4e2ebd419..b52645294 100644 --- a/core/src/test/java/google/registry/beam/common/RegistryJpaWriteTest.java +++ b/core/src/test/java/google/registry/beam/common/RegistryJpaWriteTest.java @@ -28,13 +28,11 @@ import google.registry.model.contact.Contact; import google.registry.persistence.transaction.JpaTestExtensions; import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationTestExtension; import google.registry.testing.AppEngineExtension; -import google.registry.testing.DatastoreEntityExtension; import google.registry.testing.FakeClock; import java.io.Serializable; import org.apache.beam.sdk.Pipeline.PipelineExecutionException; import org.apache.beam.sdk.transforms.Create; import org.joda.time.DateTime; -import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -43,11 +41,6 @@ class RegistryJpaWriteTest implements Serializable { private final FakeClock fakeClock = new FakeClock(DateTime.parse("2000-01-01T00:00:00.0Z")); - @RegisterExtension - @Order(Order.DEFAULT - 1) - final transient DatastoreEntityExtension datastore = - new DatastoreEntityExtension().allThreads(true); - @RegisterExtension final transient JpaIntegrationTestExtension database = new JpaTestExtensions.Builder().withClock(fakeClock).buildIntegrationTestExtension(); diff --git a/core/src/test/java/google/registry/beam/invoicing/InvoicingPipelineTest.java b/core/src/test/java/google/registry/beam/invoicing/InvoicingPipelineTest.java index c942eff9f..bbeb3a3cf 100644 --- a/core/src/test/java/google/registry/beam/invoicing/InvoicingPipelineTest.java +++ b/core/src/test/java/google/registry/beam/invoicing/InvoicingPipelineTest.java @@ -48,7 +48,6 @@ import google.registry.model.reporting.HistoryEntry; import google.registry.model.tld.Registry; import google.registry.persistence.transaction.JpaTestExtensions; import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationTestExtension; -import google.registry.testing.DatastoreEntityExtension; import google.registry.testing.FakeClock; import google.registry.util.ResourceUtils; import java.io.File; @@ -69,7 +68,6 @@ import org.apache.beam.sdk.values.TypeDescriptor; import org.joda.money.Money; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.api.io.TempDir; @@ -77,10 +75,6 @@ import org.junit.jupiter.api.io.TempDir; /** Unit tests for {@link InvoicingPipeline}. */ class InvoicingPipelineTest { - @RegisterExtension - @Order(Order.DEFAULT - 1) - final DatastoreEntityExtension datastore = new DatastoreEntityExtension().allThreads(true); - @RegisterExtension final TestPipelineExtension pipeline = TestPipelineExtension.create().enableAbandonedNodeEnforcement(true); diff --git a/core/src/test/java/google/registry/beam/rde/RdePipelineTest.java b/core/src/test/java/google/registry/beam/rde/RdePipelineTest.java index 8af151afa..2cc5b63e9 100644 --- a/core/src/test/java/google/registry/beam/rde/RdePipelineTest.java +++ b/core/src/test/java/google/registry/beam/rde/RdePipelineTest.java @@ -84,7 +84,6 @@ import google.registry.rde.RdeResourceType; import google.registry.testing.CloudTasksHelper; import google.registry.testing.CloudTasksHelper.TaskMatcher; import google.registry.testing.DatabaseHelper; -import google.registry.testing.DatastoreEntityExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeKeyringModule; import java.io.IOException; @@ -102,7 +101,6 @@ import org.bouncycastle.openpgp.PGPPublicKey; import org.joda.time.DateTime; import org.joda.time.Duration; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.junitpioneer.jupiter.RetryingTest; @@ -156,11 +154,6 @@ public class RdePipelineTest { private final RdePipelineOptions options = PipelineOptionsFactory.create().as(RdePipelineOptions.class); - // The pipeline runs in a different thread, which needs to be masqueraded as a GAE thread as well. - @RegisterExtension - @Order(Order.DEFAULT - 1) - final DatastoreEntityExtension datastore = new DatastoreEntityExtension().allThreads(true); - @RegisterExtension final JpaIntegrationTestExtension database = new JpaTestExtensions.Builder().withClock(clock).buildIntegrationTestExtension(); diff --git a/core/src/test/java/google/registry/beam/resave/ResaveAllEppResourcesPipelineTest.java b/core/src/test/java/google/registry/beam/resave/ResaveAllEppResourcesPipelineTest.java index 477478eda..9eb056611 100644 --- a/core/src/test/java/google/registry/beam/resave/ResaveAllEppResourcesPipelineTest.java +++ b/core/src/test/java/google/registry/beam/resave/ResaveAllEppResourcesPipelineTest.java @@ -40,13 +40,11 @@ import google.registry.persistence.transaction.JpaTestExtensions; import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationTestExtension; import google.registry.persistence.transaction.JpaTransactionManager; import google.registry.persistence.transaction.TransactionManagerFactory; -import google.registry.testing.DatastoreEntityExtension; import google.registry.testing.FakeClock; import org.apache.beam.sdk.options.PipelineOptionsFactory; import org.joda.time.DateTime; import org.joda.time.Duration; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.mockito.ArgumentCaptor; @@ -56,11 +54,6 @@ public class ResaveAllEppResourcesPipelineTest { private final FakeClock fakeClock = new FakeClock(DateTime.parse("2020-03-10T00:00:00.000Z")); - @RegisterExtension - @Order(Order.DEFAULT - 1) - final transient DatastoreEntityExtension datastore = - new DatastoreEntityExtension().allThreads(true); - @RegisterExtension final TestPipelineExtension testPipeline = TestPipelineExtension.create().enableAbandonedNodeEnforcement(true); diff --git a/core/src/test/java/google/registry/beam/spec11/Spec11PipelineTest.java b/core/src/test/java/google/registry/beam/spec11/Spec11PipelineTest.java index c9f56e429..a1fb209d1 100644 --- a/core/src/test/java/google/registry/beam/spec11/Spec11PipelineTest.java +++ b/core/src/test/java/google/registry/beam/spec11/Spec11PipelineTest.java @@ -47,7 +47,6 @@ import google.registry.model.reporting.Spec11ThreatMatch.ThreatType; import google.registry.model.reporting.Spec11ThreatMatchDao; import google.registry.persistence.transaction.JpaTestExtensions; import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationTestExtension; -import google.registry.testing.DatastoreEntityExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeSleeper; import google.registry.util.ResourceUtils; @@ -69,7 +68,6 @@ import org.joda.time.DateTime; import org.joda.time.LocalDate; import org.json.JSONObject; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.api.io.TempDir; @@ -112,11 +110,6 @@ class Spec11PipelineTest { ThreatMatch.create("THREAT_TYPE_UNSPECIFIED", "no-eamil.com"), ThreatMatch.create("UNWANTED_SOFTWARE", "anti-anti-anti-virus.dev")); - @RegisterExtension - @Order(Order.DEFAULT - 1) - final transient DatastoreEntityExtension datastore = - new DatastoreEntityExtension().allThreads(true); - @TempDir Path tmpDir; @RegisterExtension diff --git a/core/src/test/java/google/registry/model/tld/label/ReservedListDaoTest.java b/core/src/test/java/google/registry/model/tld/label/ReservedListDaoTest.java index e187115f6..2e25bcd4a 100644 --- a/core/src/test/java/google/registry/model/tld/label/ReservedListDaoTest.java +++ b/core/src/test/java/google/registry/model/tld/label/ReservedListDaoTest.java @@ -21,10 +21,8 @@ import com.google.common.collect.ImmutableMap; import google.registry.model.tld.label.ReservedList.ReservedListEntry; import google.registry.persistence.transaction.JpaTestExtensions; import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationWithCoverageExtension; -import google.registry.testing.DatastoreEntityExtension; import google.registry.testing.FakeClock; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -33,10 +31,6 @@ public class ReservedListDaoTest { private final FakeClock fakeClock = new FakeClock(); - @RegisterExtension - @Order(value = 1) - DatastoreEntityExtension datastoreEntityExtension = new DatastoreEntityExtension(); - @RegisterExtension JpaIntegrationWithCoverageExtension jpa = new JpaTestExtensions.Builder().withClock(fakeClock).buildIntegrationWithCoverageExtension(); diff --git a/core/src/test/java/google/registry/persistence/PersistenceModuleTest.java b/core/src/test/java/google/registry/persistence/PersistenceModuleTest.java index 1ae274547..550648628 100644 --- a/core/src/test/java/google/registry/persistence/PersistenceModuleTest.java +++ b/core/src/test/java/google/registry/persistence/PersistenceModuleTest.java @@ -15,7 +15,6 @@ package google.registry.persistence; import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth8.assertThat; import dagger.Component; import google.registry.config.CredentialModule; @@ -24,7 +23,6 @@ import google.registry.config.RegistryConfig.ConfigModule; import google.registry.keyring.secretmanager.SecretManagerKeyringModule; import google.registry.persistence.PersistenceModule.TransactionIsolationLevel; import google.registry.privileges.secretmanager.SecretManagerModule; -import google.registry.testing.DatastoreEntityExtension; import google.registry.util.UtilsModule; import java.util.Optional; import javax.inject.Provider; @@ -35,7 +33,6 @@ import org.hibernate.cfg.Environment; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -48,9 +45,6 @@ class PersistenceModuleTest { private final PostgreSQLContainer database = new PostgreSQLContainer(NomulusPostgreSql.getDockerTag()); - @RegisterExtension - public DatastoreEntityExtension datastoreEntityExtension = new DatastoreEntityExtension(); - private EntityManagerFactory emf; @BeforeEach diff --git a/core/src/test/java/google/registry/schema/registrar/RegistrarDaoTest.java b/core/src/test/java/google/registry/schema/registrar/RegistrarDaoTest.java index 352751cd0..6629fffb2 100644 --- a/core/src/test/java/google/registry/schema/registrar/RegistrarDaoTest.java +++ b/core/src/test/java/google/registry/schema/registrar/RegistrarDaoTest.java @@ -28,11 +28,9 @@ import google.registry.model.registrar.RegistrarAddress; import google.registry.persistence.VKey; import google.registry.persistence.transaction.JpaTestExtensions; import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationWithCoverageExtension; -import google.registry.testing.DatastoreEntityExtension; import google.registry.testing.FakeClock; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -41,10 +39,6 @@ public class RegistrarDaoTest { protected FakeClock fakeClock = new FakeClock(DateTime.now(UTC)); - @RegisterExtension - @Order(value = 1) - DatastoreEntityExtension datastoreEntityExtension = new DatastoreEntityExtension(); - @RegisterExtension JpaIntegrationWithCoverageExtension jpa = new JpaTestExtensions.Builder().withClock(fakeClock).buildIntegrationWithCoverageExtension(); diff --git a/core/src/test/java/google/registry/schema/registrar/RegistrarPocTest.java b/core/src/test/java/google/registry/schema/registrar/RegistrarPocTest.java index b97ed1387..735a6fa5c 100644 --- a/core/src/test/java/google/registry/schema/registrar/RegistrarPocTest.java +++ b/core/src/test/java/google/registry/schema/registrar/RegistrarPocTest.java @@ -26,20 +26,14 @@ import google.registry.model.registrar.Registrar; import google.registry.model.registrar.RegistrarPoc; import google.registry.persistence.transaction.JpaTestExtensions; import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationWithCoverageExtension; -import google.registry.testing.DatastoreEntityExtension; import google.registry.util.SerializeUtils; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for persisting {@link RegistrarPoc} entities. */ class RegistrarPocTest { - @RegisterExtension - @Order(value = 1) - DatastoreEntityExtension datastoreEntityExtension = new DatastoreEntityExtension(); - @RegisterExtension JpaIntegrationWithCoverageExtension jpa = new JpaTestExtensions.Builder().buildIntegrationWithCoverageExtension(); diff --git a/core/src/test/java/google/registry/testing/DatastoreEntityExtension.java b/core/src/test/java/google/registry/testing/DatastoreEntityExtension.java deleted file mode 100644 index 84192d6dc..000000000 --- a/core/src/test/java/google/registry/testing/DatastoreEntityExtension.java +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2020 The Nomulus Authors. All Rights Reserved. -// -// 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 google.registry.testing; - -import google.registry.model.AppEngineEnvironment; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.domain.DomainSqlTest; -import org.junit.jupiter.api.extension.AfterEachCallback; -import org.junit.jupiter.api.extension.BeforeEachCallback; -import org.junit.jupiter.api.extension.ExtensionContext; - -/** - * Allows instantiation of Datastore {@code Entity}s without the heavyweight {@link - * AppEngineExtension}. - * - *
When an Ofy key is created, by calling the various Key.create() methods, whether the current - * executing thread is a GAE thread is checked, which this extension masquerades. This happens - * frequently when an entity which has the key of another entity as a field is instantiated. - * - *
When used together with {@code JpaIntegrationWithCoverageExtension} or @{@code - * TestPipelineExtension}, this extension must be registered first. For consistency's sake, it is - * recommended that the field for this extension be annotated with - * {@code @org.junit.jupiter.api.Order(value = 1)}. Please refer to {@link DomainSqlTest} for - * example, and to - * JUnit 5 User Guide for details of extension ordering. - * - * @see AppEngineEnvironment - */ -@DeleteAfterMigration -public class DatastoreEntityExtension implements BeforeEachCallback, AfterEachCallback { - - private final AppEngineEnvironment environment; - - private boolean allThreads = false; - - public DatastoreEntityExtension() { - environment = new AppEngineEnvironment(); - } - - /** - * Whether all threads should be masqueraded as GAE threads. - * - *
This is particularly useful when new threads are spawned during a test. For example when - * testing Beam pipelines, the test pipeline runs the transforms in separate threads than the test - * thread. If Ofy keys are created in transforms, this value needs to be set to true. - * - *
Warning: by setting this value to true, any thread spawned by the current JVM will be have - * the thread local property set to the placeholder value during the execution of the current - * test, including those running other tests in parallel. This may or may not cause an issue when - * other tests have {@link AppEngineExtension} registered, that creates a much more fully - * functional GAE test environment. Consider moving tests using this extension to {@code - * outcastTest} if necessary. - */ - public DatastoreEntityExtension allThreads(boolean value) { - allThreads = value; - return this; - } - - @Override - public void beforeEach(ExtensionContext context) { - if (allThreads) { - environment.setEnvironmentForAllThreads(); - } else { - environment.setEnvironmentForCurrentThread(); - } - } - - @Override - public void afterEach(ExtensionContext context) { - if (allThreads) { - environment.unsetEnvironmentForAllThreads(); - } else { - environment.unsetEnvironmentForCurrentThread(); - } - } -}