Skip to content

Commit 4a9e545

Browse files
committed
polishing
1 parent 30cf55a commit 4a9e545

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

client/src/main/java/io/split/client/impressions/UniqueKeysTrackerImp.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ private int getChunkSize(List<UniqueKeys.UniqueKey> uniqueKeysChunk) {
179179

180180
private int getTrackerKeysSize() {
181181
int totalSize = 0;
182-
for (String key : uniqueKeysTracker.keySet()) {
183-
totalSize += uniqueKeysTracker.get(key).size();
182+
for (Map.Entry<String,HashSet<String>> item : uniqueKeysTracker.entrySet()) {
183+
totalSize += item.getValue().size();
184184
}
185185
return totalSize;
186186
}

client/src/test/java/io/split/client/impressions/UniqueKeysTrackerImpTest.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,8 @@
66
import org.junit.Assert;
77
import org.junit.Test;
88
import org.mockito.Mockito;
9-
10-
import java.lang.reflect.Field;
119
import java.lang.reflect.InvocationTargetException;
1210
import java.lang.reflect.Method;
13-
import java.lang.reflect.Modifier;
1411
import java.util.HashMap;
1512
import java.util.HashSet;
1613
import java.util.List;
@@ -110,7 +107,7 @@ public void testStopSynchronization() throws Exception {
110107
}
111108

112109
@Test
113-
public void testUniqueKeysChunks() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, NoSuchFieldException {
110+
public void testUniqueKeysChunks() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
114111
UniqueKeysTrackerImp uniqueKeysTrackerImp = new UniqueKeysTrackerImp(_telemetrySynchronizer, 10000, 10000, null);
115112
HashMap<String, HashSet<String>> uniqueKeysHashMap = new HashMap<>();
116113
HashSet<String> feature1 = new HashSet<>();
@@ -138,7 +135,7 @@ public void testUniqueKeysChunks() throws NoSuchMethodException, InvocationTarge
138135
uniqueKeysHashMap.put("feature3", feature3);
139136
uniqueKeysHashMap.put("feature4", feature4);
140137
uniqueKeysHashMap.put("feature5", feature5);
141-
138+
142139
List<UniqueKeys.UniqueKey> uniqueKeysFromPopAll = new ArrayList<>();
143140
for (Map.Entry<String, HashSet<String>> uniqueKeyEntry : uniqueKeysHashMap.entrySet()) {
144141
UniqueKeys.UniqueKey uniqueKey = new UniqueKeys.UniqueKey(uniqueKeyEntry.getKey(), new ArrayList<>(uniqueKeyEntry.getValue()));
@@ -159,4 +156,19 @@ public void testUniqueKeysChunks() throws NoSuchMethodException, InvocationTarge
159156
Assert.assertTrue(chunkSize <= 5000);
160157
}
161158
}
159+
160+
@Test
161+
public void testTrackReachMaxKeys() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
162+
TelemetrySynchronizer telemetrySynchronizer = Mockito.mock(TelemetryInMemorySubmitter.class);
163+
UniqueKeysTrackerImp uniqueKeysTrackerImp = new UniqueKeysTrackerImp(telemetrySynchronizer, 10000, 10000, null);
164+
for (int i=1; i<6000; i++) {
165+
Assert.assertTrue(uniqueKeysTrackerImp.track("feature1", "key" + i));
166+
Assert.assertTrue(uniqueKeysTrackerImp.track("feature2", "key" + i));
167+
}
168+
Mockito.verify(telemetrySynchronizer, Mockito.times(2)).synchronizeUniqueKeys(Mockito.anyObject());
169+
Method methodGetTrackerSize = uniqueKeysTrackerImp.getClass().getDeclaredMethod("getTrackerKeysSize");
170+
methodGetTrackerSize.setAccessible(true);
171+
int trackerSize = (int) methodGetTrackerSize.invoke(uniqueKeysTrackerImp);
172+
Assert.assertTrue(trackerSize == 1998);
173+
}
162174
}

0 commit comments

Comments
 (0)