Some lost files
[proteocache.git] / testsrc / compbio / stat / collector / ExecutionStatCollectorTester.java
1 package compbio.stat.collector;\r
2 \r
3 import static org.testng.Assert.assertEquals;\r
4 import static org.testng.Assert.assertFalse;\r
5 import static org.testng.Assert.assertTrue;\r
6 \r
7 import java.io.File;\r
8 import java.util.Date;\r
9 import java.util.concurrent.Executors;\r
10 import java.util.concurrent.ScheduledExecutorService;\r
11 import java.util.concurrent.ScheduledFuture;\r
12 import java.util.concurrent.TimeUnit;\r
13 \r
14 import org.testng.Assert;\r
15 import org.testng.annotations.Test;\r
16 \r
17 import compbio.metadata.AllTestSuit;\r
18 import compbio.stat.collector.JobDirectory;\r
19 \r
20 public class ExecutionStatCollectorTester {\r
21 \r
22         final static String LOCAL_JOBS = AllTestSuit.TEST_DATA_PATH_ABSOLUTE\r
23                         + "ljobs";\r
24         final static String CLUSTER_JOBS = AllTestSuit.TEST_DATA_PATH_ABSOLUTE\r
25                         + "jobs";\r
26         @Test\r
27         public void testCollectStat() {\r
28                 ExecutionStatCollector local_jobs = new ExecutionStatCollector(\r
29                                 LOCAL_JOBS, 1);\r
30                 ExecutionStatCollector cl_jobs = new ExecutionStatCollector(\r
31                                 CLUSTER_JOBS, 24);\r
32                 \r
33                 // Collect statistics prior to call getStats()!\r
34                 local_jobs.collectStatistics();\r
35                 cl_jobs.collectStatistics();\r
36                 \r
37                 StatProcessor local_stats = local_jobs.getStats();\r
38                 StatProcessor cl_stats = cl_jobs.getStats();\r
39                 \r
40                 assertEquals(local_stats.getJobNumber(), 12);\r
41                 // ClustalW#1015343425414965 - empty\r
42                 assertEquals(local_stats.getIncompleteJobs().size(), 1);\r
43                 assertEquals(local_stats.getFailedJobs().size(), 0);\r
44                 assertEquals(local_stats.getAbandonedJobs().size(), 1);\r
45 \r
46         }\r
47 \r
48         @Test\r
49         public void testUpdateStatTester() {\r
50 \r
51                 ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);\r
52                 ScheduledFuture<?> sf = executor.scheduleAtFixedRate(\r
53                                 new ExecutionStatCollector(LOCAL_JOBS, 1), 1, 10,\r
54                                 TimeUnit.SECONDS);\r
55 \r
56                 try {\r
57                         Thread.sleep(1000 * 35);\r
58                         executor.shutdown();\r
59                         executor.awaitTermination(300, TimeUnit.SECONDS);\r
60                 } catch (InterruptedException e) {\r
61                         e.printStackTrace();\r
62                         Assert.fail(e.getMessage());\r
63                 }\r
64         }\r
65 \r
66         /**\r
67          * This test will fail in time as it relies on last access time for file in\r
68          * the filesystem! This OK as it has been tested by then.\r
69          * \r
70          */\r
71         @Test (enabled = false)\r
72         public void testHasTimedOut() {\r
73                 ExecutionStatCollector ecol = new ExecutionStatCollector(LOCAL_JOBS, 1);\r
74                 File f = new File(LOCAL_JOBS + File.separator\r
75                                 + "ClustalW#1015373448154965");\r
76                 File timedOut = new File(LOCAL_JOBS + File.separator\r
77                                 + "Mafft#7868649707286965");\r
78 \r
79                 JobDirectory jd = new JobDirectory(f);\r
80                 JobDirectory timedOutDir = new JobDirectory(timedOut);\r
81                 System.out.println("! " + new Date(f.lastModified()));\r
82 \r
83                 assertTrue((System.currentTimeMillis() - f.lastModified())\r
84                                 / (1000 * 60 * 60) < 1);\r
85                 assertFalse((System.currentTimeMillis() - timedOut.lastModified())\r
86                                 / (1000 * 60 * 60) < 1);\r
87                 assertFalse(ecol.hasTimedOut(jd));\r
88                 assertTrue(ecol.hasTimedOut(timedOutDir));\r
89         }\r
90 \r
91         @Test\r
92         public void testHasCompleted() {\r
93                 ExecutionStatCollector ecol_no_timeout = new ExecutionStatCollector(\r
94                                 LOCAL_JOBS, 10000000);\r
95                 ExecutionStatCollector ecol = new ExecutionStatCollector(LOCAL_JOBS, 1);\r
96 \r
97                 File normal = new File(LOCAL_JOBS + File.separator\r
98                                 + "ClustalW#100368900075204");\r
99                 File finished = new File(LOCAL_JOBS + File.separator\r
100                                 + "ClustalW#1015373448154965");\r
101                 File cancelled = new File(LOCAL_JOBS + File.separator\r
102                                 + "Mafft#7918237850044965");\r
103                 File noresult = new File(LOCAL_JOBS + File.separator\r
104                                 + "ClustalW#1015343425414965");\r
105 \r
106                 JobDirectory dnormal = new JobDirectory(normal);\r
107                 JobDirectory dfinished = new JobDirectory(finished);\r
108                 JobDirectory dcancelled = new JobDirectory(cancelled);\r
109 \r
110                 JobDirectory dnoresult = new JobDirectory(noresult);\r
111 \r
112                 assertTrue(ecol.hasCompleted(dnormal));\r
113                 assertTrue(ecol.hasCompleted(dfinished));\r
114                 assertTrue(ecol.hasCompleted(dcancelled));\r
115 \r
116                 assertTrue(ecol.hasCompleted(dnoresult));\r
117                 assertFalse(ecol_no_timeout.hasCompleted(dnoresult));\r
118 \r
119         }\r
120 }\r