@Test public void getDefaultTimezone() { assertThat(System2.INSTANCE.getDefaultTimeZone().getID()).isEqualTo(TimeZone.getDefault().getID()); } }
public SearchIdResult<String> search(ProjectMeasuresQuery query, SearchOptions searchOptions) { SearchRequestBuilder requestBuilder = client .prepareSearch(INDEX_TYPE_PROJECT_MEASURES) .setFetchSource(false) .setFrom(searchOptions.getOffset()) .setSize(searchOptions.getLimit()); BoolQueryBuilder esFilter = boolQuery(); Map<String, QueryBuilder> filters = createFilters(query); filters.values().forEach(esFilter::must); requestBuilder.setQuery(esFilter); addFacets(requestBuilder, searchOptions, filters, query); addSort(query, requestBuilder); return new SearchIdResult<>(requestBuilder.get(), id -> id, system2.getDefaultTimeZone()); }
@SafeVarargs private final void assertThatFacetHasOnly(IssueQuery.Builder query, String facet, Map.Entry<String, Long>... expectedEntries) { SearchResponse result = underTest.search(query.build(), new SearchOptions().addFacets(singletonList(facet))); Facets facets = new Facets(result, system2.getDefaultTimeZone()); assertThat(facets.getNames()).containsOnly(facet, "effort"); assertThat(facets.get(facet)).containsOnly(expectedEntries); }
private void assertThatFacetHasSize(IssueQuery issueQuery, String facet, int expectedSize) { SearchResponse result = underTest.search(issueQuery, new SearchOptions().addFacets(singletonList(facet))); Facets facets = new Facets(result, system2.getDefaultTimeZone()); assertThat(facets.get(facet)).hasSize(expectedSize); } }
@SafeVarargs private final void assertThatFacetHasOnly(IssueQuery.Builder query, String facet, Map.Entry<String, Long>... expectedEntries) { SearchResponse result = underTest.search(query.build(), new SearchOptions().addFacets(singletonList(facet))); Facets facets = new Facets(result, system2.getDefaultTimeZone()); assertThat(facets.getNames()).containsOnly(facet, "effort"); assertThat(facets.get(facet)).containsOnly(expectedEntries); } }
@SafeVarargs private final void assertThatFacetHasExactly(IssueQuery.Builder query, String facet, Map.Entry<String, Long>... expectedEntries) { SearchResponse result = underTest.search(query.build(), new SearchOptions().addFacets(singletonList(facet))); Facets facets = new Facets(result, system2.getDefaultTimeZone()); assertThat(facets.getNames()).containsOnly(facet, "effort"); assertThat(facets.get(facet)).containsExactly(expectedEntries); }
public SearchIdResult<Integer> search(RuleQuery query, SearchOptions options) { SearchRequestBuilder esSearch = client .prepareSearch(INDEX_TYPE_RULE); QueryBuilder qb = buildQuery(query); Map<String, QueryBuilder> filters = buildFilters(query); if (!options.getFacets().isEmpty()) { for (AggregationBuilder aggregation : getFacets(query, options, qb, filters).values()) { esSearch.addAggregation(aggregation); } } setSorting(query, esSearch); setPagination(options, esSearch); BoolQueryBuilder fb = boolQuery(); for (QueryBuilder filterBuilder : filters.values()) { fb.must(filterBuilder); } esSearch.setQuery(boolQuery().must(qb).filter(fb)); return new SearchIdResult<>(esSearch.get(), Integer::parseInt, system2.getDefaultTimeZone()); }
private Facets search(String additionalFacet) { return new Facets(underTest.search(newQueryBuilder().build(), new SearchOptions().addFacets(singletonList(additionalFacet))), system2.getDefaultTimeZone()); }
@Test public void facet_on_created_at_without_issues() { SearchOptions searchOptions = new SearchOptions().addFacets("createdAt"); SearchResponse result = underTest.search(IssueQuery.builder().build(), searchOptions); Map<String, Long> createdAt = new Facets(result, system2.getDefaultTimeZone()).get("createdAt"); assertThat(createdAt).isNull(); }
@Test public void facet_on_created_at_with_one_day() { SearchOptions options = fixtureForCreatedAtFacet(); SearchResponse result = underTest.search(IssueQuery.builder() .createdAfter(parseDateTime("2014-09-01T00:00:00-0100")) .createdBefore(parseDateTime("2014-09-02T00:00:00-0100")).build(), options); Map<String, Long> createdAt = new Facets(result, system2.getDefaultTimeZone()).get("createdAt"); assertThat(createdAt).containsOnly( entry("2014-09-01", 2L)); }
@Test public void facet_on_created_at() { SearchOptions searchOptions = fixtureForCreatedAtFacet(); Builder query = newQueryBuilder().createdBefore(parseDateTime("2016-01-01T00:00:00+0100")); Map<String, Long> createdAt = new Facets(underTest.search(query.build(), searchOptions), system2.getDefaultTimeZone()).get("createdAt"); assertThat(createdAt).containsOnly( entry("2011-01-01", 10L), entry("2012-01-01", 0L), entry("2013-01-01", 0L), entry("2014-01-01", 50L), entry("2015-01-01", 10L)); }
@Test public void facet_on_created_at_without_start_bound() { SearchOptions searchOptions = fixtureForCreatedAtFacet(); SearchResponse result = underTest.search(IssueQuery.builder() .createdBefore(parseDateTime("2016-01-01T00:00:00+0100")).build(), searchOptions); Map<String, Long> createdAt = new Facets(result, system2.getDefaultTimeZone()).get("createdAt"); assertThat(createdAt).containsOnly( entry("2011-01-01", 1L), entry("2012-01-01", 0L), entry("2013-01-01", 0L), entry("2014-01-01", 5L), entry("2015-01-01", 1L)); }
@Test public void facet_on_created_at_with_less_than_20_weeks() { SearchOptions options = fixtureForCreatedAtFacet(); SearchResponse result = underTest.search(IssueQuery.builder() .createdAfter(parseDateTime("2014-09-01T00:00:00+0100")) .createdBefore(parseDateTime("2014-09-21T00:00:00+0100")).build(), options); Map<String, Long> createdAt = new Facets(result, system2.getDefaultTimeZone()).get("createdAt"); assertThat(createdAt).containsOnly( entry("2014-08-25", 0L), entry("2014-09-01", 4L), entry("2014-09-08", 0L), entry("2014-09-15", 1L)); }
@Test public void facets_on_assignees() { ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto()); ComponentDto file = ComponentTesting.newFileDto(project, null); indexIssues( IssueDocTesting.newDoc("I1", file).setAssigneeUuid("uuid-steph").setEffort(10L), IssueDocTesting.newDoc("I2", file).setAssigneeUuid("uuid-simon").setEffort(10L), IssueDocTesting.newDoc("I3", file).setAssigneeUuid("uuid-simon").setEffort(10L), IssueDocTesting.newDoc("I4", file).setAssigneeUuid(null).setEffort(10L)); Facets facets = new Facets(underTest.search(newQueryBuilder().build(), new SearchOptions().addFacets(asList("assignees"))), system2.getDefaultTimeZone()); assertThat(facets.getNames()).containsOnly("assignees", FACET_MODE_EFFORT); assertThat(facets.get("assignees")).containsOnly(entry("uuid-steph", 10L), entry("uuid-simon", 20L), entry("", 10L)); assertThat(facets.get(FACET_MODE_EFFORT)).containsOnly(entry("total", 40L)); }
@Test public void facets_on_authors() { ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto()); ComponentDto file = ComponentTesting.newFileDto(project, null); indexIssues( IssueDocTesting.newDoc("I1", file).setAuthorLogin("steph").setEffort(10L), IssueDocTesting.newDoc("I2", file).setAuthorLogin("simon").setEffort(10L), IssueDocTesting.newDoc("I3", file).setAuthorLogin("simon").setEffort(10L), IssueDocTesting.newDoc("I4", file).setAuthorLogin(null).setEffort(10L)); Facets facets = new Facets(underTest.search(newQueryBuilder().build(), new SearchOptions().addFacets(asList("authors"))), system2.getDefaultTimeZone()); assertThat(facets.getNames()).containsOnly("authors", FACET_MODE_EFFORT); assertThat(facets.get("authors")).containsOnly(entry("steph", 10L), entry("simon", 20L)); assertThat(facets.get(FACET_MODE_EFFORT)).containsOnly(entry("total", 40L)); }
@Test public void facet_on_created_at_with_more_than_20_months() { SearchOptions options = fixtureForCreatedAtFacet(); SearchResponse result = underTest.search(IssueQuery.builder() .createdAfter(parseDateTime("2011-01-01T00:00:00+0100")) .createdBefore(parseDateTime("2016-01-01T00:00:00+0100")).build(), options); Map<String, Long> createdAt = new Facets(result, system2.getDefaultTimeZone()).get("createdAt"); assertThat(createdAt).containsOnly( entry("2010-01-01", 0L), entry("2011-01-01", 1L), entry("2012-01-01", 0L), entry("2013-01-01", 0L), entry("2014-01-01", 5L), entry("2015-01-01", 1L)); }
@Test public void facet_on_created_at_with_less_than_20_months() { SearchOptions options = fixtureForCreatedAtFacet(); SearchResponse result = underTest.search(IssueQuery.builder() .createdAfter(parseDateTime("2014-09-01T00:00:00+0100")) .createdBefore(parseDateTime("2015-01-19T00:00:00+0100")).build(), options); Map<String, Long> createdAt = new Facets(result, system2.getDefaultTimeZone()).get("createdAt"); assertThat(createdAt).containsOnly( entry("2014-08-01", 0L), entry("2014-09-01", 5L), entry("2014-10-01", 0L), entry("2014-11-01", 0L), entry("2014-12-01", 0L), entry("2015-01-01", 1L)); }
@Test public void facet_on_created_at_with_bounds_outside_of_data() { SearchOptions options = fixtureForCreatedAtFacet(); SearchResponse result = underTest.search(IssueQuery.builder() .createdAfter(parseDateTime("2009-01-01T00:00:00+0100")) .createdBefore(parseDateTime("2016-01-01T00:00:00+0100")) .build(), options); Map<String, Long> createdAt = new Facets(result, system2.getDefaultTimeZone()).get("createdAt"); assertThat(createdAt).containsOnly( entry("2008-01-01", 0L), entry("2009-01-01", 0L), entry("2010-01-01", 0L), entry("2011-01-01", 1L), entry("2012-01-01", 0L), entry("2013-01-01", 0L), entry("2014-01-01", 5L), entry("2015-01-01", 1L)); }
@Test public void facet_on_created_at_with_less_than_20_days() { SearchOptions options = fixtureForCreatedAtFacet(); IssueQuery query = IssueQuery.builder() .createdAfter(parseDateTime("2014-09-01T00:00:00+0100")) .createdBefore(parseDateTime("2014-09-08T00:00:00+0100")) .build(); SearchResponse result = underTest.search(query, options); Map<String, Long> buckets = new Facets(result, system2.getDefaultTimeZone()).get("createdAt"); assertThat(buckets).containsOnly( entry("2014-08-31", 0L), entry("2014-09-01", 2L), entry("2014-09-02", 1L), entry("2014-09-03", 0L), entry("2014-09-04", 0L), entry("2014-09-05", 1L), entry("2014-09-06", 0L), entry("2014-09-07", 0L)); }
public SearchIdResult<String> search(ComponentQuery query, SearchOptions searchOptions) { SearchRequestBuilder requestBuilder = client .prepareSearch(INDEX_TYPE_COMPONENT) .setFetchSource(false) .setFrom(searchOptions.getOffset()) .setSize(searchOptions.getLimit()); BoolQueryBuilder esQuery = boolQuery(); esQuery.filter(authorizationTypeSupport.createQueryFilter()); setNullable(query.getQuery(), q -> { ComponentTextSearchQuery componentTextSearchQuery = ComponentTextSearchQuery.builder() .setQueryText(q) .setFieldKey(FIELD_KEY) .setFieldName(FIELD_NAME) .build(); esQuery.must(ComponentTextSearchQueryFactory.createQuery(componentTextSearchQuery, ComponentTextSearchFeatureRepertoire.values())); }); setEmptiable(query.getQualifiers(), q -> esQuery.must(termsQuery(FIELD_QUALIFIER, q))); setNullable(query.getLanguage(), l -> esQuery.must(termQuery(FIELD_LANGUAGE, l))); setNullable(query.getOrganizationUuid(), o -> esQuery.must(termQuery(FIELD_ORGANIZATION_UUID, o))); requestBuilder.setQuery(esQuery); requestBuilder.addSort(SORTABLE_ANALYZER.subField(FIELD_NAME), SortOrder.ASC); return new SearchIdResult<>(requestBuilder.get(), id -> id, system2.getDefaultTimeZone()); }