--- /dev/null
+/* Copyright (c) 2009 Peter Troshin\r
+ * \r
+ * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0 \r
+ * \r
+ * This library is free software; you can redistribute it and/or modify it under the terms of the\r
+ * Apache License version 2 as published by the Apache Software Foundation\r
+ * \r
+ * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\r
+ * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache \r
+ * License for more details.\r
+ * \r
+ * A copy of the license is in apache_license.txt. It is also available here:\r
+ * @see: http://www.apache.org/licenses/LICENSE-2.0.txt\r
+ * \r
+ * Any republication or derived work distributed in source code form\r
+ * must include this copyright and license notice.\r
+ */\r
+\r
+package compbio.engine;\r
+\r
+import static org.testng.Assert.assertEquals;\r
+import static org.testng.Assert.assertNotNull;\r
+import static org.testng.Assert.fail;\r
+\r
+import java.util.concurrent.TimeUnit;\r
+\r
+import org.testng.annotations.Test;\r
+\r
+import compbio.metadata.AllTestSuit;\r
+\r
+public class PulledFileCacheTester {\r
+\r
+ @Test\r
+ public void test() {\r
+ try {\r
+ FilePuller fp1 = FilePuller.newFilePuller(\r
+ AllTestSuit.TEST_DATA_PATH_ABSOLUTE + "1", 256);\r
+ fp1.setDelay(2, TimeUnit.SECONDS);\r
+\r
+ FilePuller fp2 = FilePuller.newFilePuller(\r
+ AllTestSuit.TEST_DATA_PATH_ABSOLUTE + "2", 256);\r
+ fp2.setDelay(1, TimeUnit.SECONDS);\r
+\r
+ FilePuller fp3 = FilePuller.newFilePuller(\r
+ AllTestSuit.TEST_DATA_PATH_ABSOLUTE + "3", 256);\r
+ fp3.setDelay(1, TimeUnit.SECONDS);\r
+\r
+ FilePuller fp4 = FilePuller.newFilePuller(\r
+ AllTestSuit.TEST_DATA_PATH_ABSOLUTE + "4", 256);\r
+ fp4.setDelay(5, TimeUnit.SECONDS);\r
+\r
+ // This only hold if tested in isolation thus clear is essential\r
+ PulledFileCache.clear();\r
+ assertEquals(PulledFileCache.getSize(), 0);\r
+ PulledFileCache.put(fp1);\r
+ PulledFileCache.put(fp2);\r
+ PulledFileCache.put(fp3);\r
+ PulledFileCache.put(fp4);\r
+ assertEquals(PulledFileCache.getSize(), 4);\r
+ Thread.sleep(1000);\r
+ // sweep was not called yet\r
+ assertEquals(PulledFileCache.getSize(), 4);\r
+ // now sweep is called\r
+ PulledFileCache.put(fp1);\r
+ // fp1 and fp1 and fp4 only remains - copies are allowed this is\r
+ // responsibility of the caller to ensure they are not there\r
+ assertEquals(PulledFileCache.getSize(), 3);\r
+ assertNotNull(PulledFileCache\r
+ .get(AllTestSuit.TEST_DATA_PATH_ABSOLUTE + "1"));\r
+ assertNotNull(PulledFileCache\r
+ .get(AllTestSuit.TEST_DATA_PATH_ABSOLUTE + "4"));\r
+\r
+ for (int i = 0; i < 4; i++) {\r
+ Thread.sleep(1000);\r
+ FilePuller fp = PulledFileCache\r
+ .get(AllTestSuit.TEST_DATA_PATH_ABSOLUTE + "4");\r
+ // This will update access time\r
+ fp.isFileCreated();\r
+ }\r
+ // still fp1 and fp4 only remains\r
+\r
+ assertEquals(PulledFileCache.getSize(), 3);\r
+ PulledFileCache.put(FilePuller.newFilePuller(\r
+ AllTestSuit.TEST_DATA_PATH_ABSOLUTE + "5", 256));\r
+ // at this point only fp4 and 5 will remain\r
+ assertEquals(PulledFileCache.getSize(), 2);\r
+ assertNotNull(PulledFileCache\r
+ .get(AllTestSuit.TEST_DATA_PATH_ABSOLUTE + "4"));\r
+ assertNotNull(PulledFileCache\r
+ .get(AllTestSuit.TEST_DATA_PATH_ABSOLUTE + "5"));\r
+\r
+ } catch (InterruptedException e) {\r
+ fail(e.getMessage());\r
+ }\r
+ }\r
+\r
+}\r