java.lang.Object
org.apache.lucene.benchmark.byTask.tasks.PerfTask
All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
AddDocTask, AddIndexesTask, AnalyzerFactoryTask, ClearStatsTask, CloseIndexTask, CloseReaderTask, CloseTaxonomyIndexTask, CloseTaxonomyReaderTask, CommitIndexTask, CommitTaxonomyIndexTask, ConsumeContentSourceTask, CreateIndexTask, CreateTaxonomyIndexTask, FlushIndexTask, ForceMergeTask, NearRealtimeReaderTask, NewAnalyzerTask, NewCollationAnalyzerTask, NewLocaleTask, NewRoundTask, OpenIndexTask, OpenReaderTask, OpenTaxonomyIndexTask, OpenTaxonomyReaderTask, PrintReaderTask, ReadTask, ReadTokensTask, ReopenReaderTask, ReportTask, ResetInputsTask, RollbackIndexTask, SetPropTask, TaskSequence, UpdateDocTask, WaitTask, WriteLineDocTask

public abstract class PerfTask extends Object implements Cloneable
An abstract task to be tested for performance.
Every performance task extends this class, and provides its own doLogic() method, which performs the actual task.
Tasks performing some work that should be measured for the task, can override setup() and/or tearDown() and place that work there.
Relevant properties: task.max.depth.log.
Also supports the following logging attributes:
  • log.step - specifies how often to log messages about the current running task. Default is 1000 doLogic() invocations. Set to -1 to disable logging.
  • log.step.[class Task Name] - specifies the same as 'log.step', only for a particular task name. For example, log.step.AddDoc will be applied only for AddDocTask. It's a way to control per task logging settings. If you want to omit logging for any other task, include log.step=-1. The syntax is "log.step." together with the Task's 'short' name (i.e., without the 'Task' part).
  • Field Details

    • logStep

      protected int logStep
    • params

      protected String params
    • NEW_LINE

      protected static final String NEW_LINE
    • stopNow

      protected volatile boolean stopNow
  • Constructor Details

  • Method Details

    • setRunInBackground

      public void setRunInBackground(int deltaPri)
    • getRunInBackground

      public boolean getRunInBackground()
    • getBackgroundDeltaPriority

      public int getBackgroundDeltaPriority()
    • stopNow

      public void stopNow()
    • clone

      protected PerfTask clone() throws CloneNotSupportedException
      Overrides:
      clone in class Object
      Throws:
      CloneNotSupportedException
    • close

      public void close() throws Exception
      Throws:
      Exception
    • runAndMaybeStats

      public final int runAndMaybeStats(boolean reportStats) throws Exception
      Run the task, record statistics.
      Returns:
      number of work items done by this task.
      Throws:
      Exception
    • doLogic

      public abstract int doLogic() throws Exception
      Perform the task once (ignoring repetitions specification) Return number of work items done by this task. For indexing that can be number of docs added. For warming that can be number of scanned items, etc.
      Returns:
      number of work items done by this task.
      Throws:
      Exception
    • getName

      public String getName()
      Returns:
      Returns the name.
    • setName

      protected void setName(String name)
      Parameters:
      name - The name to set.
    • getRunData

      public PerfRunData getRunData()
      Returns:
      Returns the run data.
    • getDepth

      public int getDepth()
      Returns:
      Returns the depth.
    • setDepth

      public void setDepth(int depth)
      Parameters:
      depth - The depth to set.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getLogMessage

      protected String getLogMessage(int recsCount)
    • shouldNeverLogAtStart

      protected boolean shouldNeverLogAtStart()
      Tasks that should never log at start can override this.
      Returns:
      true if this task should never log when it start.
    • shouldNotRecordStats

      protected boolean shouldNotRecordStats()
      Tasks that should not record statistics can override this.
      Returns:
      true if this task should never record its statistics.
    • setup

      public void setup() throws Exception
      Task setup work that should not be measured for that specific task. By default it does nothing, but tasks can implement this, moving work from doLogic() to this method. Only the work done in doLogic() is measured for this task. Notice that higher level (sequence) tasks containing this task would then measure larger time than the sum of their contained tasks.
      Throws:
      Exception
    • tearDown

      public void tearDown() throws Exception
      Task tearDown work that should not be measured for that specific task. By default it does nothing, but tasks can implement this, moving work from doLogic() to this method. Only the work done in doLogic() is measured for this task. Notice that higher level (sequence) tasks containing this task would then measure larger time than the sum of their contained tasks.
      Throws:
      Exception
    • supportsParams

      public boolean supportsParams()
      Sub classes that support parameters must override this method to return true.
      Returns:
      true iff this task supports command line params.
    • setParams

      public void setParams(String params)
      Set the params of this task.
      Throws:
      UnsupportedOperationException - for tasks supporting command line parameters.
    • getParams

      public String getParams()
      Returns:
      Returns the Params.
    • isDisableCounting

      public boolean isDisableCounting()
      Return true if counting is disabled for this task.
    • setDisableCounting

      public void setDisableCounting(boolean disableCounting)
    • setAlgLineNum

      public void setAlgLineNum(int algLineNum)
    • getAlgLineNum

      public int getAlgLineNum()