From c86fd96654259d24349c775d6568b98db3114673 Mon Sep 17 00:00:00 2001 From: larryruili Date: Mon, 28 Aug 2017 12:08:28 -0700 Subject: [PATCH] Ignore test TLDs when logging transaction creates/deletes The probers make a constant stream of create and delete calls, which we don't want to account for when constructing transaction reports. This change will cause only real TLDs to log create and delete transaction records. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=166737801 --- .../flows/domain/DomainCreateFlow.java | 23 +++++---- .../flows/domain/DomainDeleteFlow.java | 47 ++++++++++--------- .../flows/domain/DomainCreateFlowTest.java | 12 +++++ .../flows/domain/DomainDeleteFlowTest.java | 24 ++++++++++ 4 files changed, 76 insertions(+), 30 deletions(-) diff --git a/java/google/registry/flows/domain/DomainCreateFlow.java b/java/google/registry/flows/domain/DomainCreateFlow.java index 3dfd0f310..c57de6250 100644 --- a/java/google/registry/flows/domain/DomainCreateFlow.java +++ b/java/google/registry/flows/domain/DomainCreateFlow.java @@ -98,6 +98,7 @@ import google.registry.model.poll.PollMessage; import google.registry.model.poll.PollMessage.Autorenew; import google.registry.model.registry.Registry; import google.registry.model.registry.Registry.TldState; +import google.registry.model.registry.Registry.TldType; import google.registry.model.reporting.DomainTransactionRecord; import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField; import google.registry.model.reporting.HistoryEntry; @@ -262,7 +263,7 @@ public class DomainCreateFlow implements TransactionalFlow { String repoId = createDomainRepoId(ObjectifyService.allocateId(), registry.getTldStr()); DateTime registrationExpirationTime = leapSafeAddYears(now, years); HistoryEntry historyEntry = buildHistoryEntry( - repoId, registry.getTldStr(), now, period, registry.getAddGracePeriodLength()); + repoId, registry, now, period, registry.getAddGracePeriodLength()); // Bill for the create. BillingEvent.OneTime createBillingEvent = createOneTimeBillingEvent( @@ -365,19 +366,23 @@ public class DomainCreateFlow implements TransactionalFlow { } private HistoryEntry buildHistoryEntry( - String repoId, String tld, DateTime now, Period period, Duration addGracePeriod) { + String repoId, Registry registry, DateTime now, Period period, Duration addGracePeriod) { + // We ignore prober transactions + if (registry.getTldType() == TldType.REAL) { + historyBuilder + .setDomainTransactionRecords( + ImmutableSet.of( + DomainTransactionRecord.create( + registry.getTldStr(), + now.plus(addGracePeriod), + TransactionReportField.netAddsFieldFromYears(period.getValue()), + 1))); + } return historyBuilder .setType(HistoryEntry.Type.DOMAIN_CREATE) .setPeriod(period) .setModificationTime(now) .setParent(Key.create(DomainResource.class, repoId)) - .setDomainTransactionRecords( - ImmutableSet.of( - DomainTransactionRecord.create( - tld, - now.plus(addGracePeriod), - TransactionReportField.netAddsFieldFromYears(period.getValue()), - 1))) .build(); } diff --git a/java/google/registry/flows/domain/DomainDeleteFlow.java b/java/google/registry/flows/domain/DomainDeleteFlow.java index f0aca615d..1a92395e0 100644 --- a/java/google/registry/flows/domain/DomainDeleteFlow.java +++ b/java/google/registry/flows/domain/DomainDeleteFlow.java @@ -82,6 +82,7 @@ import google.registry.model.poll.PendingActionNotificationResponse.DomainPendin import google.registry.model.poll.PollMessage; import google.registry.model.poll.PollMessage.OneTime; import google.registry.model.registry.Registry; +import google.registry.model.registry.Registry.TldType; import google.registry.model.reporting.DomainTransactionRecord; import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField; import google.registry.model.reporting.HistoryEntry; @@ -239,31 +240,35 @@ public final class DomainDeleteFlow implements TransactionalFlow { DateTime now, Duration durationUntilDelete, boolean inAddGracePeriod) { - Duration maxGracePeriod = Collections.max( - ImmutableSet.of( - registry.getAddGracePeriodLength(), - registry.getAutoRenewGracePeriodLength(), - registry.getRenewGracePeriodLength())); - ImmutableSet cancelledRecords = - createCancelingRecords( - existingResource, - now, - maxGracePeriod, - Sets.immutableEnumSet(Sets.union(ADD_FIELDS, RENEW_FIELDS))); + // We ignore prober transactions + if (registry.getTldType() == TldType.REAL) { + Duration maxGracePeriod = Collections.max( + ImmutableSet.of( + registry.getAddGracePeriodLength(), + registry.getAutoRenewGracePeriodLength(), + registry.getRenewGracePeriodLength())); + ImmutableSet cancelledRecords = + createCancelingRecords( + existingResource, + now, + maxGracePeriod, + Sets.immutableEnumSet(Sets.union(ADD_FIELDS, RENEW_FIELDS))); + historyBuilder + .setDomainTransactionRecords( + union( + cancelledRecords, + DomainTransactionRecord.create( + existingResource.getTld(), + now.plus(durationUntilDelete), + inAddGracePeriod + ? TransactionReportField.DELETED_DOMAINS_GRACE + : TransactionReportField.DELETED_DOMAINS_NOGRACE, + 1))); + } return historyBuilder .setType(HistoryEntry.Type.DOMAIN_DELETE) .setModificationTime(now) .setParent(Key.create(existingResource)) - .setDomainTransactionRecords( - union( - cancelledRecords, - DomainTransactionRecord.create( - existingResource.getTld(), - now.plus(durationUntilDelete), - inAddGracePeriod - ? TransactionReportField.DELETED_DOMAINS_GRACE - : TransactionReportField.DELETED_DOMAINS_NOGRACE, - 1))) .build(); } diff --git a/javatests/google/registry/flows/domain/DomainCreateFlowTest.java b/javatests/google/registry/flows/domain/DomainCreateFlowTest.java index 0d9da464d..4770342ad 100644 --- a/javatests/google/registry/flows/domain/DomainCreateFlowTest.java +++ b/javatests/google/registry/flows/domain/DomainCreateFlowTest.java @@ -127,6 +127,7 @@ import google.registry.model.eppcommon.StatusValue; import google.registry.model.poll.PollMessage; import google.registry.model.registry.Registry; import google.registry.model.registry.Registry.TldState; +import google.registry.model.registry.Registry.TldType; import google.registry.model.reporting.DomainTransactionRecord; import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField; import google.registry.model.reporting.HistoryEntry; @@ -2010,6 +2011,17 @@ public class DomainCreateFlowTest extends ResourceFlowTestCase