Search in sources :

Example 26 with Query

use of ddf.catalog.operation.Query in project ddf by codice.

the class SortedQueryMonitorTest method setUp.

@Before
public void setUp() throws Exception {
    completionService = mock(CompletionService.class);
    queryRequest = mock(QueryRequest.class);
    queryResponse = new QueryResponseImpl(queryRequest);
    query = mock(Query.class);
    // Enforce insertion order for testing purposes
    futures = new LinkedHashMap<>();
    for (int i = 0; i < 4; i++) {
        SourceResponse sourceResponseMock = null;
        Future futureMock = mock(Future.class);
        QueryRequest queryRequest = mock(QueryRequest.class);
        when(queryRequest.getSourceIds()).thenReturn(Collections.singleton("Source-" + i));
        switch(i) {
            case 1:
                sourceResponseMock = mock(SourceResponse.class);
                when(sourceResponseMock.getResults()).thenReturn(Lists.newArrayList(mock(Result.class), mock(Result.class), mock(Result.class)));
                when(sourceResponseMock.getHits()).thenReturn(3L);
                break;
            case 2:
                sourceResponseMock = mock(SourceResponse.class);
                when(sourceResponseMock.getResults()).thenReturn(Lists.newArrayList(mock(Result.class)));
                when(sourceResponseMock.getHits()).thenReturn(1L);
                break;
            case 3:
                sourceResponseMock = mock(SourceResponse.class);
                when(sourceResponseMock.getResults()).thenReturn(Lists.<Result>emptyList());
                when(sourceResponseMock.getHits()).thenReturn(0L);
                break;
        }
        when(futureMock.get()).thenReturn(sourceResponseMock);
        futures.put(futureMock, queryRequest);
    }
}
Also used : QueryResponseImpl(ddf.catalog.operation.impl.QueryResponseImpl) QueryRequest(ddf.catalog.operation.QueryRequest) Query(ddf.catalog.operation.Query) SourceResponse(ddf.catalog.operation.SourceResponse) CompletionService(java.util.concurrent.CompletionService) Future(java.util.concurrent.Future) Before(org.junit.Before)

Example 27 with Query

use of ddf.catalog.operation.Query in project ddf by codice.

the class SortedQueryMonitorTest method testSourcePropertiesCollision.

