|
31 | 31 | import org.junit.Before; |
32 | 32 |
|
33 | 33 | import java.io.IOException; |
| 34 | +import java.time.ZoneId; |
34 | 35 | import java.util.ArrayList; |
35 | 36 | import java.util.Collections; |
36 | 37 | import java.util.List; |
@@ -271,6 +272,37 @@ public void testDateHistoLongIntervalWithMinMax() { |
271 | 272 | } |
272 | 273 | } |
273 | 274 |
|
| 275 | + public void testDateHistoWithTimezone() { |
| 276 | + ZoneId timeZone = ZoneId.of(randomFrom(ZoneId.getAvailableZoneIds())); |
| 277 | + DateHistogramAggregationBuilder histo = new DateHistogramAggregationBuilder("test_histo"); |
| 278 | + histo.interval(86400000) |
| 279 | + .field("foo") |
| 280 | + .timeZone(timeZone); |
| 281 | + List<QueryBuilder> filterConditions = new ArrayList<>(); |
| 282 | + |
| 283 | + List<AggregationBuilder> translated = translateAggregation(histo, filterConditions, namedWriteableRegistry); |
| 284 | + assertThat(translated.size(), equalTo(1)); |
| 285 | + assertThat(translated.get(0), instanceOf(DateHistogramAggregationBuilder.class)); |
| 286 | + DateHistogramAggregationBuilder translatedHisto = (DateHistogramAggregationBuilder)translated.get(0); |
| 287 | + |
| 288 | + assertThat(translatedHisto.interval(), equalTo(86400000L)); |
| 289 | + assertThat(translatedHisto.field(), equalTo("foo.date_histogram.timestamp")); |
| 290 | + assertThat(translatedHisto.timeZone(), equalTo(timeZone)); |
| 291 | + assertThat(filterConditions.size(), equalTo(1)); |
| 292 | + |
| 293 | + for (QueryBuilder q : filterConditions) { |
| 294 | + if (q instanceof TermQueryBuilder) { |
| 295 | + if (((TermQueryBuilder) q).fieldName().equals("foo.date_histogram.time_zone")) { |
| 296 | + assertThat(((TermQueryBuilder) q).value(), equalTo(timeZone.toString())); |
| 297 | + } else { |
| 298 | + fail("Unexpected Term Query in filter conditions: [" + ((TermQueryBuilder) q).fieldName() + "]"); |
| 299 | + } |
| 300 | + } else { |
| 301 | + fail("Unexpected query builder in filter conditions"); |
| 302 | + } |
| 303 | + } |
| 304 | + } |
| 305 | + |
274 | 306 | public void testAvgMetric() { |
275 | 307 | List<QueryBuilder> filterConditions = new ArrayList<>(); |
276 | 308 | List<AggregationBuilder> translated = translateAggregation(new AvgAggregationBuilder("test_metric") |
|
0 commit comments