in services/route53/src/it/java/software/amazon/awssdk/services/route53/Route53IntegrationTest.java [126:244]
public void testRoute53() throws Exception {
// Get Hosted Zone
GetHostedZoneRequest hostedZoneRequest = GetHostedZoneRequest.builder().id(createdZoneId).build();
GetHostedZoneResponse hostedZoneResult = route53.getHostedZone(hostedZoneRequest);
assertValidDelegationSet(hostedZoneResult.delegationSet());
assertValidCreatedHostedZone(hostedZoneResult.hostedZone());
// Create a health check
HealthCheckConfig config = HealthCheckConfig.builder().type("TCP").port(PORT_NUM).ipAddress(IP_ADDRESS).build();
CreateHealthCheckResponse createHealthCheckResult = route53.createHealthCheck(
CreateHealthCheckRequest.builder().healthCheckConfig(config).callerReference(CALLER_REFERENCE).build());
healthCheckId = createHealthCheckResult.healthCheck().id();
assertNotNull(createHealthCheckResult.location());
assertValidHealthCheck(createHealthCheckResult.healthCheck());
// Get the health check back
GetHealthCheckResponse gealthCheckResult = route53
.getHealthCheck(GetHealthCheckRequest.builder().healthCheckId(healthCheckId).build());
assertValidHealthCheck(gealthCheckResult.healthCheck());
// Delete the health check
route53.deleteHealthCheck(DeleteHealthCheckRequest.builder().healthCheckId(healthCheckId).build());
// Get the health check back
try {
gealthCheckResult = route53.getHealthCheck(GetHealthCheckRequest.builder().healthCheckId(healthCheckId).build());
fail();
} catch (AwsServiceException e) {
assertNotNull(e.getMessage());
assertNotNull(e.awsErrorDetails().errorCode());
}
// List Hosted Zones
List<HostedZone> hostedZones = route53.listHostedZones(ListHostedZonesRequest.builder().build()).hostedZones();
assertTrue(hostedZones.size() > 0);
for (HostedZone hostedZone : hostedZones) {
assertNotNull(hostedZone.callerReference());
assertNotNull(hostedZone.id());
assertNotNull(hostedZone.name());
}
// List Resource Record Sets
List<ResourceRecordSet> resourceRecordSets = route53.listResourceRecordSets(
ListResourceRecordSetsRequest.builder().hostedZoneId(createdZoneId).build()).resourceRecordSets();
assertTrue(resourceRecordSets.size() > 0);
ResourceRecordSet existingResourceRecordSet = resourceRecordSets.get(0);
for (ResourceRecordSet rrset : resourceRecordSets) {
assertNotNull(rrset.name());
assertNotNull(rrset.type());
assertNotNull(rrset.ttl());
assertTrue(rrset.resourceRecords().size() > 0);
}
// Get Change
ChangeInfo changeInfo = route53.getChange(GetChangeRequest.builder().id(createdZoneChangeId).build()).changeInfo();
assertTrue(changeInfo.id().endsWith(createdZoneChangeId));
assertValidChangeInfo(changeInfo);
// Change Resource Record Sets
ResourceRecordSet newResourceRecordSet = ResourceRecordSet.builder()
.name(ZONE_NAME)
.resourceRecords(existingResourceRecordSet.resourceRecords())
.ttl(existingResourceRecordSet.ttl() + 100)
.type(existingResourceRecordSet.type())
.build();
changeInfo = route53.changeResourceRecordSets(ChangeResourceRecordSetsRequest.builder()
.hostedZoneId(createdZoneId)
.changeBatch(ChangeBatch.builder().comment(COMMENT)
.changes(Change.builder().action(
ChangeAction.DELETE)
.resourceRecordSet(
existingResourceRecordSet).build(),
Change.builder().action(
ChangeAction.CREATE)
.resourceRecordSet(
newResourceRecordSet).build()).build()
).build()).changeInfo();
assertValidChangeInfo(changeInfo);
// Add a weighted Resource Record Set so we can reproduce the bug reported by customers
// when they provide SetIdentifier containing special characters.
String specialChars = "&<>'\"";
newResourceRecordSet =ResourceRecordSet.builder()
.name("weighted." + ZONE_NAME)
.type(RRType.CNAME)
.setIdentifier(specialChars)
.weight(0L)
.ttl(1000L)
.resourceRecords(ResourceRecord.builder().value("www.example.com").build())
.build();
changeInfo = route53.changeResourceRecordSets(ChangeResourceRecordSetsRequest.builder()
.hostedZoneId(createdZoneId)
.changeBatch(
ChangeBatch.builder().comment(COMMENT).changes(
Change.builder().action(ChangeAction.CREATE)
.resourceRecordSet(
newResourceRecordSet).build()).build()).build()
).changeInfo();
assertValidChangeInfo(changeInfo);
// Clear up the RR Set
changeInfo = route53.changeResourceRecordSets(ChangeResourceRecordSetsRequest.builder()
.hostedZoneId(createdZoneId)
.changeBatch(
ChangeBatch.builder().comment(COMMENT).changes(
Change.builder().action(ChangeAction.DELETE)
.resourceRecordSet(
newResourceRecordSet).build()).build()).build()
).changeInfo();
// Delete Hosted Zone
DeleteHostedZoneResponse deleteHostedZoneResult = route53.deleteHostedZone(DeleteHostedZoneRequest.builder().id(createdZoneId).build());
assertValidChangeInfo(deleteHostedZoneResult.changeInfo());
}