Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit af8eed9

Browse files
fix: ApiClientUtils.getDefaultTransport() should return a cached instance to an ApacheHttp2Transport (#1059)
* fix: `ApiClientUtils.getDefaultTransport()` should return cached instance to an `ApacheHttp2Transport` * fix: lint * reduce timeout time * fix: use new transport to trigger writeTimeout
1 parent 7bc8c12 commit af8eed9

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

‎src/main/java/com/google/firebase/internal/ApiClientUtils.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ public static JsonFactory getDefaultJsonFactory() {
8888
}
8989

9090
public static HttpTransport getDefaultTransport() {
91-
return new ApacheHttp2Transport();
91+
return TransportInstanceHolder.INSTANCE;
92+
}
93+
94+
private static class TransportInstanceHolder {
95+
static final HttpTransport INSTANCE = new ApacheHttp2Transport();
9296
}
9397
}

‎src/test/java/com/google/firebase/internal/ApacheHttp2TransportIT.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,9 +198,12 @@ public void testReadTimeoutAuthorizedPost() throws FirebaseException {
198198

199199
@Test(timeout = 10_000L)
200200
public void testWriteTimeoutAuthorizedGet() throws FirebaseException {
201+
// Use a fresh transport so that writeTimeout triggers while waiting for the transport to
202+
// be ready to receive data.
201203
app = FirebaseApp.initializeApp(FirebaseOptions.builder()
202204
.setCredentials(MOCK_CREDENTIALS)
203205
.setWriteTimeout(100)
206+
.setHttpTransport(new ApacheHttp2Transport())
204207
.build(), "test-app");
205208
ErrorHandlingHttpClient<FirebaseException> httpClient = getHttpClient(true, app);
206209
HttpRequestInfo request = HttpRequestInfo.buildGetRequest(GET_URL);
@@ -217,9 +220,12 @@ public void testWriteTimeoutAuthorizedGet() throws FirebaseException {
217220

218221
@Test(timeout = 10_000L)
219222
public void testWriteTimeoutAuthorizedPost() throws FirebaseException {
223+
// Use a fresh transport so that writeTimeout triggers while waiting for the transport to
224+
// be ready to receive data.
220225
app = FirebaseApp.initializeApp(FirebaseOptions.builder()
221226
.setCredentials(MOCK_CREDENTIALS)
222227
.setWriteTimeout(100)
228+
.setHttpTransport(new ApacheHttp2Transport())
223229
.build(), "test-app");
224230
ErrorHandlingHttpClient<FirebaseException> httpClient = getHttpClient(true, app);
225231
HttpRequestInfo request = HttpRequestInfo.buildJsonPostRequest(POST_URL, payload);
@@ -292,6 +298,21 @@ public void testVerifyProxyIsRespected() {
292298
}
293299
}
294300

301+
@Test
302+
public void testVerifyDefaultTransportReused() {
303+
FirebaseOptions o1 = FirebaseOptions.builder()
304+
.setCredentials(MOCK_CREDENTIALS)
305+
.build();
306+
307+
FirebaseOptions o2 = FirebaseOptions.builder()
308+
.setCredentials(MOCK_CREDENTIALS)
309+
.build();
310+
311+
HttpTransport t1 = o1.getHttpTransport();
312+
HttpTransport t2 = o2.getHttpTransport();
313+
assertEquals(t1, t2);
314+
}
315+
295316
private static ErrorHandlingHttpClient<FirebaseException> getHttpClient(boolean authorized,
296317
FirebaseApp app) {
297318
HttpRequestFactory requestFactory;

‎src/test/java/com/google/firebase/internal/ApiClientUtilsTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.google.api.client.http.HttpRequest;
2626
import com.google.api.client.http.HttpRequestFactory;
2727
import com.google.api.client.http.HttpResponse;
28+
import com.google.api.client.http.HttpTransport;
2829
import com.google.api.client.http.HttpUnsuccessfulResponseHandler;
2930
import com.google.api.client.testing.http.MockHttpTransport;
3031
import com.google.api.client.testing.http.MockLowLevelHttpResponse;
@@ -128,4 +129,12 @@ public void disconnect() throws IOException {
128129

129130
assertTrue(lowLevelResponse.isDisconnected());
130131
}
132+
133+
@Test
134+
public void testVerifyDefaultTransportReused() {
135+
HttpTransport t1 = ApiClientUtils.getDefaultTransport();
136+
HttpTransport t2 = ApiClientUtils.getDefaultTransport();
137+
assertEquals(t1, t2);
138+
}
139+
131140
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /