package org.jgroups.tests;
import org.jgroups.Global;
import org.jgroups.util.SuppressCache;
import org.jgroups.util.Util;
import org.testng.annotations.Test;
import java.util.Arrays;
/**
* Tests SuppressCache
* @author Bela Ban
* @since 3.2
*/
@Test(groups=Global.FUNCTIONAL,sequential=false)
public class SuppressCacheTest {
public void testPut() {
SuppressCache<String> cache=new SuppressCache<>();
SuppressCache.Value val=cache.putIfAbsent("Bela", 5000);
System.out.println("cache = " + cache);
assert val.count() == 1;
val=cache.putIfAbsent("Bela", 5000);
System.out.println("cache = " + cache);
assert val == null; // already present
val=cache.putIfAbsent("Michelle", 5000);
assert val.count() == 1;
for(int i=0; i < 5; i++) {
val=cache.putIfAbsent("Michelle", 5000);
assert val == null;
}
Util.sleep(2000);
System.out.println("cache:\n" + cache);
val=cache.putIfAbsent("Bela", 500);
assert val.count() == 3;
val=cache.putIfAbsent("Bela", 5000);
assert val == null;
}
public void testNullKey() {
SuppressCache<String> cache=new SuppressCache<>();
cache.putIfAbsent(null, 10);
cache.removeAll(Arrays.asList("Bela", "Michi"));
Util.sleep(500);
cache.removeExpired(10);
System.out.println("cache = " + cache);
}
}