package net.codjo.segmentation.batch.plugin; import net.codjo.agent.UserId; import net.codjo.agent.test.AgentContainerFixture; import net.codjo.agent.test.Story; import net.codjo.plugin.batch.BatchCore; import net.codjo.plugin.batch.BatchException; import net.codjo.plugin.common.CommandLineArguments; import static net.codjo.segmentation.batch.plugin.SegmentationBatchPlugin.MINUTE; import net.codjo.segmentation.common.message.SegmentationJobRequest; import static net.codjo.workflow.common.util.WorkflowSystem.workFlowSystem; import junit.framework.TestCase; /** * */ public class SegmentationBatchPluginTest extends TestCase { private SegmentationBatchPlugin plugin; private Story story = new Story(); private UserId userId = UserId.createId("polo", "secretPassword"); public void test_getType() throws Exception { assertEquals(SegmentationJobRequest.SEGMENTATION_REQUEST_TYPE, plugin.getType()); } public void test_defaultTimeoutConfiguration() throws Exception { assertEquals(MINUTE * 120, plugin.getConfiguration().getWorkflowConfiguration().getDefaultTimeout()); } public void test_doNothing() throws Exception { plugin.initContainer(null); plugin.stop(); } public void test_execute() throws Exception { story.record().mock(workFlowSystem()) .simulateJob("job<segmentation>(-endPeriod=200709, -startPeriod=200708, segmentations=1, 2)"); story.record().addAction(new AgentContainerFixture.Runnable() { public void run() throws Exception { plugin.start(story.getAgentContainerFixture().getContainer()); plugin.execute(userId, createArguments("1, 2", "200708", "200709")); } }); story.execute(); } public void test_execute_customizer() throws Exception { plugin.getConfiguration().setCustomizer(new SegmentationRequestCustomizer() { public void customize(SegmentationJobRequest request) throws BatchException { request.setSegmentationIds("overrided"); } }); story.record().mock(workFlowSystem()) .simulateJob( "job<segmentation>(-endPeriod=200709, -startPeriod=200708, segmentations=overrided)"); story.record().addAction(new AgentContainerFixture.Runnable() { public void run() throws Exception { plugin.start(story.getAgentContainerFixture().getContainer()); plugin.execute(userId, createArguments("old", "200708", "200709")); } }); story.execute(); } private CommandLineArguments createArguments(String segmentationIds, String startPeriod, String endPeriod) { return new CommandLineArguments( new String[]{"-" + SegmentationJobRequest.SEGMENTATION_IDS, segmentationIds, "-" + BatchCore.BATCH_ARGUMENT, "-startPeriod " + startPeriod + " -endPeriod " + endPeriod}); } @Override protected void setUp() throws Exception { story.doSetUp(); plugin = new SegmentationBatchPlugin(); } @Override protected void tearDown() throws Exception { story.doTearDown(); } }