public void testRoute53()

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());
    }