Skip to content

Commit

Permalink
Fix an issue with TimeZone ID of UTC
Browse files Browse the repository at this point in the history
Conflicts:
	server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexTest.java
  • Loading branch information
jblievremont committed Mar 16, 2015
1 parent 2a93e40 commit 6b51007
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 44 deletions.
Expand Up @@ -64,7 +64,6 @@
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 @@ -408,9 +407,8 @@ private void addSimpleStickyFacetIfNeeded(SearchOptions options, StickyFacetBuil

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);

String timeZoneString = system.getDefaultTimeZone().getID();

DateHistogram.Interval bucketSize = DateHistogram.Interval.YEAR;
Date createdAfter = query.createdAfter();
Expand Down
Expand Up @@ -53,7 +53,11 @@
import java.util.*;

import static com.google.common.collect.Lists.newArrayList;
import static org.assertj.core.api.Assertions.*;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry;
import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class IssueIndexTest {

Expand All @@ -72,7 +76,12 @@ public void setUp() throws Exception {
issueIndexer = new IssueIndexer(null, tester.client());
issueAuthorizationIndexer = new IssueAuthorizationIndexer(null, tester.client());
viewIndexer = new ViewIndexer(null, tester.client());
index = new IssueIndex(tester.client(), System2.INSTANCE);
System2 system = mock(System2.class);
when(system.getDefaultTimeZone()).thenReturn(TimeZone.getTimeZone("+01:00"));
when(system.newDate()).thenReturn(new Date());

index = new IssueIndex(tester.client(), system);

}

@Test
Expand Down Expand Up @@ -730,14 +739,14 @@ public void facet_on_created_at_with_less_than_20_days() throws Exception {
SearchResult<IssueDoc> result = index.search(query, options);
Map<String, Long> buckets = result.getFacets().get("createdAt");
assertThat(buckets).containsOnly(
entry("2014-08-31T01:00:00+0000", 0L),
entry("2014-09-01T01:00:00+0000", 2L),
entry("2014-09-02T01:00:00+0000", 1L),
entry("2014-09-03T01:00:00+0000", 0L),
entry("2014-09-04T01:00:00+0000", 0L),
entry("2014-09-05T01:00:00+0000", 1L),
entry("2014-09-06T01:00:00+0000", 0L),
entry("2014-09-07T01:00:00+0000", 0L));
entry("2014-08-31T00:00:00+0000", 0L),
entry("2014-09-01T00:00:00+0000", 2L),
entry("2014-09-02T00:00:00+0000", 1L),
entry("2014-09-03T00:00:00+0000", 0L),
entry("2014-09-04T00:00:00+0000", 0L),
entry("2014-09-05T00:00:00+0000", 1L),
entry("2014-09-06T00:00:00+0000", 0L),
entry("2014-09-07T00:00:00+0000", 0L));
}

@Test
Expand All @@ -748,10 +757,10 @@ public void facet_on_created_at_with_less_than_20_weeks() throws Exception {
Map<String, Long> createdAt = index.search(IssueQuery.builder().createdAfter(DateUtils.parseDate("2014-09-01")).createdBefore(DateUtils.parseDate("2014-09-21")).build(),
SearchOptions).getFacets().get("createdAt");
assertThat(createdAt).containsOnly(
entry("2014-08-25T01:00:00+0000", 0L),
entry("2014-09-01T01:00:00+0000", 4L),
entry("2014-09-08T01:00:00+0000", 0L),
entry("2014-09-15T01:00:00+0000", 1L));
entry("2014-08-25T00:00:00+0000", 0L),
entry("2014-09-01T00:00:00+0000", 4L),
entry("2014-09-08T00:00:00+0000", 0L),
entry("2014-09-15T00:00:00+0000", 1L));
}

@Test
Expand All @@ -762,12 +771,12 @@ public void facet_on_created_at_with_less_than_20_months() throws Exception {
Map<String, Long> createdAt = index.search(IssueQuery.builder().createdAfter(DateUtils.parseDate("2014-09-01")).createdBefore(DateUtils.parseDate("2015-01-19")).build(),
SearchOptions).getFacets().get("createdAt");
assertThat(createdAt).containsOnly(
entry("2014-08-01T01:00:00+0000", 0L),
entry("2014-09-01T01:00:00+0000", 5L),
entry("2014-10-01T01:00:00+0000", 0L),
entry("2014-11-01T01:00:00+0000", 0L),
entry("2014-12-01T01:00:00+0000", 0L),
entry("2015-01-01T01:00:00+0000", 1L));
entry("2014-08-01T00:00:00+0000", 0L),
entry("2014-09-01T00:00:00+0000", 5L),
entry("2014-10-01T00:00:00+0000", 0L),
entry("2014-11-01T00:00:00+0000", 0L),
entry("2014-12-01T00:00:00+0000", 0L),
entry("2015-01-01T00:00:00+0000", 1L));
}

