use of uk.gov.gchq.gaffer.hbasestore.coprocessor.processor.GafferScannerProcessor in project Gaffer by gchq.
the class QueryScannerTest method shouldConstructProcessors.
@Test
public void shouldConstructProcessors() throws OperationException, IOException {
// Given
final Scan scan = mock(Scan.class);
given(scan.getAttribute(HBaseStoreConstants.VIEW)).willReturn(VIEW.toCompactJson());
given(scan.getAttribute(HBaseStoreConstants.EXTRA_PROCESSORS)).willReturn(StringUtil.toCsv(ElementDedupeFilterProcessor.class));
given(scan.getAttribute(HBaseStoreConstants.DIRECTED_TYPE)).willReturn(Bytes.toBytes(DirectedType.DIRECTED.name()));
// When
final List<GafferScannerProcessor> processors = QueryScanner.createProcessors(scan, SCHEMA, serialisation);
// Then
assertThat(processors).hasSize(7);
int i = 0;
assertTrue(processors.get(i) instanceof GroupFilterProcessor);
assertEquals(VIEW, ((GroupFilterProcessor) processors.get(i)).getView());
i++;
assertTrue(processors.get(i) instanceof ElementDedupeFilterProcessor);
assertTrue(((ElementDedupeFilterProcessor) processors.get(i)).isEntities());
assertTrue(((ElementDedupeFilterProcessor) processors.get(i)).isEdges());
assertTrue(((ElementDedupeFilterProcessor) processors.get(i)).isDirectedEdges());
assertFalse(((ElementDedupeFilterProcessor) processors.get(i)).isUnDirectedEdges());
i++;
assertTrue(processors.get(i) instanceof StoreAggregationProcessor);
assertEquals(SCHEMA, ((StoreAggregationProcessor) processors.get(i)).getSchema());
i++;
assertTrue(processors.get(i) instanceof ValidationProcessor);
assertEquals(SCHEMA, ((ValidationProcessor) processors.get(i)).getSchema());
i++;
assertTrue(processors.get(i) instanceof PreAggregationFilterProcessor);
assertEquals(VIEW, ((PreAggregationFilterProcessor) processors.get(i)).getView());
i++;
assertTrue(processors.get(i) instanceof QueryAggregationProcessor);
assertEquals(SCHEMA, ((QueryAggregationProcessor) processors.get(i)).getSchema());
assertEquals(VIEW, ((QueryAggregationProcessor) processors.get(i)).getView());
i++;
assertTrue(processors.get(i) instanceof PostAggregationFilterProcessor);
assertEquals(VIEW, ((PostAggregationFilterProcessor) processors.get(i)).getView());
}
use of uk.gov.gchq.gaffer.hbasestore.coprocessor.processor.GafferScannerProcessor in project Gaffer by gchq.
the class QueryScannerTest method shouldConstructProcessorsWithNoAggregation.
@Test
public void shouldConstructProcessorsWithNoAggregation() throws OperationException, IOException {
// Given
final Scan scan = mock(Scan.class);
given(scan.getAttribute(HBaseStoreConstants.VIEW)).willReturn(VIEW.toCompactJson());
given(scan.getAttribute(HBaseStoreConstants.EXTRA_PROCESSORS)).willReturn(StringUtil.toCsv(ElementDedupeFilterProcessor.class));
// When
final List<GafferScannerProcessor> processors = QueryScanner.createProcessors(scan, SCHEMA_NO_AGGREGATION, serialisation);
// Then
assertThat(processors).hasSize(5);
int i = 0;
assertTrue(processors.get(i) instanceof GroupFilterProcessor);
assertEquals(VIEW, ((GroupFilterProcessor) processors.get(i)).getView());
i++;
assertTrue(processors.get(i) instanceof ElementDedupeFilterProcessor);
assertTrue(((ElementDedupeFilterProcessor) processors.get(i)).isEntities());
assertTrue(((ElementDedupeFilterProcessor) processors.get(i)).isEdges());
assertFalse(((ElementDedupeFilterProcessor) processors.get(i)).isDirectedEdges());
assertFalse(((ElementDedupeFilterProcessor) processors.get(i)).isUnDirectedEdges());
i++;
assertTrue(processors.get(i) instanceof ValidationProcessor);
assertEquals(SCHEMA_NO_AGGREGATION, ((ValidationProcessor) processors.get(i)).getSchema());
i++;
assertTrue(processors.get(i) instanceof PreAggregationFilterProcessor);
assertEquals(VIEW, ((PreAggregationFilterProcessor) processors.get(i)).getView());
i++;
assertTrue(processors.get(i) instanceof PostAggregationFilterProcessor);
assertEquals(VIEW, ((PostAggregationFilterProcessor) processors.get(i)).getView());
}
use of uk.gov.gchq.gaffer.hbasestore.coprocessor.processor.GafferScannerProcessor in project Gaffer by gchq.
the class QueryScanner method createProcessors.
protected static List<GafferScannerProcessor> createProcessors(final Scan scan, final Schema schema, final ElementSerialisation serialisation) {
final List<GafferScannerProcessor> processors = new ArrayList<>();
final Set<Class<? extends GafferScannerProcessor>> extraProcessors = getExtraProcessors(scan);
// The view will be null if a scan of the table is done in the hbase shell
final View view = getView(scan);
if (null != view) {
processors.add(new GroupFilterProcessor(view));
if (extraProcessors.remove(ElementDedupeFilterProcessor.class)) {
processors.add(new ElementDedupeFilterProcessor(view.hasEntities(), view.hasEdges(), getDirectedType(scan)));
}
}
if (schema.isAggregationEnabled()) {
processors.add(new StoreAggregationProcessor(serialisation, schema));
}
processors.add(new ValidationProcessor(schema));
if (null != view) {
processors.add(new PreAggregationFilterProcessor(view));
if (schema.isAggregationEnabled()) {
processors.add(new QueryAggregationProcessor(serialisation, schema, view));
}
processors.add(new PostAggregationFilterProcessor(view));
}
if (!extraProcessors.isEmpty()) {
throw new RuntimeException("Unrecognised extra processors: " + extraProcessors);
}
return processors;
}
use of uk.gov.gchq.gaffer.hbasestore.coprocessor.processor.GafferScannerProcessor in project Gaffer by gchq.
the class StoreScanner method createProcessors.
protected static List<GafferScannerProcessor> createProcessors(final Schema schema, final ElementSerialisation serialisation) {
final List<GafferScannerProcessor> processors = new ArrayList<>();
if (schema.isAggregationEnabled()) {
processors.add(new StoreAggregationProcessor(serialisation, schema));
}
processors.add(new ValidationProcessor(schema));
return processors;
}
Aggregations