KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > cache4j > perfomance > PTest


1 /* =========================================================================
2  * File: PTest.java$
3  *
4  * Copyright 2006 by Yuriy Stepovoy.
5  * email: stepovoy@gmail.com
6  * All rights reserved.
7  *
8  * =========================================================================
9  */

10
11 package net.sf.cache4j.perfomance;
12
13 import java.util.List JavaDoc;
14 import java.util.ArrayList JavaDoc;
15 import java.util.Properties JavaDoc;
16 import java.util.Iterator JavaDoc;
17 import java.io.InputStream JavaDoc;
18
19 /**
20  * PTest
21  *
22  * @version $Revision: 1.0 $ $Date: 04/03/2003 11:00:00 $
23  * @author Yuriy Stepovoy. <a HREF="mailto:stepovoy@gmail.com">stepovoy@gmail.com</a>
24  **/

25
26 public class PTest {
27 // ----------------------------------------------------------------------------- Константы
28
// ----------------------------------------------------------------------------- Атрибуты класса
29
// ----------------------------------------------------------------------------- Статические переменные
30
// ----------------------------------------------------------------------------- Конструкторы
31
// ----------------------------------------------------------------------------- Public методы
32
public static void main(String JavaDoc[] args) {
33
34         int testCount = 1;
35         if (args != null && args.length == 1) {
36             try {
37                 testCount = Integer.parseInt(args[0]);
38             } catch (Exception JavaDoc e) {
39                 e.printStackTrace();
40             }
41         }
42
43         List JavaDoc cacheClassList = new ArrayList JavaDoc();
44         List JavaDoc testClassList = new ArrayList JavaDoc();
45         try {
46             InputStream JavaDoc in = PTest.class.getResourceAsStream("cache.txt");
47             Properties JavaDoc props = new Properties JavaDoc();
48             props.load(in);
49             in.close();
50
51             Iterator JavaDoc it = props.keySet().iterator();
52             while (it.hasNext()) {
53                 String JavaDoc val = (String JavaDoc) it.next();
54                 if (!val.startsWith("#")) {
55                     cacheClassList.add(val);
56                 }
57             }
58
59             in = PTest.class.getResourceAsStream("test.txt");
60             props = new Properties JavaDoc();
61             props.load(in);
62             in.close();
63
64             it = props.keySet().iterator();
65             while (it.hasNext()) {
66                 String JavaDoc val = (String JavaDoc) it.next();
67                 if (!val.startsWith("#")) {
68                     testClassList.add(val);
69                 }
70             }
71
72             runTest2(createTestInstances(testClassList), createCacheInstances(cacheClassList), testCount);
73
74         } catch (Exception JavaDoc e) {
75             e.printStackTrace();
76             return;
77         }
78
79
80     }
81 // ----------------------------------------------------------------------------- Package scope методы
82
// ----------------------------------------------------------------------------- Protected методы
83
// ----------------------------------------------------------------------------- Private методы
84

85     /**
86      * Каждый тест выполняется для каждого кеша
87      * @param testList список тестов
88      * @param cacheList список кешей
89      * @param testCount сколько раз выполнять тесты
90      */

91     private static void runTest2(List JavaDoc testList, List JavaDoc cacheList, int testCount) {
92
93         logln("---------------------------------------------------------------");
94         logln("java.version=" + System.getProperty("java.version"));
95         logln("java.vm.name=" + System.getProperty("java.vm.name"));
96         logln("java.vm.version=" + System.getProperty("java.vm.version"));
97         logln("java.vm.info=" + System.getProperty("java.vm.info"));
98         logln("java.vm.vendor=" + System.getProperty("java.vm.vendor"));
99         logln("os.name=" + System.getProperty("os.name"));
100         logln("os.version=" + System.getProperty("os.version"));
101         logln("os.arch=" + System.getProperty("os.arch"));
102         logln("---------------------------------------------------------------");
103         logln("This test can take about 5-10 minutes. Please wait ...");
104         logln("---------------------------------------------------------------");
105         log(fill("", 14) + "|");
106         printTestList(testList);
107         logln("---------------------------------------------------------------");
108
109
110         for (int j = 0; j < cacheList.size(); j++) {
111             ICache cache = (ICache) cacheList.get(j);
112
113             for (int tc = 0; tc < testCount; tc++) {
114                 log(fill(cache.getCacheName(), 14) + "|");
115                 for (int i = 0, indx = testList == null ? 0 : testList.size(); i < indx; i++) {
116                     ITest test = (ITest) testList.get(i);
117
118                     try {
119                         cache.init();
120                         test.init(cache);
121
122                         long start = System.currentTimeMillis();
123                         test.test();
124                         long stop = System.currentTimeMillis();
125
126                         log(fill("" + (stop - start), 15) + "|");
127
128                     } catch (Throwable JavaDoc t) {
129                         t.printStackTrace();
130                         break;
131                     } finally {
132                         test.destroy();
133                         cache.destroy();
134                     }
135                 }
136                 logln("");
137             }
138         }
139         logln("---------------------------------------------------------------");
140     }
141
142     /**
143      * Создаёт экземпляры кешей
144      * @param classList список названий классов
145      * @return список экземпляров
146      */

147     private static List JavaDoc createCacheInstances(List JavaDoc classList) {
148         List JavaDoc rez = new ArrayList JavaDoc();
149         for (int i = 0, indx = classList == null ? 0 : classList.size(); i < indx; i++) {
150             String JavaDoc cl = (String JavaDoc) classList.get(i);
151             Object JavaDoc obj = null;
152             try {
153                 obj = Class.forName(cl).newInstance();
154             } catch (Exception JavaDoc e) {
155                 e.printStackTrace();
156             }
157
158             if ((obj instanceof ICache)) {
159                 rez.add(obj);
160             } else {
161                 logln("Class:" + cl + " not instance of " + ICache.class.getName());
162             }
163         }
164
165         return rez;
166     }
167
168     /**
169      * Создаёт экземпляры тестов
170      * @param classList список названий классов
171      * @return список экземпляров
172      */

173     private static List JavaDoc createTestInstances(List JavaDoc classList) {
174         List JavaDoc rez = new ArrayList JavaDoc();
175         for (int i = 0, indx = classList == null ? 0 : classList.size(); i < indx; i++) {
176             String JavaDoc cl = (String JavaDoc) classList.get(i);
177             Object JavaDoc obj = null;
178             try {
179                 obj = Class.forName(cl).newInstance();
180             } catch (Exception JavaDoc e) {
181                 e.printStackTrace();
182             }
183
184             if ((obj instanceof ITest)) {
185                 rez.add(obj);
186             } else {
187                 logln("Class:" + cl + " not instance of " + ITest.class.getName());
188             }
189         }
190
191         return rez;
192     }
193
194     /**
195      * Печатает список тестов
196      */

197     private static void printTestList(List JavaDoc testList) {
198         for (int i = 0, indx = testList == null ? 0 : testList.size(); i < indx; i++) {
199             ITest test = (ITest) testList.get(i);
200             log(fill(test.getTestName(), 15) + "|");
201         }
202         logln("");
203     }
204
205
206     /**
207      * Дополняет строку src пробелами пока длина строки не будет больше либо равна count
208      * @param src исходная строка
209      * @param count минимальный размер результирующей строки
210      */

211     private static String JavaDoc fill(String JavaDoc src, int count) {
212         src = src == null ? "" : src;
213         StringBuffer JavaDoc buf = new StringBuffer JavaDoc(src);
214         while (buf.length() < count) {
215             buf.append(' ');
216         }
217
218         return buf.toString();
219     }
220
221     /**
222      * Вывод на консоль
223      */

224     private static void log(String JavaDoc s) {
225         System.out.print(s);
226     }
227
228     /**
229      * Вывод на консоль
230      */

231     private static void logln(String JavaDoc s) {
232         System.out.println(s);
233     }
234
235 // ----------------------------------------------------------------------------- Inner классы
236
}
Popular Tags