KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > scriptella > execution > ExecutionStatisticsTest


1 /*
2  * Copyright 2006-2007 The Scriptella Project Team.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package scriptella.execution;
17
18 import scriptella.DBTestCase;
19 import scriptella.configuration.QueryEl;
20 import scriptella.configuration.ScriptEl;
21
22 import java.text.DecimalFormat JavaDoc;
23 import java.util.Collection JavaDoc;
24 import java.util.Map JavaDoc;
25
26
27 /**
28  * Tests for {@link ExecutionStatistics} and {@link ExecutionStatisticsBuilder}.
29  *
30  * @author Fyodor Kupolov
31  * @version 1.0
32  */

33 public class ExecutionStatisticsTest extends DBTestCase {
34     public void test() throws EtlExecutorException {
35         final EtlExecutor se = newEtlExecutor();
36         final ExecutionStatistics s = se.execute();
37         Map JavaDoc<String JavaDoc, Integer JavaDoc> cats = s.getCategoriesStatistics();
38         assertEquals(2, cats.size());
39         assertEquals(3, cats.get(ScriptEl.TAG_NAME).intValue());
40         assertEquals(2, cats.get(QueryEl.TAG_NAME).intValue());
41         assertEquals(12, s.getExecutedStatementsCount()); //4+2+2+1+3
42

43         final Collection JavaDoc<ExecutionStatistics.ElementInfo> elements = s.getElements();
44
45         for (ExecutionStatistics.ElementInfo info : elements) {
46             assertTrue("Negative working time: "+info.getWorkingTime(), info.getWorkingTime()>=0);
47             if ("/etl/script[1]".equals(info.getId())) {
48                 assertEquals(1, info.getSuccessfulExecutionCount());
49                 assertEquals(0, info.getFailedExecutionCount());
50                 assertEquals(4, info.getStatementsCount());
51             } else if ("/etl/query[1]/query[1]/script[1]".equals(
52                     info.getId())) {
53                 assertEquals(2, info.getSuccessfulExecutionCount());
54                 assertEquals(0, info.getFailedExecutionCount());
55                 assertEquals(2, info.getStatementsCount()); //1 statement executed 2 times
56
} else if ("/etl/query[1]/query[1]".equals(info.getId())) {
57                 assertEquals(2, info.getSuccessfulExecutionCount());
58                 assertEquals(0, info.getFailedExecutionCount());
59                 assertEquals(2, info.getStatementsCount());
60             } else if ("/etl/query[1]".equals(info.getId())) {
61                 assertEquals(1, info.getSuccessfulExecutionCount());
62                 assertEquals(0, info.getFailedExecutionCount());
63                 assertEquals(1, info.getStatementsCount());
64             } else if ("/etl/script[2]".equals(info.getId())) {
65                 assertEquals(1, info.getSuccessfulExecutionCount());
66                 assertEquals(0, info.getFailedExecutionCount());
67                 assertEquals(3, info.getStatementsCount());
68             } else {
69                 fail("Unrecognized statistic element " + info.getId());
70             }
71         }
72     }
73
74     public void test2() throws EtlExecutorException {
75         final EtlExecutor se = newEtlExecutor(
76                 "ExecutionStatisticsTest2.xml");
77         final ExecutionStatistics s = se.execute();
78         Map JavaDoc<String JavaDoc, Integer JavaDoc> cats = s.getCategoriesStatistics();
79         assertEquals(2, cats.size());
80         assertEquals(4, cats.get("script").intValue());
81         assertEquals(1, cats.get("query").intValue());
82
83         final Collection JavaDoc<ExecutionStatistics.ElementInfo> elements = s.getElements();
84
85         for (ExecutionStatistics.ElementInfo info : elements) {
86             if ("/etl/script[1]".equals(info.getId())) {
87                 assertEquals(1, info.getSuccessfulExecutionCount());
88                 assertEquals(0, info.getFailedExecutionCount());
89             } else if ("/etl/query[1]/script[1]".equals(info.getId())) {
90                 assertEquals(0, info.getSuccessfulExecutionCount());
91                 assertEquals(2, info.getFailedExecutionCount());
92             } else if ("/etl/query[1]/script[2]".equals(info.getId())) {
93                 assertEquals(2, info.getSuccessfulExecutionCount());
94                 assertEquals(0, info.getFailedExecutionCount());
95             } else if ("/etl/query[1]".equals(info.getId())) {
96                 assertEquals(1, info.getSuccessfulExecutionCount());
97                 assertEquals(0, info.getFailedExecutionCount());
98             } else if ("/etl/script[2]".equals(info.getId())) {
99                 assertEquals(1, info.getSuccessfulExecutionCount());
100                 assertEquals(0, info.getFailedExecutionCount());
101             } else {
102                 fail("Unrecognized statistic element " + info.getId());
103             }
104         }
105     }
106
107     public void test3() throws EtlExecutorException {
108         final EtlExecutor se = newEtlExecutor(
109                 "ExecutionStatisticsTest3.xml");
110         final ExecutionStatistics s = se.execute();
111         Map JavaDoc<String JavaDoc, Integer JavaDoc> cats = s.getCategoriesStatistics();
112         assertEquals(2, cats.size());
113         assertEquals(2, cats.get("script").intValue());
114         assertEquals(2, cats.get("query").intValue());
115         assertEquals(9, s.getExecutedStatementsCount()); //4+2+2+1
116

117         final Collection JavaDoc<ExecutionStatistics.ElementInfo> elements = s.getElements();
118
119         for (ExecutionStatistics.ElementInfo info : elements) {
120             if ("/etl/script[1]".equals(info.getId())) {
121                 assertEquals(1, info.getSuccessfulExecutionCount());
122                 assertEquals(0, info.getFailedExecutionCount());
123                 assertEquals(4, info.getStatementsCount());
124             } else if ("/etl/query[1]/query[1]/script[1]".equals(
125                     info.getId())) {
126                 assertEquals(2, info.getSuccessfulExecutionCount());
127                 assertEquals(0, info.getFailedExecutionCount());
128                 assertEquals(2, info.getStatementsCount()); //1 statement executed 2 times
129
} else if ("/etl/query[1]/query[1]".equals(info.getId())) {
130                 assertEquals(2, info.getSuccessfulExecutionCount());
131                 assertEquals(0, info.getFailedExecutionCount());
132                 assertEquals(2, info.getStatementsCount());
133             } else if ("/etl/query[1]".equals(info.getId())) {
134                 assertEquals(1, info.getSuccessfulExecutionCount());
135                 assertEquals(0, info.getFailedExecutionCount());
136                 assertEquals(1, info.getStatementsCount());
137             } else {
138                 fail("Unrecognized statistic element " + info.getId());
139             }
140         }
141     }
142
143     /**
144      * Tests if total time is correctly printed.
145      */

146     public void testTotalTime() throws EtlExecutorException {
147         DecimalFormat JavaDoc f = new DecimalFormat JavaDoc(ExecutionStatistics.DOUBLE_FORMAT_PTR);
148         char sep = f.getDecimalFormatSymbols().getDecimalSeparator();
149
150         long time = 288727350; //3d 8h 12m 7s 350ms
151
StringBuilder JavaDoc sb = new StringBuilder JavaDoc();
152         ExecutionStatistics.appendTotalTimeDuration(time, sb, f);
153         assertEquals(" 3 days 8 hours 12 minutes 7"+sep+"35 seconds", sb.toString());
154         time = 3605001; //1h 5s 1ms
155
sb = new StringBuilder JavaDoc();
156         ExecutionStatistics.appendTotalTimeDuration(time, sb, f);
157         assertEquals(" 1 hour 5 seconds", sb.toString());
158         time = 800; //800ms
159
sb = new StringBuilder JavaDoc();
160         ExecutionStatistics.appendTotalTimeDuration(time, sb, f);
161         assertEquals(" 0,8 second", sb.toString());
162         time = 1000; //1000ms
163
sb = new StringBuilder JavaDoc();
164         ExecutionStatistics.appendTotalTimeDuration(time, sb, f);
165         assertEquals(" 1 second", sb.toString());
166     }
167
168 }
169
Popular Tags