package org.radargun.stages.cache.test;
import org.radargun.config.Namespace;
import org.radargun.config.Property;
import org.radargun.config.Stage;
import org.radargun.stages.test.Stressor;
import org.radargun.stages.test.TestStage;
import org.radargun.utils.ReflexiveConverters;
/**
* @author Radim Vansa <rvansa@redhat.com>
*/
@Namespace(name = TestStage.NAMESPACE, deprecatedName = TestStage.DEPRECATED_NAMESPACE)
@Stage(doc = "Common ancestor for all xOperationsTestStages")
public abstract class CacheOperationsTestStage extends CacheTestStage {
@Property(name = "keySelector", doc = "Selects which key IDs are used in the test.", optional = false,
complexConverter = KeySelectorFactoryConverter.class)
protected KeySelectorFactory keySelectorFactory;
protected KeySelector getKeySelector(Stressor stressor) {
return keySelectorFactory.newInstance(CacheOperationsTestStage.this,
stressor.getRandom(), stressor.getGlobalThreadIndex(), stressor.getThreadIndex());
}
private static class KeySelectorFactoryConverter extends ReflexiveConverters.ObjectConverter {
protected KeySelectorFactoryConverter() {
super(new Class<?>[] {CollidingKeysSelector.Factory.class, ConcurrentKeysSelector.Factory.class, GaussianKeysSelector.Factory.class});
}
}
}