Skip to content

Commit 10bdfc0

Browse files
authored
Merge pull request #185 from splitio/split-factory-tests
[Lucas] Adding test to increment Coverage
2 parents 1b234ae + dbb3100 commit 10bdfc0

File tree

2 files changed

+174
-2
lines changed

2 files changed

+174
-2
lines changed

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

Lines changed: 72 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.apache.commons.lang3.RandomStringUtils;
2929
import org.junit.Assert;
3030
import org.junit.Test;
31+
import org.junit.rules.ExpectedException;
3132
import org.mockito.ArgumentCaptor;
3233
import org.mockito.Mockito;
3334

@@ -234,9 +235,10 @@ public void worksAndHasConfig() {
234235

235236
int numKeys = 5;
236237
for (int i = 0; i < numKeys; i++) {
238+
Map<String, Object> attributes = new HashMap<>();
237239
String randomKey = RandomStringUtils.random(10);
238240
assertThat(client.getTreatment(randomKey, test), is(equalTo("on")));
239-
assertThat(client.getTreatmentWithConfig(randomKey, test).config(), is(equalTo(configurations.get("on"))));
241+
assertThat(client.getTreatmentWithConfig(randomKey, test, attributes).config(), is(equalTo(configurations.get("on"))));
240242
}
241243

242244
// Times 2 because we are calling getTreatment twice. Once for getTreatment and one for getTreatmentWithConfig
@@ -972,7 +974,7 @@ public void track_with_valid_parameters() {
972974

973975
String validEventSize = new String(new char[80]).replace('\0', 'a');
974976
String validKeySize = new String(new char[250]).replace('\0', 'a');
975-
Assert.assertThat(client.track(validKeySize, "valid_traffic_type", validEventSize),
977+
Assert.assertThat(client.track(validKeySize, "valid_traffic_type", validEventSize, 10),
976978
org.hamcrest.Matchers.is(org.hamcrest.Matchers.equalTo(true)));
977979

978980
}
@@ -1286,4 +1288,72 @@ public void client_cannot_perform_actions_when_destroyed() throws InterruptedExc
12861288
Assert.assertThat(client.track("validKey", "valid_traffic_type", "valid_event"),
12871289
org.hamcrest.Matchers.is(org.hamcrest.Matchers.equalTo(false)));
12881290
}
1291+
1292+
@Test
1293+
public void worksAndHasConfigTryKetTreatmentWithKey() {
1294+
String test = "test1";
1295+
1296+
ParsedCondition rollOutToEveryone = ParsedCondition.createParsedConditionForTests(CombiningMatcher.of(new AllKeysMatcher()), Lists.newArrayList(partition("on", 100)));
1297+
List<ParsedCondition> conditions = Lists.newArrayList(rollOutToEveryone);
1298+
1299+
// Add config for only one treatment
1300+
Map<String, String> configurations = new HashMap<>();
1301+
configurations.put(Treatments.ON, "{\"size\" : 30}");
1302+
1303+
ParsedSplit parsedSplit = ParsedSplit.createParsedSplitForTests(test, 123, false, Treatments.OFF, conditions, null, 1, 1, configurations);
1304+
1305+
SDKReadinessGates gates = mock(SDKReadinessGates.class);
1306+
SplitCache splitCache = mock(InMemoryCacheImp.class);
1307+
when(splitCache.get(test)).thenReturn(parsedSplit);
1308+
1309+
SplitClientImpl client = new SplitClientImpl(
1310+
mock(SplitFactory.class),
1311+
splitCache,
1312+
new ImpressionsManager.NoOpImpressionsManager(),
1313+
new Metrics.NoopMetrics(),
1314+
NoopEventClient.create(),
1315+
config,
1316+
gates,
1317+
new EvaluatorImp(splitCache)
1318+
);
1319+
1320+
int numKeys = 5;
1321+
for (int i = 0; i < numKeys; i++) {
1322+
Map<String, Object> attributes = new HashMap<>();
1323+
String randomKey = RandomStringUtils.random(10);
1324+
Key key = new Key(randomKey, "BucketingKey");
1325+
assertThat(client.getTreatment(randomKey, test), is(equalTo("on")));
1326+
assertThat(client.getTreatmentWithConfig(key, test, attributes).config(), is(equalTo(configurations.get("on"))));
1327+
}
1328+
1329+
// Times 2 because we are calling getTreatment twice. Once for getTreatment and one for getTreatmentWithConfig
1330+
verify(splitCache, times(numKeys * 2)).get(test);
1331+
}
1332+
1333+
@Test(expected = IllegalArgumentException.class)
1334+
public void blockUntilReadyException() throws TimeoutException, InterruptedException {
1335+
String test = "test1";
1336+
1337+
ParsedCondition rollOutToEveryone = ParsedCondition.createParsedConditionForTests(CombiningMatcher.of(new AllKeysMatcher()), Lists.newArrayList(partition("on", 100)));
1338+
List<ParsedCondition> conditions = Lists.newArrayList(rollOutToEveryone);
1339+
ParsedSplit parsedSplit = ParsedSplit.createParsedSplitForTests(test, 123, false, Treatments.OFF, conditions, null, 1, 1);
1340+
1341+
SDKReadinessGates gates = mock(SDKReadinessGates.class);
1342+
SplitCache splitCache = mock(InMemoryCacheImp.class);
1343+
when(splitCache.get(test)).thenReturn(parsedSplit);
1344+
1345+
SplitClientConfig config = SplitClientConfig.builder().setBlockUntilReadyTimeout(-100).build();
1346+
SplitClientImpl client = new SplitClientImpl(
1347+
mock(SplitFactory.class),
1348+
splitCache,
1349+
new ImpressionsManager.NoOpImpressionsManager(),
1350+
new Metrics.NoopMetrics(),
1351+
NoopEventClient.create(),
1352+
config,
1353+
gates,
1354+
new EvaluatorImp(splitCache)
1355+
);
1356+
1357+
client.blockUntilReady();
1358+
}
12891359
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package io.split.client;
2+
3+
import io.split.client.impressions.ImpressionsManager;
4+
import io.split.integrations.IntegrationsConfig;
5+
import junit.framework.TestCase;
6+
import org.junit.Test;
7+
8+
import java.net.URISyntaxException;
9+
10+
public class SplitFactoryImplTest extends TestCase {
11+
public static final String API_KEY ="29013ionasdasd09u";
12+
public static final String ENDPOINT = "https://sdk.split-stage.io";
13+
public static final String EVENTS_ENDPOINT = "https://events.split-stage.io";
14+
public static final String AUTH_SERVICE = "https://auth.split-stage.io/api/auth";
15+
16+
17+
@Test
18+
public void testFactoryInstantiation() throws URISyntaxException {
19+
SplitClientConfig splitClientConfig = SplitClientConfig.builder()
20+
.enableDebug()
21+
.impressionsMode(ImpressionsManager.Mode.DEBUG)
22+
.impressionsRefreshRate(1)
23+
.endpoint(ENDPOINT,EVENTS_ENDPOINT)
24+
.authServiceURL(AUTH_SERVICE)
25+
.setBlockUntilReadyTimeout(10000)
26+
.build();
27+
SplitFactoryImpl splitFactory = new SplitFactoryImpl(API_KEY, splitClientConfig);
28+
29+
assertNotNull(splitFactory.client());
30+
assertNotNull(splitFactory.manager());
31+
}
32+
33+
@Test
34+
public void testFactoryInstantiationWithoutBlockUntilReady() throws URISyntaxException {
35+
SplitClientConfig splitClientConfig = SplitClientConfig.builder()
36+
.enableDebug()
37+
.impressionsMode(ImpressionsManager.Mode.DEBUG)
38+
.impressionsRefreshRate(1)
39+
.endpoint(ENDPOINT,EVENTS_ENDPOINT)
40+
.authServiceURL(AUTH_SERVICE)
41+
.build();
42+
SplitFactoryImpl splitFactory = new SplitFactoryImpl(API_KEY, splitClientConfig);
43+
44+
assertNotNull(splitFactory.client());
45+
assertNotNull(splitFactory.manager());
46+
}
47+
48+
@Test
49+
public void testFactoryInstantiationIntegrationsConfig() throws URISyntaxException {
50+
IntegrationsConfig integrationsConfig = new IntegrationsConfig.Builder().build();
51+
SplitClientConfig splitClientConfig = SplitClientConfig.builder()
52+
.enableDebug()
53+
.impressionsMode(ImpressionsManager.Mode.DEBUG)
54+
.impressionsRefreshRate(1)
55+
.endpoint(ENDPOINT,EVENTS_ENDPOINT)
56+
.authServiceURL(AUTH_SERVICE)
57+
.setBlockUntilReadyTimeout(1000)
58+
.integrations(integrationsConfig)
59+
.build();
60+
SplitFactoryImpl splitFactory = new SplitFactoryImpl(API_KEY, splitClientConfig);
61+
62+
assertNotNull(splitFactory.client());
63+
assertNotNull(splitFactory.manager());
64+
}
65+
66+
@Test
67+
public void testFactoryInstantiationWithProxy() throws URISyntaxException {
68+
SplitClientConfig splitClientConfig = SplitClientConfig.builder()
69+
.enableDebug()
70+
.impressionsMode(ImpressionsManager.Mode.DEBUG)
71+
.impressionsRefreshRate(1)
72+
.endpoint(ENDPOINT,EVENTS_ENDPOINT)
73+
.authServiceURL(AUTH_SERVICE)
74+
.setBlockUntilReadyTimeout(1000)
75+
.proxyPort(6060)
76+
.proxyUsername("test")
77+
.proxyPassword("password")
78+
.proxyHost(ENDPOINT)
79+
.build();
80+
SplitFactoryImpl splitFactory = new SplitFactoryImpl(API_KEY, splitClientConfig);
81+
82+
assertNotNull(splitFactory.client());
83+
assertNotNull(splitFactory.manager());
84+
}
85+
86+
@Test
87+
public void testFactoryDestroy() throws URISyntaxException {
88+
SplitClientConfig splitClientConfig = SplitClientConfig.builder()
89+
.enableDebug()
90+
.impressionsMode(ImpressionsManager.Mode.DEBUG)
91+
.impressionsRefreshRate(1)
92+
.endpoint(ENDPOINT,EVENTS_ENDPOINT)
93+
.authServiceURL(AUTH_SERVICE)
94+
.setBlockUntilReadyTimeout(10000)
95+
.build();
96+
SplitFactoryImpl splitFactory = new SplitFactoryImpl(API_KEY, splitClientConfig);
97+
splitFactory.destroy();
98+
99+
assertTrue(splitFactory.isDestroyed());
100+
}
101+
102+
}

0 commit comments

Comments
 (0)