azkaban-memoizeit
Changes
unit/java/azkaban/test/utils/cache/CacheTest.java 146(+146 -0)
Details
unit/java/azkaban/test/utils/cache/CacheTest.java 146(+146 -0)
diff --git a/unit/java/azkaban/test/utils/cache/CacheTest.java b/unit/java/azkaban/test/utils/cache/CacheTest.java
new file mode 100644
index 0000000..bc5e2b9
--- /dev/null
+++ b/unit/java/azkaban/test/utils/cache/CacheTest.java
@@ -0,0 +1,146 @@
+package azkaban.test.utils.cache;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import azkaban.utils.cache.Cache;
+import azkaban.utils.cache.Cache.EjectionPolicy;
+import azkaban.utils.cache.CacheManager;
+
+public class CacheTest {
+ @Test
+ public void testLRU() {
+ CacheManager manager = CacheManager.getInstance();
+ Cache cache = manager.createCache();
+ cache.setEjectionPolicy(EjectionPolicy.LRU);
+ cache.setMaxCacheSize(4);
+
+ cache.insertElement("key1", "val1");
+ cache.insertElement("key2", "val2");
+ cache.insertElement("key3", "val3");
+ cache.insertElement("key4", "val4");
+
+ Assert.assertEquals(cache.get("key2"), "val2");
+ Assert.assertEquals(cache.get("key3"), "val3");
+ Assert.assertEquals(cache.get("key4"), "val4");
+ Assert.assertEquals(cache.get("key1"), "val1");
+ Assert.assertEquals(4, cache.getSize());
+
+ cache.insertElement("key5", "val5");
+ Assert.assertEquals(4, cache.getSize());
+ Assert.assertEquals(cache.get("key3"), "val3");
+ Assert.assertEquals(cache.get("key4"), "val4");
+ Assert.assertEquals(cache.get("key1"), "val1");
+ Assert.assertEquals(cache.get("key5"), "val5");
+ Assert.assertNull(cache.get("key2"));
+ }
+
+ @Test
+ public void testFIFO() {
+ CacheManager manager = CacheManager.getInstance();
+ Cache cache = manager.createCache();
+ cache.setEjectionPolicy(EjectionPolicy.FIFO);
+ cache.setMaxCacheSize(4);
+
+ cache.insertElement("key1", "val1");
+ synchronized (this) {
+ try {
+ wait(10);
+ } catch (InterruptedException e) {
+ }
+ }
+ cache.insertElement("key2", "val2");
+ cache.insertElement("key3", "val3");
+ cache.insertElement("key4", "val4");
+
+ Assert.assertEquals(cache.get("key2"), "val2");
+ Assert.assertEquals(cache.get("key3"), "val3");
+ Assert.assertEquals(cache.get("key4"), "val4");
+ Assert.assertEquals(cache.get("key1"), "val1");
+ Assert.assertEquals(4, cache.getSize());
+
+ cache.insertElement("key5", "val5");
+ Assert.assertEquals(4, cache.getSize());
+ Assert.assertEquals(cache.get("key3"), "val3");
+ Assert.assertEquals(cache.get("key4"), "val4");
+ Assert.assertEquals(cache.get("key2"), "val2");
+ Assert.assertEquals(cache.get("key5"), "val5");
+ Assert.assertNull(cache.get("key1"));
+ }
+
+ @Test
+ public void testTimeToLiveExpiry() {
+ CacheManager.setUpdateFrequency(200);
+ CacheManager manager = CacheManager.getInstance();
+ Cache cache = manager.createCache();
+
+ cache.setUpdateFrequencyMs(200);
+ cache.setEjectionPolicy(EjectionPolicy.FIFO);
+ cache.setExpiryTimeToLiveMs(4500);
+ cache.insertElement("key1", "val1");
+
+ synchronized (this) {
+ try {
+ wait(1000);
+ } catch (InterruptedException e) {
+ }
+ }
+ Assert.assertEquals(cache.get("key1"), "val1");
+ cache.insertElement("key2", "val2");
+ synchronized (this) {
+ try {
+ wait(4000);
+ } catch (InterruptedException e) {
+ }
+ }
+ Assert.assertNull(cache.get("key1"));
+ Assert.assertEquals("val2", cache.get("key2"));
+
+ synchronized (this) {
+ try {
+ wait(1000);
+ } catch (InterruptedException e) {
+ }
+ }
+
+ Assert.assertNull(cache.get("key2"));
+ }
+
+ @Test
+ public void testIdleExpireExpiry() {
+ CacheManager.setUpdateFrequency(250);
+ CacheManager manager = CacheManager.getInstance();
+ Cache cache = manager.createCache();
+
+ cache.setUpdateFrequencyMs(250);
+ cache.setEjectionPolicy(EjectionPolicy.FIFO);
+ cache.setExpiryIdleTimeMs(4500);
+ cache.insertElement("key1", "val1");
+ cache.insertElement("key3", "val3");
+ synchronized (this) {
+ try {
+ wait(1000);
+ } catch (InterruptedException e) {
+ }
+ }
+ Assert.assertEquals(cache.get("key1"), "val1");
+ cache.insertElement("key2", "val2");
+ synchronized (this) {
+ try {
+ wait(4000);
+ } catch (InterruptedException e) {
+ }
+ }
+ Assert.assertEquals("val1", cache.get("key1"));
+ Assert.assertNull(cache.get("key3"));
+ synchronized (this) {
+ try {
+ wait(1000);
+ } catch (InterruptedException e) {
+ }
+ }
+
+ Assert.assertNull(cache.get("key2"));
+ }
+}