Skip to content

Commit 8c5c077

Browse files
committed
Merge branch 'oom2' into oom3
2 parents a9507fe + 1413741 commit 8c5c077

File tree

3 files changed

+59
-24
lines changed

3 files changed

+59
-24
lines changed

AndroidSDKCore/src/main/java/com/leanplum/internal/Request.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ protected Void doInBackground(Void... params) {
481481
}
482482

483483

484-
private static class RequestsWithEncoding {
484+
static class RequestsWithEncoding {
485485
List<Map<String, Object>> unsentRequests;
486486
List<Map<String, Object>> requestsToSend;
487487
String jsonEncodedString;
@@ -510,7 +510,8 @@ private RequestsWithEncoding getRequestsWithEncodedStringForErrors() {
510510
return requestsWithEncoding;
511511
}
512512

513-
private RequestsWithEncoding getRequestsWithEncodedStringStoredRequests(double fraction) {
513+
514+
protected RequestsWithEncoding getRequestsWithEncodedStringStoredRequests(double fraction) {
514515
try {
515516
List<Map<String, Object>> unsentRequests;
516517
List<Map<String, Object>> requestsToSend;
@@ -651,11 +652,7 @@ static void deleteSentRequests(int requestsCount) {
651652
}
652653
}
653654

654-
private static List<Map<String, Object>> getUnsentRequests() {
655-
return getUnsentRequests(1.0);
656-
}
657-
658-
private static List<Map<String, Object>> getUnsentRequests(double fraction) {
655+
public List<Map<String, Object>> getUnsentRequests() {
659656
List<Map<String, Object>> requestData;
660657

661658
synchronized (Request.class) {
@@ -712,7 +709,7 @@ private static List<Map<String, Object>> removeIrrelevantBackgroundStartRequests
712709
return relevantRequests;
713710
}
714711

715-
private static String jsonEncodeUnsentRequests(List<Map<String, Object>> requestData) {
712+
protected static String jsonEncodeUnsentRequests(List<Map<String, Object>> requestData) {
716713
Map<String, Object> data = new HashMap<>();
717714
data.put(Constants.Params.DATA, requestData);
718715
return JsonConverter.toJson(data);

AndroidSDKTests/src/test/java/com/leanplum/LeanplumTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -398,14 +398,14 @@ public void testCrashes() throws Exception {
398398
LeanplumEventDataManager.init(Leanplum.getContext());
399399

400400
// Add two events to database.
401-
new Request("POST", Constants.Methods.GET_INBOX_MESSAGES, null).sendEventually();
402-
new Request("POST", Constants.Methods.LOG, null).sendEventually();
401+
Request request1 = new Request("POST", Constants.Methods.GET_INBOX_MESSAGES, null);
402+
Request request2 = new Request("POST", Constants.Methods.LOG, null);
403403

404+
request1.sendEventually();
405+
request2.sendEventually();
404406
// Get a number of events in the database.
405407
// Expectation: 2 events.
406-
Method getUnsentRequests = Request.class.getDeclaredMethod("getUnsentRequests");
407-
getUnsentRequests.setAccessible(true);
408-
List unsentRequests = (List) getUnsentRequests.invoke(Request.class);
408+
List unsentRequests = request1.getUnsentRequests();
409409
assertNotNull(unsentRequests);
410410
assertEquals(2, unsentRequests.size());
411411

@@ -427,7 +427,7 @@ public void testCrashes() throws Exception {
427427

428428
// Get a number of events in the database. Checks if ours two events still here.
429429
// Expectation: 2 events.
430-
unsentRequests = (List) getUnsentRequests.invoke(Request.class);
430+
unsentRequests = request1.getUnsentRequests();
431431
assertNotNull(unsentRequests);
432432
assertEquals(2, unsentRequests.size());
433433

@@ -444,7 +444,7 @@ public void onRequest(String httpMethod, String apiMethod, Map<String, Object> p
444444

445445
// Get a number of events in the database. Make sure we sent all events.
446446
// Expectation: 0 events.
447-
unsentRequests = (List) getUnsentRequests.invoke(Request.class);
447+
unsentRequests = request1.getUnsentRequests();
448448
assertNotNull(unsentRequests);
449449
assertEquals(0, unsentRequests.size());
450450

AndroidSDKTests/src/test/java/com/leanplum/internal/RequestTest.java

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,14 @@
3939

4040
import java.lang.reflect.InvocationTargetException;
4141
import java.lang.reflect.Method;
42+
import java.util.ArrayList;
4243
import java.util.HashMap;
4344
import java.util.List;
4445
import java.util.Map;
4546

47+
import static org.mockito.Mockito.spy;
48+
import static org.mockito.Mockito.when;
49+
4650
/**
4751
* @author Ben Marten
4852
*/
@@ -89,19 +93,17 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
8993
Method removeIrrelevantBackgroundStartRequests =
9094
Request.class.getDeclaredMethod("removeIrrelevantBackgroundStartRequests", List.class);
9195
removeIrrelevantBackgroundStartRequests.setAccessible(true);
92-
Method getUnsentRequests = Request.class.getDeclaredMethod("getUnsentRequests");
93-
getUnsentRequests.setAccessible(true);
9496

9597
// Invoke method with specific test data.
9698
// Expectation: No request returned.
97-
List unsentRequests = (List) getUnsentRequests.invoke(Request.class);
99+
List unsentRequests = request.getUnsentRequests();
98100
assertNotNull(unsentRequests);
99101
assertEquals(0, unsentRequests.size());
100102

101103
// Regular start request.
102104
// Expectation: One request returned.
103105
request.sendEventually();
104-
unsentRequests = (List) getUnsentRequests.invoke(Request.class);
106+
unsentRequests = request.getUnsentRequests();
105107
assertNotNull(unsentRequests);
106108
assertEquals(1, unsentRequests.size());
107109
Request.deleteSentRequests(unsentRequests.size());
@@ -116,7 +118,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
116118
put(Constants.Params.BACKGROUND, Boolean.toString(false));
117119
put("fg", "2");
118120
}}).sendEventually();
119-
unsentRequests = (List) getUnsentRequests.invoke(Request.class);
121+
unsentRequests = request.getUnsentRequests();
120122
assertNotNull(unsentRequests);
121123
assertEquals(2, unsentRequests.size());
122124
Request.deleteSentRequests(unsentRequests.size());
@@ -131,7 +133,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
131133
put(Constants.Params.BACKGROUND, Boolean.toString(false));
132134
put("fg", "1");
133135
}}).sendEventually();
134-
unsentRequests = (List) getUnsentRequests.invoke(Request.class);
136+
unsentRequests = request.getUnsentRequests();
135137
List unsentRequestsData =
136138
(List) removeIrrelevantBackgroundStartRequests.invoke(Request.class, unsentRequests);
137139
assertNotNull(unsentRequestsData);
@@ -153,7 +155,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
153155
put(Constants.Params.BACKGROUND, Boolean.toString(false));
154156
put("fg", "1");
155157
}}).sendEventually();
156-
unsentRequests = (List) getUnsentRequests.invoke(Request.class);
158+
unsentRequests = request.getUnsentRequests();
157159

158160
assertNotNull(unsentRequests);
159161
unsentRequestsData =
@@ -176,7 +178,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
176178
put(Constants.Params.BACKGROUND, Boolean.toString(true));
177179
put("bg", "2");
178180
}}).sendEventually();
179-
unsentRequests = (List) getUnsentRequests.invoke(Request.class);
181+
unsentRequests = request.getUnsentRequests();
180182
assertNotNull(unsentRequests);
181183
unsentRequestsData =
182184
(List) removeIrrelevantBackgroundStartRequests.invoke(Request.class, unsentRequests);
@@ -198,12 +200,48 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
198200
put(Constants.Params.BACKGROUND, Boolean.toString(true));
199201
put("bg", "2");
200202
}}).sendEventually();
201-
unsentRequests = (List) getUnsentRequests.invoke(Request.class);
203+
unsentRequests = request.getUnsentRequests();
202204
unsentRequestsData =
203205
(List) removeIrrelevantBackgroundStartRequests.invoke(Request.class, unsentRequests);
204206
assertNotNull(unsentRequestsData);
205207
assertEquals(3, unsentRequestsData.size());
206208
Request.deleteSentRequests(unsentRequests.size());
207209
LeanplumEventDataManagerTest.setDatabaseToNull();
208210
}
211+
212+
@Test
213+
public void testJsonEncodeUnsentRequests() {
214+
List<Map<String, Object>> requests = mockRequests(2, 2);
215+
216+
Request realRequest = new Request("POST", Constants.Methods.START, null);
217+
Request request = spy(realRequest);
218+
when(request.getUnsentRequests()).thenReturn(requests);
219+
220+
Request.RequestsWithEncoding requestsWithEncoding = request.getRequestsWithEncodedStringStoredRequests();
221+
222+
assertEquals("{\"data\":[{\"0\":\"0\"},{\"0\":\"1\"},{\"1\":\"0\"},{\"1\":\"1\"}]}", requestsWithEncoding.jsonEncodedString);
223+
}
224+
225+
@Test
226+
public void testGetRequestsWithEncodedStringStoredRequests() {
227+
List<Map<String, Object>> requests = mockRequests(2, 2);
228+
String json = Request.jsonEncodeUnsentRequests(requests);
229+
String expectedJson = "{\"data\":[{\"0\":\"0\"},{\"0\":\"1\"},{\"1\":\"0\"},{\"1\":\"1\"}]}";
230+
assertEquals(json, expectedJson);
231+
}
232+
233+
private List<Map<String, Object>> mockRequests(int listSize, int requestSize) {
234+
List<Map<String, Object>> requests = new ArrayList<>();
235+
236+
for (int i=0; i < listSize; i++) {
237+
238+
for (int j=0; j < requestSize; j++) {
239+
Map<String, Object> request = new HashMap<String, Object>();
240+
request.put(Integer.toString(i), Integer.toString(j));
241+
requests.add(request);
242+
}
243+
}
244+
return requests;
245+
}
246+
209247
}

0 commit comments

Comments
 (0)