Logging: changed log.trace(String.format("...", ...)) to log.tracef("...", ...) (and the same for other logging levels)
Fixed typo in method name
Generalized control flow in scenario
* return value of DistStage.processAckOnMaster and MasterStage.execute changed from boolean to StageResult
* StageResult can either let scenario proceed with next stage, fail scenario, exit whole benchmark or jump to arbitrary label
* labels are strings that point to certain stages
* 'repeat' does not insert stages multiple times; it uses RepeatBeginStage and RepeatEndStage with labels instead
* ${repeat.counter} (or ${repeat.xxx.counter}) is not added as 'extra' property, it is stored as regular State variable
* added 'loop' which creates appropriate labels and inserts/increments State property ${loop.counter} (or ${loop.xxx.counter})
* refactored BaseDistStage out of AbstractDistStage, as common base for some internal stages
* reporters do not get reference to Scenario anymore; instead, Report contains description of the executed scenario
Refactoring of StressTestStage
* removed ClientStressTestStage: repeat or loop should be used instead
* removed StressTestWarmupStage: just set test-name="warmup" (or leave this empty)
* stage hierarchy:
** TestStage spawns the threads, and also manages transactions
** CacheTestStage provides key and value generators and entry-size
** CacheOperationsTestStage provides key selector
*** CollidingKeysSelector replaces shared-keys="true"
*** ConcurrentKeysSelector replaces shared-keys="false"
** xOperationsTestStages implement the logic for invoking operations
** KeyExpirationTestStage replaces fixed-keys="false"
* Stressor does not need the ugly switch for operation type, OperationLogic calls it with Invocation instance
* removed variants of operations from some traits, now the derivations are defined inside Invocations
* ReflexiveListConverter -> ReflexiveConverters.ListConverter, added ReflexiveConverters.ObjectConverter for single object
* fixed XSD schema generator (each property can be defined as element only once), forcing element count provided to ComplexConverter
Introduced random delay for each thread to prevent synchronized bursts of requests.
Performance condition
* allows to control the loop according to latest performance results
* integrated into TestStage
AnnotatedHelper can lookup both core and libs
* fixes in XSD generation
* ReflexiveConverters can search for implementing classes
NumberObjectGenerator: ranges have to be computed as longs
Better error handling of stage initialization.
Output defaults again to stdout_slave_$LOG4J_PREFIX.out
Refactored how statistics are used from TestStage
* statistics prototype is loaded through ReflexiveConverter as a property
* removed HistogramStatistics and HistogramOperationStats -> will be added as extension
Added HistogramOperationStats, and refactored bar chart generation
* mean and stddev retrieved from HistogramOperationsStats seems sometimes suffering from some HdrHistogram bug