Skip to content

Commit ec0e0a2

Browse files
committed
fix timestamps
1 parent 289a96a commit ec0e0a2

File tree

2 files changed

+27
-23
lines changed

2 files changed

+27
-23
lines changed

client/src/main/java/io/split/client/impressions/ImpressionCounter.java

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

33
import java.util.HashMap;
4-
import java.util.Map;
54
import java.util.Objects;
65
import java.util.concurrent.ConcurrentHashMap;
76
import java.util.concurrent.atomic.AtomicInteger;

client/src/test/java/io/split/client/impressions/ImpressionCounterTest.java

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import org.junit.Test;
44

5-
import java.util.Calendar;
6-
import java.util.GregorianCalendar;
5+
import java.time.ZoneId;
6+
import java.time.ZonedDateTime;
77
import java.util.HashMap;
88
import java.util.Map;
99

@@ -13,35 +13,40 @@
1313

1414
public class ImpressionCounterTest {
1515

16+
private long makeTimestamp(int year, int month, int day, int hour, int minute, int second) {
17+
return ZonedDateTime.of(year, month, day, hour, minute, second, 0, ZoneId.of("UTC")).toInstant().toEpochMilli();
18+
}
19+
1620
@Test
1721
public void testTruncateTimeFrame() {
18-
assertThat(ImpressionCounter.truncateTimeframe(new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 53, 12).getTimeInMillis()),
19-
is(equalTo(new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 0, 0).getTimeInMillis())));
20-
assertThat(ImpressionCounter.truncateTimeframe(new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 0, 0).getTimeInMillis()),
21-
is(equalTo(new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 0, 0).getTimeInMillis())));
22-
assertThat(ImpressionCounter.truncateTimeframe(new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 53, 0 ).getTimeInMillis()),
23-
is(equalTo(new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 0, 0).getTimeInMillis())));
24-
assertThat(ImpressionCounter.truncateTimeframe(new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 0, 12).getTimeInMillis()),
25-
is(equalTo(new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 0, 0).getTimeInMillis())));
26-
assertThat(ImpressionCounter.truncateTimeframe(new GregorianCalendar(1970, Calendar.JANUARY, 0, 0, 0, 0).getTimeInMillis()),
27-
is(equalTo(new GregorianCalendar(1970, Calendar.JANUARY, 0, 0, 0, 0).getTimeInMillis())));
22+
assertThat(ImpressionCounter.truncateTimeframe(makeTimestamp(2020, 9, 2, 10, 53, 12)),
23+
is(equalTo(makeTimestamp(2020, 9, 2, 10, 0, 0))));
24+
assertThat(ImpressionCounter.truncateTimeframe(makeTimestamp(2020, 9, 2, 10, 0, 0)),
25+
is(equalTo(makeTimestamp(2020, 9, 2, 10, 0, 0))));
26+
assertThat(ImpressionCounter.truncateTimeframe(makeTimestamp(2020, 9, 2, 10, 53, 0 )),
27+
is(equalTo(makeTimestamp(2020, 9, 2, 10, 0, 0))));
28+
assertThat(ImpressionCounter.truncateTimeframe(makeTimestamp(2020, 9, 2, 10, 0, 12)),
29+
is(equalTo(makeTimestamp(2020, 9, 2, 10, 0, 0))));
30+
assertThat(ImpressionCounter.truncateTimeframe(makeTimestamp(1970, 1, 1, 0, 0, 0)),
31+
is(equalTo(makeTimestamp(1970, 1, 1, 0, 0, 0))));
2832
}
2933

3034
@Test
3135
public void testMakeKey() {
32-
assertThat(ImpressionCounter.makeKey("someFeature", new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 5, 23).getTimeInMillis()),
33-
is(equalTo("someFeature::1599051600000")));
34-
assertThat(ImpressionCounter.makeKey("", new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 5, 23).getTimeInMillis()),
35-
is(equalTo("::1599051600000")));
36-
assertThat(ImpressionCounter.makeKey(null, new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 5, 23).getTimeInMillis()),
37-
is(equalTo("null::1599051600000")));
36+
long targetTZ = makeTimestamp(2020, 9, 2, 10, 0, 0);
37+
assertThat(ImpressionCounter.makeKey("someFeature", makeTimestamp(2020, 9, 2, 10, 5, 23)),
38+
is(equalTo("someFeature::" + targetTZ)));
39+
assertThat(ImpressionCounter.makeKey("", makeTimestamp(2020, 9, 2, 10, 5, 23)),
40+
is(equalTo("::" + targetTZ)));
41+
assertThat(ImpressionCounter.makeKey(null, makeTimestamp(2020, 9, 2, 10, 5, 23)),
42+
is(equalTo("null::" + targetTZ)));
3843
assertThat(ImpressionCounter.makeKey(null, 0L), is(equalTo("null::0")));
3944
}
4045

4146
@Test
4247
public void testBasicUsage() {
4348
final ImpressionCounter counter = new ImpressionCounter();
44-
final long timestamp = new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 10, 12).getTimeInMillis();
49+
final long timestamp = makeTimestamp(2020, 9, 2, 10, 10, 12);
4550
counter.inc("feature1", timestamp, 1);
4651
counter.inc("feature1", timestamp + 1, 1);
4752
counter.inc("feature1", timestamp + 2, 1);
@@ -53,7 +58,7 @@ public void testBasicUsage() {
5358
assertThat(counted.get(ImpressionCounter.makeKey("feature2", timestamp)), is(equalTo(4)));
5459
assertThat(counter.popAll().size(), is(equalTo(0)));
5560

56-
final long nextHourTimestamp = new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 11, 10, 12).getTimeInMillis();
61+
final long nextHourTimestamp = makeTimestamp(2020, 9, 2, 11, 10, 12);
5762
counter.inc("feature1", timestamp, 1);
5863
counter.inc("feature1", timestamp + 1, 1);
5964
counter.inc("feature1", timestamp + 2, 1);
@@ -76,8 +81,8 @@ public void testBasicUsage() {
7681
@Test
7782
public void manyConcurrentCalls() throws InterruptedException {
7883
final int iterations = 10000000;
79-
final long timestamp = new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 10, 10, 12).getTimeInMillis();
80-
final long nextHourTimestamp = new GregorianCalendar(2020, Calendar.SEPTEMBER, 2, 11, 10, 12).getTimeInMillis();
84+
final long timestamp = makeTimestamp(2020, 9, 2, 10, 10, 12);
85+
final long nextHourTimestamp = makeTimestamp(2020, 9, 2, 11, 10, 12);
8186
ImpressionCounter counter = new ImpressionCounter();
8287
Thread t1 = new Thread(() -> {
8388
int times = iterations;

0 commit comments

Comments
 (0)