Skip to content

Commit

Permalink
Made nameServerSet read only and setters package private.
Browse files Browse the repository at this point in the history
Adds dnsName filter for Zone listing and tests.
Adds serialization test.

Fixes #630, #602 and #631.
  • Loading branch information
mderka committed Feb 9, 2016
1 parent ee5bb8f commit db52e09
Show file tree
Hide file tree
Showing 7 changed files with 150 additions and 6 deletions.
8 changes: 8 additions & 0 deletions gcloud-java-dns/src/main/java/com/google/gcloud/dns/Dns.java
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,14 @@ public static ZoneListOption pageToken(String pageToken) {
return new ZoneListOption(DnsRpc.Option.PAGE_TOKEN, pageToken);
}

/**
* Restricts the list to only zone with this fully qualified domain name.
*/
public static ZoneListOption dnsName(String dnsName) {
StringBuilder builder = new StringBuilder();
return new ZoneListOption(DnsRpc.Option.DNS_NAME, dnsName);
}

/**
* The maximum number of zones to return per RPC.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,14 @@ public Builder toBuilder() {
public static Builder builder() {
return new Builder();
}

@Override
public boolean equals(Object obj) {
return obj instanceof DnsOptions && baseEquals((DnsOptions) obj);
}

@Override
public int hashCode() {
return baseHashCode();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public Builder description(String description) {
}

@Override
public Builder nameServerSet(String nameServerSet) {
Builder nameServerSet(String nameServerSet) {
infoBuilder.nameServerSet(nameServerSet);
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public abstract static class Builder {
* servers that all host the same zones. Most users will not need to specify this value.
*/
abstract Builder nameServerSet(String nameServerSet);
// todo(mderka) add more to the doc when questions are answered by the service owner
// this should not be included in tooling as per the service owners

