Skip to content

Commit

Permalink
SONAR-6137 Fix issue with timezone format
Browse files Browse the repository at this point in the history
  • Loading branch information
jblievremont committed Feb 4, 2015
1 parent c4dbf54 commit 22e886e
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 28 deletions.
Expand Up @@ -54,6 +54,7 @@
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;

import java.text.SimpleDateFormat;
import java.util.*;

import static com.google.common.collect.Lists.newArrayList;
Expand Down Expand Up @@ -544,9 +545,14 @@ private AggregationBuilder getActionPlansFacet(IssueQuery query, Map<String, Fil
}

private AggregationBuilder getCreatedAtFacet(IssueQuery query, Map<String, FilterBuilder> filters, QueryBuilder esQuery) {
Date now = system.newDate();
SimpleDateFormat tzFormat = new SimpleDateFormat("XX");
tzFormat.setTimeZone(TimeZone.getDefault());
String timeZoneString = tzFormat.format(now);

Interval bucketSize = Interval.YEAR;
long startTime = query.createdAfter() == null ? 0L : query.createdAfter().getTime();
long endTime = query.createdBefore() == null ? system.newDate().getTime() : query.createdBefore().getTime();
long endTime = query.createdBefore() == null ? now.getTime() : query.createdBefore().getTime();
Duration timeSpan = new Duration(startTime, endTime);
if (timeSpan.isShorterThan(TWENTY_DAYS)) {
bucketSize = Interval.DAY;
Expand All @@ -562,7 +568,8 @@ private AggregationBuilder getCreatedAtFacet(IssueQuery query, Map<String, Filte
.interval(bucketSize)
.minDocCount(0L)
.format(DateUtils.DATETIME_FORMAT)
.preZone(TimeZone.getDefault().getID());
.preZone(timeZoneString)
.postZone(timeZoneString);
}

private void setSorting(IssueQuery query, SearchRequestBuilder esRequest) {
Expand Down
Expand Up @@ -21,6 +21,7 @@

import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterators;
import org.junit.After;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
Expand Down Expand Up @@ -60,12 +61,20 @@ public class IssueIndexMediumTest {

IssueIndex index;

TimeZone defaultTimeZone;

@Before
public void setUp() throws Exception {
defaultTimeZone = TimeZone.getDefault();
tester.clearIndexes();
index = tester.get(IssueIndex.class);
}

@After
public void cleanUp() {
TimeZone.setDefault(defaultTimeZone);
}

@Test
public void get_by_key() throws Exception {
ComponentDto project = ComponentTesting.newProjectDto();
Expand Down Expand Up @@ -644,18 +653,19 @@ public void filter_by_created_at() throws Exception {

@Test
public void facet_on_created_at() throws Exception {

ComponentDto project = ComponentTesting.newProjectDto();
ComponentDto file = ComponentTesting.newFileDto(project);

TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
TimeZone.setDefault(TimeZone.getTimeZone("GMT+04:00"));

IssueDoc issue0 = IssueTesting.newDoc("ISSUE0", file).setFuncCreationDate(DateUtils.parseDateTime("2011-04-25T01:05:13+0000"));
IssueDoc issue1 = IssueTesting.newDoc("ISSUE1", file).setFuncCreationDate(DateUtils.parseDateTime("2014-09-01T12:34:56+0000"));
IssueDoc issue2 = IssueTesting.newDoc("ISSUE2", file).setFuncCreationDate(DateUtils.parseDateTime("2014-09-01T23:45:60+0000"));
IssueDoc issue3 = IssueTesting.newDoc("ISSUE3", file).setFuncCreationDate(DateUtils.parseDateTime("2014-09-02T12:34:56+0000"));
IssueDoc issue4 = IssueTesting.newDoc("ISSUE4", file).setFuncCreationDate(DateUtils.parseDateTime("2014-09-05T12:34:56+0000"));
IssueDoc issue5 = IssueTesting.newDoc("ISSUE5", file).setFuncCreationDate(DateUtils.parseDateTime("2014-09-20T12:34:56+0000"));
IssueDoc issue6 = IssueTesting.newDoc("ISSUE6", file).setFuncCreationDate(DateUtils.parseDateTime("2015-01-18T12:34:56+0000"));
IssueDoc issue0 = IssueTesting.newDoc("ISSUE0", file).setFuncCreationDate(DateUtils.parseDateTime("2011-04-25T01:05:13+0400"));
IssueDoc issue1 = IssueTesting.newDoc("ISSUE1", file).setFuncCreationDate(DateUtils.parseDateTime("2014-09-01T12:34:56+0400"));
IssueDoc issue2 = IssueTesting.newDoc("ISSUE2", file).setFuncCreationDate(DateUtils.parseDateTime("2014-09-01T23:45:60+0400"));
IssueDoc issue3 = IssueTesting.newDoc("ISSUE3", file).setFuncCreationDate(DateUtils.parseDateTime("2014-09-02T12:34:56+0400"));
IssueDoc issue4 = IssueTesting.newDoc("ISSUE4", file).setFuncCreationDate(DateUtils.parseDateTime("2014-09-05T12:34:56+0400"));
IssueDoc issue5 = IssueTesting.newDoc("ISSUE5", file).setFuncCreationDate(DateUtils.parseDateTime("2014-09-20T12:34:56+0400"));
IssueDoc issue6 = IssueTesting.newDoc("ISSUE6", file).setFuncCreationDate(DateUtils.parseDateTime("2015-01-18T12:34:56+0400"));

indexIssues(issue0, issue1, issue2, issue3, issue4, issue5, issue6);

Expand All @@ -665,39 +675,39 @@ public void facet_on_created_at() throws Exception {
queryContext).getFacets().get("createdAt");
assertThat(createdAt).hasSize(5)
.containsOnly(
new FacetValue("2014-09-01T00:00:00+0000", 2),
new FacetValue("2014-09-02T00:00:00+0000", 1),
new FacetValue("2014-09-03T00:00:00+0000", 0),
new FacetValue("2014-09-04T00:00:00+0000", 0),
new FacetValue("2014-09-05T00:00:00+0000", 1));
new FacetValue("2014-09-01T04:00:00+0000", 2),
new FacetValue("2014-09-02T04:00:00+0000", 1),
new FacetValue("2014-09-03T04:00:00+0000", 0),
new FacetValue("2014-09-04T04:00:00+0000", 0),
new FacetValue("2014-09-05T04:00:00+0000", 1));

createdAt = index.search(IssueQuery.builder().createdAfter(DateUtils.parseDate("2014-09-01")).createdBefore(DateUtils.parseDate("2014-09-21")).build(),
queryContext).getFacets().get("createdAt");
assertThat(createdAt).hasSize(3)
.containsOnly(
new FacetValue("2014-09-01T00:00:00+0000", 4),
new FacetValue("2014-09-08T00:00:00+0000", 0),
new FacetValue("2014-09-15T00:00:00+0000", 1));
new FacetValue("2014-09-01T04:00:00+0000", 4),
new FacetValue("2014-09-08T04:00:00+0000", 0),
new FacetValue("2014-09-15T04:00:00+0000", 1));

createdAt = index.search(IssueQuery.builder().createdAfter(DateUtils.parseDate("2014-09-01")).createdBefore(DateUtils.parseDate("2015-01-19")).build(),
queryContext).getFacets().get("createdAt");
assertThat(createdAt).hasSize(5)
.containsOnly(
new FacetValue("2014-09-01T00:00:00+0000", 5),
new FacetValue("2014-10-01T00:00:00+0000", 0),
new FacetValue("2014-11-01T00:00:00+0000", 0),
new FacetValue("2014-12-01T00:00:00+0000", 0),
new FacetValue("2015-01-01T00:00:00+0000", 1));
new FacetValue("2014-09-01T04:00:00+0000", 5),
new FacetValue("2014-10-01T04:00:00+0000", 0),
new FacetValue("2014-11-01T04:00:00+0000", 0),
new FacetValue("2014-12-01T04:00:00+0000", 0),
new FacetValue("2015-01-01T04:00:00+0000", 1));

createdAt = index.search(IssueQuery.builder().createdAfter(DateUtils.parseDate("2011-01-01")).createdBefore(DateUtils.parseDate("2016-01-01")).build(),
queryContext).getFacets().get("createdAt");
assertThat(createdAt).hasSize(5)
.containsOnly(
new FacetValue("2011-01-01T00:00:00+0000", 1),
new FacetValue("2012-01-01T00:00:00+0000", 0),
new FacetValue("2013-01-01T00:00:00+0000", 0),
new FacetValue("2014-01-01T00:00:00+0000", 5),
new FacetValue("2015-01-01T00:00:00+0000", 1));
new FacetValue("2011-01-01T04:00:00+0000", 1),
new FacetValue("2012-01-01T04:00:00+0000", 0),
new FacetValue("2013-01-01T04:00:00+0000", 0),
new FacetValue("2014-01-01T04:00:00+0000", 5),
new FacetValue("2015-01-01T04:00:00+0000", 1));
}

@Test
Expand Down

0 comments on commit 22e886e

Please sign in to comment.