From 247ff315c93202bfffa1aaf928e757c9db8ba1fa Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Wed, 13 Jul 2016 17:35:18 +0200 Subject: [PATCH] SONAR-7870 Do not ignore unit tests when computing measures based on issues --- .../sonar/server/issue/index/IssueIndex.java | 34 ++++++++++++------- .../server/issue/index/IssueIndexTest.java | 3 +- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java index 3be66691e4e..c5ef3def811 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java @@ -33,6 +33,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.SortedSet; import java.util.TimeZone; @@ -412,7 +413,7 @@ public class IssueIndex extends BaseIndex { } addAssignedToMeFacetIfNeeded(esSearch, options, query, filters, esQuery); if (options.getFacets().contains(CREATED_AT)) { - esSearch.addAggregation(getCreatedAtFacet(query, filters, esQuery)); + getCreatedAtFacet(query, filters, esQuery).ifPresent(a -> esSearch.addAggregation(a)); } } @@ -446,17 +447,23 @@ public class IssueIndex extends BaseIndex { return FACET_MODE_EFFORT.equals(query.facetMode()) || DEPRECATED_FACET_MODE_DEBT.equals(query.facetMode()); } - private AggregationBuilder getCreatedAtFacet(IssueQuery query, Map filters, QueryBuilder esQuery) { - long now = system.now(); - - DateHistogramInterval bucketSize = DateHistogramInterval.YEAR; + private Optional getCreatedAtFacet(IssueQuery query, Map filters, QueryBuilder esQuery) { + long startTime; Date createdAfter = query.createdAfter(); - long startTime = createdAfter == null ? getMinCreatedAt(filters, esQuery) : createdAfter.getTime(); + if (createdAfter == null) { + Optional minDate = getMinCreatedAt(filters, esQuery); + if (!minDate.isPresent()) { + return Optional.empty(); + } + startTime = minDate.get(); + } else { + startTime = createdAfter.getTime(); + } Date createdBefore = query.createdBefore(); - long endTime = createdBefore == null ? now : createdBefore.getTime(); + long endTime = createdBefore == null ? system.now() : createdBefore.getTime(); Duration timeSpan = new Duration(startTime, endTime); - + DateHistogramInterval bucketSize = DateHistogramInterval.YEAR; if (timeSpan.isShorterThan(TWENTY_DAYS)) { bucketSize = DateHistogramInterval.DAY; } else if (timeSpan.isShorterThan(TWENTY_WEEKS)) { @@ -478,10 +485,10 @@ public class IssueIndex extends BaseIndex { // ES dateHistogram bounds are inclusive while createdBefore parameter is exclusive .extendedBounds(startTime, endTime - 1_000L); dateHistogram = addEffortAggregationIfNeeded(query, dateHistogram); - return dateHistogram; + return Optional.of(dateHistogram); } - private long getMinCreatedAt(Map filters, QueryBuilder esQuery) { + private Optional getMinCreatedAt(Map filters, QueryBuilder esQuery) { String facetNameAndField = IssueIndexDefinition.FIELD_ISSUE_FUNC_CREATED_AT; SearchRequestBuilder esRequest = getClient() .prepareSearch(IssueIndexDefinition.INDEX) @@ -500,12 +507,13 @@ public class IssueIndex extends BaseIndex { } esRequest.addAggregation(AggregationBuilders.min(facetNameAndField).field(facetNameAndField)); Min minValue = esRequest.get().getAggregations().get(facetNameAndField); + Double actualValue = minValue.getValue(); + System.out.println("min=" + actualValue); if (actualValue.isInfinite()) { - return Long.MIN_VALUE; - } else { - return actualValue.longValue(); + return Optional.empty(); } + return Optional.of(actualValue.longValue()); } private AggregationBuilder createAssigneesFacet(IssueQuery query, Map filters, QueryBuilder queryBuilder) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexTest.java index b26b0285722..987fb1dcde6 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexTest.java @@ -29,7 +29,6 @@ import java.util.Map; import java.util.TimeZone; import javax.annotation.Nullable; import org.assertj.core.api.Fail; -import org.elasticsearch.test.ESTestCase; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -868,7 +867,7 @@ public class IssueIndexTest { Map createdAt = underTest.search(IssueQuery.builder(userSessionRule).build(), SearchOptions).getFacets().get("createdAt"); - assertThat(createdAt).isEmpty(); + assertThat(createdAt).isNull(); } private SearchOptions fixtureForCreatedAtFacet() { -- 2.39.5