Skip to content

Commit ac8b250

Browse files
committed
Update tests
1 parent 98f4ffc commit ac8b250

3 files changed

Lines changed: 49 additions & 37 deletions

File tree

src/test/java/io/split/android/client/service/SplitsSyncHelperTest.java

Lines changed: 41 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

src/test/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizerImplTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import io.split.android.client.service.executor.SplitTaskExecutor;
3434
import io.split.android.client.service.executor.SplitTaskFactory;
3535
import io.split.android.client.service.executor.SplitTaskType;
36+
import io.split.android.client.service.rules.LoadRuleBasedSegmentsTask;
3637
import io.split.android.client.service.splits.FilterSplitsInCacheTask;
3738
import io.split.android.client.service.splits.LoadSplitsTask;
3839
import io.split.android.client.service.splits.SplitsSyncTask;
@@ -91,6 +92,10 @@ public void loadAndSynchronizeSplits() {
9192
when(mockLoadTask.execute()).thenReturn(SplitTaskExecutionInfo.success(SplitTaskType.LOAD_LOCAL_SPLITS));
9293
when(mTaskFactory.createLoadSplitsTask()).thenReturn(mockLoadTask);
9394

95+
LoadRuleBasedSegmentsTask mockLoadRuleBasedSegmentsTask = mock(LoadRuleBasedSegmentsTask.class);
96+
when(mockLoadRuleBasedSegmentsTask.execute()).thenReturn(SplitTaskExecutionInfo.success(SplitTaskType.LOAD_LOCAL_RULE_BASED_SEGMENTS));
97+
when(mTaskFactory.createLoadRuleBasedSegmentsTask()).thenReturn(mockLoadRuleBasedSegmentsTask);
98+
9499
FilterSplitsInCacheTask mockFilterTask = mock(FilterSplitsInCacheTask.class);
95100
when(mockFilterTask.execute()).thenReturn(SplitTaskExecutionInfo.success(SplitTaskType.FILTER_SPLITS_CACHE));
96101
when(mTaskFactory.createFilterSplitsInCacheTask()).thenReturn(mockFilterTask);
@@ -110,7 +115,7 @@ public void loadAndSynchronizeSplits() {
110115

111116
ArgumentCaptor<List<SplitTaskBatchItem>> argument = ArgumentCaptor.forClass(List.class);
112117
verify(mTaskExecutor).executeSerially(argument.capture());
113-
assertEquals(3, argument.getValue().size());
118+
assertEquals(4, argument.getValue().size());
114119
}
115120

116121
@Test

src/test/java/io/split/android/client/storage/rbs/SnapshotLoaderTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public void setUp() {
3838
@Test
3939
public void callReturnsCorrectSnapshotWithDecryptedSegments() throws Exception {
4040
long expectedChangeNumber = 123L;
41-
when(mGeneralInfoStorage.getFlagsChangeNumber()).thenReturn(expectedChangeNumber);
41+
when(mGeneralInfoStorage.getRbsChangeNumber()).thenReturn(expectedChangeNumber);
4242

4343
RuleBasedSegmentEntity entity1 = new RuleBasedSegmentEntity("segment1", "encryptedBody1", System.currentTimeMillis());
4444
RuleBasedSegmentEntity entity2 = new RuleBasedSegmentEntity("segment2", "encryptedBody2", System.currentTimeMillis());
@@ -74,7 +74,7 @@ public void callReturnsCorrectSnapshotWithDecryptedSegments() throws Exception {
7474
public void callGetsChangeNumberFromGeneralInfoStorage() {
7575
mSnapshotLoader.call();
7676

77-
verify(mGeneralInfoStorage).getFlagsChangeNumber();
77+
verify(mGeneralInfoStorage).getRbsChangeNumber();
7878
}
7979

8080
@Test

0 commit comments

Comments
 (0)