Skip to content

Commit d61a8fb

Browse files
Final commit, editing name and adding some key words
1 parent c9a6da1 commit d61a8fb

File tree

4 files changed

+78
-25
lines changed

4 files changed

+78
-25
lines changed

client/src/main/java/io/split/client/FactoryInstantiationsService.java renamed to client/src/main/java/io/split/client/FactoryInstantiationsCounter.java

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
11
package io.split.client;
22

3+
import com.google.common.annotations.VisibleForTesting;
34
import com.google.common.collect.ConcurrentHashMultiset;
45
import com.google.common.collect.Multiset;
56
import org.slf4j.Logger;
67
import org.slf4j.LoggerFactory;
78

8-
public class FactoryInstantiationsService {
9+
public class FactoryInstantiationsCounter {
910

10-
private static final Logger _log = LoggerFactory.getLogger(FactoryInstantiationsService.class);
11-
private static volatile FactoryInstantiationsService _factoryInstantiationsService;
11+
private static final Logger _log = LoggerFactory.getLogger(FactoryInstantiationsCounter.class);
12+
private static volatile FactoryInstantiationsCounter _factoryInstantiationsCounter;
1213
private static final Multiset<String> USED_API_TOKENS = ConcurrentHashMultiset.create();
1314

1415

15-
private FactoryInstantiationsService() {}
16+
private FactoryInstantiationsCounter() {}
1617

17-
public static FactoryInstantiationsService getFactoryInstantiationsServiceInstance() {
18-
if(_factoryInstantiationsService == null) {
19-
synchronized (FactoryInstantiationsService.class) {
20-
if (_factoryInstantiationsService == null) {
21-
_factoryInstantiationsService = new FactoryInstantiationsService();
18+
public static FactoryInstantiationsCounter getFactoryInstantiationsServiceInstance() {
19+
if(_factoryInstantiationsCounter == null) {
20+
synchronized (FactoryInstantiationsCounter.class) {
21+
if (_factoryInstantiationsCounter == null) {
22+
_factoryInstantiationsCounter = new FactoryInstantiationsCounter();
2223
}
2324
}
2425
}
2526

26-
return _factoryInstantiationsService;
27+
return _factoryInstantiationsCounter;
2728
}
2829

2930
public void addToken(String apiToken) {
@@ -52,7 +53,18 @@ public void removeToken(String apiToken) {
5253
* @param apiToken
5354
* @return
5455
*/
55-
public boolean isTokenPresent(String apiToken){
56+
@VisibleForTesting
57+
boolean isTokenPresent(String apiToken) {
5658
return USED_API_TOKENS.contains(apiToken);
5759
}
60+
61+
/**
62+
* Just for test
63+
* @param apiToken
64+
* @return
65+
*/
66+
@VisibleForTesting
67+
int getCount(String apiToken) {
68+
return USED_API_TOKENS.count(apiToken);
69+
}
5870
}

client/src/main/java/io/split/client/SplitFactoryImpl.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package io.split.client;
22

3-
import com.google.common.collect.ConcurrentHashMultiset;
4-
import com.google.common.collect.Multiset;
53
import io.split.client.impressions.AsynchronousImpressionListener;
64
import io.split.client.impressions.ImpressionListener;
75
import io.split.client.impressions.ImpressionsManagerImpl;
@@ -62,19 +60,19 @@ public class SplitFactoryImpl implements SplitFactory {
6260
private final static long SSE_CONNECT_TIMEOUT = 30000;
6361
private final static long SSE_SOCKET_TIMEOUT = 70000;
6462

65-
private static final Multiset<String> USED_API_TOKENS = ConcurrentHashMultiset.create();
6663
private static Random RANDOM = new Random();
6764

6865
private final SplitClient _client;
6966
private final SplitManager _manager;
7067
private final Runnable destroyer;
7168
private final String _apiToken;
7269
private boolean isTerminated = false;
70+
private final FactoryInstantiationsCounter _factoryInstantiationsCounter;
7371

7472
public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyntaxException {
7573
_apiToken = apiToken;
76-
77-
FactoryInstantiationsService.getFactoryInstantiationsServiceInstance().addToken(apiToken);
74+
_factoryInstantiationsCounter = FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance();
75+
_factoryInstantiationsCounter.addToken(apiToken);
7876

7977
if (config.blockUntilReady() == -1) {
8078
//BlockUntilReady not been set
@@ -202,7 +200,8 @@ public void destroy() {
202200
synchronized (SplitFactoryImpl.class) {
203201
if (!isTerminated) {
204202
destroyer.run();
205-
FactoryInstantiationsService.getFactoryInstantiationsServiceInstance().removeToken(_apiToken);
203+
_factoryInstantiationsCounter.removeToken(_apiToken);
204+
int i = FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().getCount(_apiToken);
206205
isTerminated = true;
207206
}
208207
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package io.split.client;
2+
3+
import junit.framework.TestCase;
4+
import org.junit.Test;
5+
6+
public class FactoryInstantiationsCounterTest extends TestCase {
7+
8+
private static final String FIRST_TOKEN = "TOKENNUMBER1";
9+
private static final String SECOND_TOKEN = "TOKENNUMBER2";
10+
11+
@Test
12+
public void testAddingNewToken() {
13+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().addToken(FIRST_TOKEN);
14+
assertTrue(FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().isTokenPresent(FIRST_TOKEN));
15+
16+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().removeToken(FIRST_TOKEN);
17+
}
18+
19+
@Test
20+
public void testAddingExistingToken() {
21+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().addToken(FIRST_TOKEN);
22+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().addToken(FIRST_TOKEN);
23+
24+
assertTrue(FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().isTokenPresent(FIRST_TOKEN));
25+
assertEquals(2, FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().getCount(FIRST_TOKEN));
26+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().removeToken(FIRST_TOKEN);
27+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().removeToken(FIRST_TOKEN);
28+
}
29+
30+
@Test
31+
public void testRemovingToken() {
32+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().addToken(FIRST_TOKEN);
33+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().removeToken(FIRST_TOKEN);
34+
35+
assertFalse(FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().isTokenPresent(FIRST_TOKEN));
36+
assertEquals(0, FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().getCount(FIRST_TOKEN));
37+
}
38+
39+
@Test
40+
public void testAddingNonExistingToken() {
41+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().addToken(FIRST_TOKEN);
42+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().addToken(SECOND_TOKEN);
43+
44+
assertTrue(FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().isTokenPresent(FIRST_TOKEN));
45+
assertEquals(1, FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().getCount(FIRST_TOKEN));
46+
assertEquals(1, FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().getCount(SECOND_TOKEN));
47+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().removeToken(FIRST_TOKEN);
48+
FactoryInstantiationsCounter.getFactoryInstantiationsServiceInstance().removeToken(SECOND_TOKEN);
49+
}
50+
}

client/src/test/java/io/split/client/FactoryInstantiationsServiceTest.java

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)