1
0
mirror of https://github.com/google/nomulus synced 2026-04-29 20:37:13 +00:00

Switch to SQL sequence based allocateId, remove SelfAllocateId (#1831)

This commit is contained in:
Pavlo Tkach
2022-11-10 18:25:40 -05:00
committed by GitHub
parent cf0560607e
commit 9d7e3cdf79
13 changed files with 83 additions and 153 deletions

View File

@@ -27,9 +27,12 @@ import com.googlecode.objectify.ObjectifyService;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import google.registry.model.common.GaeUserIdConverter;
import google.registry.persistence.transaction.JpaTestExtensions;
import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationTestExtension;
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;
/** Tests for our replacement Objectify filter. */
class OfyFilterTest {
@@ -57,6 +60,10 @@ class OfyFilterTest {
helper.tearDown();
}
@RegisterExtension
final JpaIntegrationTestExtension database =
new JpaTestExtensions.Builder().buildIntegrationTestExtension();
/**
* Key.create looks up kind metadata for the class of the object it is given. If this happens
* before the first reference to ObjectifyService, which statically triggers type registrations,

View File

@@ -17,6 +17,7 @@ package google.registry.testing;
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.io.Files.asCharSink;
import static com.google.common.truth.Truth.assertWithMessage;
import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm;
import static google.registry.testing.DatabaseHelper.insertSimpleResources;
import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
import static google.registry.util.ResourceUtils.readResourceUtf8;
@@ -40,7 +41,6 @@ import com.google.common.collect.Sets;
import com.google.common.io.Files;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.ObjectifyFilter;
import google.registry.model.IdService.SelfAllocatedIdSupplier;
import google.registry.model.ofy.ObjectifyService;
import google.registry.model.registrar.Registrar;
import google.registry.model.registrar.Registrar.State;
@@ -378,6 +378,17 @@ public final class AppEngineExtension implements BeforeEachCallback, AfterEachCa
jpaIntegrationTestExtension = builder.buildIntegrationTestExtension();
jpaIntegrationTestExtension.beforeEach(context);
}
// Reset SQL Sequence based id allocation so that ids are deterministic in tests.
jpaTm()
.transact(
() ->
jpaTm()
.getEntityManager()
.createNativeQuery(
"alter sequence if exists project_wide_unique_id_seq start 1 minvalue 1"
+ " restart with 1")
.executeUpdate());
}
if (withCloudSql) {
if (!withoutCannedData && !withJpaUnitTest) {
@@ -440,8 +451,6 @@ public final class AppEngineExtension implements BeforeEachCallback, AfterEachCa
helper.setUp();
ObjectifyService.initOfy();
// Reset id allocation in ObjectifyService so that ids are deterministic in tests.
SelfAllocatedIdSupplier.getInstance().reset();
this.ofyTestEntities.forEach(AppEngineExtension::register);
}