Package org.radargun.stages.cache

Source Code of org.radargun.stages.cache.ReindexStage$StatisticsAck

package org.radargun.stages.cache;

import java.util.Collections;
import java.util.List;

import org.radargun.DistStageAck;
import org.radargun.StageResult;
import org.radargun.config.Property;
import org.radargun.config.Stage;
import org.radargun.reporting.Report;
import org.radargun.stages.AbstractDistStage;
import org.radargun.state.SlaveState;
import org.radargun.stats.DefaultOperationStats;
import org.radargun.stats.DefaultStatistics;
import org.radargun.stats.Statistics;
import org.radargun.traits.InjectTrait;
import org.radargun.traits.Queryable;

/**
* Just runs reindex.
*
* @author Radim Vansa <rvansa@redhat.com>
*/
@Stage(doc = "Runs Queryable.reindex()")
public class ReindexStage extends AbstractDistStage {
   @Property(doc = "Container (e.g. cache or DB table) which should be reindex. Default is the default container.")
   private String container;

   @Property(doc = "Test under which performance of reindexing should be recorded. Default is 'reindex'.")
   private String test = "reindex";

   @InjectTrait(dependency = InjectTrait.Dependency.MANDATORY)
   private Queryable queryable;

   @Override
   public DistStageAck executeOnSlave() {
      Statistics stats = new DefaultStatistics(new DefaultOperationStats());
      long start = System.nanoTime();
      queryable.reindex(container);
      stats.registerRequest(System.nanoTime() - start, Queryable.REINDEX);
      return new StatisticsAck(slaveState, stats);
   }

   @Override
   public StageResult processAckOnMaster(List<DistStageAck> acks) {
      StageResult result = super.processAckOnMaster(acks);
      if (result.isError()) return result;

      Report.Test test = masterState.getReport().createTest(this.test, null, false);
      for (DistStageAck ack : acks) {
         if (ack instanceof StatisticsAck) {
            test.addStatistics(0, ack.getSlaveIndex(), Collections.singletonList(((StatisticsAck) ack).stats));
         }
      }
      return StageResult.SUCCESS;
   }

   private static class StatisticsAck extends DistStageAck {
      private final Statistics stats;

      public StatisticsAck(SlaveState slaveState, Statistics stats) {
         super(slaveState);
         this.stats = stats;
      }
   }
}
TOP

Related Classes of org.radargun.stages.cache.ReindexStage$StatisticsAck

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.