@@ -65,20 +65,17 @@ public class SplitsSyncHelperTest {
6565
6666 private SplitsSyncHelper mSplitsSyncHelper ;
6767
68- private final Map <String , Object > mDefaultParams = new HashMap <>();
69- private final Map <String , Object > mSecondFetchParams = new HashMap <>();
68+ private Map <String , Object > mDefaultParams = new HashMap <>();
69+ private Map <String , Object > mSecondFetchParams = new HashMap <>();
7070 private AutoCloseable mAutoCloseable ;
7171
7272 @ Before
7373 public void setup () {
7474 mAutoCloseable = MockitoAnnotations .openMocks (this );
7575 mDefaultParams .clear ();
76- mDefaultParams .put ("s" , "1.1" );
77- mDefaultParams .put ("since" , -1L );
78- mDefaultParams .put ("rbSince" , -1L );
79- mSecondFetchParams .clear ();
80- mSecondFetchParams .put ("since" , 1506703262916L );
81- mSecondFetchParams .put ("rbSince" , 262325L );
76+ mDefaultParams = getSinceParams (-1 , -1 );
77+ mSecondFetchParams = getSinceParams (1506703262916L , 262325L );
78+ when (mRuleBasedSegmentStorageProducer .getChangeNumber ()).thenReturn (-1L ).thenReturn (262325L );
8279 mSplitsSyncHelper = new SplitsSyncHelper (mSplitsFetcher , mSplitsStorage , mSplitChangeProcessor , mRuleBasedSegmentStorageProducer , mTelemetryRuntimeProducer , mBackoffCounter , "1.1" );
8380 loadSplitChanges ();
8481 }
@@ -96,11 +93,10 @@ public void tearDown() {
9693 public void correctSyncExecution () throws HttpFetcherException {
9794 // On correct execution without having clear param
9895 // should execute fetcher, update storage and avoid clearing splits cache
99- when (mSplitsFetcher .execute (mDefaultParams , null )).thenReturn (mTargetingRulesChange );
10096 SplitChange secondSplitChange = mTargetingRulesChange .getFeatureFlagsChange ();
10197 secondSplitChange .since = mTargetingRulesChange .getFeatureFlagsChange ().till ;
102- TargetingRulesChange value = TargetingRulesChange . create ( secondSplitChange , RuleBasedSegmentChange . create ( 262325L , 262325L , Collections . emptyList ()));
103- when ( mSplitsFetcher . execute ( mSecondFetchParams , null )). thenReturn ( value );
98+ when ( mSplitsFetcher . execute ( any (), any ()))
99+ . thenReturn ( TargetingRulesChange . create ( secondSplitChange , RuleBasedSegmentChange . create ( 262325L , 262325L , Collections . emptyList ())) );
104100 when (mSplitsStorage .getTill ()).thenReturn (-1L );
105101 when (mRuleBasedSegmentStorageProducer .getChangeNumber ()).thenReturn (-1L ).thenReturn (262325L );
106102
@@ -122,17 +118,17 @@ public void correctSyncExecutionNoCache() throws HttpFetcherException {
122118
123119 Map <String , String > headers = new HashMap <>();
124120 headers .put (SplitHttpHeadersBuilder .CACHE_CONTROL_HEADER , SplitHttpHeadersBuilder .CACHE_CONTROL_NO_CACHE );
125- when (mSplitsFetcher .execute (mDefaultParams , headers )).thenReturn (mTargetingRulesChange );
126- SplitChange secondSplitChange = mTargetingRulesChange .getFeatureFlagsChange (); // TODO
121+ SplitChange secondSplitChange = mTargetingRulesChange .getFeatureFlagsChange ();
127122 secondSplitChange .since = mTargetingRulesChange .getFeatureFlagsChange ().till ;
128- when (mSplitsFetcher .execute (mSecondFetchParams , null )).thenReturn (TargetingRulesChange .create (secondSplitChange ));
123+ when (mSplitsFetcher .execute (any (), any ()))
124+ .thenReturn (TargetingRulesChange .create (secondSplitChange , RuleBasedSegmentChange .create (262325L , 262325L , Collections .emptyList ())));
129125 when (mSplitsStorage .getTill ()).thenReturn (-1L );
130126
131127 SplitTaskExecutionInfo result = mSplitsSyncHelper .sync (new SplitsSyncHelper .SinceChangeNumbers (-1 , -1 ), ServiceConstants .ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES );
132128
133129 verify (mSplitsFetcher , times (1 )).execute (mDefaultParams , headers );
134130 verify (mSplitsStorage , times (1 )).update (any ());
135- verify (mSplitChangeProcessor , times (1 )).process (mTargetingRulesChange .getFeatureFlagsChange ()); // TODO
131+ verify (mSplitChangeProcessor , times (1 )).process (mTargetingRulesChange .getFeatureFlagsChange ());
136132 verify (mSplitsStorage , never ()).clear ();
137133 assertEquals (SplitTaskExecutionStatus .SUCCESS , result .getStatus ());
138134 }
@@ -148,7 +144,7 @@ public void fetcherSyncException() throws HttpFetcherException {
148144 verify (mSplitsFetcher , times (1 )).execute (mDefaultParams , null );
149145 verify (mSplitsStorage , never ()).update (any ());
150146 verify (mSplitsStorage , never ()).clear ();
151- verify (mSplitChangeProcessor , never ()).process (mTargetingRulesChange .getFeatureFlagsChange ()); // TODO
147+ verify (mSplitChangeProcessor , never ()).process (mTargetingRulesChange .getFeatureFlagsChange ());
152148 assertEquals (SplitTaskExecutionStatus .ERROR , result .getStatus ());
153149 }
154150
@@ -163,25 +159,25 @@ public void storageException() throws HttpFetcherException {
163159 verify (mSplitsFetcher , times (1 )).execute (mDefaultParams , null );
164160 verify (mSplitsStorage , times (1 )).update (any ());
165161 verify (mSplitsStorage , times (1 )).clear ();
166- verify (mSplitChangeProcessor , times (1 )).process (mTargetingRulesChange .getFeatureFlagsChange ()); // TODO
162+ verify (mSplitChangeProcessor , times (1 )).process (mTargetingRulesChange .getFeatureFlagsChange ());
167163
168164 assertEquals (SplitTaskExecutionStatus .ERROR , result .getStatus ());
169165 }
170166
171167 @ Test
172168 public void shouldClearStorageAfterFetch () throws HttpFetcherException {
173- when (mSplitsFetcher .execute (mDefaultParams , null )).thenReturn (mTargetingRulesChange );
174- SplitChange secondSplitChange = mTargetingRulesChange .getFeatureFlagsChange (); // TODO
169+ SplitChange secondSplitChange = mTargetingRulesChange .getFeatureFlagsChange ();
175170 secondSplitChange .since = mTargetingRulesChange .getFeatureFlagsChange ().till ;
176- when (mSplitsFetcher .execute (mSecondFetchParams , null )).thenReturn (TargetingRulesChange .create (secondSplitChange ));
171+ when (mSplitsFetcher .execute (any (), any ()))
172+ .thenReturn (TargetingRulesChange .create (secondSplitChange , RuleBasedSegmentChange .create (262325L , 262325L , Collections .emptyList ())));
177173 when (mSplitsStorage .getTill ()).thenReturn (-1L );
178174
179175 SplitTaskExecutionInfo result = mSplitsSyncHelper .sync (new SplitsSyncHelper .SinceChangeNumbers (-1 , -1 ), true , false , ServiceConstants .ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES );
180176
181177 verify (mSplitsFetcher , times (1 )).execute (mDefaultParams , null );
182178 verify (mSplitsStorage , times (1 )).update (any ());
183179 verify (mSplitsStorage , times (1 )).clear ();
184- verify (mSplitChangeProcessor , times (1 )).process (mTargetingRulesChange .getFeatureFlagsChange ()); // TODO
180+ verify (mSplitChangeProcessor , times (1 )).process (mTargetingRulesChange .getFeatureFlagsChange ());
185181
186182 assertEquals (SplitTaskExecutionStatus .SUCCESS , result .getStatus ());
187183 }
@@ -202,9 +198,9 @@ public void performSplitsFetchUntilSinceEqualsTill() throws HttpFetcherException
202198 TargetingRulesChange firstSplitChange = getSplitChange (-1 , 2 );
203199 TargetingRulesChange secondSplitChange = getSplitChange (2 , 3 );
204200 TargetingRulesChange thirdSplitChange = getSplitChange (3 , 3 );
205- Map <String , Object > firstParams = getSinceParams (-1L );
206- Map <String , Object > secondParams = getSinceParams (2L );
207- Map <String , Object > thirdParams = getSinceParams (3L );
201+ Map <String , Object > firstParams = getSinceParams (-1L , - 1L );
202+ Map <String , Object > secondParams = getSinceParams (2L , 262325L );
203+ Map <String , Object > thirdParams = getSinceParams (3L , 262325L );
208204
209205 when (mSplitsStorage .getTill ()).thenReturn (-1L , 2L , 3L );
210206
@@ -222,21 +218,20 @@ public void performSplitsFetchUntilSinceEqualsTill() throws HttpFetcherException
222218
223219 @ Test
224220 public void performSplitFetchUntilStoredChangeNumberIsGreaterThanRequested () throws HttpFetcherException {
225- SplitChange firstSplitChange = getSplitChange (-1 , 2 ).getFeatureFlagsChange ();
226- SplitChange secondSplitChange = getSplitChange (2 , 4 ).getFeatureFlagsChange ();
221+ TargetingRulesChange firstSplitChange = getSplitChange (-1 , 2 );
222+ TargetingRulesChange secondSplitChange = getSplitChange (2 , 4 );
223+ TargetingRulesChange thirdSplitChange = getSplitChange (4 , 4 );
227224 Map <String , Object > firstParams = getSinceParams (-1L );
228225 Map <String , Object > secondParams = getSinceParams (2L );
229226
230227 when (mSplitsStorage .getTill ()).thenReturn (-1L , 2L , 4L );
231228
232- when (mSplitsFetcher .execute (eq (firstParams ), any ())).thenReturn (TargetingRulesChange .create (firstSplitChange ));
233- when (mSplitsFetcher .execute (eq (secondParams ), any ())).thenReturn (TargetingRulesChange .create (secondSplitChange ));
229+ when (mSplitsFetcher .execute (any (), any ())).thenReturn (firstSplitChange ).thenReturn (secondSplitChange ).thenReturn (thirdSplitChange );
234230
235231 mSplitsSyncHelper .sync (new SplitsSyncHelper .SinceChangeNumbers (3 , -1 ), ServiceConstants .ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES );
236232
237233 verify (mSplitsStorage , times (3 )).getTill ();
238- verify (mSplitsFetcher ).execute (eq (firstParams ), any ());
239- verify (mSplitsFetcher ).execute (eq (secondParams ), any ());
234+ verify (mSplitsFetcher , times (3 )).execute (any (), any ());
240235 }
241236
242237 @ Test
@@ -261,6 +256,7 @@ public void syncWithoutClearBeforeUpdateDoesNotClearStorage() {
261256 @ Test
262257 public void cdnIsBypassedWhenNeeded () throws HttpFetcherException {
263258 when (mSplitsStorage .getTill ()).thenReturn (-1L , 2L , 3L , 3L , 3L , 3L , 3L , 3L , 3L , 3L , 3L , 3L , 3L );
259+ when (mRuleBasedSegmentStorageProducer .getChangeNumber ()).thenReturn (-1L );
264260 when (mSplitsFetcher .execute (anyMap (), any ())).thenReturn (
265261 getSplitChange (-1 , 2 ),
266262 getSplitChange (2 , 3 ),
@@ -281,10 +277,10 @@ public void cdnIsBypassedWhenNeeded() throws HttpFetcherException {
281277
282278 Map <String , String > headers = new HashMap <>();
283279 headers .put ("Cache-Control" , "no-cache" );
284- Map <String , Object > firstParams = getSinceParams (-1L );
285- Map <String , Object > secondParams = getSinceParams (2L );
286- Map <String , Object > thirdParams = getSinceParams (3L );
287- Map <String , Object > bypassedParams = getSinceParams (3L );
280+ Map <String , Object > firstParams = getSinceParams (-1L , - 1L );
281+ Map <String , Object > secondParams = getSinceParams (2L , - 1L );
282+ Map <String , Object > thirdParams = getSinceParams (3L , - 1L );
283+ Map <String , Object > bypassedParams = getSinceParams (3L , - 1L );
288284 bypassedParams .put ("till" , 3L );
289285
290286 verify (mSplitsFetcher ).execute (firstParams , headers );
@@ -318,6 +314,7 @@ public void replaceTillWhenFilterHasChanged() throws HttpFetcherException {
318314 Map <String , Object > params = new HashMap <>();
319315 params .put ("s" , "1.1" );
320316 params .put ("since" , -1L );
317+ params .put ("rbSince" , -1L );
321318 verify (mSplitsFetcher ).execute (eq (params ), eq (null ));
322319 verifyNoMoreInteractions (mSplitsFetcher );
323320 }
@@ -391,6 +388,16 @@ private Map<String, Object> getSinceParams(long since) {
391388 Map <String , Object > params = new LinkedHashMap <>();
392389 params .put ("s" , "1.1" );
393390 params .put ("since" , since );
391+ params .put ("rbSince" , since );
392+
393+ return params ;
394+ }
395+
396+ private Map <String , Object > getSinceParams (long since , long rbSince ) {
397+ Map <String , Object > params = new LinkedHashMap <>();
398+ params .put ("s" , "1.1" );
399+ params .put ("since" , since );
400+ params .put ("rbSince" , rbSince );
394401
395402 return params ;
396403 }
0 commit comments