Skip to content

Commit 05bede1

Browse files
committed
---
yaml --- r: 1785 b: refs/heads/master c: 967c5c5 h: refs/heads/master i: 1783: 4f36259
1 parent ee023c1 commit 05bede1

9 files changed

Lines changed: 102 additions & 49 deletions

File tree

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 8ae8a1b160bbbd1e18bedf2a35d014449397ec3e
2+
refs/heads/master: 967c5c5a20f39ce232e415b371e7b3a038e453fa
33
refs/heads/travis: e21ee7b88a5edc3f3d8c71f90c3fc32abf7e8dd6
44
refs/heads/gh-pages: d1b373c30c176edc08692348167bec3a244bb823
55
refs/heads/bigquery: 762fa5830e6c398c0396177e3e7fd243bd62cfc3

trunk/gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/SerializationTest.java

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,10 @@
1616

1717
package com.google.gcloud.bigquery;
1818

19-
import static org.junit.Assert.assertEquals;
20-
2119
import com.google.common.collect.ImmutableList;
2220
import com.google.common.collect.ImmutableMap;
2321
import com.google.gcloud.AuthCredentials;
2422
import com.google.gcloud.BaseSerializationTest;
25-
import com.google.gcloud.RestorableState;
26-
import com.google.gcloud.RetryParams;
27-
import com.google.gcloud.WriteChannel;
2823
import com.google.gcloud.bigquery.StandardTableDefinition.StreamingBuffer;
2924

