Merge DomainResource into DomainBase

This eliminates the use of Objectify polymorphism for EPP resources entirely
(yay!), which makes the Registry 3.0 database migration easier.

It is unfortunate that the naming parallelism of EppResources is lost between
ContactResource, HostResource, and DomainResource, but the actual type as far as
Datastore was concerned was DomainBase all along, and it would be a much more
substantial data migration to allow us to continue using the class name
DomainResource now that we're no longer using Objectify polymorphism. This
simply isn't worth it.

This also removes the polymorphic Datastore indexes (which will no longer
function as of this change). The non-polymorphic replacement indexes were added
in []

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=230930546
This commit is contained in:
mcilwain 2019-01-25 10:53:10 -08:00 committed by Ben McIlwain
parent 97c2049669
commit e2528875b2
166 changed files with 1525 additions and 1666 deletions

View file

@ -25,7 +25,7 @@ import com.google.common.collect.ImmutableMap;
import google.registry.flows.EppTestCase;
import google.registry.model.billing.BillingEvent;
import google.registry.model.billing.BillingEvent.Reason;
import google.registry.model.domain.DomainResource;
import google.registry.model.domain.DomainBase;
import google.registry.model.reporting.HistoryEntry.Type;
import google.registry.testing.AppEngineRule;
import google.registry.util.Clock;
@ -139,9 +139,9 @@ public class EppLifecycleToolsTest extends EppTestCase {
// Assert about billing events.
DateTime createTime = DateTime.parse("2000-06-01T00:02:00Z");
DomainResource domain =
DomainBase domain =
loadByForeignKey(
DomainResource.class, "example.tld", DateTime.parse("2003-06-02T00:02:00Z"))
DomainBase.class, "example.tld", DateTime.parse("2003-06-02T00:02:00Z"))
.get();
BillingEvent.OneTime renewBillingEvent =
new BillingEvent.OneTime.Builder()

View file

