Skip to content

Commit 4ee6409

Browse files
authored
parse v4 additive json (#121)
* create expected project config v4 from test datafile * revise v4 datafile. check jackson parsing works * test GsonParsing works * add test for json simple parsing * add test for json config parsing
1 parent 5071797 commit 4ee6409

File tree

7 files changed

+668
-24
lines changed

7 files changed

+668
-24
lines changed

core-api/src/test/java/com/optimizely/ab/config/ProjectConfigTestUtils.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import static java.util.Arrays.asList;
4040
import static java.util.Collections.singletonList;
4141
import static org.hamcrest.CoreMatchers.is;
42+
import static org.junit.Assert.assertEquals;
4243
import static org.junit.Assert.assertNotNull;
4344
import static org.junit.Assert.assertNull;
4445
import static org.junit.Assert.assertThat;
@@ -380,7 +381,7 @@ private static ProjectConfig generateNoAudienceProjectConfigV3() {
380381

381382
private static final ProjectConfig VALID_PROJECT_CONFIG_V4 = generateValidProjectConfigV4();
382383
private static ProjectConfig generateValidProjectConfigV4() {
383-
return null;
384+
return ValidProjectConfigV4.generateValidProjectConfigV4();
384385
}
385386

386387
private ProjectConfigTestUtils() { }
@@ -401,6 +402,10 @@ public static String noAudienceProjectConfigJsonV3() throws IOException {
401402
return Resources.toString(Resources.getResource("config/no-audience-project-config-v3.json"), Charsets.UTF_8);
402403
}
403404

405+
public static String validConfigJsonV4() throws IOException {
406+
return Resources.toString(Resources.getResource("config/valid-project-config-v4.json"), Charsets.UTF_8);
407+
}
408+
404409
/**
405410
* @return the expected {@link ProjectConfig} for the json produced by {@link #validConfigJsonV2()} ()}
406411
*/
@@ -506,7 +511,9 @@ private static void verifyTrafficAllocations(List<TrafficAllocation> actual,
506511
TrafficAllocation expectedDistribution = expected.get(i);
507512

508513
assertThat(actualDistribution.getEntityId(), is(expectedDistribution.getEntityId()));
509-
assertThat(actualDistribution.getEndOfRange(), is(expectedDistribution.getEndOfRange()));
514+
assertEquals("expectedDistribution: " + expectedDistribution.toString() +
515+
"is not equal to the actualDistribution: " + actualDistribution.toString(),
516+
expectedDistribution.getEndOfRange(), actualDistribution.getEndOfRange());
510517
}
511518
}
512519

core-api/src/test/java/com/optimizely/ab/config/ValidProjectConfigV4.java

Lines changed: 614 additions & 0 deletions
Large diffs are not rendered by default.

core-api/src/test/java/com/optimizely/ab/config/parser/GsonConfigParserTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@
2424

2525
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV2;
2626
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV3;
27+
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV4;
2728
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV2;
2829
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV3;
30+
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV4;
2931
import static com.optimizely.ab.config.ProjectConfigTestUtils.verifyProjectConfig;
3032

3133
/**
@@ -54,6 +56,15 @@ public void parseProjectConfigV3() throws Exception {
5456
verifyProjectConfig(actual, expected);
5557
}
5658

59+
@Test
60+
public void parseProjectCOnfigV4() throws Exception {
61+
GsonConfigParser parser = new GsonConfigParser();
62+
ProjectConfig actual = parser.parseProjectConfig(validConfigJsonV4());
63+
ProjectConfig expected = validProjectConfigV4();
64+
65+
verifyProjectConfig(actual, expected);
66+
}
67+
5768
/**
5869
* Verify that invalid JSON results in a {@link ConfigParseException} being thrown.
5970
*/

core-api/src/test/java/com/optimizely/ab/config/parser/JacksonConfigParserTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@
2424

2525
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV2;
2626
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV3;
27+
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV4;
2728
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV2;
2829
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV3;
30+
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV4;
2931
import static com.optimizely.ab.config.ProjectConfigTestUtils.verifyProjectConfig;
3032

3133
/**
@@ -54,6 +56,15 @@ public void parseProjectConfigV3() throws Exception {
5456
verifyProjectConfig(actual, expected);
5557
}
5658

59+
@Test
60+
public void parseProjectConfigV4() throws Exception {
61+
JacksonConfigParser parser = new JacksonConfigParser();
62+
ProjectConfig actual = parser.parseProjectConfig(validConfigJsonV4());
63+
ProjectConfig expected = validProjectConfigV4();
64+
65+
verifyProjectConfig(actual, expected);
66+
}
67+
5768
/**
5869
* Verify that invalid JSON results in a {@link ConfigParseException} being thrown.
5970
*/

core-api/src/test/java/com/optimizely/ab/config/parser/JsonConfigParserTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@
2424
import org.junit.rules.ExpectedException;
2525

2626
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV2;
27+
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV4;
2728
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV2;
2829
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV3;
2930
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV3;
31+
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV4;
3032
import static com.optimizely.ab.config.ProjectConfigTestUtils.verifyProjectConfig;
3133

3234
/**
@@ -55,6 +57,15 @@ public void parseProjectConfigV3() throws Exception {
5557
verifyProjectConfig(actual, expected);
5658
}
5759

60+
@Test
61+
public void parseProjectConfigV4() throws Exception {
62+
JsonConfigParser parser = new JsonConfigParser();
63+
ProjectConfig actual = parser.parseProjectConfig(validConfigJsonV4());
64+
ProjectConfig expected = validProjectConfigV4();
65+
66+
verifyProjectConfig(actual, expected);
67+
}
68+
5869
/**
5970
* Verify that invalid JSON results in a {@link ConfigParseException} being thrown.
6071
*/

core-api/src/test/java/com/optimizely/ab/config/parser/JsonSimpleConfigParserTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@
2424
import org.junit.rules.ExpectedException;
2525

2626
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV2;
27+
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV4;
2728
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV2;
2829
import static com.optimizely.ab.config.ProjectConfigTestUtils.validConfigJsonV3;
2930
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV3;
31+
import static com.optimizely.ab.config.ProjectConfigTestUtils.validProjectConfigV4;
3032
import static com.optimizely.ab.config.ProjectConfigTestUtils.verifyProjectConfig;
3133

3234
/**
@@ -55,6 +57,15 @@ public void parseProjectConfigV3() throws Exception {
5557
verifyProjectConfig(actual, expected);
5658
}
5759

60+
@Test
61+
public void parseProjectConfigV4() throws Exception {
62+
JsonSimpleConfigParser parser = new JsonSimpleConfigParser();
63+
ProjectConfig actual = parser.parseProjectConfig(validConfigJsonV4());
64+
ProjectConfig expected = validProjectConfigV4();
65+
66+
verifyProjectConfig(actual, expected);
67+
}
68+
5869
/**
5970
* Verify that invalid JSON results in a {@link ConfigParseException} being thrown.
6071
*/

core-api/src/test/resources/config/valid-project-config-v4.json

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@
207207
"trafficAllocation": [
208208
{
209209
"entityId": "1647582435",
210-
"endOfRang": 8000
210+
"endOfRange": 8000
211211
}
212212
],
213213
"audienceIds": [],
@@ -385,27 +385,6 @@
385385
"defaultValue": "arry"
386386
}
387387
]
388-
},
389-
{
390-
"id": "3072915611",
391-
"key": "launched_experiment",
392-
"layerId": "3587821424",
393-
"status": "Launched",
394-
"variations": [
395-
{
396-
"id": "1647582435",
397-
"key": "launch_control",
398-
"variables": []
399-
}
400-
],
401-
"trafficAllocation": [
402-
{
403-
"entityId": "1647582435",
404-
"endOfRange": 8000
405-
}
406-
],
407-
"audienceIds": [],
408-
"forcedVariations": {}
409388
}
410389
],
411390
"liveVariables": []

0 commit comments

Comments
 (0)