Skip to content

Commit 067e648

Browse files
authored
Move testToUtc test to DateFormattersTests (#38610)
The test was relying on toString in ZonedDateTime which is different to what is formatted by strict_date_time when milliseconds are 0 The method is just delegating to dateFormatter, so that scenario should be covered there. closes #38359
1 parent 8ede155 commit 067e648

File tree

3 files changed

+14
-15
lines changed

3 files changed

+14
-15
lines changed

server/src/test/java/org/elasticsearch/common/time/DateFormattersTests.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@
2121

2222
import org.elasticsearch.test.ESTestCase;
2323

24+
import java.time.Clock;
2425
import java.time.Instant;
2526
import java.time.ZoneId;
27+
import java.time.ZoneOffset;
2628
import java.time.ZonedDateTime;
2729
import java.time.format.DateTimeFormatter;
2830
import java.time.temporal.ChronoField;
@@ -96,6 +98,8 @@ public void testEpochSecondParserWithFraction() {
9698
assertThat(e.getMessage(), is("failed to parse date field [1234.1234567890] with format [epoch_second]"));
9799
}
98100

101+
102+
99103
public void testEpochMilliParsersWithDifferentFormatters() {
100104
DateFormatter formatter = DateFormatter.forPattern("strict_date_optional_time||epoch_millis");
101105
TemporalAccessor accessor = formatter.parse("123");
@@ -248,4 +252,12 @@ public void testRoundupFormatterLocale() {
248252
assertThat(roundupParser.getLocale(), is(locale));
249253
assertThat(formatter.locale(), is(locale));
250254
}
255+
256+
public void test0MillisAreFormatted() {
257+
DateFormatter formatter = DateFormatter.forPattern("strict_date_time");
258+
Clock clock = Clock.fixed(ZonedDateTime.of(2019, 02, 8, 11, 43, 00, 0,
259+
ZoneOffset.UTC).toInstant(), ZoneOffset.UTC);
260+
String formatted = formatter.formatMillis(clock.millis());
261+
assertThat(formatted, is("2019-02-08T11:43:00.000Z"));
262+
}
251263
}

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/monitoring/exporter/MonitoringDoc.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,15 @@
1616
import org.elasticsearch.xpack.core.monitoring.MonitoredSystem;
1717

1818
import java.io.IOException;
19-
import java.time.Instant;
2019
import java.time.ZoneOffset;
21-
import java.time.ZonedDateTime;
2220
import java.util.Objects;
2321

2422
/**
2523
* Base class for all monitoring documents.
2624
*/
2725
public abstract class MonitoringDoc implements ToXContentObject {
2826

29-
private static final DateFormatter dateTimeFormatter = DateFormatter.forPattern("strict_date_time");
27+
private static final DateFormatter dateTimeFormatter = DateFormatter.forPattern("strict_date_time").withZone(ZoneOffset.UTC);
3028
private final String cluster;
3129
private final long timestamp;
3230
private final long intervalMillis;
@@ -126,9 +124,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
126124
* @return a string representing the timestamp
127125
*/
128126
public static String toUTC(final long timestamp) {
129-
ZonedDateTime zonedDateTime = Instant.ofEpochMilli(timestamp).atZone(ZoneOffset.UTC);
130-
return dateTimeFormatter.format(zonedDateTime);
131-
127+
return dateTimeFormatter.formatMillis(timestamp);
132128
}
133129

134130
/**

x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/exporter/BaseMonitoringDocTestCase.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
import org.junit.Before;
2727

2828
import java.io.IOException;
29-
import java.time.Instant;
30-
import java.time.ZoneOffset;
3129
import java.util.ArrayList;
3230
import java.util.List;
3331
import java.util.Map;
@@ -166,13 +164,6 @@ public final void testToXContentContainsCommonFields() throws IOException {
166164
}
167165
}
168166

169-
public void testToUTC() {
170-
final long timestamp = System.currentTimeMillis();
171-
final String expected = Instant.ofEpochMilli(timestamp).atZone(ZoneOffset.UTC).toString();
172-
173-
assertEquals(expected, MonitoringDoc.toUTC(timestamp));
174-
}
175-
176167
public void testMonitoringNodeConstructor() {
177168
final String id = randomAlphaOfLength(5);
178169
final String name = randomAlphaOfLengthBetween(3, 10);

0 commit comments

Comments
 (0)