package org.arbeitspferde.groningen;
import static org.easymock.EasyMock.anyBoolean;
import static org.easymock.EasyMock.anyObject;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import com.google.common.collect.Lists;
import org.arbeitspferde.groningen.Datastore.DatastoreException;
import org.arbeitspferde.groningen.config.ConfigManager;
import org.arbeitspferde.groningen.config.GroningenConfig;
import org.arbeitspferde.groningen.experimentdb.ExperimentDb;
import junit.framework.TestCase;
/**
* Test for {@link PipelineRestorer}.
*/
public class PipelineRestorerTest extends TestCase {
private static final int SHARD_INDEX = 1;
private PipelineManager pipelineManagerMock;
private Datastore dataStoreMock;
private PipelineIdGenerator pipelineIdGeneratorMock;
private PipelineRestorer pipelineRestorer;
@Override
public void setUp() throws Exception {
super.setUp();
dataStoreMock = createMock(Datastore.class);
pipelineManagerMock = createMock(PipelineManager.class);
pipelineIdGeneratorMock = createMock(PipelineIdGenerator.class);
pipelineRestorer = new PipelineRestorer(SHARD_INDEX, dataStoreMock, pipelineManagerMock,
pipelineIdGeneratorMock);
}
public void testCorrectlyFiltersOutOtherShards() throws DatastoreException {
expect(dataStoreMock.listPipelinesIds()).andReturn(Lists.newArrayList(
new PipelineId("local0"), new PipelineId("local1"), new PipelineId("local2")));
expect(pipelineIdGeneratorMock.shardIndexForPipelineId(
eq(new PipelineId("local0")))).andReturn(0);
expect(pipelineIdGeneratorMock.shardIndexForPipelineId(
eq(new PipelineId("local1")))).andReturn(1);
expect(pipelineIdGeneratorMock.shardIndexForPipelineId(
eq(new PipelineId("local2")))).andReturn(2);
PipelineState pipelineState = new PipelineState(new PipelineId("local1"),
createNiceMock(GroningenConfig.class), createNiceMock(ExperimentDb.class));
expect(dataStoreMock.getPipelines(eq(Lists.newArrayList(new PipelineId("local1")))))
.andReturn(Lists.newArrayList(pipelineState));
expect(pipelineManagerMock.restorePipeline(eq(pipelineState), anyObject(ConfigManager.class),
anyBoolean())).andReturn(new PipelineId("local1"));
replay(pipelineManagerMock, dataStoreMock, pipelineIdGeneratorMock);
pipelineRestorer.restorePipelines();
verify(pipelineManagerMock, dataStoreMock, pipelineIdGeneratorMock);
}
}