void runScenario(List<String> keys, Backend backend, String name) {
// Log starting scenario
logHawkularEvent("Starting scenario for " + name, name);
// Init/register metrics
registry.register(name + ".size", (Gauge<Long>) backend::count);
Timer readTimer = registry.timer(name + ".read");
// Scenario (which consists in getting values from cache during 5 minutes)
ThreadLocalRandom rnd = ThreadLocalRandom.current();
Stopwatch watch = Stopwatch.createStarted();
while (watch.elapsed(TimeUnit.MINUTES) < 5) {
try {
int pos = rnd.nextInt(0, keys.size());
final Timer.Context ctx = readTimer.time();
try {
backend.get(keys.get(pos));
} finally {
ctx.stop();
}
} catch (Exception e) {
// Log any error to Hawkular
logHawkularEvent(e.getMessage(), name);
}
}
// Log ending scenario
logHawkularEvent("Ending scenario for " + name, name);
}