@Test
public void testSourcePropertiesCollision() throws Exception {
    PropertyName propertyName = mock(PropertyName.class);
    when(propertyName.getPropertyName()).thenReturn(TEST_PROPERTY);
    CompletionService completionService = mock(CompletionService.class);
    QueryRequest queryRequest = mock(QueryRequest.class);
    Query query = mock(Query.class);
    when(query.getTimeoutMillis()).thenReturn(0L);
    when(queryRequest.getQuery()).thenReturn(query);
    when(queryRequest.getSourceIds()).thenReturn(new HashSet<>(Arrays.asList("Source1", "Source2")));
    Map<Future<SourceResponse>, QueryRequest> futures = new LinkedHashMap<>();
    Future futureMock = mock(Future.class);
    QueryRequest queryRequest1 = mock(QueryRequest.class);
    when(queryRequest1.getQuery()).thenReturn(query);
    when(queryRequest1.getSourceIds()).thenReturn(new HashSet<>(Arrays.asList("Source1")));
    SourceResponse sourceResponseMock = getMockedResponse(getResults(TEST_PROPERTY, 1));
    when(sourceResponseMock.getProperties()).thenReturn(ImmutableMap.of("test", 1));
    when(futureMock.get()).thenReturn(sourceResponseMock);
    futures.put(futureMock, queryRequest1);
    Future futureMock2 = mock(Future.class);
    QueryRequest queryRequest2 = mock(QueryRequest.class);
    when(queryRequest2.getQuery()).thenReturn(query);
    when(queryRequest2.getSourceIds()).thenReturn(new HashSet<>(Arrays.asList("Source2")));
    SourceResponse sourceResponseMock2 = getMockedResponse(getResults(TEST_PROPERTY, 2));
    when(sourceResponseMock2.getProperties()).thenReturn(ImmutableMap.of("test", 2));
    when(futureMock2.get()).thenReturn(sourceResponseMock2);
    futures.put(futureMock2, queryRequest2);
    QueryResponseImpl queryResponse = new QueryResponseImpl(queryRequest);
    SortedQueryMonitor queryMonitor = new SortedQueryMonitor(completionService, futures, queryResponse, queryRequest, new ArrayList<>());
    when(completionService.take()).thenReturn(futureMock, futureMock2);
    queryMonitor.run();
    Map<String, Serializable> returnedProperties = queryResponse.getProperties();
    // Verify that the "test" property had a collision and only has the last value returned
    assertThat(returnedProperties.get("test")).isEqualTo(2);
    // Verify that the original source properties are available
    assertThat(returnedProperties.containsKey(SortedQueryMonitor.ORIGINAL_SOURCE_PROPERTIES)).isEqualTo(true);
    Map<String, Map<String, Serializable>> returnedSourceProperties = (Map<String, Map<String, Serializable>>) returnedProperties.get("originalSourceProperties");
    assertThat(returnedSourceProperties.size()).isEqualTo(2);
    assertThat(returnedSourceProperties.get("Source1").get("test")).isEqualTo(1);
    assertThat(returnedSourceProperties.get("Source2").get("test")).isEqualTo(2);
}
Also used : PropertyName(org.opengis.filter.expression.PropertyName) Serializable(java.io.Serializable) QueryRequest(ddf.catalog.operation.QueryRequest) Query(ddf.catalog.operation.Query) SourceResponse(ddf.catalog.operation.SourceResponse) LinkedHashMap(java.util.LinkedHashMap) QueryResponseImpl(ddf.catalog.operation.impl.QueryResponseImpl) CompletionService(java.util.concurrent.CompletionService) Future(java.util.concurrent.Future) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap) Test(org.junit.Test)

Example 28 with Query

use of ddf.catalog.operation.Query in project ddf by codice.

the class SortedFederationStrategyTest method testStartIndexGreaterThanMaxStartIndex.

@Test
public void testStartIndexGreaterThanMaxStartIndex() throws Exception {
    SortedQueryMonitorFactory mockSortedQueryMonitorFactory = mock(SortedQueryMonitorFactory.class);
    when(mockSortedQueryMonitorFactory.createMonitor(any(CompletionService.class), any(Map.class), responseArgumentCaptor.capture(), requestArgumentCaptor.capture(), any(List.class))).thenReturn(mockSortedQueryMonitor);
    SortedFederationStrategy federateStrategy = new SortedFederationStrategy(queryExecutor, Arrays.asList(preQueryPlugin), new ArrayList<>(), mockSortedQueryMonitorFactory);
    // startIndex and pageSize must be > 1
    Query mockQ = new QueryImpl(mock(NullFilterImpl.class), SortedFederationStrategy.DEFAULT_MAX_START_INDEX + 5, 1, mock(SortBy.class), true, LONG_TIMEOUT);
    QueryRequest fedQueryRequest = new QueryRequestImpl(mockQ, properties);
    List<Source> sources = new ArrayList<>();
    // Multiple sources needed for OffsetResultHandler to be used
    for (int i = 0; i < 2; i++) {
        Source mockSource = mock(Source.class);
        when(mockSource.getId()).thenReturn("mock source " + i);
        sources.add(mockSource);
    }
    QueryResponse federateResponse = federateStrategy.federate(sources, fedQueryRequest);
    assertThat(federateResponse.getRequest().getQuery().getStartIndex(), is(SortedFederationStrategy.DEFAULT_MAX_START_INDEX + 5));
    // Modified offset is set to 1
    verify(mockSortedQueryMonitorFactory).createMonitor(any(CompletionService.class), any(Map.class), responseArgumentCaptor.capture(), requestArgumentCaptor.capture(), any(List.class));
    assertThat(requestArgumentCaptor.getValue().getQuery().getStartIndex(), is(1));
}
Also used : NullFilterImpl(org.geotools.filter.NullFilterImpl) Query(ddf.catalog.operation.Query) QueryRequest(ddf.catalog.operation.QueryRequest) SortBy(org.opengis.filter.sort.SortBy) ArrayList(java.util.ArrayList) Source(ddf.catalog.source.Source) QueryImpl(ddf.catalog.operation.impl.QueryImpl) CompletionService(java.util.concurrent.CompletionService) QueryRequestImpl(ddf.catalog.operation.impl.QueryRequestImpl) QueryResponse(ddf.catalog.operation.QueryResponse) List(java.util.List) ArrayList(java.util.ArrayList) ImmutableList(com.google.common.collect.ImmutableList) Map(java.util.Map) HashMap(java.util.HashMap) Test(org.junit.Test)

