package org.radargun.stages.topology;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.radargun.DistStageAck;
import org.radargun.StageResult;
import org.radargun.traits.Lifecycle;
import org.radargun.traits.Partitionable;
import org.radargun.util.CoreStageRunner;
import org.radargun.util.CoreTraitRepository;
import org.radargun.utils.Utils;
import org.testng.Assert;
import org.testng.annotations.Test;
/**
* @author Matej Cimbora
*/
@Test(timeOut = 30000)
public class SetPartitionsStageTest {
public void smokeTest() throws Exception {
CoreStageRunner stageRunner = new CoreStageRunner(1);
Lifecycle lifecycle = stageRunner.getTraitImpl(Lifecycle.class);
lifecycle.start();
SetPartitionsStage setPartitionsStage = new SetPartitionsStage();
List<Set<Integer>> partitions = new ArrayList<>(1);
Set<Integer> slaveIds0 = new HashSet<>();
slaveIds0.add(0);
slaveIds0.add(1);
partitions.add(slaveIds0);
Set<Integer> slaveIds1 = new HashSet<>();
slaveIds1.add(2);
partitions.add(slaveIds1);
Utils.setField(SetPartitionsStage.class, "partitions", setPartitionsStage, partitions);
CoreTraitRepository.Partitionable partitionable = (CoreTraitRepository.Partitionable) stageRunner.getTraitImpl(Partitionable.class);
Assert.assertEquals(partitionable.getSlaveIndex(), -1);
Assert.assertEquals(partitionable.getPartitionMembers(), null);
Assert.assertEquals(partitionable.getInitiallyReachable(), null);
List<DistStageAck> acks = new ArrayList<>(1);
acks.add(stageRunner.executeOnSlave(setPartitionsStage, 0));
Assert.assertEquals(partitionable.getSlaveIndex(), 0);
Assert.assertEquals(partitionable.getPartitionMembers(), slaveIds0);
Assert.assertEquals(partitionable.getInitiallyReachable(), null);
Assert.assertEquals(stageRunner.processAckOnMaster(setPartitionsStage, acks), StageResult.SUCCESS);
}
}