Skip to content

Commit 64ef2e5

Browse files
Update AnalyticsProcessor to use feature name instead of id (#78)
* Update AnalyticsProcessor to use feature name instead of id * Correct javadoc
1 parent ddd6019 commit 64ef2e5

3 files changed

Lines changed: 22 additions & 14 deletions

File tree

src/main/java/com/flagsmith/models/Flags.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ public BaseFlag getFlag(String featureName) throws FlagsmithClientError {
183183
if (analyticsProcessor != null && flag instanceof Flag) {
184184
Flag flagObj = (Flag) flag;
185185
if (flagObj.getFeatureId() != null) {
186-
analyticsProcessor.trackFeature(flagObj.getFeatureId());
186+
analyticsProcessor.trackFeature(flagObj.getFeatureName());
187187
}
188188
}
189189

src/main/java/com/flagsmith/threads/AnalyticsProcessor.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class AnalyticsProcessor {
2121

2222
private final String analyticsEndpoint = "analytics/flags/";
2323
private Integer analyticsTimer = 10;
24-
private Map<Integer, Integer> analyticsData;
24+
private Map<String, Integer> analyticsData;
2525
@ToString.Exclude private FlagsmithSdk api;
2626
private Long nextFlush;
2727
private RequestProcessor requestProcessor;
@@ -63,7 +63,7 @@ public AnalyticsProcessor(FlagsmithSdk api, OkHttpClient client, FlagsmithLogger
6363
*/
6464
public AnalyticsProcessor(
6565
FlagsmithSdk api, FlagsmithLogger logger, RequestProcessor requestProcessor) {
66-
this.analyticsData = new HashMap<Integer, Integer>();
66+
this.analyticsData = new HashMap<String, Integer>();
6767
this.requestProcessor = requestProcessor;
6868
this.logger = logger;
6969
this.nextFlush = Instant.now().getEpochSecond() + analyticsTimer;
@@ -134,10 +134,10 @@ public void flush() {
134134

135135
/**
136136
* Track the feature usage for analytics.
137-
* @param featureId feature id
137+
* @param featureName name of the feature to track evaluation for
138138
*/
139-
public void trackFeature(Integer featureId) {
140-
analyticsData.put(featureId, analyticsData.getOrDefault(featureId, 0) + 1);
139+
public void trackFeature(String featureName) {
140+
analyticsData.put(featureName, analyticsData.getOrDefault(featureName, 0) + 1);
141141
if (nextFlush.compareTo(Instant.now().getEpochSecond()) < 0) {
142142
this.flush();
143143
}

src/test/java/com/flagsmith/threads/AnalyticsProcessorTest.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.testng.annotations.BeforeMethod;
2121
import org.testng.annotations.Test;
2222

23-
@Test(groups="unit")
23+
2424
public class AnalyticsProcessorTest {
2525

2626
private FlagsmithApiWrapper api;
@@ -48,31 +48,39 @@ public void init() {
4848
analytics = new AnalyticsProcessor(api, flagsmithLogger, requestProcessor);
4949
}
5050

51+
@Test(groups = "unit")
5152
public void AnalyticsProcessor_checkAnalyticsData() {
52-
analytics.trackFeature(1);
53-
Assert.assertTrue(analytics.getAnalyticsData().containsKey(1));
53+
String featureName = "foo";
54+
55+
analytics.trackFeature(featureName);
56+
Assert.assertTrue(analytics.getAnalyticsData().containsKey(featureName));
5457
Assert.assertEquals(analytics.getAnalyticsData().size(), 1);
5558

56-
analytics.trackFeature(1);
59+
analytics.trackFeature(featureName);
5760
Assert.assertEquals(analytics.getAnalyticsData().size(), 1);
58-
Assert.assertEquals(analytics.getAnalyticsData().get(1).intValue(), 2);
61+
Assert.assertEquals(analytics.getAnalyticsData().get(featureName).intValue(), 2);
5962
}
6063

64+
@Test(groups = "unit")
6165
public void AnalyticsProcessor_checkAnalyticsDataCheckFlushRuns() throws InterruptedException {
66+
String featureName = "foo";
6267
Long nextFlush = analytics.getNextFlush();
63-
analytics.trackFeature(1);
68+
analytics.trackFeature(featureName);
6469
Assert.assertEquals(nextFlush, analytics.getNextFlush());
6570
Thread.sleep(11000);
66-
analytics.trackFeature(1);
71+
analytics.trackFeature(featureName);
6772
Assert.assertEquals(analytics.getAnalyticsData().size(), 0);
6873
Assert.assertNotEquals(nextFlush, analytics.getNextFlush());
6974
verify(api, times(1)).newPostRequest(any(), any());
7075
verify(requestProcessor, times(1)).executeAsync(any(), any());
7176
}
7277

78+
@Test(groups = "unit")
7379
public void AnalyticsProcessor_checkAnalyticsRequestCheckFlushRuns() {
80+
String featureName = "foo";
81+
7482
Long nextFlush = analytics.getNextFlush();
75-
analytics.trackFeature(1);
83+
analytics.trackFeature(featureName);
7684
Assert.assertEquals(nextFlush, analytics.getNextFlush());
7785

7886
analytics.flush();

0 commit comments

Comments
 (0)