@Test
Expand All @@ -777,12 +786,12 @@ public void facet_on_created_at_with_more_than_20_months() throws Exception {
Map<String, Long> createdAt = index.search(IssueQuery.builder().createdAfter(DateUtils.parseDate("2011-01-01")).createdBefore(DateUtils.parseDate("2016-01-01")).build(),
SearchOptions).getFacets().get("createdAt");
assertThat(createdAt).containsOnly(
entry("2011-01-01T01:00:00+0000", 1L),
entry("2012-01-01T01:00:00+0000", 0L),
entry("2013-01-01T01:00:00+0000", 0L),
entry("2014-01-01T01:00:00+0000", 5L),
entry("2015-01-01T01:00:00+0000", 1L),
entry("2016-01-01T01:00:00+0000", 0L));
entry("2010-01-01T00:00:00+0000", 0L),
entry("2011-01-01T00:00:00+0000", 1L),
entry("2012-01-01T00:00:00+0000", 0L),
entry("2013-01-01T00:00:00+0000", 0L),
entry("2014-01-01T00:00:00+0000", 5L),
entry("2015-01-01T00:00:00+0000", 1L));

}

Expand All @@ -795,14 +804,14 @@ public void facet_on_created_at_with_bounds_outside_of_data() throws Exception {
.createdBefore(DateUtils.parseDate("2016-01-01"))
.build(), options).getFacets().get("createdAt");
assertThat(createdAt).containsOnly(
entry("2009-01-01T01:00:00+0000", 0L),
entry("2010-01-01T01:00:00+0000", 0L),
entry("2011-01-01T01:00:00+0000", 1L),
entry("2012-01-01T01:00:00+0000", 0L),
entry("2013-01-01T01:00:00+0000", 0L),
entry("2014-01-01T01:00:00+0000", 5L),
entry("2015-01-01T01:00:00+0000", 1L),
entry("2016-01-01T01:00:00+0000", 0L));
entry("2008-01-01T00:00:00+0000", 0L),
entry("2009-01-01T00:00:00+0000", 0L),
entry("2010-01-01T00:00:00+0000", 0L),
entry("2011-01-01T00:00:00+0000", 1L),
entry("2012-01-01T00:00:00+0000", 0L),
entry("2013-01-01T00:00:00+0000", 0L),
entry("2014-01-01T00:00:00+0000", 5L),
entry("2015-01-01T00:00:00+0000", 1L));
}

@Test
Expand All @@ -812,12 +821,11 @@ public void facet_on_created_at_without_start_bound() throws Exception {
Map<String, Long> createdAt = index.search(IssueQuery.builder().createdBefore(DateUtils.parseDate("2016-01-01")).build(),
SearchOptions).getFacets().get("createdAt");
assertThat(createdAt).containsOnly(
entry("2011-01-01T01:00:00+0000", 1L),
entry("2012-01-01T01:00:00+0000", 0L),
entry("2013-01-01T01:00:00+0000", 0L),
entry("2014-01-01T01:00:00+0000", 5L),
entry("2015-01-01T01:00:00+0000", 1L),
entry("2016-01-01T01:00:00+0000", 0L));
entry("2011-01-01T00:00:00+0000", 1L),
entry("2012-01-01T00:00:00+0000", 0L),
entry("2013-01-01T00:00:00+0000", 0L),
entry("2014-01-01T00:00:00+0000", 5L),
entry("2015-01-01T00:00:00+0000", 1L));
}

@Test
Expand Down
Expand Up @@ -28,6 +28,7 @@
import java.util.Date;
import java.util.Map;
import java.util.Properties;
import java.util.TimeZone;

/**
* Proxy over {@link java.lang.System}. It aims to improve testability of classes
Expand Down Expand Up @@ -126,6 +127,14 @@ public Date newDate() {
return new Date();
}

/**
* @since 5.1
* @return the JVM's default time zone
*/
public TimeZone getDefaultTimeZone() {
return TimeZone.getDefault();
}

/**
* Closes the object and throws an {@link java.lang.IllegalStateException} on error.
* @since 5.1
Expand Down

0 comments on commit 6b51007

Please sign in to comment.