1 package compbio.stat.collector;
\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
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
14 import org.testng.Assert;
\r
15 import org.testng.annotations.Test;
\r
17 import compbio.metadata.AllTestSuit;
\r
18 import compbio.stat.collector.ExecutionStatCollector.JobDirectory;
\r
20 public class ExecutionStatCollectorTester {
\r
22 final static String LOCAL_JOBS = AllTestSuit.TEST_DATA_PATH_ABSOLUTE
\r
24 final static String CLUSTER_JOBS = AllTestSuit.TEST_DATA_PATH_ABSOLUTE
\r
27 public void testCollectStat() {
\r
28 ExecutionStatCollector local_jobs = new ExecutionStatCollector(
\r
30 ExecutionStatCollector cl_jobs = new ExecutionStatCollector(
\r
33 // Collect statistics prior to call getStats()!
\r
34 local_jobs.collectStatistics();
\r
35 cl_jobs.collectStatistics();
\r
37 StatProcessor local_stats = local_jobs.getStats();
\r
38 StatProcessor cl_stats = cl_jobs.getStats();
\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
49 public void testUpdateStatTester() {
\r
51 ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
\r
52 ScheduledFuture<?> sf = executor.scheduleAtFixedRate(
\r
53 new ExecutionStatCollector(LOCAL_JOBS, 1), 1, 10,
\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
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
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
79 JobDirectory jd = new JobDirectory(f);
\r
80 JobDirectory timedOutDir = new JobDirectory(timedOut);
\r
81 System.out.println("! " + new Date(f.lastModified()));
\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
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
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
106 JobDirectory dnormal = new JobDirectory(normal);
\r
107 JobDirectory dfinished = new JobDirectory(finished);
\r
108 JobDirectory dcancelled = new JobDirectory(cancelled);
\r
110 JobDirectory dnoresult = new JobDirectory(noresult);
\r
112 assertTrue(ecol.hasCompleted(dnormal));
\r
113 assertTrue(ecol.hasCompleted(dfinished));
\r
114 assertTrue(ecol.hasCompleted(dcancelled));
\r
116 assertTrue(ecol.hasCompleted(dnoresult));
\r
117 assertFalse(ecol_no_timeout.hasCompleted(dnoresult));
\r