@ -17,7 +17,7 @@ package google.registry.tools;
import static com.google.common.io.BaseEncoding.base16;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.testing.DatastoreHelper.createTlds;
import static google.registry.testing.DatastoreHelper.newDomainResource;
import static google.registry.testing.DatastoreHelper.newDomainBase;
import static google.registry.testing.DatastoreHelper.newHostResource;
import static google.registry.testing.DatastoreHelper.persistActiveDomain;
import static google.registry.testing.DatastoreHelper.persistActiveHost;
@ -32,7 +32,7 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.net.InetAddresses;
import com.googlecode.objectify.Key;
import google.registry.model.domain.DomainResource;
import google.registry.model.domain.DomainBase;
import google.registry.model.domain.secdns.DelegationSignerData;
import google.registry.model.eppcommon.StatusValue;
import google.registry.model.host.HostResource;
@ -70,7 +70,7 @@ public class GenerateDnsReportCommandTest extends CommandTestCase<GenerateDnsRep
private HostResource nameserver2;
private HostResource nameserver3;
private HostResource nameserver4;
private DomainResource domain1;
private DomainBase domain1;
private static final ImmutableMap<String, ?> DOMAIN1_OUTPUT = ImmutableMap.of(
"domain", "example.xn--q9jyb4c",
@ -130,13 +130,13 @@ public class GenerateDnsReportCommandTest extends CommandTestCase<GenerateDnsRep
.build());
nameserver3 = persistActiveHost("ns1.google.com");
nameserver4 = persistActiveHost("ns2.google.com");
domain1 = persistResource(newDomainResource("example.xn--q9jyb4c").asBuilder()
domain1 = persistResource(newDomainBase("example.xn--q9jyb4c").asBuilder()
.setNameservers(ImmutableSet.of(Key.create(nameserver1), Key.create(nameserver2)))
.setDsData(ImmutableSet.of(
DelegationSignerData.create(12345, 3, 1, base16().decode("49FD46E6C4B45C55D4AC")),
DelegationSignerData.create(56789, 2, 4, base16().decode("69FD46E6C4A45C55D4AC"))))
.build());
persistResource(newDomainResource("foobar.xn--q9jyb4c").asBuilder()
persistResource(newDomainBase("foobar.xn--q9jyb4c").asBuilder()
.setNameservers(ImmutableSet.of(Key.create(nameserver3), Key.create(nameserver4)))
.build());
// Persist a domain in a different tld that should be ignored.

View file

@ -15,7 +15,7 @@
package google.registry.tools;
import static google.registry.testing.DatastoreHelper.createTld;
import static google.registry.testing.DatastoreHelper.newDomainResource;
import static google.registry.testing.DatastoreHelper.newDomainBase;
import static google.registry.testing.DatastoreHelper.persistActiveDomain;
import static google.registry.testing.DatastoreHelper.persistDeletedDomain;
import static google.registry.testing.DatastoreHelper.persistResource;
@ -69,7 +69,7 @@ public class GetDomainCommandTest extends CommandTestCase<GetDomainCommand> {
@Test
public void testSuccess_domainDeletedInFuture() throws Exception {
persistResource(newDomainResource("example.tld").asBuilder()
persistResource(newDomainBase("example.tld").asBuilder()
.setDeletionTime(now.plusDays(1)).build());
runCommand("example.tld", "--read_timestamp=" + now.plusMonths(1));
assertInStdout("Domain 'example.tld' does not exist or is deleted");

View file

@ -19,7 +19,7 @@ import static google.registry.testing.DatastoreHelper.persistActiveDomain;
import static google.registry.testing.DatastoreHelper.persistResource;
import static google.registry.testing.FullFieldsTestEntityHelper.makeHistoryEntry;
import google.registry.model.domain.DomainResource;
import google.registry.model.domain.DomainBase;
import google.registry.model.domain.Period;
import google.registry.model.reporting.HistoryEntry;
import google.registry.testing.FakeClock;
@ -32,7 +32,7 @@ public class GetHistoryEntriesCommandTest extends CommandTestCase<GetHistoryEntr
private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01T00:00:00Z"));
private DomainResource domain;
private DomainBase domain;
@Before
public void setup() {

View file

@ -16,7 +16,7 @@ package google.registry.tools;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.model.eppcommon.StatusValue.SERVER_TRANSFER_PROHIBITED;
import static google.registry.testing.DatastoreHelper.newDomainResource;
import static google.registry.testing.DatastoreHelper.newDomainBase;
import static google.registry.testing.DatastoreHelper.persistActiveDomain;
import static google.registry.testing.DatastoreHelper.persistNewRegistrar;
import static google.registry.testing.DatastoreHelper.persistResource;
@ -51,7 +51,7 @@ public class LockDomainCommandTest extends EppToolCommandTestCase<LockDomainComm
@Test
public void testSuccess_partiallyUpdatesStatuses() throws Exception {
persistResource(
newDomainResource("example.tld")
newDomainBase("example.tld")
.asBuilder()
.addStatusValue(SERVER_TRANSFER_PROHIBITED)
.build());
@ -88,7 +88,7 @@ public class LockDomainCommandTest extends EppToolCommandTestCase<LockDomainComm
@Test
public void testSuccess_alreadyLockedDomain_performsNoAction() throws Exception {
persistResource(
newDomainResource("example.tld")
newDomainBase("example.tld")
.asBuilder()
.addStatusValues(REGISTRY_LOCK_STATUSES)
.build());

View file

@ -16,7 +16,7 @@ package google.registry.tools;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.testing.DatastoreHelper.loadRegistrar;
import static google.registry.testing.DatastoreHelper.newDomainResource;
import static google.registry.testing.DatastoreHelper.newDomainBase;
import static google.registry.testing.DatastoreHelper.persistActiveDomain;
import static google.registry.testing.DatastoreHelper.persistActiveHost;
import static google.registry.testing.DatastoreHelper.persistResource;
@ -57,7 +57,7 @@ public class UniformRapidSuspensionCommandTest
for (HostResource host : hosts) {
hostRefs.add(Key.create(host));
}
persistResource(newDomainResource("evil.tld").asBuilder()
persistResource(newDomainBase("evil.tld").asBuilder()
.setNameservers(hostRefs.build())
.setDsData(ImmutableSet.of(
DelegationSignerData.create(1, 2, 3, new HexBinaryAdapter().unmarshal("dead")),
@ -112,7 +112,7 @@ public class UniformRapidSuspensionCommandTest
@Test
public void testCommand_generatesUndoWithLocksToPreserve() throws Exception {
persistResource(
newDomainResource("evil.tld").asBuilder()
newDomainBase("evil.tld").asBuilder()
.addStatusValue(StatusValue.SERVER_DELETE_PROHIBITED)
.build());
runCommandForced("--domain_name=evil.tld");

View file

@ -18,7 +18,7 @@ import static com.google.common.truth.Truth.assertThat;
import static google.registry.model.eppcommon.StatusValue.SERVER_DELETE_PROHIBITED;
import static google.registry.model.eppcommon.StatusValue.SERVER_TRANSFER_PROHIBITED;
import static google.registry.model.eppcommon.StatusValue.SERVER_UPDATE_PROHIBITED;
import static google.registry.testing.DatastoreHelper.newDomainResource;
import static google.registry.testing.DatastoreHelper.newDomainBase;
import static google.registry.testing.DatastoreHelper.persistActiveDomain;
import static google.registry.testing.DatastoreHelper.persistNewRegistrar;
import static google.registry.testing.DatastoreHelper.persistResource;
@ -45,7 +45,7 @@ public class UnlockDomainCommandTest extends EppToolCommandTestCase<UnlockDomain
private static void persistLockedDomain(String domainName) {
persistResource(
newDomainResource(domainName)
newDomainBase(domainName)
.asBuilder()
.addStatusValues(
ImmutableSet.of(
@ -63,7 +63,7 @@ public class UnlockDomainCommandTest extends EppToolCommandTestCase<UnlockDomain
@Test
public void testSuccess_partiallyUpdatesStatuses() throws Exception {
persistResource(
newDomainResource("example.tld")
newDomainBase("example.tld")
.asBuilder()
.addStatusValues(ImmutableSet.of(SERVER_DELETE_PROHIBITED, SERVER_UPDATE_PROHIBITED))
.build());

View file

@ -24,7 +24,7 @@ import static google.registry.testing.DatastoreHelper.assertBillingEventsEqual;
import static google.registry.testing.DatastoreHelper.assertPollMessagesEqual;
import static google.registry.testing.DatastoreHelper.createTld;
import static google.registry.testing.DatastoreHelper.getOnlyHistoryEntryOfType;
import static google.registry.testing.DatastoreHelper.newDomainResource;
import static google.registry.testing.DatastoreHelper.newDomainBase;
import static google.registry.testing.DatastoreHelper.persistActiveContact;
import static google.registry.testing.DatastoreHelper.persistActiveDomain;
import static google.registry.testing.DatastoreHelper.persistDeletedDomain;
@ -39,7 +39,7 @@ import google.registry.model.billing.BillingEvent;
import google.registry.model.billing.BillingEvent.Flag;
import google.registry.model.billing.BillingEvent.Reason;
import google.registry.model.contact.ContactResource;
import google.registry.model.domain.DomainResource;
import google.registry.model.domain.DomainBase;
import google.registry.model.eppcommon.StatusValue;
import google.registry.model.ofy.Ofy;
import google.registry.model.poll.PollMessage;
@ -78,12 +78,12 @@ public class UnrenewDomainCommandTest extends CommandTestCase<UnrenewDomainComma
runCommandForced("-p", "2", "foo.tld", "bar.tld");
clock.advanceOneMilli();
assertThat(
loadByForeignKey(DomainResource.class, "foo.tld", clock.nowUtc())
loadByForeignKey(DomainBase.class, "foo.tld", clock.nowUtc())
.get()
.getRegistrationExpirationTime())
.isEqualTo(DateTime.parse("2019-12-06T13:55:01.001Z"));
assertThat(
loadByForeignKey(DomainResource.class, "bar.tld", clock.nowUtc())
loadByForeignKey(DomainBase.class, "bar.tld", clock.nowUtc())
.get()
.getRegistrationExpirationTime())
.isEqualTo(DateTime.parse("2018-12-06T13:55:01.002Z"));
@ -101,7 +101,7 @@ public class UnrenewDomainCommandTest extends CommandTestCase<UnrenewDomainComma
runCommandForced("-p", "2", "foo.tld");
DateTime unrenewTime = clock.nowUtc();
clock.advanceOneMilli();
DomainResource domain = loadByForeignKey(DomainResource.class, "foo.tld", clock.nowUtc()).get();
DomainBase domain = loadByForeignKey(DomainBase.class, "foo.tld", clock.nowUtc()).get();
assertAboutHistoryEntries()
.that(getOnlyHistoryEntryOfType(domain, SYNTHETIC))
@ -174,19 +174,19 @@ public class UnrenewDomainCommandTest extends CommandTestCase<UnrenewDomainComma
public void test_varietyOfInvalidDomains_displaysErrors() {
DateTime now = clock.nowUtc();
persistResource(
newDomainResource("deleting.tld")
newDomainBase("deleting.tld")
.asBuilder()
.setDeletionTime(now.plusHours(1))
.setStatusValues(ImmutableSet.of(PENDING_DELETE))
.build());
persistDeletedDomain("deleted.tld", now.minusHours(1));
persistResource(
newDomainResource("transferring.tld")
newDomainBase("transferring.tld")
.asBuilder()
.setStatusValues(ImmutableSet.of(PENDING_TRANSFER))
.build());
persistResource(
newDomainResource("locked.tld")
newDomainBase("locked.tld")
.asBuilder()
.setStatusValues(ImmutableSet.of(StatusValue.SERVER_UPDATE_PROHIBITED))
.build());

View file

@ -18,7 +18,7 @@ import static com.google.common.truth.Truth.assertThat;
import static google.registry.model.eppcommon.StatusValue.SERVER_UPDATE_PROHIBITED;
import static google.registry.testing.DatastoreHelper.createTlds;
import static google.registry.testing.DatastoreHelper.newContactResource;
import static google.registry.testing.DatastoreHelper.newDomainResource;
import static google.registry.testing.DatastoreHelper.newDomainBase;
import static google.registry.testing.DatastoreHelper.persistActiveHost;
import static google.registry.testing.DatastoreHelper.persistResource;
import static google.registry.testing.JUnitBackports.assertThrows;
@ -114,12 +114,12 @@ public class UpdateDomainCommandTest extends EppToolCommandTestCase<UpdateDomain
HostResource host1 = persistActiveHost("foo.bar.tld");
HostResource host2 = persistActiveHost("baz.bar.tld");
persistResource(
newDomainResource("example.abc")
newDomainBase("example.abc")
.asBuilder()
.setNameservers(ImmutableSet.of(Key.create(host1)))
.build());
persistResource(
newDomainResource("example.tld")
newDomainBase("example.tld")
.asBuilder()
.setNameservers(ImmutableSet.of(Key.create(host2)))
.build());
@ -174,7 +174,7 @@ public class UpdateDomainCommandTest extends EppToolCommandTestCase<UpdateDomain
ImmutableSet<Key<HostResource>> nameservers =
ImmutableSet.of(Key.create(host1), Key.create(host2));
persistResource(
newDomainResource("example.tld").asBuilder().setNameservers(nameservers).build());
newDomainBase("example.tld").asBuilder().setNameservers(nameservers).build());
runCommandForced(
"--client=NewRegistrar", "--nameservers=ns2.zdns.google,ns3.zdns.google", "example.tld");
eppVerifier.verifySent("domain_update_set_nameservers.xml");
@ -192,7 +192,7 @@ public class UpdateDomainCommandTest extends EppToolCommandTestCase<UpdateDomain
Key<ContactResource> techResourceKey2 = Key.create(techContact2);
persistResource(
newDomainResource("example.tld")
newDomainBase("example.tld")
.asBuilder()
.setContacts(
ImmutableSet.of(
@ -215,7 +215,7 @@ public class UpdateDomainCommandTest extends EppToolCommandTestCase<UpdateDomain
HostResource host = persistActiveHost("ns1.zdns.google");
ImmutableSet<Key<HostResource>> nameservers = ImmutableSet.of(Key.create(host));
persistResource(
newDomainResource("example.tld")
newDomainBase("example.tld")
.asBuilder()
.setStatusValues(
ImmutableSet.of(
@ -259,7 +259,7 @@ public class UpdateDomainCommandTest extends EppToolCommandTestCase<UpdateDomain
HostResource host = persistActiveHost("ns1.zdns.google");
ImmutableSet<Key<HostResource>> nameservers = ImmutableSet.of(Key.create(host));
persistResource(
newDomainResource("example.tld")
newDomainBase("example.tld")
.asBuilder()
.setStatusValues(ImmutableSet.of(SERVER_UPDATE_PROHIBITED))
.setNameservers(nameservers)

View file

@ -17,7 +17,7 @@ package google.registry.tools.server;
import static com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.testing.DatastoreHelper.createTlds;
import static google.registry.testing.DatastoreHelper.newDomainResource;
import static google.registry.testing.DatastoreHelper.newDomainBase;
import static google.registry.testing.DatastoreHelper.newHostResource;
import static google.registry.testing.DatastoreHelper.persistActiveContact;
import static google.registry.testing.DatastoreHelper.persistActiveDomain;
@ -72,43 +72,43 @@ public class GenerateZoneFilesActionTest extends MapreduceTestCase<GenerateZoneF
// This domain will have glue records, because it has a subordinate host which is its own
// nameserver. None of the other domains should have glue records, because their nameservers are
// subordinate to different domains.
persistResource(newDomainResource("bar.tld").asBuilder()
persistResource(newDomainBase("bar.tld").asBuilder()
.addNameservers(nameservers)
.addSubordinateHost("ns.bar.tld")
.build());
persistResource(newDomainResource("foo.tld").asBuilder()
persistResource(newDomainBase("foo.tld").asBuilder()
.addSubordinateHost("ns.foo.tld")
.build());
persistResource(newDomainResource("ns-and-ds.tld").asBuilder()
persistResource(newDomainBase("ns-and-ds.tld").asBuilder()
.addNameservers(nameservers)
.setDsData(ImmutableSet.of(DelegationSignerData.create(1, 2, 3, new byte[] {0, 1, 2})))
.build());
persistResource(newDomainResource("ns-only.tld").asBuilder()
persistResource(newDomainBase("ns-only.tld").asBuilder()
.addNameservers(nameservers)
.build());
persistResource(newDomainResource("ns-only-client-hold.tld").asBuilder()
persistResource(newDomainBase("ns-only-client-hold.tld").asBuilder()
.addNameservers(nameservers)
.setStatusValues(ImmutableSet.of(StatusValue.CLIENT_HOLD))
.build());
persistResource(newDomainResource("ns-only-pending-delete.tld").asBuilder()
persistResource(newDomainBase("ns-only-pending-delete.tld").asBuilder()
.addNameservers(nameservers)
.setStatusValues(ImmutableSet.of(StatusValue.PENDING_DELETE))
.build());
persistResource(newDomainResource("ns-only-server-hold.tld").asBuilder()
persistResource(newDomainBase("ns-only-server-hold.tld").asBuilder()
.addNameservers(nameservers)
.setStatusValues(ImmutableSet.of(StatusValue.SERVER_HOLD))
.build());
// These should be ignored; contacts aren't in DNS, hosts need to be from the same tld and have
// IP addresses, and domains need to be from the same TLD and have hosts (even in the case where
// domains contain DS data).
persistResource(newDomainResource("ds-only.tld").asBuilder()
persistResource(newDomainBase("ds-only.tld").asBuilder()
.setDsData(ImmutableSet.of(DelegationSignerData.create(1, 2, 3, new byte[] {0, 1, 2})))
.build());
persistActiveContact("ignored_contact");
persistActiveHost("ignored.host.tld"); // No ips.
persistActiveDomain("ignored_domain.tld"); // No hosts or DS data.
persistResource(newHostResource("ignored.foo.com").asBuilder().addInetAddresses(ips).build());
persistResource(newDomainResource("ignored.com")
persistResource(newDomainBase("ignored.com")
.asBuilder()
.addNameservers(nameservers)
.setDsData(ImmutableSet.of(DelegationSignerData.create(1, 2, 3, new byte[] {0, 1, 2})))

View file

@ -24,7 +24,7 @@ import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import google.registry.model.contact.ContactResource;
import google.registry.model.domain.DomainResource;
import google.registry.model.domain.DomainBase;
import google.registry.model.reporting.HistoryEntry;
import google.registry.testing.FakeResponse;
import google.registry.testing.mapreduce.MapreduceTestCase;
@ -56,7 +56,7 @@ public class ResaveAllHistoryEntriesActionTest
@Test
public void test_mapreduceSuccessfullyResavesEntity() throws Exception {
createTld("tld");
DomainResource domain = persistActiveDomain("test.tld");
DomainBase domain = persistActiveDomain("test.tld");
ContactResource contact = persistActiveContact("humanBeing");
Entity domainEntry =
ofy().save().toEntity(new HistoryEntry.Builder().setParent(domain).build());