package org.jvalue.ods.sources; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.jvalue.ods.ApiFactory; import org.jvalue.ods.api.DataApi; import org.jvalue.ods.api.DataSourceApi; import org.jvalue.ods.api.ProcessorChainApi; import org.jvalue.ods.api.data.Data; import org.jvalue.ods.api.processors.ProcessorReferenceChainDescription; import org.jvalue.ods.api.sources.DataSourceDescription; public abstract class AbstractDataSourceTest { private final ApiFactory apiFactory = new ApiFactory(); private final DataSourceApi sourceApi = apiFactory.createDataSourceApi(); private final ProcessorChainApi processorApi = apiFactory.createProcessorChainApi(); private final DataApi dataApi = apiFactory.createDataApi(); private String sourceId = getClass().getSimpleName(); @Before public void setupSourceAndFilter() { // add source sourceApi.addSourceSynchronously(sourceId, getSourceDescription()); // assert empty Data data = dataApi.getObjectsSynchronously(sourceId, getStartId(), 3, null); Assert.assertEquals(0, data.getCursor().getCount()); Assert.assertEquals(0, data.getResult().size()); // add filter chain processorApi.addProcessorChainSynchronously(sourceId, "testFilter", getProcessorChainDescription()); } @After public void removeSource() { sourceApi.deleteSourceSynchronously(sourceId); } @Test public final void runTest() throws Exception { // check filter execution Thread.sleep(getSleepDuration()); Data data = dataApi.getObjectsSynchronously(sourceId, getStartId(), 3, null); Assert.assertTrue(data.getCursor().getCount() > 0); Assert.assertTrue(data.getResult().size() > 0); } public abstract DataSourceDescription getSourceDescription(); public abstract String getStartId(); public abstract ProcessorReferenceChainDescription getProcessorChainDescription(); public abstract long getSleepDuration(); }