66import org .junit .Assert ;
77import org .junit .Test ;
88import org .mockito .Mockito ;
9-
10- import java .lang .reflect .Field ;
119import java .lang .reflect .InvocationTargetException ;
1210import java .lang .reflect .Method ;
13- import java .lang .reflect .Modifier ;
1411import java .util .HashMap ;
1512import java .util .HashSet ;
1613import 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