use of com.hortonworks.streamline.streams.runtime.rule.action.ActionRuntime in project streamline by hortonworks.
the class TransformRuntimePipelineActionTest method testMergeSubstituteProject.
@Test
public void testMergeSubstituteProject() throws Exception {
Map<String, Object> fieldsAndValues = new HashMap<>();
fieldsAndValues.put("1", "one");
fieldsAndValues.put("2", "${1} plus ${1}");
Map<String, Object> defaults = new HashMap<>();
defaults.put("2", "TWO");
defaults.put("3", "THREE");
defaults.put("4", "${2} plus ${2}");
StreamlineEvent event = StreamlineEventImpl.builder().fieldsAndValues(fieldsAndValues).dataSourceId("dsrcid").build();
MergeTransform merge = new MergeTransform(defaults);
SubstituteTransform substitute = new SubstituteTransform();
ProjectionTransform projection = new ProjectionTransform("test-projection", defaults.keySet());
TransformAction transformAction = new TransformAction(ImmutableList.of(merge, substitute, projection));
transformAction.setOutputStreams(ImmutableSet.of("streamid"));
ActionRuntime actionRuntime = new TransformActionRuntime(transformAction);
List<StreamlineEvent> resultEvents = new ArrayList<>();
for (Result result : actionRuntime.execute(event)) {
resultEvents.addAll(result.events);
}
assertEquals(1, resultEvents.size());
assertEquals(3, resultEvents.get(0).size());
assertEquals("THREE", resultEvents.get(0).get("3"));
assertEquals("one plus one", resultEvents.get(0).get("2"));
assertEquals("one plus one plus one plus one", resultEvents.get(0).get("4"));
}
use of com.hortonworks.streamline.streams.runtime.rule.action.ActionRuntime in project streamline by hortonworks.
the class TransformRuntimePipelineActionTest method testMergeProject.
@Test
public void testMergeProject() throws Exception {
Map<String, Object> fieldsAndValues = new HashMap<>();
fieldsAndValues.put("1", "one");
fieldsAndValues.put("2", "two");
Map<String, String> defaults = new HashMap<>();
defaults.put("2", "TWO");
defaults.put("3", "THREE");
StreamlineEvent event = StreamlineEventImpl.builder().fieldsAndValues(fieldsAndValues).dataSourceId("dsrcid").build();
MergeTransform merge = new MergeTransform(defaults);
ProjectionTransform projection = new ProjectionTransform("test-projection", defaults.keySet());
TransformAction transformAction = new TransformAction(ImmutableList.of(merge, projection));
transformAction.setOutputStreams(ImmutableSet.of("streamid"));
ActionRuntime actionRuntime = new TransformActionRuntime(transformAction);
List<StreamlineEvent> resultEvents = new ArrayList<>();
for (Result result : actionRuntime.execute(event)) {
resultEvents.addAll(result.events);
}
assertEquals(1, resultEvents.size());
assertEquals(2, resultEvents.get(0).size());
assertEquals("THREE", resultEvents.get(0).get("3"));
assertEquals("two", resultEvents.get(0).get("2"));
}
use of com.hortonworks.streamline.streams.runtime.rule.action.ActionRuntime in project streamline by hortonworks.
the class RuleRuntime method process.
/**
* Executes a {@link Rule}'s Action
*
* @param event runtime input to this rule
*/
@Override
public List<Result> process(StreamlineEvent event) throws ProcessingException {
LOG.debug("process invoked with StreamlineEvent {}", event);
List<Result> allResults = new ArrayList<>();
try {
for (ActionRuntime action : actions) {
List<Result> actionResults = action.execute(event);
LOG.debug("Applied action {}, Result {}", action, actionResults);
if (actionResults != null) {
allResults.addAll(actionResults);
}
}
} catch (Exception e) {
String message = "Error evaluating rule with id:" + rule.getId();
LOG.error(message);
throw new ProcessingException(message, e);
}
LOG.debug("Returning allResults {}", allResults);
return allResults;
}
use of com.hortonworks.streamline.streams.runtime.rule.action.ActionRuntime in project streamline by hortonworks.
the class RuleProcessorRuntime method createActionRuntimes.
private List<ActionRuntime> createActionRuntimes(Rule rule) {
List<ActionRuntime> runtimeActions = new ArrayList<>();
for (Action action : rule.getActions()) {
final ActionRuntime actionRuntime = ActionRuntimeService.get().get(action);
actionRuntime.setActionRuntimeContext(new ActionRuntimeContext(rule, action));
runtimeActions.add(actionRuntime);
}
return runtimeActions;
}
Aggregations