blob: 212811b6604f514692a35141af180f98cad8c73f [file] [log] [blame]
/*********************************************************************************************************************
* Copyright (c) 2008, 2012 Attensity Europe GmbH and brox IT Solutions GmbH. All rights reserved. This program and the
* accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this
* distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
**********************************************************************************************************************/
package org.eclipse.smila.processing.test;
import java.util.Arrays;
import org.eclipse.smila.blackboard.Blackboard;
import org.eclipse.smila.blackboard.Blackboard.Get;
import org.eclipse.smila.blackboard.BlackboardAccessException;
import org.eclipse.smila.blackboard.BlackboardFactory;
import org.eclipse.smila.datamodel.AnyMap;
import org.eclipse.smila.datamodel.DataFactory;
import org.eclipse.smila.datamodel.Record;
import org.eclipse.smila.processing.ProcessingException;
import org.eclipse.smila.processing.parameters.ParameterAccessor;
import org.eclipse.smila.processing.util.ProcessingConstants;
import org.eclipse.smila.processing.util.ResultCollector;
import org.eclipse.smila.test.DeclarativeServiceTestCase;
/** Test for {@link ResultCollector} class. */
public class TestResultCollector extends DeclarativeServiceTestCase {
/** exception used for failure testing. */
private final Exception _testException = new RuntimeException();
/** ParameterAccessor used for testing. */
private ParameterAccessor _paramAccessor;
/** Blackboard used for testing. */
private Blackboard _blackboard;
/** tests failOnError parameter in record. */
public void testFailOnError() throws Exception {
final ResultCollector collector = new ResultCollector(_paramAccessor, null, false);
boolean failOnError = false;
final String recordId = "id1";
createBlackboardRecord(recordId, failOnError);
collector.addFailedResult(recordId, _testException); // should not throw exception
assertEquals(recordId, collector.getResultIds()[0]);
failOnError = true;
final String recordId2 = "id2";
createBlackboardRecord(recordId2, failOnError);
try {
collector.addFailedResult(recordId2, _testException);
fail();
} catch (final ProcessingException e) {
assertEquals(_testException, e.getCause());
}
}
/** tests dropOnError setting in ResultCollector. */
public void testDropOnError() throws Exception {
final String failedId = "id_failed";
createBlackboardRecord(failedId, false);
createBlackboardRecord("id1", false);
createBlackboardRecord("id2", false);
boolean dropOnError = false;
ResultCollector collector = new ResultCollector(_paramAccessor, null, dropOnError);
collector.addResult("id1");
collector.addFailedResult(failedId, _testException);
collector.addResult("id2");
assertEquals(3, collector.getResultIds().length);
assertTrue("Result should contain id of failed record",
Arrays.asList(collector.getResultIds()).contains(failedId));
dropOnError = true;
collector = new ResultCollector(_paramAccessor, null, dropOnError);
collector.addResult("id1");
collector.addFailedResult(failedId, _testException);
collector.addResult("id2");
assertEquals(2, collector.getResultIds().length);
assertFalse("Result should not contain id of failed record",
Arrays.asList(collector.getResultIds()).contains(failedId));
}
/**
* create a new record on the blackboard with failOnError parameter.
*/
private void createBlackboardRecord(final String recordId, final boolean failOnError)
throws BlackboardAccessException {
_blackboard.removeRecord(recordId);
final Record record = _blackboard.getRecord(recordId, Get.NEW);
final AnyMap parameters = DataFactory.DEFAULT.createAnyMap();
parameters.put(ProcessingConstants.KEY_FAIL_ON_ERROR, failOnError);
record.getMetadata().put(ParameterAccessor.DEFAULT_PARAMETERS_ATTRIBUTE, parameters);
}
@Override
protected void setUp() throws Exception {
super.setUp();
final BlackboardFactory factory = getService(BlackboardFactory.class);
_blackboard = factory.createTransientBlackboard();
assertNotNull("no Blackboard created", _blackboard);
_paramAccessor = new ParameterAccessor(_blackboard);
}
}