package org.infinispan.stats;
import java.util.Collection;
import org.infinispan.Cache;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.remoting.transport.Address;
import org.testng.annotations.Test;
/**
* Implements the await methods for the total order caches (transactional and non-transactional)
*
* @author Pedro Ruivo
* @since 7.1
*/
@Test(groups = "functional", testName = "stats.BaseTotalOrderClusteredExtendedStatisticsTest")
public abstract class BaseTotalOrderClusteredExtendedStatisticsTest extends BaseClusteredExtendedStatisticTest {
protected BaseTotalOrderClusteredExtendedStatisticsTest(CacheMode mode) {
super(mode, true);
}
@Override
protected void awaitPut(int cacheIndex, Object key) throws InterruptedException {
awaitSingleKeyOperation(Operation.PUT, cacheIndex, key);
}
@Override
protected void awaitReplace(int cacheIndex, Object key) throws InterruptedException {
awaitSingleKeyOperation(Operation.REPLACE, cacheIndex, key);
}
@Override
protected void awaitRemove(int cacheIndex, Object key) throws InterruptedException {
awaitSingleKeyOperation(Operation.REMOVE, cacheIndex, key);
}
@Override
protected void awaitPutMap(int cacheIndex, Collection<Object> keys) throws InterruptedException {
Cache<?, ?> executedOn = cache(cacheIndex);
Collection<Address> owners = getOwners(executedOn, keys);
owners.add(address(executedOn));
awaitOperation(Operation.PUT_MAP, owners);
}
private void awaitSingleKeyOperation(Operation operation, int cacheIndex, Object key) throws InterruptedException {
Cache<?, ?> executedOn = cache(cacheIndex);
Collection<Address> owners = getOwners(executedOn, key);
owners.add(address(executedOn));
awaitOperation(operation, owners);
}
}