9773935a10f1bd80b7dbe533994b1c0f4e03fb24
[jabaws.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.ExecutionStatCollector.JobDirectory;\r
19 \r
20 public class ExecutionStatCollectorTester {\r
21 \r
22         final static String LOCAL_JOBS = AllTestSuit.TEST_DATA_PATH_ABSOLUTE\r
23                         + File.separator + "ljobs";\r
24         final static String CLUSTER_JOBS = AllTestSuit.TEST_DATA_PATH_ABSOLUTE\r
25                         + File.separator + "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                 StatProcessor local_stats = local_jobs.getStats();\r
34                 StatProcessor cl_stats = cl_jobs.getStats();\r
35                 // System.out.println("L: " + local_stats.stats);\r
36                 System.out.println("\n\n");\r
37                 // System.out.println("C: " + cl_stats.stats);\r
38 \r
39                 assertEquals(12, local_stats.getJobNumber());\r
40                 // ClustalW#1015343425414965 - empty\r
41                 assertEquals(1, local_stats.getIncompleteJobs().size());\r
42                 assertEquals(0, local_stats.getFailedJobs().size());\r
43                 assertEquals(2, local_stats.getAbandonedJobs().size());\r
44 \r
45         }\r
46 \r
47         @Test\r
48         public void testUpdateStatTester() {\r
49 \r
50                 ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);\r
51                 ScheduledFuture<?> sf = executor.scheduleAtFixedRate(\r
52                                 new ExecutionStatCollector(LOCAL_JOBS, 1), 1, 10,\r
53                                 TimeUnit.SECONDS);\r
54 \r
55                 try {\r
56                         Thread.sleep(1000 * 35);\r
57                         executor.shutdown();\r
58                         executor.awaitTermination(300, TimeUnit.SECONDS);\r
59                 } catch (InterruptedException e) {\r
60                         e.printStackTrace();\r
61                         Assert.fail(e.getMessage());\r
62                 }\r
63         }\r
64 \r
65         /**\r
66          * This test will fail in time as it relies on last access time for file in\r
67          * the filesystem! This OK as it has been tested by then.\r
68          * \r
69          */\r
70         @Test\r
71         public void testHasTimedOut() {\r
72                 ExecutionStatCollector ecol = new ExecutionStatCollector(LOCAL_JOBS, 1);\r
73                 File f = new File(LOCAL_JOBS + File.separator\r
74                                 + "ClustalW#1015373448154965");\r
75                 File timedOut = new File(LOCAL_JOBS + File.separator\r
76                                 + "Mafft#7868649707286965");\r
77 \r
78                 JobDirectory jd = new JobDirectory(f);\r
79                 JobDirectory timedOutDir = new JobDirectory(timedOut);\r
80                 System.out.println("! " + new Date(f.lastModified()));\r
81 \r
82                 assertTrue((System.currentTimeMillis() - f.lastModified())\r
83                                 / (1000 * 60 * 60) < 1);\r
84                 assertFalse((System.currentTimeMillis() - timedOut.lastModified())\r
85                                 / (1000 * 60 * 60) < 1);\r
86                 assertFalse(ecol.hasTimedOut(jd));\r
87                 assertTrue(ecol.hasTimedOut(timedOutDir));\r
88         }\r
89 \r
90         @Test\r
91         public void testHasCompleted() {\r
92                 ExecutionStatCollector ecol_no_timeout = new ExecutionStatCollector(\r
93                                 LOCAL_JOBS, 10000000);\r
94                 ExecutionStatCollector ecol = new ExecutionStatCollector(LOCAL_JOBS, 1);\r
95 \r
96                 File normal = new File(LOCAL_JOBS + File.separator\r
97                                 + "ClustalW#100368900075204");\r
98                 File finished = new File(LOCAL_JOBS + File.separator\r
99                                 + "ClustalW#1015373448154965");\r
100                 File cancelled = new File(LOCAL_JOBS + File.separator\r
101                                 + "Mafft#7918237850044965");\r
102                 File noresult = new File(LOCAL_JOBS + File.separator\r
103                                 + "ClustalW#1015343425414965");\r
104 \r
105                 JobDirectory dnormal = new JobDirectory(normal);\r
106                 JobDirectory dfinished = new JobDirectory(finished);\r
107                 JobDirectory dcancelled = new JobDirectory(cancelled);\r
108 \r
109                 JobDirectory dnoresult = new JobDirectory(noresult);\r
110 \r
111                 assertTrue(ecol.hasCompleted(dnormal));\r
112                 assertTrue(ecol.hasCompleted(dfinished));\r
113                 assertTrue(ecol.hasCompleted(dcancelled));\r
114 \r
115                 assertTrue(ecol.hasCompleted(dnoresult));\r
116                 assertFalse(ecol_no_timeout.hasCompleted(dnoresult));\r
117 \r
118         }\r
119 }\r