Skip to content

Commit 481db7a

Browse files
committed
Merge pull request #713 from mderka/integration
Adjusted clear not to collide when parallel test are running.
2 parents 8e6aeef + b8031e1 commit 481db7a

1 file changed

Lines changed: 63 additions & 56 deletions

File tree

gcloud-java-dns/src/test/java/com/google/gcloud/dns/it/ITDnsTest.java

Lines changed: 63 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -50,76 +50,83 @@ public class ITDnsTest {
5050

5151
// todo(mderka) Implement test for creating invalid change when DnsException is finished. #673
5252

53-
public static final String PREFIX = "gcldjvit-";
54-
public static final Dns DNS = DnsOptions.builder().build().service();
55-
public static final String ZONE_NAME1 = (PREFIX + UUID.randomUUID()).substring(0, 32);
56-
public static final String ZONE_NAME_EMPTY_DESCRIPTION =
53+
private static final String PREFIX = "gcldjvit-";
54+
private static final Dns DNS = DnsOptions.builder().build().service();
55+
private static final String ZONE_NAME1 = (PREFIX + UUID.randomUUID()).substring(0, 32);
56+
private static final String ZONE_NAME_EMPTY_DESCRIPTION =
5757
(PREFIX + UUID.randomUUID()).substring(0, 32);
58-
public static final String ZONE_NAME_TOO_LONG = PREFIX + UUID.randomUUID();
59-
public static final String ZONE_DESCRIPTION1 = "first zone";
60-
public static final String ZONE_DNS_NAME1 = ZONE_NAME1 + ".com.";
61-
public static final String ZONE_DNS_EMPTY_DESCRIPTION = ZONE_NAME_EMPTY_DESCRIPTION + ".com.";
62-
public static final String ZONE_DNS_NAME_NO_PERIOD = ZONE_NAME1 + ".com";
63-
public static final ZoneInfo ZONE1 = ZoneInfo.builder(ZONE_NAME1)
58+
private static final String ZONE_NAME_TOO_LONG = PREFIX + UUID.randomUUID();
59+
private static final String ZONE_DESCRIPTION1 = "first zone";
60+
private static final String ZONE_DNS_NAME1 = ZONE_NAME1 + ".com.";
61+
private static final String ZONE_DNS_EMPTY_DESCRIPTION = ZONE_NAME_EMPTY_DESCRIPTION + ".com.";
62+
private static final String ZONE_DNS_NAME_NO_PERIOD = ZONE_NAME1 + ".com";
63+
private static final ZoneInfo ZONE1 = ZoneInfo.builder(ZONE_NAME1)
6464
.description(ZONE_DESCRIPTION1)
6565
.dnsName(ZONE_DNS_EMPTY_DESCRIPTION)
6666
.build();
67-
public static final ZoneInfo ZONE_EMPTY_DESCRIPTION =
67+
private static final ZoneInfo ZONE_EMPTY_DESCRIPTION =
6868
ZoneInfo.builder(ZONE_NAME_EMPTY_DESCRIPTION)
6969
.description(ZONE_DESCRIPTION1)
7070
.dnsName(ZONE_DNS_NAME1)
7171
.build();
72-
public static final ZoneInfo ZONE_NAME_ERROR = ZoneInfo.builder(ZONE_NAME_TOO_LONG)
72+
private static final ZoneInfo ZONE_NAME_ERROR = ZoneInfo.builder(ZONE_NAME_TOO_LONG)
7373
.description(ZONE_DESCRIPTION1)
7474
.dnsName(ZONE_DNS_NAME1)
7575
.build();
76-
public static final ZoneInfo ZONE_MISSING_DESCRIPTION = ZoneInfo.builder(ZONE_NAME1)
76+
private static final ZoneInfo ZONE_MISSING_DESCRIPTION = ZoneInfo.builder(ZONE_NAME1)
7777
.dnsName(ZONE_DNS_NAME1)
7878
.build();
79-
public static final ZoneInfo ZONE_MISSING_DNS_NAME = ZoneInfo.builder(ZONE_NAME1)
79+
private static final ZoneInfo ZONE_MISSING_DNS_NAME = ZoneInfo.builder(ZONE_NAME1)
8080
.description(ZONE_DESCRIPTION1)
8181
.build();
82-
public static final ZoneInfo ZONE_DNS_NO_PERIOD = ZoneInfo.builder(ZONE_NAME1)
82+
private static final ZoneInfo ZONE_DNS_NO_PERIOD = ZoneInfo.builder(ZONE_NAME1)
8383
.description(ZONE_DESCRIPTION1)
8484
.dnsName(ZONE_DNS_NAME_NO_PERIOD)
8585
.build();
86-
public static final DnsRecord A_RECORD_ZONE1 =
86+
private static final DnsRecord A_RECORD_ZONE1 =
8787
DnsRecord.builder("www." + ZONE1.dnsName(), DnsRecord.Type.A)
8888
.records(ImmutableList.of("123.123.55.1"))
8989
.ttl(25, TimeUnit.SECONDS)
9090
.build();
91-
public static final DnsRecord AAAA_RECORD_ZONE1 =
91+
private static final DnsRecord AAAA_RECORD_ZONE1 =
9292
DnsRecord.builder("www." + ZONE1.dnsName(), DnsRecord.Type.AAAA)
9393
.records(ImmutableList.of("ed:ed:12:aa:36:3:3:105"))
9494
.ttl(25, TimeUnit.SECONDS)
9595
.build();
96-
public static final ChangeRequest CHANGE_ADD_ZONE1 = ChangeRequest.builder()
96+
private static final ChangeRequest CHANGE_ADD_ZONE1 = ChangeRequest.builder()
9797
.add(A_RECORD_ZONE1)
9898
.add(AAAA_RECORD_ZONE1)
9999
.build();
100-
public static final ChangeRequest CHANGE_DELETE_ZONE1 = ChangeRequest.builder()
100+
private static final ChangeRequest CHANGE_DELETE_ZONE1 = ChangeRequest.builder()
101101
.delete(A_RECORD_ZONE1)
102102
.delete(AAAA_RECORD_ZONE1)
103103
.build();
104+
private static final List<String> ZONE_NAMES = ImmutableList.of(ZONE_NAME1,
105+
ZONE_NAME_EMPTY_DESCRIPTION);
104106

105-
public static void clear() {
106-
Page<Zone> zones = DNS.listZones();
107-
Iterator<Zone> zoneIterator = zones.iterateAll();
108-
while (zoneIterator.hasNext()) {
109-
Zone zone = zoneIterator.next();
110-
List<DnsRecord> toDelete = new LinkedList<>();
111-
if (zone.name().startsWith(PREFIX)) {
112-
Iterator<DnsRecord> dnsRecordIterator = zone.listDnsRecords().iterateAll();
113-
while (dnsRecordIterator.hasNext()) {
114-
DnsRecord record = dnsRecordIterator.next();
107+
private static void clear() {
108+
for (String zoneName : ZONE_NAMES) {
109+
Zone zone = DNS.getZone(zoneName);
110+
if (zone != null) {
111+
/* We wait for all changes to complete before retrieving a list of DNS records to be
112+
deleted. Waiting is necessary as changes potentially might create more records between
113+
when the list has been retrieved and executing the subsequent delete operation. */
114+
Iterator<ChangeRequest> iterator = zone.listChangeRequests().iterateAll();
115+
while (iterator.hasNext()) {
116+
waitForChangeToComplete(zoneName, iterator.next().id());
117+
}
118+
Iterator<DnsRecord> recordIterator = zone.listDnsRecords().iterateAll();
119+
List<DnsRecord> toDelete = new LinkedList<>();
120+
while (recordIterator.hasNext()) {
121+
DnsRecord record = recordIterator.next();
115122
if (!ImmutableList.of(DnsRecord.Type.NS, DnsRecord.Type.SOA).contains(record.type())) {
116123
toDelete.add(record);
117124
}
118125
}
119126
if (!toDelete.isEmpty()) {
120127
ChangeRequest deletion =
121128
zone.applyChangeRequest(ChangeRequest.builder().deletions(toDelete).build());
122-
waitUntilComplete(zone.name(), deletion.id());
129+
waitForChangeToComplete(zone.name(), deletion.id());
123130
}
124131
zone.delete();
125132
}
@@ -130,7 +137,7 @@ private static List<Zone> filter(Iterator<Zone> iterator) {
130137
List<Zone> result = new LinkedList<>();
131138
while (iterator.hasNext()) {
132139
Zone zone = iterator.next();
133-
if (zone.name().startsWith(PREFIX)) {
140+
if (ZONE_NAMES.contains(zone.name())) {
134141
result.add(zone);
135142
}
136143
}
@@ -154,7 +161,7 @@ private static void assertEqChangesIgnoreStatus(ChangeRequest expected, ChangeRe
154161
assertEquals(expected.startTimeMillis(), actual.startTimeMillis());
155162
}
156163

157-
private static void waitUntilComplete(String zoneName, String changeId) {
164+
private static void waitForChangeToComplete(String zoneName, String changeId) {
158165
while (true) {
159166
ChangeRequest changeRequest = DNS.getChangeRequest(zoneName, changeId,
160167
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.STATUS));
@@ -553,9 +560,9 @@ public void testCreateChange() {
553560
assertTrue(ImmutableList.of(ChangeRequest.Status.PENDING, ChangeRequest.Status.DONE)
554561
.contains(created.status()));
555562
assertEqChangesIgnoreStatus(created, DNS.getChangeRequest(ZONE1.name(), "1"));
556-
waitUntilComplete(ZONE1.name(), "1");
563+
waitForChangeToComplete(ZONE1.name(), "1");
557564
DNS.applyChangeRequest(ZONE1.name(), CHANGE_DELETE_ZONE1);
558-
waitUntilComplete(ZONE1.name(), "2");
565+
waitForChangeToComplete(ZONE1.name(), "2");
559566
// with options
560567
created = DNS.applyChangeRequest(ZONE1.name(), CHANGE_ADD_ZONE1,
561568
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.ID));
@@ -564,29 +571,29 @@ public void testCreateChange() {
564571
assertTrue(created.deletions().isEmpty());
565572
assertEquals("3", created.id());
566573
assertNull(created.status());
567-
waitUntilComplete(ZONE1.name(), "3");
574+
waitForChangeToComplete(ZONE1.name(), "3");
568575
DNS.applyChangeRequest(ZONE1.name(), CHANGE_DELETE_ZONE1);
569-
waitUntilComplete(ZONE1.name(), "4");
576+
waitForChangeToComplete(ZONE1.name(), "4");
570577
created = DNS.applyChangeRequest(ZONE1.name(), CHANGE_ADD_ZONE1,
571578
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.STATUS));
572579
assertTrue(created.additions().isEmpty());
573580
assertNull(created.startTimeMillis());
574581
assertTrue(created.deletions().isEmpty());
575582
assertEquals("5", created.id());
576583
assertNotNull(created.status());
577-
waitUntilComplete(ZONE1.name(), "5");
584+
waitForChangeToComplete(ZONE1.name(), "5");
578585
DNS.applyChangeRequest(ZONE1.name(), CHANGE_DELETE_ZONE1);
579-
waitUntilComplete(ZONE1.name(), "6");
586+
waitForChangeToComplete(ZONE1.name(), "6");
580587
created = DNS.applyChangeRequest(ZONE1.name(), CHANGE_ADD_ZONE1,
581588
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.START_TIME));
582589
assertTrue(created.additions().isEmpty());
583590
assertNotNull(created.startTimeMillis());
584591
assertTrue(created.deletions().isEmpty());
585592
assertEquals("7", created.id());
586593
assertNull(created.status());
587-
waitUntilComplete(ZONE1.name(), "7");
594+
waitForChangeToComplete(ZONE1.name(), "7");
588595
DNS.applyChangeRequest(ZONE1.name(), CHANGE_DELETE_ZONE1);
589-
waitUntilComplete(ZONE1.name(), "8");
596+
waitForChangeToComplete(ZONE1.name(), "8");
590597
created = DNS.applyChangeRequest(ZONE1.name(), CHANGE_ADD_ZONE1,
591598
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.ADDITIONS));
592599
assertEquals(CHANGE_ADD_ZONE1.additions(), created.additions());
@@ -595,16 +602,16 @@ public void testCreateChange() {
595602
assertEquals("9", created.id());
596603
assertNull(created.status());
597604
// finishes with delete otherwise we cannot delete the zone
598-
waitUntilComplete(ZONE1.name(), "9");
605+
waitForChangeToComplete(ZONE1.name(), "9");
599606
created = DNS.applyChangeRequest(ZONE1.name(), CHANGE_DELETE_ZONE1,
600607
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.DELETIONS));
601-
waitUntilComplete(ZONE1.name(), "10");
608+
waitForChangeToComplete(ZONE1.name(), "10");
602609
assertEquals(CHANGE_DELETE_ZONE1.deletions(), created.deletions());
603610
assertNull(created.startTimeMillis());
604611
assertTrue(created.additions().isEmpty());
605612
assertEquals("10", created.id());
606613
assertNull(created.status());
607-
waitUntilComplete(ZONE1.name(), "10");
614+
waitForChangeToComplete(ZONE1.name(), "10");
608615
} finally {
609616
clear();
610617
}
@@ -629,13 +636,13 @@ public void testListChanges() {
629636
assertEquals(1, changes.size()); // default change creating SOA and NS
630637
// zone has changes
631638
ChangeRequest change = DNS.applyChangeRequest(ZONE1.name(), CHANGE_ADD_ZONE1);
632-
waitUntilComplete(ZONE1.name(), change.id());
639+
waitForChangeToComplete(ZONE1.name(), change.id());
633640
change = DNS.applyChangeRequest(ZONE1.name(), CHANGE_DELETE_ZONE1);
634-
waitUntilComplete(ZONE1.name(), change.id());
641+
waitForChangeToComplete(ZONE1.name(), change.id());
635642
change = DNS.applyChangeRequest(ZONE1.name(), CHANGE_ADD_ZONE1);
636-
waitUntilComplete(ZONE1.name(), change.id());
643+
waitForChangeToComplete(ZONE1.name(), change.id());
637644
change = DNS.applyChangeRequest(ZONE1.name(), CHANGE_DELETE_ZONE1);
638-
waitUntilComplete(ZONE1.name(), change.id());
645+
waitForChangeToComplete(ZONE1.name(), change.id());
639646
changes = ImmutableList.copyOf(DNS.listChangeRequests(ZONE1.name()).iterateAll());
640647
assertEquals(5, changes.size());
641648
// error in options
@@ -726,43 +733,43 @@ public void testGetChange() {
726733
ChangeRequest created = zone.applyChangeRequest(CHANGE_ADD_ZONE1);
727734
ChangeRequest retrieved = DNS.getChangeRequest(zone.name(), created.id());
728735
assertEqChangesIgnoreStatus(created, retrieved);
729-
waitUntilComplete(zone.name(), created.id());
736+
waitForChangeToComplete(zone.name(), created.id());
730737
zone.applyChangeRequest(CHANGE_DELETE_ZONE1);
731738
// with options
732739
created = zone.applyChangeRequest(CHANGE_ADD_ZONE1,
733740
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.ID));
734741
retrieved = DNS.getChangeRequest(zone.name(), created.id(),
735742
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.ID));
736743
assertEqChangesIgnoreStatus(created, retrieved);
737-
waitUntilComplete(zone.name(), created.id());
744+
waitForChangeToComplete(zone.name(), created.id());
738745
zone.applyChangeRequest(CHANGE_DELETE_ZONE1);
739746
created = zone.applyChangeRequest(CHANGE_ADD_ZONE1,
740747
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.STATUS));
741748
retrieved = DNS.getChangeRequest(zone.name(), created.id(),
742749
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.STATUS));
743750
assertEqChangesIgnoreStatus(created, retrieved);
744-
waitUntilComplete(zone.name(), created.id());
751+
waitForChangeToComplete(zone.name(), created.id());
745752
zone.applyChangeRequest(CHANGE_DELETE_ZONE1);
746753
created = zone.applyChangeRequest(CHANGE_ADD_ZONE1,
747754
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.START_TIME));
748755
retrieved = DNS.getChangeRequest(zone.name(), created.id(),
749756
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.START_TIME));
750757
assertEqChangesIgnoreStatus(created, retrieved);
751-
waitUntilComplete(zone.name(), created.id());
758+
waitForChangeToComplete(zone.name(), created.id());
752759
zone.applyChangeRequest(CHANGE_DELETE_ZONE1);
753760
created = zone.applyChangeRequest(CHANGE_ADD_ZONE1,
754761
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.ADDITIONS));
755762
retrieved = DNS.getChangeRequest(zone.name(), created.id(),
756763
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.ADDITIONS));
757764
assertEqChangesIgnoreStatus(created, retrieved);
758-
waitUntilComplete(zone.name(), created.id());
765+
waitForChangeToComplete(zone.name(), created.id());
759766
// finishes with delete otherwise we cannot delete the zone
760767
created = zone.applyChangeRequest(CHANGE_DELETE_ZONE1,
761768
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.DELETIONS));
762769
retrieved = DNS.getChangeRequest(zone.name(), created.id(),
763770
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.DELETIONS));
764771
assertEqChangesIgnoreStatus(created, retrieved);
765-
waitUntilComplete(zone.name(), created.id());
772+
waitForChangeToComplete(zone.name(), created.id());
766773
} finally {
767774
clear();
768775
}
@@ -854,7 +861,7 @@ public void testListDnsRecords() {
854861
assertEquals(1, ImmutableList.copyOf(dnsRecordPage.values().iterator()).size());
855862
// test name filter
856863
ChangeRequest change = DNS.applyChangeRequest(ZONE1.name(), CHANGE_ADD_ZONE1);
857-
waitUntilComplete(ZONE1.name(), change.id());
864+
waitForChangeToComplete(ZONE1.name(), change.id());
858865
dnsRecordIterator = DNS.listDnsRecords(ZONE1.name(),
859866
Dns.DnsRecordListOption.dnsName(A_RECORD_ZONE1.name())).iterateAll();
860867
counter = 0;
@@ -866,7 +873,7 @@ public void testListDnsRecords() {
866873
}
867874
assertEquals(2, counter);
868875
// test type filter
869-
waitUntilComplete(ZONE1.name(), change.id());
876+
waitForChangeToComplete(ZONE1.name(), change.id());
870877
dnsRecordIterator = DNS.listDnsRecords(ZONE1.name(),
871878
Dns.DnsRecordListOption.dnsName(A_RECORD_ZONE1.name()),
872879
Dns.DnsRecordListOption.type(A_RECORD_ZONE1.type()))
@@ -905,7 +912,7 @@ public void testListDnsRecords() {
905912
assertEquals(400, ex.code());
906913
// todo(mderka) test retry functionality when available
907914
}
908-
waitUntilComplete(ZONE1.name(), change.id());
915+
waitForChangeToComplete(ZONE1.name(), change.id());
909916
} finally {
910917
clear();
911918
}

0 commit comments

Comments
 (0)