package org.radargun.stages.query; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.radargun.DistStageAck; import org.radargun.StageResult; import org.radargun.traits.ContinuousQuery; import org.radargun.traits.Lifecycle; import org.radargun.util.QueryStageRunner; import org.radargun.util.QueryTraitRepository; import org.radargun.utils.Utils; import org.testng.Assert; import org.testng.annotations.Test; /** * @author Matej Cimbora */ @Test(timeOut = 30000) public class ContinuousQueryStageTest { public void smokeTest() throws Exception { QueryStageRunner stageRunner = new QueryStageRunner(1); Lifecycle lifecycle = stageRunner.getTraitImpl(Lifecycle.class); lifecycle.start(); ContinuousQueryStage continuousQueryStage = new ContinuousQueryStage(); QueryConfiguration queryConfiguration = new QueryConfiguration(); queryConfiguration.clazz = "java.lang.Integer"; Condition.Eq eqCondition = new Condition.Eq(); eqCondition.value = new Object(); eqCondition.path = "path"; Condition.Lt ltCondition = new Condition.Lt(); ltCondition.value = Long.valueOf(1); ltCondition.path = "path"; Condition.Any anyCondition = new Condition.Any(); Utils.setField(Condition.Any.class, "subs", anyCondition, Arrays.asList(eqCondition, ltCondition)); List<Condition> conditions = Arrays.asList(anyCondition); queryConfiguration.conditions = conditions; OrderBy orderBy = new OrderBy("attribute", true); queryConfiguration.orderBy = Arrays.asList(orderBy); queryConfiguration.projection = new String[] {"attribute1", "attribute2"}; continuousQueryStage.query = queryConfiguration; continuousQueryStage.cacheName = "test"; QueryTraitRepository.ContinuousQuery continuousQuery = (QueryTraitRepository.ContinuousQuery) stageRunner.getTraitImpl(ContinuousQuery.class); Assert.assertNull(continuousQuery.getCacheCqMap().get("test")); List<DistStageAck> acks = new ArrayList<>(1); acks.add(stageRunner.executeOnSlave(continuousQueryStage, 0)); Assert.assertNotNull(continuousQuery.getCacheCqMap().get("test")); Assert.assertEquals(stageRunner.processAckOnMaster(continuousQueryStage, acks), StageResult.SUCCESS); continuousQueryStage.remove = true; acks = new ArrayList<>(1); acks.add(stageRunner.executeOnSlave(continuousQueryStage, 0)); Assert.assertNull(continuousQuery.getCacheCqMap().get("test")); Assert.assertEquals(stageRunner.processAckOnMaster(continuousQueryStage, acks), StageResult.SUCCESS); } }