Skip to content

Commit 52567fd

Browse files
committed
Modified methods in ChangeRequest.
Added reload() and isDone() to change request. Also changed signature of applyTo().
1 parent 59cdf37 commit 52567fd

3 files changed

Lines changed: 67 additions & 13 deletions

File tree

gcloud-java-dns/src/main/java/com/google/gcloud/dns/ChangeRequest.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,34 @@ public Dns dns() {
148148
}
149149

150150
/**
151-
* Applies this change request to the associated zone.
151+
* Applies this change request to the zone identified by {@code zoneName}.
152152
*/
153-
public ChangeRequest applyTo(Dns.ChangeRequestOption... options) {
154-
return dns.applyChangeRequest(zone, this, options);
153+
public ChangeRequest applyTo(String zoneName, Dns.ChangeRequestOption... options) {
154+
return dns.applyChangeRequest(zoneName, this, options);
155+
}
156+
157+
/**
158+
* Retrieves the up-to-date information about the change request from Google Cloud DNS. Parameter
159+
* {@code options} can be used to restrict the fields to be updated in the same way as in {@link
160+
* Dns#getChangeRequest(String, String, Dns.ChangeRequestOption...)}. If {@code options} are
161+
* provided, any field other than generatedId which is not included in the {@code options} will be
162+
* {@code null} regardless whether they are initialized or not in {@code this} instance.
163+
*/
164+
public ChangeRequest reload(Dns.ChangeRequestOption... options) {
165+
return dns.getChangeRequest(zone, this.generatedId(), options);
166+
}
167+
168+
/**
169+
* Returns {@code true} if the change request has been completed. The function makes an API call
170+
* to Google Cloud DNS in order request the status update.
171+
*/
172+
public boolean isDone() {
173+
if (status() == Status.DONE) {
174+
return true;
175+
} else {
176+
ChangeRequest updated = reload(Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.STATUS));
177+
return updated.status() == Status.DONE;
178+
}
155179
}
156180

157181
@Override

gcloud-java-dns/src/test/java/com/google/gcloud/dns/ChangeRequestTest.java

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,26 @@ public class ChangeRequestTest {
4343

4444
private Dns dns;
4545
private ChangeRequest changeRequest;
46+
private ChangeRequest changeRequestPending;
4647
private ChangeRequest changeRequestPartial;
4748

4849
@Before
4950
public void setUp() throws Exception {
5051
dns = createStrictMock(Dns.class);
51-
expect(dns.options()).andReturn(OPTIONS).times(2);
52+
expect(dns.options()).andReturn(OPTIONS).times(3);
5253
replay(dns);
5354
changeRequest = new ChangeRequest(dns, ZONE_NAME, new ChangeRequestInfo.BuilderImpl(
5455
CHANGE_REQUEST_INFO.toBuilder()
5556
.startTimeMillis(132L)
5657
.generatedId("12")
5758
.status(ChangeRequest.Status.DONE)
5859
.build()));
60+
changeRequestPending = new ChangeRequest(dns, ZONE_NAME, new ChangeRequestInfo.BuilderImpl(
61+
CHANGE_REQUEST_INFO.toBuilder()
62+
.startTimeMillis(132L)
63+
.generatedId("12")
64+
.status(ChangeRequest.Status.PENDING)
65+
.build()));
5966
changeRequestPartial = new ChangeRequest(dns, ZONE_NAME,
6067
new ChangeRequest.BuilderImpl(CHANGE_REQUEST_INFO));
6168
reset(dns);
@@ -133,8 +140,34 @@ public void testApplyTo() {
133140
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.START_TIME)))
134141
.andReturn(changeRequest);
135142
replay(dns);
136-
assertSame(changeRequest, changeRequest.applyTo());
137-
assertSame(changeRequest,
138-
changeRequest.applyTo(Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.START_TIME)));
143+
assertSame(changeRequest, changeRequest.applyTo(ZONE_NAME));
144+
assertSame(changeRequest, changeRequest.applyTo(ZONE_NAME,
145+
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.START_TIME)));
146+
}
147+
148+
@Test
149+
public void testReload() {
150+
expect(dns.getChangeRequest(ZONE_NAME, changeRequest.generatedId())).andReturn(changeRequest);
151+
expect(dns.getChangeRequest(ZONE_NAME, changeRequest.generatedId(),
152+
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.START_TIME)))
153+
.andReturn(changeRequest);
154+
replay(dns);
155+
assertSame(changeRequest, changeRequest.reload());
156+
assertSame(changeRequest, changeRequest.reload(
157+
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.START_TIME)));
158+
}
159+
160+
@Test
161+
public void testIsDone() {
162+
replay(dns);
163+
assertTrue(changeRequest.isDone());
164+
verify(dns);
165+
reset(dns);
166+
expect(dns.getChangeRequest(ZONE_NAME, changeRequest.generatedId(),
167+
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.STATUS)))
168+
.andReturn(changeRequest);
169+
replay(dns);
170+
assertTrue(changeRequestPending.isDone());
171+
verify(dns);
139172
}
140173
}

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,9 @@ private static void assertEqChangesIgnoreStatus(ChangeRequest expected, ChangeRe
147147
}
148148

149149
private static void waitForChangeToComplete(String zoneName, String changeId) {
150-
while (true) {
151-
ChangeRequest changeRequest = DNS.getChangeRequest(zoneName, changeId,
152-
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.STATUS));
153-
if (ChangeRequest.Status.DONE.equals(changeRequest.status())) {
154-
return;
155-
}
150+
ChangeRequest changeRequest = DNS.getChangeRequest(zoneName, changeId,
151+
Dns.ChangeRequestOption.fields(Dns.ChangeRequestField.STATUS));
152+
while (!changeRequest.isDone()) {
156153
try {
157154
Thread.sleep(500);
158155
} catch (InterruptedException e) {

0 commit comments

Comments
 (0)