@@ -96,14 +96,14 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
9696
9797 // Invoke method with specific test data.
9898 // Expectation: No request returned.
99- List unsentRequests = request .getUnsentRequests ();
99+ List unsentRequests = request .getUnsentRequests (1.0 );
100100 assertNotNull (unsentRequests );
101101 assertEquals (0 , unsentRequests .size ());
102102
103103 // Regular start request.
104104 // Expectation: One request returned.
105105 request .sendEventually ();
106- unsentRequests = request .getUnsentRequests ();
106+ unsentRequests = request .getUnsentRequests (1.0 );
107107 assertNotNull (unsentRequests );
108108 assertEquals (1 , unsentRequests .size ());
109109 Request .deleteSentRequests (unsentRequests .size ());
@@ -118,7 +118,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
118118 put (Constants .Params .BACKGROUND , Boolean .toString (false ));
119119 put ("fg" , "2" );
120120 }}).sendEventually ();
121- unsentRequests = request .getUnsentRequests ();
121+ unsentRequests = request .getUnsentRequests (1.0 );
122122 assertNotNull (unsentRequests );
123123 assertEquals (2 , unsentRequests .size ());
124124 Request .deleteSentRequests (unsentRequests .size ());
@@ -133,7 +133,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
133133 put (Constants .Params .BACKGROUND , Boolean .toString (false ));
134134 put ("fg" , "1" );
135135 }}).sendEventually ();
136- unsentRequests = request .getUnsentRequests ();
136+ unsentRequests = request .getUnsentRequests (1.0 );
137137 List unsentRequestsData =
138138 (List ) removeIrrelevantBackgroundStartRequests .invoke (Request .class , unsentRequests );
139139 assertNotNull (unsentRequestsData );
@@ -155,7 +155,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
155155 put (Constants .Params .BACKGROUND , Boolean .toString (false ));
156156 put ("fg" , "1" );
157157 }}).sendEventually ();
158- unsentRequests = request .getUnsentRequests ();
158+ unsentRequests = request .getUnsentRequests (1.0 );
159159
160160 assertNotNull (unsentRequests );
161161 unsentRequestsData =
@@ -178,7 +178,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
178178 put (Constants .Params .BACKGROUND , Boolean .toString (true ));
179179 put ("bg" , "2" );
180180 }}).sendEventually ();
181- unsentRequests = request .getUnsentRequests ();
181+ unsentRequests = request .getUnsentRequests (1.0 );
182182 assertNotNull (unsentRequests );
183183 unsentRequestsData =
184184 (List ) removeIrrelevantBackgroundStartRequests .invoke (Request .class , unsentRequests );
@@ -200,28 +200,77 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
200200 put (Constants .Params .BACKGROUND , Boolean .toString (true ));
201201 put ("bg" , "2" );
202202 }}).sendEventually ();
203- unsentRequests = request .getUnsentRequests ();
203+ unsentRequests = request .getUnsentRequests (1.0 );
204204 unsentRequestsData =
205205 (List ) removeIrrelevantBackgroundStartRequests .invoke (Request .class , unsentRequests );
206206 assertNotNull (unsentRequestsData );
207207 assertEquals (3 , unsentRequestsData .size ());
208208 Request .deleteSentRequests (unsentRequests .size ());
209209 LeanplumEventDataManagerTest .setDatabaseToNull ();
210210 }
211+
212+ @ Test
213+ public void testJsonEncodeUnsentRequestsWithExceptionLargeNumbers () throws NoSuchMethodException ,
214+ InvocationTargetException , IllegalAccessException {
215+ LeanplumEventDataManager .init (Leanplum .getContext ());
216+ Request .RequestsWithEncoding requestsWithEncoding ;
217+ // Prepare testable objects and method.
218+ Request request = spy (new Request ("POST" , Constants .Methods .START , null ));
219+ request .sendEventually ();
220+ for (int i = 0 ;i < 4999 ; i ++) {
221+ new Request ("POST" , Constants .Methods .START , null ).sendEventually ();
222+ }
223+ // Expectation: 10000 requests returned.
224+ requestsWithEncoding = request .getRequestsWithEncodedStringStoredRequests (1.0 );
225+
226+ assertNotNull (requestsWithEncoding .unsentRequests );
227+ assertEquals (5000 , requestsWithEncoding .unsentRequests .size ());
228+
229+ // Throw OOM on 5000 requests
230+ // Expectation: 2500 requests returned.
231+ when (request .getUnsentRequests (1.0 )).thenThrow (OutOfMemoryError .class );
232+ requestsWithEncoding = request .getRequestsWithEncodedStringStoredRequests (1.0 );
233+
234+ assertNotNull (requestsWithEncoding .unsentRequests );
235+ assertEquals (2500 , requestsWithEncoding .unsentRequests .size ());
236+
237+ // Throw OOM on 2500, 5000 requests
238+ // Expectation: 1250 requests returned.
239+ when (request .getUnsentRequests (0.5 )).thenThrow (OutOfMemoryError .class );
240+ requestsWithEncoding = request .getRequestsWithEncodedStringStoredRequests (1.0 );
241+
242+ assertNotNull (requestsWithEncoding .unsentRequests );
243+ assertEquals (1250 , requestsWithEncoding .unsentRequests .size ());
244+
245+ }
211246
212247 @ Test
213- public void testJsonEncodeUnsentRequests () {
248+ public void testJsonEncodeUnsentRequestsWithException () {
214249 List <Map <String , Object >> requests = mockRequests (2 , 2 );
215250
216251 Request realRequest = new Request ("POST" , Constants .Methods .START , null );
217252 Request request = spy (realRequest );
218- when (request .getUnsentRequests ()).thenReturn (requests );
253+ when (request .getUnsentRequests (1.0 )).thenThrow (OutOfMemoryError .class );
254+ when (request .getUnsentRequests (0.5 )).thenThrow (OutOfMemoryError .class );
255+ when (request .getUnsentRequests (0.25 )).thenReturn (requests );
219256
220- Request .RequestsWithEncoding requestsWithEncoding = request .getRequestsWithEncodedStringStoredRequests ();
257+ Request .RequestsWithEncoding requestsWithEncoding = request .getRequestsWithEncodedStringStoredRequests (1.0 );
221258
222259 assertEquals ("{\" data\" :[{\" 0\" :\" 0\" },{\" 0\" :\" 1\" },{\" 1\" :\" 0\" },{\" 1\" :\" 1\" }]}" , requestsWithEncoding .jsonEncodedString );
223260 }
224261
262+ @ Test
263+ public void testJsonEncodeUnsentRequests () {
264+ List <Map <String , Object >> requests = mockRequests (2 , 2 );
265+
266+ Request realRequest = new Request ("POST" , Constants .Methods .START , null );
267+ Request request = spy (realRequest );
268+ when (request .getUnsentRequests (1.0 )).thenReturn (requests );
269+
270+ Request .RequestsWithEncoding requestsWithEncoding = request .getRequestsWithEncodedStringStoredRequests (1.0 );
271+
272+ assertEquals ("{\" data\" :[{\" 0\" :\" 0\" },{\" 0\" :\" 1\" },{\" 1\" :\" 0\" },{\" 1\" :\" 1\" }]}" , requestsWithEncoding .jsonEncodedString );
273+ }
225274 @ Test
226275 public void testGetRequestsWithEncodedStringStoredRequests () {
227276 List <Map <String , Object >> requests = mockRequests (2 , 2 );
0 commit comments