/**
* Sets a list of servers that hold the information about the zone. This information is provided
Expand Down Expand Up @@ -155,7 +155,7 @@ public Builder description(String description) {
}

@Override
public Builder nameServerSet(String nameServerSet) {
Builder nameServerSet(String nameServerSet) {
this.nameServerSet = checkNotNull(nameServerSet);
return this;
}
Expand Down Expand Up @@ -227,10 +227,10 @@ public String description() {
}

/**
* Returns the optionally specified set of DNS name servers that all host this zone.
* Returns the optionally specified set of DNS name servers that all host this zone. This value is
* set only for specific use cases and is left empty for vast majority of users.
*/
public String nameServerSet() {
// todo(mderka) update this doc after finding out more about this from the service owners
return nameServerSet;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,8 @@ public class DnsImplTest {
// Listing options
private static final Dns.ZoneListOption[] ZONE_LIST_OPTIONS = {
Dns.ZoneListOption.pageSize(MAX_SIZE), Dns.ZoneListOption.pageToken(PAGE_TOKEN),
Dns.ZoneListOption.fields(Dns.ZoneField.DESCRIPTION)};
Dns.ZoneListOption.fields(Dns.ZoneField.DESCRIPTION),
Dns.ZoneListOption.dnsName(DNS_NAME)};
private static final Dns.ChangeRequestListOption[] CHANGE_LIST_OPTIONS = {
Dns.ChangeRequestListOption.pageSize(MAX_SIZE),
Dns.ChangeRequestListOption.pageToken(PAGE_TOKEN),
Expand Down Expand Up @@ -330,6 +331,8 @@ public void testListZonesWithOptions() {
selector = (String) capturedOptions.getValue().get(ZONE_LIST_OPTIONS[2].rpcOption());
assertTrue(selector.contains(Dns.ZoneField.DESCRIPTION.selector()));
assertTrue(selector.contains(Dns.ZoneField.NAME.selector()));
selector = (String) capturedOptions.getValue().get(ZONE_LIST_OPTIONS[3].rpcOption());
assertEquals(DNS_NAME, selector);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public class DnsTest {

private static final Integer PAGE_SIZE = 20;
private static final String PAGE_TOKEN = "page token";
private static final String DNS_NAME = "www.example.com.";

@Test
public void testDnsRecordListOption() {
Expand Down Expand Up @@ -89,6 +90,10 @@ public void testZoneList() {
option = Dns.ZoneListOption.pageSize(PAGE_SIZE);
assertEquals(PAGE_SIZE, option.value());
assertEquals(DnsRpc.Option.PAGE_SIZE, option.rpcOption());
// dnsName filter
option = Dns.ZoneListOption.dnsName(DNS_NAME);
assertEquals(DNS_NAME, option.value());
assertEquals(DnsRpc.Option.DNS_NAME, option.rpcOption());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
/*
* Copyright 2016 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.google.gcloud.dns;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotSame;

import com.google.common.collect.ImmutableList;
import com.google.gcloud.RetryParams;

import org.junit.Test;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.concurrent.TimeUnit;

public class SerializationTest {

private static final ZoneInfo FULL_ZONE_INFO = Zone.builder("some zone name")
.creationTimeMillis(132L)
.description("some descriptions")
.dnsName("www.example.com")
.id("123333")
.nameServers(ImmutableList.of("server 1", "server 2"))
.nameServerSet("specificationstring")
.build();
private static final ZoneInfo PARTIAL_ZONE_INFO = Zone.builder("some zone name")
.build();
private static final ProjectInfo PARTIAL_PROJECT_INFO = ProjectInfo.builder().id("13").build();
private static final ProjectInfo FULL_PROJECT_INFO = ProjectInfo.builder()
.id("342")
.number(new BigInteger("2343245"))
.quota(new ProjectInfo.Quota(12, 13, 14, 15, 16, 17))
.build();
private static final Dns.ZoneListOption ZONE_LIST_OPTION =
Dns.ZoneListOption.dnsName("www.example.com.");
private static final Dns.DnsRecordListOption DNS_REOCRD_LIST_OPTION =
Dns.DnsRecordListOption.fields(Dns.DnsRecordField.TTL);
private static final Dns.ChangeRequestListOption CHANGE_REQUEST_LIST_OPTION =
Dns.ChangeRequestListOption.fields(Dns.ChangeRequestField.STATUS);
private static final Dns.ZoneOption ZONE_OPTION =
Dns.ZoneOption.fields(Dns.ZoneField.CREATION_TIME);
private static final Dns.ChangeRequestOption CHANGE_REQUEST_OPTION =
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.STATUS);
private static final Dns.ProjectOption PROJECT_OPTION =
Dns.ProjectOption.fields(Dns.ProjectField.QUOTA);
private static final DnsOptions OPTIONS = DnsOptions.builder()
.projectId("some-unnecessary-project-ID")
.retryParams(RetryParams.defaultInstance())
.build();
private static final Dns DNS = OPTIONS.service();
private static final Zone FULL_ZONE = new Zone(DNS, new ZoneInfo.BuilderImpl(FULL_ZONE_INFO));
private static final Zone PARTIAL_ZONE =
new Zone(DNS, new ZoneInfo.BuilderImpl(PARTIAL_ZONE_INFO));
private static final ChangeRequest CHANGE_REQUEST_PARTIAL = ChangeRequest.builder().build();
private static final DnsRecord DNS_RECORD_PARTIAL =
DnsRecord.builder("www.www.com", DnsRecord.Type.AAAA).build();
private static final DnsRecord DNS_RECORD_COMPLETE =
DnsRecord.builder("www.sadfa.com", DnsRecord.Type.A)
.ttl(12, TimeUnit.HOURS)
.addRecord("record")
.build();
private static final ChangeRequest CHANGE_REQUEST_COMPLETE = ChangeRequest.builder()
.add(DNS_RECORD_COMPLETE)
.delete(DNS_RECORD_PARTIAL)
.status(ChangeRequest.Status.PENDING)
.id("some id")
.startTimeMillis(132L)
.build();


@Test
public void testModelAndRequests() throws Exception {
Serializable[] objects = {FULL_ZONE_INFO, PARTIAL_ZONE_INFO, ZONE_LIST_OPTION,
DNS_REOCRD_LIST_OPTION, CHANGE_REQUEST_LIST_OPTION, ZONE_OPTION, CHANGE_REQUEST_OPTION,
PROJECT_OPTION, PARTIAL_PROJECT_INFO, FULL_PROJECT_INFO, OPTIONS, FULL_ZONE, PARTIAL_ZONE,
OPTIONS, CHANGE_REQUEST_PARTIAL, DNS_RECORD_PARTIAL, DNS_RECORD_COMPLETE,
CHANGE_REQUEST_COMPLETE};
for (Serializable obj : objects) {
Object copy = serializeAndDeserialize(obj);
assertEquals(obj, obj);
assertEquals(obj, copy);
assertNotSame(obj, copy);
assertEquals(copy, copy);
}
}

@SuppressWarnings("unchecked")
private <T> T serializeAndDeserialize(T obj) throws IOException, ClassNotFoundException {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
try (ObjectOutputStream output = new ObjectOutputStream(bytes)) {
output.writeObject(obj);
}
try (ObjectInputStream input =
new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray()))) {
return (T) input.readObject();
}
}
}

0 comments on commit db52e09

Please sign in to comment.