use of uk.gov.gchq.gaffer.operation.impl.ScoreOperationChain in project Gaffer by gchq.
the class ScoreOperationChainHandlerTest method shouldExecuteScoreChainOperation.
@Test
public void shouldExecuteScoreChainOperation() throws OperationException {
// Given
final ScoreOperationChainHandler operationHandler = new ScoreOperationChainHandler();
final Context context = mock(Context.class);
final Store store = mock(Store.class);
final User user = mock(User.class);
final ScoreOperationChain scoreOperationChain = mock(ScoreOperationChain.class);
StoreProperties storeProperties = new StoreProperties();
final GetAdjacentIds op1 = mock(GetAdjacentIds.class);
final GetElements op2 = mock(GetElements.class);
final OperationChain opChain = new OperationChain(Arrays.asList(op1, op2));
final Integer expectedResult = 2;
given(context.getUser()).willReturn(user);
Set<String> opAuths = new HashSet<>();
opAuths.add("TEST_USER");
given(user.getOpAuths()).willReturn(opAuths);
given(scoreOperationChain.getOperationChain()).willReturn(opChain);
given(store.getProperties()).willReturn(storeProperties);
// When
final Object result = operationHandler.doOperation(new ScoreOperationChain.Builder().operationChain(opChain).build(), context, store);
// Then
assertSame(expectedResult, result);
}
use of uk.gov.gchq.gaffer.operation.impl.ScoreOperationChain in project Gaffer by gchq.
the class ScoreOperationChainHandlerTest method shouldExecuteScoreChainOperationForNestedOperationChain.
@Test
public void shouldExecuteScoreChainOperationForNestedOperationChain() throws OperationException {
// Given
final ScoreOperationChainHandler operationHandler = new ScoreOperationChainHandler();
final Context context = mock(Context.class);
final Store store = mock(Store.class);
final User user = mock(User.class);
final ScoreOperationChain scoreOperationChain = mock(ScoreOperationChain.class);
StoreProperties storeProperties = new StoreProperties();
final GetAdjacentIds op1 = mock(GetAdjacentIds.class);
final GetElements op2 = mock(GetElements.class);
final Limit op3 = mock(Limit.class);
final OperationChain opChain1 = new OperationChain(Arrays.asList(op1, op2));
final OperationChain opChain = new OperationChain(Arrays.asList(opChain1, op3));
final Integer expectedResult = 3;
given(context.getUser()).willReturn(user);
Set<String> opAuths = new HashSet<>();
opAuths.add("TEST_USER");
given(user.getOpAuths()).willReturn(opAuths);
given(scoreOperationChain.getOperationChain()).willReturn(opChain);
given(store.getProperties()).willReturn(storeProperties);
// When
final Object result = operationHandler.doOperation(new ScoreOperationChain.Builder().operationChain(opChain).build(), context, store);
// Then
assertSame(expectedResult, result);
}
use of uk.gov.gchq.gaffer.operation.impl.ScoreOperationChain in project gaffer-doc by gchq.
the class ScoreOperationChainExample method scoreOperationChainWithCustomNamedScore.
public void scoreOperationChainWithCustomNamedScore() {
// ---------------------------------------------------------
final ScoreOperationChain scoreOperationChain = new ScoreOperationChain.Builder().operationChain(new OperationChain.Builder().first(new NamedOperation.Builder<EntitySeed, Iterable<? extends Element>>().name("1-hop").input(new EntitySeed(1)).build()).then(new Limit<>(3)).build()).build();
// ---------------------------------------------------------
runExample(scoreOperationChain, "Here we have added a NamedOperation to the NamedOperationCache, " + "with a custom score of 3. In our ScoreOperationChainDeclaration.json file, we have also " + "declared that this should be resolved with a NamedOperationScoreResolver. " + "With Limit declared as having a score of 2, the above chain correctly has a score of 5.");
}
use of uk.gov.gchq.gaffer.operation.impl.ScoreOperationChain in project Gaffer by gchq.
the class ScoreOperationChainHandlerTest method shouldResolveScoreOperationChainWithMultipleScoreResolvers.
@Test
public void shouldResolveScoreOperationChainWithMultipleScoreResolvers() throws OperationException {
// Given
final ScoreOperationChainHandler handler = new ScoreOperationChainHandler();
final Map<Class<? extends Operation>, ScoreResolver> resolvers = new HashMap<>();
final ScoreResolver scoreResolver = mock(NamedOperationScoreResolver.class);
final ScoreResolver scoreResolver1 = mock(DefaultScoreResolver.class);
final Context context = mock(Context.class);
final Store store = mock(Store.class);
final User user = mock(User.class);
final ScoreOperationChain scoreOperationChain = mock(ScoreOperationChain.class);
final StoreProperties storeProperties = mock(StoreProperties.class);
final GetAdjacentIds op1 = new GetAdjacentIds();
final AddElements op2 = new AddElements();
final Map<Class<? extends Operation>, Integer> opScores = new LinkedHashMap<>();
opScores.put(GetAdjacentIds.class, 2);
handler.setOpScores(opScores);
final String opName = "namedOp";
final NamedOperation<Iterable<? extends Element>, Iterable<? extends Element>> namedOp = mock(NamedOperation.class);
namedOp.setOperationName(opName);
resolvers.put(namedOp.getClass(), scoreResolver);
resolvers.put(op2.getClass(), scoreResolver1);
handler.setScoreResolvers(resolvers);
given(scoreResolver.getScore(eq(namedOp), any())).willReturn(3);
given(scoreResolver1.getScore(eq(op2), any())).willReturn(5);
final OperationChain opChain = new OperationChain(Arrays.asList(op1, op2, namedOp));
given(context.getUser()).willReturn(user);
Set<String> opAuths = new HashSet<>();
opAuths.add("TEST_USER");
given(user.getOpAuths()).willReturn(opAuths);
given(scoreOperationChain.getOperationChain()).willReturn(opChain);
given(store.getProperties()).willReturn(storeProperties);
// When
final Object result = handler.doOperation(new ScoreOperationChain.Builder().operationChain(opChain).build(), context, store);
// Then
assertEquals(10, result);
}
use of uk.gov.gchq.gaffer.operation.impl.ScoreOperationChain in project Gaffer by gchq.
the class ScoreOperationChainHandlerTest method shouldReturnZeroForANullOperationChain.
@Test
public void shouldReturnZeroForANullOperationChain() throws OperationException {
// Given
final ScoreOperationChainHandler handler = new ScoreOperationChainHandler();
final Context context = mock(Context.class);
final Store store = mock(Store.class);
final User user = mock(User.class);
final ScoreOperationChain scoreOperationChain = mock(ScoreOperationChain.class);
final StoreProperties properties = mock(StoreProperties.class);
final OperationChain opChain = null;
given(scoreOperationChain.getOperationChain()).willReturn(opChain);
given(context.getUser()).willReturn(user);
Set<String> opAuths = new HashSet<>();
opAuths.add("TEST_USER");
given(user.getOpAuths()).willReturn(opAuths);
given(store.getProperties()).willReturn(properties);
// When
final Object result = handler.doOperation(new ScoreOperationChain.Builder().operationChain(opChain).build(), context, store);
// Then
assertEquals(0, result);
}
Aggregations