use of uk.gov.gchq.gaffer.operation.data.EntitySeed in project Gaffer by gchq.
the class AccumuloIDBetweenSetsRetrieverTest method shouldLoadElementsWhenMoreElementsThanFitInBatchScanner.
private void shouldLoadElementsWhenMoreElementsThanFitInBatchScanner(final boolean loadIntoMemory, final AccumuloStore store) throws StoreException {
store.getProperties().setMaxEntriesForBatchScanner("1");
// Query for all edges between the set {A0} and the set {A23}
final AbstractAccumuloTwoSetSeededOperation<EntitySeed, Element> op = new GetElementsBetweenSets<>(AccumuloTestData.SEED_A0_SET, AccumuloTestData.SEED_A23_SET, defaultView);
final Set<Element> betweenA0A23results = returnElementsFromOperation(store, op, new User(), loadIntoMemory);
assertEquals(2, betweenA0A23results.size());
assertThat(betweenA0A23results, IsCollectionContaining.hasItems(AccumuloTestData.EDGE_A0_A23, AccumuloTestData.A0_ENTITY));
// Query for all edges between set {A1} and the set {notpresent} - there shouldn't be any, but
// we will get the entity for A1
final AbstractAccumuloTwoSetSeededOperation<EntitySeed, Element> secondOp = new GetElementsBetweenSets<>(AccumuloTestData.SEED_A1_SET, AccumuloTestData.NOT_PRESENT_ENTITY_SEED_SET, defaultView);
final Set<Element> betweenA1andNotPresentResults = returnElementsFromOperation(store, secondOp, new User(), loadIntoMemory);
assertEquals(1, betweenA1andNotPresentResults.size());
assertThat(betweenA1andNotPresentResults, IsCollectionContaining.hasItem(AccumuloTestData.A1_ENTITY));
// Query for all edges between set {A1} and the set {A2} - there shouldn't be any edges but will
// get the entity for A1
final AbstractAccumuloTwoSetSeededOperation<EntitySeed, Element> thirdOp = new GetElementsBetweenSets<>(AccumuloTestData.SEED_A1_SET, AccumuloTestData.SEED_A2_SET, defaultView);
final Set<Element> betweenA1A2Results = returnElementsFromOperation(store, thirdOp, new User(), loadIntoMemory);
assertEquals(1, betweenA1A2Results.size());
assertThat(betweenA1A2Results, IsCollectionContaining.hasItem(AccumuloTestData.A1_ENTITY));
}
use of uk.gov.gchq.gaffer.operation.data.EntitySeed in project Gaffer by gchq.
the class AccumuloIDBetweenSetsRetrieverTest method shouldDealWithOutgoingEdgesOnlyOption.
/**
* Tests that the options to set outgoing edges or incoming edges only options work correctly.
*/
private void shouldDealWithOutgoingEdgesOnlyOption(final AccumuloStore store) {
try {
/*
Create table
(this method creates the table, removes the versioning iterator, and adds the SetOfStatisticsCombiner iterator,
and sets the age off iterator to age data off after it is more than ageOffTimeInMilliseconds milliseconds old).
*/
final Set<Element> data = new HashSet<>();
data.add(AccumuloTestData.EDGE_A1_B1);
data.add(AccumuloTestData.EDGE_B2_A2);
addElements(data, store, new User());
// Query for edges between {A1} and {B1}, with outgoing edges only. Should get the edge A1>B1.
final AbstractAccumuloTwoSetSeededOperation<EntitySeed, Element> opA1B1 = new GetElementsBetweenSets<>(AccumuloTestData.SEED_A1_SET, AccumuloTestData.SEED_B1_SET, defaultView);
opA1B1.setIncludeEntities(false);
opA1B1.setIncludeIncomingOutGoing(IncludeIncomingOutgoingType.OUTGOING);
final Set<Element> a1B1OutgoingEdgeResults = returnElementsFromOperation(store, opA1B1, new User(), false);
assertThat(a1B1OutgoingEdgeResults, IsCollectionContaining.hasItem(AccumuloTestData.EDGE_A1_B1));
// Query for edges between {A1} and {B1}, with incoming edges only. Should get nothing.
opA1B1.setIncludeIncomingOutGoing(IncludeIncomingOutgoingType.INCOMING);
final Set<Element> a1B1EdgeIncomingResults = returnElementsFromOperation(store, opA1B1, new User(), false);
assertEquals(0, a1B1EdgeIncomingResults.size());
// Query for edges between {A2} and {B2}, with incoming edges only. Should get the edge B2->A2.
final AbstractAccumuloTwoSetSeededOperation<EntitySeed, Element> opA2B2 = new GetElementsBetweenSets<>(AccumuloTestData.SEED_A2_SET, AccumuloTestData.SEED_B2_SET, defaultView);
opA2B2.setIncludeEntities(false);
opA2B2.setIncludeIncomingOutGoing(IncludeIncomingOutgoingType.INCOMING);
final Set<Element> a2B2EdgeIncomingResults = returnElementsFromOperation(store, opA2B2, new User(), false);
assertThat(a2B2EdgeIncomingResults, IsCollectionContaining.hasItem(AccumuloTestData.EDGE_B2_A2));
// Query for edges between {A2} and {B2}, with outgoing edges only. Should get nothing.
opA2B2.setIncludeIncomingOutGoing(IncludeIncomingOutgoingType.OUTGOING);
final Set<Element> a2B2EdgeOutgoingResults = returnElementsFromOperation(store, opA2B2, new User(), false);
assertEquals(0, a2B2EdgeOutgoingResults.size());
} catch (StoreException e) {
fail("Failed to set up graph in Accumulo with exception: " + e);
}
}
use of uk.gov.gchq.gaffer.operation.data.EntitySeed in project Gaffer by gchq.
the class GetEdgesInRangesTest method shouldSerialiseAndDeserialiseOperation.
@Test
@Override
public void shouldSerialiseAndDeserialiseOperation() throws SerialisationException {
// Given
final List<Pair<EntitySeed>> pairList = new ArrayList<>();
final Pair<EntitySeed> pair1 = new Pair<>(AccumuloTestData.SEED_SOURCE_1, AccumuloTestData.SEED_DESTINATION_1);
final Pair<EntitySeed> pair2 = new Pair<>(AccumuloTestData.SEED_SOURCE_2, AccumuloTestData.SEED_DESTINATION_2);
pairList.add(pair1);
pairList.add(pair2);
final GetEdgesInRanges<Pair<EntitySeed>> op = new GetEdgesInRanges<>(pairList);
// When
byte[] json = serialiser.serialise(op, true);
final GetEdgesInRanges<Pair<EntitySeed>> deserialisedOp = serialiser.deserialise(json, GetEdgesInRanges.class);
// Then
final Iterator itrPairs = deserialisedOp.getSeeds().iterator();
assertEquals(pair1, itrPairs.next());
assertEquals(pair2, itrPairs.next());
assertFalse(itrPairs.hasNext());
}
use of uk.gov.gchq.gaffer.operation.data.EntitySeed in project Gaffer by gchq.
the class AccumuloSingleIDRetrieverTest method testEntitySeedQueryEdgesAndEntities.
private void testEntitySeedQueryEdgesAndEntities(final AccumuloStore store) throws AccumuloException, StoreException {
setupGraph(store, numEntries);
final User user = new User();
// Create set to query for
final Set<ElementSeed> ids = new HashSet<>();
for (int i = 0; i < numEntries; i++) {
ids.add(new EntitySeed("" + i));
}
final View view = new View.Builder().edge(TestGroups.EDGE).entity(TestGroups.ENTITY).build();
final GetElements<ElementSeed, ?> operation = new GetElements<>(view, ids);
operation.setIncludeEntities(true);
operation.setIncludeEdges(IncludeEdgeType.ALL);
try {
final AccumuloSingleIDRetriever retriever = new AccumuloSingleIDRetriever(store, operation, new User());
assertEquals(numEntries * 3, Iterables.size(retriever));
} catch (IteratorSettingException e) {
fail("Unable to construct SingleID Retriever");
}
//Should find both i-B and i-C edges and entities i
}
use of uk.gov.gchq.gaffer.operation.data.EntitySeed in project Gaffer by gchq.
the class AccumuloSingleIDRetrieverTest method testEntitySeedQueryOutgoingEdgesOnly.
private void testEntitySeedQueryOutgoingEdgesOnly(final AccumuloStore store) throws AccumuloException, StoreException {
setupGraph(store, numEntries);
final User user = new User();
// Create set to query for
Set<ElementSeed> ids = new HashSet<>();
for (int i = 0; i < numEntries; i++) {
ids.add(new EntitySeed("" + i));
}
final View view = new View.Builder().edge(TestGroups.EDGE).entity(TestGroups.ENTITY).build();
AccumuloSingleIDRetriever retriever = null;
GetElements<ElementSeed, ?> operation = new GetElements<>(view, ids);
operation.setIncludeEntities(false);
operation.setIncludeIncomingOutGoing(IncludeIncomingOutgoingType.OUTGOING);
try {
retriever = new AccumuloSingleIDRetriever(store, operation, user);
} catch (IteratorSettingException e) {
e.printStackTrace();
}
int count = 0;
for (final Element element : retriever) {
count++;
assertEquals(TestGroups.EDGE, element.getGroup());
}
//Should find both i-B and i-C edges.
assertEquals(numEntries * 2, count);
}
Aggregations