Skip to content

Commit 6dac63f

Browse files
committed
Added integration test for invalid change request.
Also added checks for the exceptions being non-retryable. Closes #673.
1 parent 96e380c commit 6dac63f

File tree

1 file changed

+78
-13
lines changed

1 file changed

+78
-13
lines changed

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

Lines changed: 78 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@
4848

4949
public class ITDnsTest {
5050

51-
// todo(mderka) Implement test for creating invalid change when DnsException is finished. #673
52-
5351
private static final String PREFIX = "gcldjvit-";
5452
private static final Dns DNS = DnsOptions.builder().build().service();
5553
private static final String ZONE_NAME1 = (PREFIX + UUID.randomUUID()).substring(0, 32);
@@ -201,14 +199,14 @@ public void testCreateZoneWithErrors() {
201199
fail("Zone name is missing a period. The service returns an error.");
202200
} catch (DnsException ex) {
203201
// expected
204-
// todo(mderka) test non-retryable when implemented within #593
202+
assertFalse(ex.retryable());
205203
}
206204
try {
207205
DNS.create(ZONE_DNS_NO_PERIOD);
208206
fail("Zone name is missing a period. The service returns an error.");
209207
} catch (DnsException ex) {
210208
// expected
211-
// todo(mderka) test non-retryable when implemented within #593
209+
assertFalse(ex.retryable());
212210
}
213211
} finally {
214212
DNS.delete(ZONE_NAME_ERROR.name());
@@ -393,15 +391,15 @@ public void testListZones() {
393391
} catch (DnsException ex) {
394392
// expected
395393
assertEquals(400, ex.code());
396-
// todo(mderka) test not-retryable
394+
assertFalse(ex.retryable());
397395
}
398396
try {
399397
DNS.listZones(Dns.ZoneListOption.pageSize(-1));
400398
fail();
401399
} catch (DnsException ex) {
402400
// expected
403401
assertEquals(400, ex.code());
404-
// todo(mderka) test not-retryable
402+
assertFalse(ex.retryable());
405403
}
406404
// ok size
407405
zones = filter(DNS.listZones(Dns.ZoneListOption.pageSize(1000)).iterateAll());
@@ -413,7 +411,7 @@ public void testListZones() {
413411
} catch (DnsException ex) {
414412
// expected
415413
assertEquals(400, ex.code());
416-
// todo(mderka) test not-retryable
414+
assertFalse(ex.retryable());
417415
}
418416
// ok name
419417
zones = filter(DNS.listZones(Dns.ZoneListOption.dnsName(ZONE1.dnsName())).iterateAll());
@@ -586,6 +584,73 @@ public void testCreateChange() {
586584
}
587585
}
588586

587+
@Test
588+
public void testInvalidChangeRequest() {
589+
Zone zone = DNS.create(ZONE1);
590+
DnsRecord validA = DnsRecord.builder("subdomain." + zone.dnsName(), DnsRecord.Type.A)
591+
.records(ImmutableList.of("0.255.1.5"))
592+
.build();
593+
try {
594+
ChangeRequest validChange = ChangeRequest.builder().add(validA).build();
595+
zone.applyChangeRequest(validChange);
596+
try {
597+
zone.applyChangeRequest(validChange);
598+
fail();
599+
} catch (DnsException ex) {
600+
// expected
601+
assertFalse(ex.retryable());
602+
assertEquals(409, ex.code());
603+
}
604+
// delete with field mismatch
605+
DnsRecord mismatch = validA.toBuilder().ttl(20, TimeUnit.SECONDS).build();
606+
ChangeRequest deletion = ChangeRequest.builder().delete(mismatch).build();
607+
try {
608+
zone.applyChangeRequest(deletion);
609+
fail();
610+
} catch (DnsException ex) {
611+
// expected
612+
assertEquals(412, ex.code());
613+
assertFalse(ex.retryable());
614+
}
615+
// delete and add SOA
616+
Iterator<DnsRecord> recordIterator = zone.listDnsRecords().iterateAll();
617+
LinkedList<DnsRecord> deletions = new LinkedList<>();
618+
LinkedList<DnsRecord> additions = new LinkedList<>();
619+
while (recordIterator.hasNext()) {
620+
DnsRecord record = recordIterator.next();
621+
if (record.type() == DnsRecord.Type.SOA) {
622+
deletions.add(record);
623+
DnsRecord copy = record.toBuilder().name("x." + record.name()).build();
624+
additions.add(copy);
625+
break;
626+
}
627+
}
628+
deletion = deletion.toBuilder().deletions(deletions).build();
629+
ChangeRequest addition = ChangeRequest.builder().additions(additions).build();
630+
try {
631+
zone.applyChangeRequest(deletion);
632+
fail();
633+
} catch (DnsException ex) {
634+
// expected
635+
assertFalse(ex.retryable());
636+
assertEquals(400, ex.code());
637+
}
638+
try {
639+
zone.applyChangeRequest(addition);
640+
fail();
641+
} catch (DnsException ex) {
642+
// expected
643+
assertFalse(ex.retryable());
644+
assertEquals(400, ex.code());
645+
}
646+
} finally {
647+
ChangeRequest deletion = ChangeRequest.builder().delete(validA).build();
648+
ChangeRequest request = zone.applyChangeRequest(deletion);
649+
waitForChangeToComplete(zone.name(), request.id());
650+
zone.delete();
651+
}
652+
}
653+
589654
@Test
590655
public void testListChanges() {
591656
try {
@@ -596,7 +661,7 @@ public void testListChanges() {
596661
} catch (DnsException ex) {
597662
// expected
598663
assertEquals(404, ex.code());
599-
// todo(mderka) test retry functionality
664+
assertFalse(ex.retryable());
600665
}
601666
// zone exists but has no changes
602667
DNS.create(ZONE1);
@@ -621,15 +686,15 @@ public void testListChanges() {
621686
} catch (DnsException ex) {
622687
// expected
623688
assertEquals(400, ex.code());
624-
// todo(mderka) test retry functionality
689+
assertFalse(ex.retryable());
625690
}
626691
try {
627692
DNS.listChangeRequests(ZONE1.name(), Dns.ChangeRequestListOption.pageSize(-1));
628693
fail();
629694
} catch (DnsException ex) {
630695
// expected
631696
assertEquals(400, ex.code());
632-
// todo(mderka) test retry functionality
697+
assertFalse(ex.retryable());
633698
}
634699
// sorting order
635700
ImmutableList<ChangeRequest> ascending = ImmutableList.copyOf(DNS.listChangeRequests(
@@ -863,23 +928,23 @@ public void testListDnsRecords() {
863928
} catch (DnsException ex) {
864929
// expected
865930
assertEquals(400, ex.code());
866-
// todo(mderka) test retry functionality when available
931+
assertFalse(ex.retryable());
867932
}
868933
try {
869934
DNS.listDnsRecords(ZONE1.name(), Dns.DnsRecordListOption.pageSize(0));
870935
fail();
871936
} catch (DnsException ex) {
872937
// expected
873938
assertEquals(400, ex.code());
874-
// todo(mderka) test retry functionality when available
939+
assertFalse(ex.retryable());
875940
}
876941
try {
877942
DNS.listDnsRecords(ZONE1.name(), Dns.DnsRecordListOption.pageSize(-1));
878943
fail();
879944
} catch (DnsException ex) {
880945
// expected
881946
assertEquals(400, ex.code());
882-
// todo(mderka) test retry functionality when available
947+
assertFalse(ex.retryable());
883948
}
884949
waitForChangeToComplete(ZONE1.name(), change.id());
885950
} finally {

0 commit comments

Comments
 (0)