1414 * limitations under the License.
1515 */
1616
17- package com .google .gcloud .dns ;
17+ package com .google .gcloud .dns . it ;
1818
1919import static org .junit .Assert .assertEquals ;
2020import static org .junit .Assert .assertFalse ;
2525
2626import com .google .common .collect .ImmutableList ;
2727import com .google .gcloud .Page ;
28+ import com .google .gcloud .dns .ChangeRequest ;
29+ import com .google .gcloud .dns .Dns ;
30+ import com .google .gcloud .dns .DnsException ;
31+ import com .google .gcloud .dns .DnsOptions ;
32+ import com .google .gcloud .dns .DnsRecord ;
33+ import com .google .gcloud .dns .ProjectInfo ;
34+ import com .google .gcloud .dns .Zone ;
35+ import com .google .gcloud .dns .ZoneInfo ;
2836
2937import org .junit .AfterClass ;
3038import org .junit .BeforeClass ;
@@ -62,24 +70,20 @@ public class ITDnsTest {
6270 .description (ZONE_DESCRIPTION1 )
6371 .dnsName (ZONE_DNS_NAME1 )
6472 .build ();
65- public static final ZoneInfo ZONE_NAME_ERROR =
66- ZoneInfo .builder (ZONE_NAME_TOO_LONG )
67- .description (ZONE_DESCRIPTION1 )
68- .dnsName (ZONE_DNS_NAME1 )
69- .build ();
70- public static final ZoneInfo ZONE_MISSING_DESCRIPTION =
71- ZoneInfo .builder (ZONE_NAME1 )
72- .dnsName (ZONE_DNS_NAME1 )
73- .build ();
74- public static final ZoneInfo ZONE_MISSING_DNS_NAME =
75- ZoneInfo .builder (ZONE_NAME1 )
76- .description (ZONE_DESCRIPTION1 )
77- .build ();
78- public static final ZoneInfo ZONE_DNS_NO_PERIOD =
79- ZoneInfo .builder (ZONE_NAME1 )
80- .description (ZONE_DESCRIPTION1 )
81- .dnsName (ZONE_DNS_NAME_NO_PERIOD )
82- .build ();
73+ public static final ZoneInfo ZONE_NAME_ERROR = ZoneInfo .builder (ZONE_NAME_TOO_LONG )
74+ .description (ZONE_DESCRIPTION1 )
75+ .dnsName (ZONE_DNS_NAME1 )
76+ .build ();
77+ public static final ZoneInfo ZONE_MISSING_DESCRIPTION = ZoneInfo .builder (ZONE_NAME1 )
78+ .dnsName (ZONE_DNS_NAME1 )
79+ .build ();
80+ public static final ZoneInfo ZONE_MISSING_DNS_NAME = ZoneInfo .builder (ZONE_NAME1 )
81+ .description (ZONE_DESCRIPTION1 )
82+ .build ();
83+ public static final ZoneInfo ZONE_DNS_NO_PERIOD = ZoneInfo .builder (ZONE_NAME1 )
84+ .description (ZONE_DESCRIPTION1 )
85+ .dnsName (ZONE_DNS_NAME_NO_PERIOD )
86+ .build ();
8387 public static final DnsRecord A_RECORD_ZONE1 =
8488 DnsRecord .builder ("www." + ZONE1 .dnsName (), DnsRecord .Type .A )
8589 .records (ImmutableList .of ("123.123.55.1" ))
@@ -116,7 +120,7 @@ public static void clear() {
116120 if (!toDelete .isEmpty ()) {
117121 ChangeRequest deletion =
118122 zone .applyChangeRequest (ChangeRequest .builder ().deletions (toDelete ).build ());
119- checkChangeComplete (zone .name (), deletion .id ());
123+ waitUntilComplete (zone .name (), deletion .id ());
120124 }
121125 zone .delete ();
122126 }
@@ -145,17 +149,23 @@ public static void after() {
145149 }
146150
147151 private static void assertEqChangesIgnoreStatus (ChangeRequest expected , ChangeRequest actual ) {
148- ChangeRequest unifiedEx = ChangeRequest .fromPb (expected .toPb ().setStatus ("pending" ));
149- ChangeRequest unifiedAct = ChangeRequest .fromPb (actual .toPb ().setStatus ("pending" ));
150- assertEquals (unifiedEx , unifiedAct );
152+ assertEquals (expected .additions (), actual .additions ());
153+ assertEquals (expected .deletions (), actual .deletions ());
154+ assertEquals (expected .id (), actual .id ());
155+ assertEquals (expected .startTimeMillis (), actual .startTimeMillis ());
151156 }
152157
153- private static void checkChangeComplete (String zoneName , String changeId ) {
158+ private static void waitUntilComplete (String zoneName , String changeId ) {
154159 while (true ) {
155160 ChangeRequest changeRequest = DNS .getChangeRequest (zoneName , changeId ,
156161 Dns .ChangeRequestOption .fields (Dns .ChangeRequestField .STATUS ));
157162 if (ChangeRequest .Status .DONE .equals (changeRequest .status ())) {
158- break ;
163+ return ;
164+ }
165+ try {
166+ Thread .sleep (10 );
167+ } catch (InterruptedException e ) {
168+ fail ("Thread was interrupted while waiting for change proceesing." );
159169 }
160170 }
161171 }
@@ -404,13 +414,15 @@ public void testListZones() {
404414 // error in options
405415 try {
406416 DNS .listZones (Dns .ZoneListOption .pageSize (0 ));
417+ fail ();
407418 } catch (DnsException ex ) {
408419 // expected
409420 assertEquals (400 , ex .code ());
410421 // todo(mderka) test not-retryable
411422 }
412423 try {
413424 DNS .listZones (Dns .ZoneListOption .pageSize (-1 ));
425+ fail ();
414426 } catch (DnsException ex ) {
415427 // expected
416428 assertEquals (400 , ex .code ());
@@ -422,6 +434,7 @@ public void testListZones() {
422434 // dns name problems
423435 try {
424436 DNS .listZones (Dns .ZoneListOption .dnsName ("aaaaa" ));
437+ fail ();
425438 } catch (DnsException ex ) {
426439 // expected
427440 assertEquals (400 , ex .code ());
@@ -529,7 +542,6 @@ public void testDeleteZone() {
529542 }
530543 }
531544
532-
533545 @ Test
534546 public void testCreateChange () {
535547 try {
@@ -542,9 +554,9 @@ public void testCreateChange() {
542554 assertTrue (ImmutableList .of (ChangeRequest .Status .PENDING , ChangeRequest .Status .DONE )
543555 .contains (created .status ()));
544556 assertEqChangesIgnoreStatus (created , DNS .getChangeRequest (ZONE1 .name (), "1" ));
545- checkChangeComplete (ZONE1 .name (), "1" );
557+ waitUntilComplete (ZONE1 .name (), "1" );
546558 DNS .applyChangeRequest (ZONE1 .name (), CHANGE_DELETE_ZONE1 );
547- checkChangeComplete (ZONE1 .name (), "2" );
559+ waitUntilComplete (ZONE1 .name (), "2" );
548560 // with options
549561 created = DNS .applyChangeRequest (ZONE1 .name (), CHANGE_ADD_ZONE1 ,
550562 Dns .ChangeRequestOption .fields (Dns .ChangeRequestField .ID ));
@@ -553,29 +565,29 @@ public void testCreateChange() {
553565 assertTrue (created .deletions ().isEmpty ());
554566 assertEquals ("3" , created .id ());
555567 assertNull (created .status ());
556- checkChangeComplete (ZONE1 .name (), "3" );
568+ waitUntilComplete (ZONE1 .name (), "3" );
557569 DNS .applyChangeRequest (ZONE1 .name (), CHANGE_DELETE_ZONE1 );
558- checkChangeComplete (ZONE1 .name (), "4" );
570+ waitUntilComplete (ZONE1 .name (), "4" );
559571 created = DNS .applyChangeRequest (ZONE1 .name (), CHANGE_ADD_ZONE1 ,
560572 Dns .ChangeRequestOption .fields (Dns .ChangeRequestField .STATUS ));
561573 assertTrue (created .additions ().isEmpty ());
562574 assertNull (created .startTimeMillis ());
563575 assertTrue (created .deletions ().isEmpty ());
564576 assertEquals ("5" , created .id ());
565577 assertNotNull (created .status ());
566- checkChangeComplete (ZONE1 .name (), "5" );
578+ waitUntilComplete (ZONE1 .name (), "5" );
567579 DNS .applyChangeRequest (ZONE1 .name (), CHANGE_DELETE_ZONE1 );
568- checkChangeComplete (ZONE1 .name (), "6" );
580+ waitUntilComplete (ZONE1 .name (), "6" );
569581 created = DNS .applyChangeRequest (ZONE1 .name (), CHANGE_ADD_ZONE1 ,
570582 Dns .ChangeRequestOption .fields (Dns .ChangeRequestField .START_TIME ));
571583 assertTrue (created .additions ().isEmpty ());
572584 assertNotNull (created .startTimeMillis ());
573585 assertTrue (created .deletions ().isEmpty ());
574586 assertEquals ("7" , created .id ());
575587 assertNull (created .status ());
576- checkChangeComplete (ZONE1 .name (), "7" );
588+ waitUntilComplete (ZONE1 .name (), "7" );
577589 DNS .applyChangeRequest (ZONE1 .name (), CHANGE_DELETE_ZONE1 );
578- checkChangeComplete (ZONE1 .name (), "8" );
590+ waitUntilComplete (ZONE1 .name (), "8" );
579591 created = DNS .applyChangeRequest (ZONE1 .name (), CHANGE_ADD_ZONE1 ,
580592 Dns .ChangeRequestOption .fields (Dns .ChangeRequestField .ADDITIONS ));
581593 assertEquals (CHANGE_ADD_ZONE1 .additions (), created .additions ());
@@ -584,16 +596,16 @@ public void testCreateChange() {
584596 assertEquals ("9" , created .id ());
585597 assertNull (created .status ());
586598 // finishes with delete otherwise we cannot delete the zone
587- checkChangeComplete (ZONE1 .name (), "9" );
599+ waitUntilComplete (ZONE1 .name (), "9" );
588600 created = DNS .applyChangeRequest (ZONE1 .name (), CHANGE_DELETE_ZONE1 ,
589601 Dns .ChangeRequestOption .fields (Dns .ChangeRequestField .DELETIONS ));
590- checkChangeComplete (ZONE1 .name (), "10" );
602+ waitUntilComplete (ZONE1 .name (), "10" );
591603 assertEquals (CHANGE_DELETE_ZONE1 .deletions (), created .deletions ());
592604 assertNull (created .startTimeMillis ());
593605 assertTrue (created .additions ().isEmpty ());
594606 assertEquals ("10" , created .id ());
595607 assertNull (created .status ());
596- checkChangeComplete (ZONE1 .name (), "10" );
608+ waitUntilComplete (ZONE1 .name (), "10" );
597609 } finally {
598610 clear ();
599611 }
@@ -618,25 +630,27 @@ public void testListChanges() {
618630 assertEquals (1 , changes .size ()); // default change creating SOA and NS
619631 // zone has changes
620632 ChangeRequest change = DNS .applyChangeRequest (ZONE1 .name (), CHANGE_ADD_ZONE1 );
621- checkChangeComplete (ZONE1 .name (), change .id ());
633+ waitUntilComplete (ZONE1 .name (), change .id ());
622634 change = DNS .applyChangeRequest (ZONE1 .name (), CHANGE_DELETE_ZONE1 );
623- checkChangeComplete (ZONE1 .name (), change .id ());
635+ waitUntilComplete (ZONE1 .name (), change .id ());
624636 change = DNS .applyChangeRequest (ZONE1 .name (), CHANGE_ADD_ZONE1 );
625- checkChangeComplete (ZONE1 .name (), change .id ());
637+ waitUntilComplete (ZONE1 .name (), change .id ());
626638 change = DNS .applyChangeRequest (ZONE1 .name (), CHANGE_DELETE_ZONE1 );
627- checkChangeComplete (ZONE1 .name (), change .id ());
639+ waitUntilComplete (ZONE1 .name (), change .id ());
628640 changes = ImmutableList .copyOf (DNS .listChangeRequests (ZONE1 .name ()).iterateAll ());
629641 assertEquals (5 , changes .size ());
630642 // error in options
631643 try {
632644 DNS .listChangeRequests (ZONE1 .name (), Dns .ChangeRequestListOption .pageSize (0 ));
645+ fail ();
633646 } catch (DnsException ex ) {
634647 // expected
635648 assertEquals (400 , ex .code ());
636649 // todo(mderka) test retry functionality
637650 }
638651 try {
639652 DNS .listChangeRequests (ZONE1 .name (), Dns .ChangeRequestListOption .pageSize (-1 ));
653+ fail ();
640654 } catch (DnsException ex ) {
641655 // expected
642656 assertEquals (400 , ex .code ());
@@ -754,27 +768,16 @@ public void testGetProject() {
754768 // fetches all fields
755769 ProjectInfo project = DNS .getProject ();
756770 assertNotNull (project .quota ());
757- assertNotNull (project .number ());
758- assertNotNull (project .id ());
759- assertEquals (PROJECT_ID , project .id ());
760771 // options
761772 project = DNS .getProject (Dns .ProjectOption .fields (Dns .ProjectField .QUOTA ));
762773 assertNotNull (project .quota ());
763- assertNull (project .number ());
764- assertNotNull (project .id ()); // id is always returned
765774 project = DNS .getProject (Dns .ProjectOption .fields (Dns .ProjectField .PROJECT_ID ));
766775 assertNull (project .quota ());
767- assertNull (project .number ());
768- assertNotNull (project .id ());
769776 project = DNS .getProject (Dns .ProjectOption .fields (Dns .ProjectField .PROJECT_NUMBER ));
770777 assertNull (project .quota ());
771- assertNotNull (project .number ());
772- assertNotNull (project .id ());
773778 project = DNS .getProject (Dns .ProjectOption .fields (Dns .ProjectField .PROJECT_NUMBER ,
774779 Dns .ProjectField .QUOTA , Dns .ProjectField .PROJECT_ID ));
775780 assertNotNull (project .quota ());
776- assertNotNull (project .number ());
777- assertNotNull (project .id ());
778781 }
779782
780783 @ Test
@@ -846,7 +849,7 @@ public void testListDnsRecords() {
846849 assertEquals (1 , ImmutableList .copyOf (dnsRecordPage .values ().iterator ()).size ());
847850 // test name filter
848851 ChangeRequest change = DNS .applyChangeRequest (ZONE1 .name (), CHANGE_ADD_ZONE1 );
849- checkChangeComplete (ZONE1 .name (), change .id ());
852+ waitUntilComplete (ZONE1 .name (), change .id ());
850853 dnsRecordIterator = DNS .listDnsRecords (ZONE1 .name (),
851854 Dns .DnsRecordListOption .dnsName (A_RECORD_ZONE1 .name ())).iterateAll ();
852855 counter = 0 ;
@@ -858,7 +861,7 @@ public void testListDnsRecords() {
858861 }
859862 assertEquals (2 , counter );
860863 // test type filter
861- checkChangeComplete (ZONE1 .name (), change .id ());
864+ waitUntilComplete (ZONE1 .name (), change .id ());
862865 dnsRecordIterator = DNS .listDnsRecords (ZONE1 .name (),
863866 Dns .DnsRecordListOption .dnsName (A_RECORD_ZONE1 .name ()),
864867 Dns .DnsRecordListOption .type (A_RECORD_ZONE1 .type ()))
@@ -874,30 +877,30 @@ public void testListDnsRecords() {
874877 // check wrong arguments
875878 try {
876879 // name is not set
877- DNS .listDnsRecords (ZONE1 .name (),
878- Dns . DnsRecordListOption . type ( A_RECORD_ZONE1 . type ()) );
880+ DNS .listDnsRecords (ZONE1 .name (), Dns . DnsRecordListOption . type ( A_RECORD_ZONE1 . type ()));
881+ fail ( );
879882 } catch (DnsException ex ) {
880883 // expected
881884 assertEquals (400 , ex .code ());
882885 // todo(mderka) test retry functionality when available
883886 }
884887 try {
885- DNS .listDnsRecords (ZONE1 .name (),
886- Dns . DnsRecordListOption . pageSize ( 0 ) );
888+ DNS .listDnsRecords (ZONE1 .name (), Dns . DnsRecordListOption . pageSize ( 0 ));
889+ fail ( );
887890 } catch (DnsException ex ) {
888891 // expected
889892 assertEquals (400 , ex .code ());
890893 // todo(mderka) test retry functionality when available
891894 }
892895 try {
893- DNS .listDnsRecords (ZONE1 .name (),
894- Dns . DnsRecordListOption . pageSize (- 1 ) );
896+ DNS .listDnsRecords (ZONE1 .name (), Dns . DnsRecordListOption . pageSize (- 1 ));
897+ fail ( );
895898 } catch (DnsException ex ) {
896899 // expected
897900 assertEquals (400 , ex .code ());
898901 // todo(mderka) test retry functionality when available
899902 }
900- checkChangeComplete (ZONE1 .name (), change .id ());
903+ waitUntilComplete (ZONE1 .name (), change .id ());
901904 } finally {
902905 clear ();
903906 }
0 commit comments