Skip to content

Commit

Permalink
Merge pull request #633 from mderka/rpc-default
Browse files Browse the repository at this point in the history
Adding a dnsName filter option for Zone listing and removes nameServerSet exposure
  • Loading branch information
mderka committed Feb 9, 2016
2 parents 86b4356 + db52e09 commit fa081ac
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 fa081ac

Please sign in to comment.