Example 29 with Query

use of ddf.catalog.operation.Query in project ddf by codice.

the class SortedFederationStrategyTest method testConnectedSources.

@Test
public void testConnectedSources() throws Exception {
    Query mockQ = new QueryImpl(mock(NullFilterImpl.class), 2, 2, mock(SortBy.class), true, LONG_TIMEOUT);
    QueryRequest fedQueryRequest = new QueryRequestImpl(mockQ, properties);
    List<Source> sources = new ArrayList<>();
    // Multiple sources needed for OffsetResultHandler to be used
    for (int i = 0; i < 2; i++) {
        Source mockSource = mock(Source.class);
        when(mockSource.getId()).thenReturn("mock source");
        sources.add(mockSource);
    }
    strategy.federate(sources, fedQueryRequest);
    // Make sure both sources get called even though they have the same name
    verify(sources.get(0), atLeastOnce()).query(any(QueryRequest.class));
    verify(sources.get(1), atLeastOnce()).query(any(QueryRequest.class));
}
Also used : QueryImpl(ddf.catalog.operation.impl.QueryImpl) NullFilterImpl(org.geotools.filter.NullFilterImpl) Query(ddf.catalog.operation.Query) QueryRequest(ddf.catalog.operation.QueryRequest) SortBy(org.opengis.filter.sort.SortBy) QueryRequestImpl(ddf.catalog.operation.impl.QueryRequestImpl) ArrayList(java.util.ArrayList) Source(ddf.catalog.source.Source) Test(org.junit.Test)

Example 30 with Query

use of ddf.catalog.operation.Query in project ddf by codice.

the class SecurityLoggingPlugin method process.

@Override
public QueryRequest process(QueryRequest input) throws PluginExecutionException, StopProcessingException {
    Query query = input.getQuery();
    String additional = query.toString();
    logOperation(CatalogOperationType.QUERY_REQUEST, input, additional);
    return input;
}
Also used : Query(ddf.catalog.operation.Query)

Aggregations

Query (ddf.catalog.operation.Query)104 QueryImpl (ddf.catalog.operation.impl.QueryImpl)69 QueryRequest (ddf.catalog.operation.QueryRequest)67 QueryRequestImpl (ddf.catalog.operation.impl.QueryRequestImpl)60 Test (org.junit.Test)45 Filter (org.opengis.filter.Filter)40 SourceResponse (ddf.catalog.operation.SourceResponse)31 ArrayList (java.util.ArrayList)23 SortBy (org.opengis.filter.sort.SortBy)23 UnsupportedQueryException (ddf.catalog.source.UnsupportedQueryException)22 Result (ddf.catalog.data.Result)19 HashMap (java.util.HashMap)18 QueryResponse (ddf.catalog.operation.QueryResponse)16 Serializable (java.io.Serializable)16 Metacard (ddf.catalog.data.Metacard)14 QueryResponseImpl (ddf.catalog.operation.impl.QueryResponseImpl)12 Source (ddf.catalog.source.Source)11 Map (java.util.Map)11 FederationException (ddf.catalog.federation.FederationException)10 TemporalFilter (ddf.catalog.impl.filter.TemporalFilter)10