Generate sql schema for PollMessage (#582)

* Generate sql schema for PollMessage

* Rework columns and resolve comments

* Fix datastore schema
This commit is contained in:
Shicong Huang 2020-06-04 18:24:59 -04:00 committed by GitHub
parent b42ded9451
commit b1241b98b2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 424 additions and 16 deletions

View file

@ -16,24 +16,31 @@ package google.registry.model.poll;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm;
import static google.registry.testing.DatastoreHelper.createTld;
import static google.registry.testing.DatastoreHelper.persistActiveDomain;
import static google.registry.testing.DatastoreHelper.persistResource;
import static google.registry.testing.SqlHelper.saveRegistrar;
import static java.nio.charset.StandardCharsets.UTF_8;
import google.registry.model.EntityTestCase;
import google.registry.model.domain.Period;
import google.registry.model.eppcommon.Trid;
import google.registry.model.reporting.HistoryEntry;
import org.junit.Before;
import org.junit.Test;
import google.registry.persistence.VKey;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
/** Unit tests for {@link PollMessage}. */
public class PollMessageTest extends EntityTestCase {
HistoryEntry historyEntry;
@Before
public PollMessageTest() {
super(true);
}
@BeforeEach
public void setUp() {
createTld("foobar");
historyEntry =
@ -52,6 +59,50 @@ public class PollMessageTest extends EntityTestCase {
.build());
}
@Test
void testCloudSqlPersistenceOneTime() {
saveRegistrar("TheRegistrar");
PollMessage.OneTime pollMessage =
new PollMessage.OneTime.Builder()
.setClientId("TheRegistrar")
.setEventTime(fakeClock.nowUtc())
.setMsg("Test poll message")
.setParent(historyEntry)
.build();
pollMessage.id = null;
jpaTm().transact(() -> jpaTm().saveNew(pollMessage));
PollMessage.OneTime persisted =
jpaTm()
.transact(
() -> jpaTm().load(VKey.createSql(PollMessage.OneTime.class, pollMessage.id)));
persisted.id = pollMessage.id;
persisted.parent = pollMessage.parent;
assertThat(persisted).isEqualTo(pollMessage);
}
@Test
void testCloudSqlPersistenceAutorenew() {
saveRegistrar("TheRegistrar");
PollMessage.Autorenew pollMessage =
new PollMessage.Autorenew.Builder()
.setClientId("TheRegistrar")
.setEventTime(fakeClock.nowUtc())
.setMsg("Test poll message")
.setParent(historyEntry)
.setAutorenewEndTime(fakeClock.nowUtc().plusDays(365))
.setTargetId("foobar.foo")
.build();
pollMessage.id = null;
jpaTm().transact(() -> jpaTm().saveNew(pollMessage));
PollMessage.Autorenew persisted =
jpaTm()
.transact(
() -> jpaTm().load(VKey.createSql(PollMessage.Autorenew.class, pollMessage.id)));
persisted.id = pollMessage.id;
persisted.parent = pollMessage.parent;
assertThat(persisted).isEqualTo(pollMessage);
}
@Test
public void testPersistenceOneTime() {
PollMessage.OneTime pollMessage =

View file

@ -28,6 +28,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Supplier;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import org.junit.rules.ExternalResource;
@ -46,6 +47,7 @@ public class JpaEntityCoverage extends ExternalResource {
PersistenceXmlUtility.getManagedClasses().stream()
.filter(e -> !IGNORE_ENTITIES.contains(e.getSimpleName()))
.filter(e -> e.isAnnotationPresent(Entity.class))
.filter(e -> !e.isAnnotationPresent(DiscriminatorValue.class))
.collect(ImmutableSet.toImmutableSet());
private static final Set<Class> allCoveredJpaEntities = Sets.newHashSet();
// Map of test class name to boolean flag indicating if it tests any JPA entities.

View file

@ -19,6 +19,7 @@ import static com.google.common.truth.Truth.assert_;
import google.registry.model.billing.BillingEventTest;
import google.registry.model.contact.ContactResourceTest;
import google.registry.model.domain.DomainBaseSqlTest;
import google.registry.model.poll.PollMessageTest;
import google.registry.model.registry.RegistryLockDaoTest;
import google.registry.persistence.transaction.JpaEntityCoverage;
import google.registry.schema.cursor.CursorDaoTest;
@ -75,6 +76,7 @@ import org.junit.runner.RunWith;
CursorDaoTest.class,
DomainBaseSqlTest.class,
LockDaoTest.class,
PollMessageTest.class,
PremiumListDaoTest.class,
RegistrarDaoTest.class,
RegistryLockDaoTest.class,

View file

@ -373,14 +373,14 @@ class google.registry.model.poll.PendingActionNotificationResponse$NameOrId {
java.lang.String value;
}
class google.registry.model.poll.PollMessage {
@Id long id;
@Id java.lang.Long id;
@Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
java.lang.String clientId;
java.lang.String msg;
org.joda.time.DateTime eventTime;
}
class google.registry.model.poll.PollMessage$Autorenew {
@Id long id;
@Id java.lang.Long id;
@Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
java.lang.String clientId;
java.lang.String msg;
@ -389,7 +389,7 @@ class google.registry.model.poll.PollMessage$Autorenew {
org.joda.time.DateTime eventTime;
}
class google.registry.model.poll.PollMessage$OneTime {
@Id long id;
@Id java.lang.Long id;
@Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
java.lang.String clientId;
java.lang.String msg;