package org.geowebcache.util;
import static junit.framework.Assert.*;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
import org.geowebcache.GeoWebCacheException;
import org.geowebcache.locks.MemoryLockProvider;
/**
* Mock lock provider, used for tests
*
* @author Andrea Aime - GeoSolutions
*
*/
public class MockLockProvider extends MemoryLockProvider {
public AtomicLong acquires = new AtomicLong();
public AtomicLong releases = new AtomicLong();
public Map<String, String> keys = new ConcurrentHashMap<String, String>();
public Lock getLock(final String lockKey) {
super.getLock(lockKey);
acquires.incrementAndGet();
assertFalse(keys.containsKey(lockKey));
keys.put(lockKey, lockKey);
return new Lock() {
public void release() throws GeoWebCacheException {
releases.incrementAndGet();
assertTrue(keys.containsKey(lockKey));
keys.remove(lockKey);
}
};
}
public void verify() {
assertEquals(acquires.get(), releases.get());
assertEquals(0, keys.size());
}
public void clear() {
acquires.set(0);
releases.set(0);
}
}