3025
import org.junit.Test;
@@ -235,7 +230,6 @@ public Serializable[] serializableObjects() {
235230
.build();
236231
BigQueryOptions otherOptions = options.toBuilder()
237232
.projectId("p2")
238-
.retryParams(RetryParams.defaultInstance())
239233
.authCredentials(null)
240234
.build();
241235
return new Serializable[]{DOMAIN_ACCESS, GROUP_ACCESS, USER_ACCESS, VIEW_ACCESS, DATASET_ID,
@@ -254,18 +248,11 @@ public Serializable[] serializableObjects() {
254248

255249
@Test
256250
public void testWriteChannelState() throws IOException, ClassNotFoundException {
257-
BigQueryOptions options = BigQueryOptions.builder()
258-
.projectId("p2")
259-
.retryParams(RetryParams.defaultInstance())
260-
.build();
251+
BigQueryOptions options = BigQueryOptions.builder().projectId("p2").build();
261252
// avoid closing when you don't want partial writes upon failure
262253
@SuppressWarnings("resource")
263254
TableDataWriteChannel writer =
264255
new TableDataWriteChannel(options, LOAD_CONFIGURATION, "upload-id");
265-
RestorableState<WriteChannel> state = writer.capture();
266-
RestorableState<WriteChannel> deserializedState = serializeAndDeserialize(state);
267-
assertEquals(state, deserializedState);
268-
assertEquals(state.hashCode(), deserializedState.hashCode());
269-
assertEquals(state.toString(), deserializedState.toString());
256+
assertRestorable(writer);
270257
}
271258
}

trunk/gcloud-java-core/src/main/java/com/google/gcloud/AuthCredentials.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,16 @@ private static class NoAuthCredentialsState
276276
public AuthCredentials restore() {
277277
return INSTANCE;
278278
}
279+
280+
@Override
281+
public int hashCode() {
282+
return getClass().getName().hashCode();
283+
}
284+
285+
@Override
286+
public boolean equals(Object obj) {
287+
return obj instanceof NoAuthCredentialsState;
288+
}
279289
}
280290

281291
@Override

trunk/gcloud-java-core/src/main/java/com/google/gcloud/ExceptionHandler.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import java.io.Serializable;
2828
import java.lang.reflect.Method;
29+
import java.util.Objects;
2930
import java.util.Set;
3031
import java.util.concurrent.Callable;
3132

@@ -259,6 +260,27 @@ boolean shouldRetry(Exception ex) {
259260
return retryResult == Interceptor.RetryResult.RETRY;
260261
}
261262

263+
@Override
264+
public int hashCode() {
265+
return Objects.hash(interceptors, retriableExceptions, nonRetriableExceptions, retryInfo);
266+
}
267+
268+
@Override
269+
public boolean equals(Object obj) {
270+
if (obj == this) {
271+
return true;
272+
}
273+
if (!(obj instanceof ExceptionHandler)) {
274+
return false;
275+
}
276+
ExceptionHandler other = (ExceptionHandler) obj;
277+
return Objects.equals(interceptors, other.interceptors)
278+
&& Objects.equals(retriableExceptions, other.retriableExceptions)
279+
&& Objects.equals(nonRetriableExceptions, other.nonRetriableExceptions)
280+
&& Objects.equals(retryInfo, other.retryInfo);
281+
282+
}
283+
262284
/**
263285
* Returns an instance which retry any checked exception and abort on any runtime exception.
264286
*/

trunk/gcloud-java-core/src/test/java/com/google/gcloud/BaseSerializationTest.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
*/
3535
public abstract class BaseSerializationTest {
3636

37+
/**
38+
* Returns all objects for which correct serialization must be tested.
39+
*/
3740
public abstract Serializable[] serializableObjects();
3841

3942
@Test
@@ -50,8 +53,7 @@ public void testSerializableObjects() throws Exception {
5053
}
5154

5255
@SuppressWarnings("unchecked")
53-
public <T> T serializeAndDeserialize(T obj)
54-
throws IOException, ClassNotFoundException {
56+
public <T> T serializeAndDeserialize(T obj) throws IOException, ClassNotFoundException {
5557
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
5658
try (ObjectOutputStream output = new ObjectOutputStream(bytes)) {
5759
output.writeObject(obj);
@@ -61,4 +63,17 @@ public <T> T serializeAndDeserialize(T obj)
6163
return (T) input.readObject();
6264
}
6365
}
66+
67+
/**
68+
* Checks whether the state of a restorable object can correctly be captured, serialized and
69+
* restored.
70+
*/
71+
public void assertRestorable(Restorable<?> restorable) throws IOException,
72+
ClassNotFoundException {
73+
RestorableState<?> state = restorable.capture();
74+
RestorableState<?> deserializedState = serializeAndDeserialize(state);
75+
assertEquals(state, deserializedState);
76+
assertEquals(state.hashCode(), deserializedState.hashCode());
77+
assertEquals(state.toString(), deserializedState.toString());
78+
}
6479
}

trunk/gcloud-java-core/src/test/java/com/google/gcloud/SerializationTest.java

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,60 @@
1818

1919
import com.google.common.collect.ImmutableList;
2020

21+
import org.junit.Test;
22+
23+
import java.io.ByteArrayInputStream;
24+
import java.io.IOException;
2125
import java.io.Serializable;
2226

2327
public class SerializationTest extends BaseSerializationTest {
2428

29+
private static final ExceptionHandler EXCEPTION_HANDLER = ExceptionHandler.defaultInstance();
30+
private static final Identity IDENTITY = Identity.allAuthenticatedUsers();
2531
private static final PageImpl<String> PAGE =
2632
new PageImpl<>(null, "cursor", ImmutableList.of("string1", "string2"));
2733
private static final RetryParams RETRY_PARAMS = RetryParams.defaultInstance();
34+
private static final String JSON_KEY = "{\n"
35+
+ " \"private_key_id\": \"somekeyid\",\n"
36+
+ " \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggS"
37+
+ "kAgEAAoIBAQC+K2hSuFpAdrJI\\nnCgcDz2M7t7bjdlsadsasad+fvRSW6TjNQZ3p5LLQY1kSZRqBqylRkzteMOyHg"
38+
+ "aR\\n0Pmxh3ILCND5men43j3h4eDbrhQBuxfEMalkG92sL+PNQSETY2tnvXryOvmBRwa/\\nQP/9dJfIkIDJ9Fw9N4"
39+
+ "Bhhhp6mCcRpdQjV38H7JsyJ7lih/oNjECgYAt\\nknddadwkwewcVxHFhcZJO+XWf6ofLUXpRwiTZakGMn8EE1uVa2"
40+
+ "LgczOjwWHGi99MFjxSer5m9\\n1tCa3/KEGKiS/YL71JvjwX3mb+cewlkcmweBKZHM2JPTk0ZednFSpVZMtycjkbLa"
41+
+ "\\ndYOS8V85AgMBewECggEBAKksaldajfDZDV6nGqbFjMiizAKJolr/M3OQw16K6o3/\\n0S31xIe3sSlgW0+UbYlF"
42+
+ "4U8KifhManD1apVSC3csafaspP4RZUHFhtBywLO9pR5c\\nr6S5aLp+gPWFyIp1pfXbWGvc5VY/v9x7ya1VEa6rXvL"
43+
+ "sKupSeWAW4tMj3eo/64ge\\nsdaceaLYw52KeBYiT6+vpsnYrEkAHO1fF/LavbLLOFJmFTMxmsNaG0tuiJHgjshB\\"
44+
+ "n82DpMCbXG9YcCgI/DbzuIjsdj2JC1cascSP//3PmefWysucBQe7Jryb6NQtASmnv\\nCdDw/0jmZTEjpe4S1lxfHp"
45+
+ "lAhHFtdgYTvyYtaLZiVVkCgYEA8eVpof2rceecw/I6\\n5ng1q3Hl2usdWV/4mZMvR0fOemacLLfocX6IYxT1zA1FF"
46+
+ "JlbXSRsJMf/Qq39mOR2\\nSpW+hr4jCoHeRVYLgsbggtrevGmILAlNoqCMpGZ6vDmJpq6ECV9olliDvpPgWOP+\\nm"
47+
+ "YPDreFBGxWvQrADNbRt2dmGsrsCgYEAyUHqB2wvJHFqdmeBsaacewzV8x9WgmeX\\ngUIi9REwXlGDW0Mz50dxpxcK"
48+
+ "CAYn65+7TCnY5O/jmL0VRxU1J2mSWyWTo1C+17L0\\n3fUqjxL1pkefwecxwecvC+gFFYdJ4CQ/MHHXU81Lwl1iWdF"
49+
+ "Cd2UoGddYaOF+KNeM\\nHC7cmqra+JsCgYEAlUNywzq8nUg7282E+uICfCB0LfwejuymR93CtsFgb7cRd6ak\\nECR"
50+
+ "8FGfCpH8ruWJINllbQfcHVCX47ndLZwqv3oVFKh6pAS/vVI4dpOepP8++7y1u\\ncoOvtreXCX6XqfrWDtKIvv0vjl"
51+
+ "HBhhhp6mCcRpdQjV38H7JsyJ7lih/oNjECgYAt\\nkndj5uNl5SiuVxHFhcZJO+XWf6ofLUregtevZakGMn8EE1uVa"
52+
+ "2AY7eafmoU/nZPT\\n00YB0TBATdCbn/nBSuKDESkhSg9s2GEKQZG5hBmL5uCMfo09z3SfxZIhJdlerreP\\nJ7gSi"
53+
+ "dI12N+EZxYd4xIJh/HFDgp7RRO87f+WJkofMQKBgGTnClK1VMaCRbJZPriw\\nEfeFCoOX75MxKwXs6xgrw4W//AYG"
54+
+ "GUjDt83lD6AZP6tws7gJ2IwY/qP7+lyhjEqN\\nHtfPZRGFkGZsdaksdlaksd323423d+15/UvrlRSFPNj1tWQmNKk"
55+
+ "XyRDW4IG1Oa2p\\nrALStNBx5Y9t0/LQnFI4w3aG\\n-----END PRIVATE KEY-----\\n\",\n"
56+
+ " \"client_email\": \"[email protected]\",\n"
57+
+ " \"client_id\": \"someclientid.apps.googleusercontent.com\",\n"
58+
+ " \"type\": \"service_account\"\n"
59+
+ "}";
2860

2961
@Override
3062
public Serializable[] serializableObjects() {
31-
return new Serializable[]{PAGE, RETRY_PARAMS};
63+
return new Serializable[]{EXCEPTION_HANDLER, IDENTITY, PAGE, RETRY_PARAMS};
64+
}
65+
66+
@Test
67+
public void testAuthCredentialState() throws IOException, ClassNotFoundException {
68+
AuthCredentials credentials = AuthCredentials.createApplicationDefaults();
69+
assertRestorable(credentials);
70+
credentials = AuthCredentials.createForAppEngine();
71+
assertRestorable(credentials);
72+
credentials = AuthCredentials.noAuth();
73+
assertRestorable(credentials);
74+
credentials = AuthCredentials.createForJson(new ByteArrayInputStream(JSON_KEY.getBytes()));
75+
assertRestorable(credentials);
3276
}
3377
}

trunk/gcloud-java-datastore/src/test/java/com/google/gcloud/datastore/SerializationTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import com.google.api.services.datastore.DatastoreV1;
2222
import com.google.gcloud.AuthCredentials;
2323
import com.google.gcloud.BaseSerializationTest;
24-
import com.google.gcloud.RetryParams;
2524
import com.google.gcloud.datastore.StructuredQuery.CompositeFilter;
2625
import com.google.gcloud.datastore.StructuredQuery.OrderBy;
2726
import com.google.gcloud.datastore.StructuredQuery.Projection;
@@ -112,7 +111,6 @@ public java.io.Serializable[] serializableObjects() {
112111
.build();
113112
DatastoreOptions otherOptions = options.toBuilder()
114113
.namespace("ns1")
115-
.retryParams(RetryParams.defaultInstance())
116114
.authCredentials(null)
117115
.force(true)
118116
.build();

trunk/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/SerializationTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@
1818

1919
import com.google.common.collect.ImmutableMap;
2020
import com.google.common.collect.ImmutableSet;
21-
import com.google.gcloud.Identity;
2221
import com.google.gcloud.BaseSerializationTest;
22+
import com.google.gcloud.Identity;
2323
import com.google.gcloud.PageImpl;
24-
import com.google.gcloud.RetryParams;
2524

2625
import java.io.Serializable;
2726
import java.util.Collections;
@@ -55,7 +54,6 @@ public Serializable[] serializableObjects() {
5554
ResourceManagerOptions options = ResourceManagerOptions.builder().build();
5655
ResourceManagerOptions otherOptions = options.toBuilder()
5756
.projectId("some-unnecessary-project-ID")
58-
.retryParams(RetryParams.defaultInstance())
5957
.build();
6058
return new Serializable[]{PARTIAL_PROJECT_INFO, FULL_PROJECT_INFO, PROJECT, PAGE_RESULT,
6159
PROJECT_GET_OPTION, PROJECT_LIST_OPTION, POLICY, options, otherOptions};

trunk/gcloud-java-storage/src/test/java/com/google/gcloud/storage/SerializationTest.java

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,11 @@
1616

1717
package com.google.gcloud.storage;
1818

19-
import static org.junit.Assert.assertEquals;
20-
2119
import com.google.common.collect.ImmutableMap;
2220
import com.google.gcloud.AuthCredentials;
2321
import com.google.gcloud.BaseSerializationTest;
2422
import com.google.gcloud.PageImpl;
2523
import com.google.gcloud.ReadChannel;
26-
import com.google.gcloud.RestorableState;
27-
import com.google.gcloud.RetryParams;
28-
import com.google.gcloud.WriteChannel;
2924
import com.google.gcloud.storage.Acl.Project.ProjectRole;
3025
import com.google.gcloud.storage.spi.StorageRpc;
3126

@@ -81,7 +76,6 @@ public Serializable[] serializableObjects() {
8176
.build();
8277
StorageOptions otherOptions = options.toBuilder()
8378
.projectId("p2")
84-
.retryParams(RetryParams.defaultInstance())
8579
.authCredentials(null)
8680
.build();
8781
return new Serializable[]{ACL_DOMAIN, ACL_GROUP, ACL_PROJECT_, ACL_USER, ACL_RAW, ACL,
@@ -92,34 +86,19 @@ public Serializable[] serializableObjects() {
9286

9387
@Test
9488
public void testReadChannelState() throws IOException, ClassNotFoundException {
95-
StorageOptions options = StorageOptions.builder()
96-
.projectId("p2")
97-
.retryParams(RetryParams.defaultInstance())
98-
.build();
89+
StorageOptions options = StorageOptions.builder().projectId("p2").build();
9990
ReadChannel reader =
10091
new BlobReadChannel(options, BlobId.of("b", "n"), EMPTY_RPC_OPTIONS);
101-
RestorableState<ReadChannel> state = reader.capture();
102-
RestorableState<ReadChannel> deserializedState = serializeAndDeserialize(state);
103-
assertEquals(state, deserializedState);
104-
assertEquals(state.hashCode(), deserializedState.hashCode());
105-
assertEquals(state.toString(), deserializedState.toString());
106-
reader.close();
92+
assertRestorable(reader);
10793
}
10894

10995
@Test
11096
public void testWriteChannelState() throws IOException, ClassNotFoundException {
111-
StorageOptions options = StorageOptions.builder()
112-
.projectId("p2")
113-
.retryParams(RetryParams.defaultInstance())
114-
.build();
97+
StorageOptions options = StorageOptions.builder().projectId("p2").build();
11598
// avoid closing when you don't want partial writes to GCS upon failure
11699
@SuppressWarnings("resource")
117100
BlobWriteChannel writer =
118101
new BlobWriteChannel(options, BlobInfo.builder(BlobId.of("b", "n")).build(), "upload-id");
119-
RestorableState<WriteChannel> state = writer.capture();
120-
RestorableState<WriteChannel> deserializedState = serializeAndDeserialize(state);
121-
assertEquals(state, deserializedState);
122-
assertEquals(state.hashCode(), deserializedState.hashCode());
123-
assertEquals(state.toString(), deserializedState.toString());
102+
assertRestorable(writer);
124103
}
125104
}

0 commit comments

Comments
 (0)