@@ -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