public List<ScoreEvent> runAndCollectAllEvents( CompilationArtifact compilationArtifact, Map<String, Value> userInputs, Set<SystemProperty> systemProperties) { final List<ScoreEvent> events = Collections.synchronizedList(new ArrayList<ScoreEvent>()); ScoreEventListener allEventsListener = new ScoreEventListener() { @Override public synchronized void onEvent(ScoreEvent event) throws InterruptedException { events.add(event); } }; slang.subscribeOnEvents(allEventsListener, ALL_CLOUDSLANG_EVENTS); ScoreEvent finishEvent = runSync(compilationArtifact, userInputs, systemProperties, false); slang.unSubscribeOnEvents(allEventsListener); // make sure finish event is saved for (ScoreEvent scoreEvent : events) { String eventType = scoreEvent.getEventType(); if (ScoreLangConstants.SLANG_EXECUTION_EXCEPTION.equals(eventType) || ScoreLangConstants.EVENT_EXECUTION_FINISHED.equals(eventType)) { return events; } } events.add(finishEvent); return events; } }
slang.unSubscribeOnEvents(scoreEventListener);
throw new RuntimeException(languageEvent.getException()); slang.unSubscribeOnEvents(finishListener); return event; } catch (InterruptedException e) {
public RuntimeInformation runWithData( CompilationArtifact compilationArtifact, Map<String, Value> userInputs, Set<SystemProperty> systemProperties) { RunDataAggregatorListener runDataAggregatorListener = new RunDataAggregatorListener(); slang.subscribeOnEvents(runDataAggregatorListener, STEP_EVENTS); BranchAggregatorListener branchAggregatorListener = new BranchAggregatorListener(); slang.subscribeOnEvents(branchAggregatorListener, BRANCH_EVENTS); JoinAggregatorListener joinAggregatorListener = new JoinAggregatorListener(); slang.subscribeOnEvents(joinAggregatorListener, PARALLEL_LOOP_EVENTS); runSync(compilationArtifact, userInputs, systemProperties); Map<String, StepData> steps = runDataAggregatorListener.aggregate(); Map<String, List<StepData>> branchesByPath = branchAggregatorListener.aggregate(); Map<String, StepData> parallelSteps = joinAggregatorListener.aggregate(); final RuntimeInformation runtimeInformation = new RuntimeInformation(steps, branchesByPath, parallelSteps); slang.unSubscribeOnEvents(joinAggregatorListener); slang.unSubscribeOnEvents(branchAggregatorListener); slang.unSubscribeOnEvents(runDataAggregatorListener); return runtimeInformation; }
slang.unSubscribeOnEvents(multiTriggerTestCaseEventListener);
poll(); slang.unSubscribeOnEvents(testsEventListener);