for (int i = 0; i < 5000; i += 1) {
try {
int v = offset + i;
int g = v % groups.length;
Group group = groups[g];
int k = (v / groups.length) % 13;
String keyText = "group" + g + ".key" + k;
keys.add(keyText);
Key key = new Key(keyText, k, group);
int choice = random.nextInt(100);
if (choice < 90) {
// 90% chance that it will retrieve an item from the
// cache.
if (logger.isDebugEnabled()) {
logger.debug("About to read entry with key '" + key + "'");
}
Object value = cache.retrieve(key);
if (logger.isDebugEnabled()) {
logger.debug("Read '" + value + "' with key '" +
key + "'");
}
} else if (choice < 98) {
// 8% chance that it will remove an item.
if (logger.isDebugEnabled()) {
logger.debug("About to remove entry with key '" +
key + "'");
}
cache.removeEntry(key);
if (logger.isDebugEnabled()) {
logger.debug("Removed entry with key '" + key + "'");
}
} else {
// 2% chance that it will flush a group.
if (logger.isDebugEnabled()) {
logger.debug("About to flush group " + g);
}
// Determine whether to flush even or odd keys.
final int evenOrOdd = random.nextInt(2);
// Select those keys with even indeces.
group.flush(new CacheEntryFilter() {
public boolean select(CacheEntry entry) {
Key key = (Key) entry.getKey();
return (key.getIndex() % 2 == evenOrOdd);
}
});