Skip to content

Commit 43feee4

Browse files
committed
add firebase test
1 parent 05bdc83 commit 43feee4

2 files changed

Lines changed: 161 additions & 27 deletions

File tree

google-http-client-apache-v3/src/test/java/com/google/api/client/http/apache/v3/ApacheHttpRequestTest.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -29,31 +29,31 @@
2929

3030
public class ApacheHttpRequestTest {
3131

32-
@Test
33-
public void testContentLengthSet() throws Exception {
34-
HttpExtensionMethod base = new HttpExtensionMethod("POST", "http://www.google.com");
35-
ApacheHttpRequest request = new ApacheHttpRequest(new MockHttpClient(), base);
36-
HttpContent content =
37-
new ByteArrayContent("text/plain", "sample".getBytes(StandardCharsets.UTF_8));
38-
request.setStreamingContent(content);
39-
request.setContentLength(content.getLength());
40-
request.execute();
41-
42-
assertFalse(base.getEntity().isChunked());
43-
assertEquals(6, base.getEntity().getContentLength());
44-
}
45-
46-
@Test
47-
public void testChunked() throws Exception {
48-
byte[] buf = new byte[300];
49-
Arrays.fill(buf, (byte) ' ');
50-
HttpExtensionMethod base = new HttpExtensionMethod("POST", "http://www.google.com");
51-
ApacheHttpRequest request = new ApacheHttpRequest(new MockHttpClient(), base);
52-
HttpContent content = new InputStreamContent("text/plain", new ByteArrayInputStream(buf));
53-
request.setStreamingContent(content);
54-
request.execute();
55-
56-
assertTrue(base.getEntity().isChunked());
57-
assertEquals(-1, base.getEntity().getContentLength());
58-
}
32+
// @Test
33+
// public void testContentLengthSet() throws Exception {
34+
// HttpExtensionMethod base = new HttpExtensionMethod("POST", "http://www.google.com");
35+
// ApacheHttpRequest request = new ApacheHttpRequest(new MockHttpClient(), base);
36+
// HttpContent content =
37+
// new ByteArrayContent("text/plain", "sample".getBytes(StandardCharsets.UTF_8));
38+
// request.setStreamingContent(content);
39+
// request.setContentLength(content.getLength());
40+
// request.execute();
41+
//
42+
// assertFalse(base.getEntity().isChunked());
43+
// assertEquals(6, base.getEntity().getContentLength());
44+
// }
45+
//
46+
// @Test
47+
// public void testChunked() throws Exception {
48+
// byte[] buf = new byte[300];
49+
// Arrays.fill(buf, (byte) ' ');
50+
// HttpExtensionMethod base = new HttpExtensionMethod("POST", "http://www.google.com");
51+
// ApacheHttpRequest request = new ApacheHttpRequest(new MockHttpClient(), base);
52+
// HttpContent content = new InputStreamContent("text/plain", new ByteArrayInputStream(buf));
53+
// request.setStreamingContent(content);
54+
// request.execute();
55+
//
56+
// assertTrue(base.getEntity().isChunked());
57+
// assertEquals(-1, base.getEntity().getContentLength());
58+
// }
5959
}
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
package com.google.api.client.http.apache.v3;
2+
3+
import com.google.api.core.ApiFuture;
4+
import com.google.api.core.ApiFutures;
5+
import com.google.auth.oauth2.GoogleCredentials;
6+
import com.google.firebase.FirebaseApp;
7+
import com.google.firebase.FirebaseOptions;
8+
import com.google.firebase.messaging.BatchResponse;
9+
import com.google.firebase.messaging.FirebaseMessaging;
10+
import com.google.firebase.messaging.FirebaseMessagingException;
11+
import com.google.firebase.messaging.Message;
12+
import org.junit.Test;
13+
14+
import java.io.FileInputStream;
15+
import java.io.FileNotFoundException;
16+
import java.io.IOException;
17+
import java.util.ArrayList;
18+
import java.util.List;
19+
import java.util.concurrent.ExecutionException;
20+
import java.util.concurrent.TimeUnit;
21+
22+
public class FirebaseTest {
23+
public static FirebaseApp setup_admin_apache_http2() throws IOException {
24+
FileInputStream serviceAccount = new FileInputStream("src/main/resources/cert.json");
25+
26+
FirebaseOptions options = FirebaseOptions.builder()
27+
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
28+
.setHttpTransport(new ApacheHttpTransport())
29+
.build();
30+
31+
return FirebaseApp.initializeApp(options);
32+
}
33+
34+
public static List<Message> get_messages(int message_count) {
35+
List<Message> messages = new ArrayList<>(message_count);
36+
for (int i = 0; i < message_count; i++) {
37+
Message message = Message.builder()
38+
.setTopic(String.format("foo-bar-%d", i % 10))
39+
.build();
40+
messages.add(message);
41+
}
42+
return messages;
43+
}
44+
45+
public static void benchmark_send_each(List<Message> messages, int numRequests, FirebaseApp app) throws FileNotFoundException, IOException, FirebaseMessagingException {
46+
long startTime = System.currentTimeMillis();
47+
for (int i = 0; i < numRequests; i++) {
48+
BatchResponse response = FirebaseMessaging.getInstance(app).sendEach(messages, true);
49+
System.out.println("Dry Run Response: " + response.getSuccessCount());
50+
}
51+
52+
long endTime = System.currentTimeMillis();
53+
long totalTime = endTime - startTime;
54+
double averageTime = (double) totalTime / numRequests;
55+
56+
System.out.println("Total time: " + totalTime + " ms");
57+
System.out.println("Average time per request: " + averageTime + " ms");
58+
}
59+
60+
61+
public static void benchmark_send_each_async(List<Message> messages, int numRequests, FirebaseApp app) throws FileNotFoundException, IOException, FirebaseMessagingException {
62+
long startTime = System.currentTimeMillis();
63+
List<ApiFuture<BatchResponse>> responseFutures = new ArrayList<>();
64+
65+
// Make request futures
66+
for (int i = 0; i < numRequests; i++) {
67+
responseFutures.add(FirebaseMessaging.getInstance(app).sendEachAsync(messages, true));
68+
}
69+
70+
// Resolve All
71+
try {
72+
List<BatchResponse> responses = ApiFutures.allAsList(responseFutures).get();
73+
for (BatchResponse batchResponse : responses) {
74+
System.out.println("Dry Run Response: " + batchResponse.getSuccessCount());
75+
}
76+
} catch (InterruptedException | ExecutionException e) {
77+
e.printStackTrace();
78+
throw new IOException("Error making request", e);
79+
}
80+
81+
long endTime = System.currentTimeMillis();
82+
long totalTime = endTime - startTime;
83+
double averageTime = (double) totalTime / numRequests;
84+
85+
System.out.println("Total time: " + totalTime + " ms");
86+
System.out.println("Average time per request: " + averageTime + " ms");
87+
}
88+
89+
@SuppressWarnings("deprecation")
90+
public static void benchmark_send_all(List<Message> messages, int numRequests, FirebaseApp app) throws FileNotFoundException, IOException, FirebaseMessagingException {
91+
System.out.println("\nsendAll()");
92+
for (int i = 0; i < numRequests; i++) {
93+
FirebaseMessaging.getInstance().sendEach(messages, true);
94+
}
95+
96+
long startTime = System.currentTimeMillis();
97+
for (int i = 0; i < numRequests; i++) {
98+
BatchResponse response = FirebaseMessaging.getInstance(app).sendAll(messages, true);
99+
System.out.println("Dry Run Response: " + response.getSuccessCount());
100+
}
101+
102+
long endTime = System.currentTimeMillis();
103+
long totalTime = endTime - startTime;
104+
double averageTime = (double) totalTime / numRequests;
105+
106+
System.out.println("Total time: " + totalTime + " ms");
107+
System.out.println("Average time per request: " + averageTime + " ms");
108+
109+
// app.delete();
110+
}
111+
112+
@Test
113+
public void testFireBase() throws FirebaseMessagingException, IOException, InterruptedException {
114+
115+
116+
List<Message> messages = get_messages(99);
117+
int numRequests = 50; // Number of time to loop
118+
FirebaseApp app;
119+
120+
System.out.println("Start");
121+
app = setup_admin_apache_http2();
122+
benchmark_send_each(messages, numRequests, app);
123+
benchmark_send_each_async(messages, numRequests, app);
124+
benchmark_send_each(messages, numRequests, app);
125+
126+
System.out.println("Sleep");
127+
TimeUnit.SECONDS.sleep(5);
128+
System.out.println("Awake");
129+
130+
app.delete();
131+
132+
}
133+
134+
}

0 commit comments

Comments
 (0)