KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > measurements > suites > BenchmarkMeasurement


1 // $Id: BenchmarkMeasurement.java,v 1.2 2004/05/12 17:26:52 anicoara Exp $
2
// =====================================================================
3
//
4
// (history at end)
5
//
6

7 package measurements.suites;
8
9 // used packages
10
import junit.framework.Test;
11 import ch.ethz.inf.util.junit.PerformanceTest;
12 import ch.ethz.inf.util.junit.PerformanceTestSuite;
13 import ch.ethz.prose.Aspect;
14 import ch.ethz.prose.ProseSystem;
15
16
17 /**
18  * Performance testcase for measuring XXX.
19  * <p>
20  * In this testcase,the column <code>RUNS</code> (the fifths)
21  * represents XXX
22  *
23  * @version $Revision: 1.2 $
24  * @author Andrei Popovici
25  */

26 public
27 class BenchmarkMeasurement extends PerformanceTest {
28
29   // fixture
30
{ RANGE = new int[]{1000000};}
31     TestClass measurementObject;
32     TestClass calibrationObject;
33     boolean useProse = true;
34
35
36     boolean callDummyMethod = false;
37     void dummyMethod(boolean callRecursively)
38     {
39     if (callRecursively)
40         dummyMethod(callRecursively);
41     }
42
43   /**
44    * Construct test with given name.
45    * @param name test name
46    */

47   public BenchmarkMeasurement(String JavaDoc name)
48   {
49     super(name);
50   }
51
52   /**
53    * Set up fixture.
54    */

55   protected
56   void setUp() throws Exception JavaDoc
57   {
58       String JavaDoc proseParam = System.getProperty("useprose",
59                          "" + isDebuggerEnabled());
60       useProse = proseParam.toUpperCase().equals("TRUE");
61
62       if (isDebuggerEnabled())
63     RANGE=new int[]{10000};
64       measurementObject = new TestClass1();
65       calibrationObject = new TestClassCalibration1();
66       String JavaDoc aspectToInsert = System.getProperty("aspect");
67       if (aspectToInsert == null)
68       {
69           return;
70       }
71
72       if (useProse)
73       {
74           Aspect x = null;
75           ProseSystem.startup();
76
77           if ("EfficientExtension".equals(aspectToInsert))
78           x = new EfficientExtension();
79           else if ("EfficientEntryExtension".equals(aspectToInsert))
80           x = new EfficientEntryExtension();
81           else if ("EfficientExitExtension".equals(aspectToInsert))
82         x = new EfficientExitExtension();
83           else
84         x = null;
85
86           if (x!= null)
87           ProseSystem.getAspectManager().insert(x);
88       }
89       else
90       {
91
92    //angy ATENTIE!!!
93
if ("EfficientAspect".equals(aspectToInsert))
94         {
95             measurementObject = new TestClass2();
96
97             calibrationObject = new TestClassCalibration2();
98
99         }
100           else if ("EfficientEntryAspect".equals(aspectToInsert))
101         {
102             measurementObject = new TestClass3();
103
104             calibrationObject = new TestClassCalibration3();
105         }
106           else if ("EfficientExitAspect".equals(aspectToInsert))
107         {
108             measurementObject = new TestClass4();
109
110             calibrationObject = new TestClassCalibration4();
111         }
112           else
113           throw new RuntimeException JavaDoc("BenchmarkMeasurement.setUp:Illegal value for 'aspect'");
114
115       }
116   }
117
118   /** Turn off stuff
119    */

120   protected void tearDown() throws Exception JavaDoc
121   {
122       if (useProse)
123       ProseSystem.teardown();
124   }
125
126   public void test10FieldAdvice()
127     {
128     startChronometer();
129     for (int i=0; i< RUNS; i++)
130         {
131         measurementObject.testFieldOperations();
132         }
133     }
134
135   public void test10FieldCalibration()
136     {
137     startChronometer();
138     for (int i=0; i< RUNS; i++)
139         {
140         calibrationObject.testFieldOperations();
141         }
142     }
143
144   public void test11MethodAdvice()
145       {
146       RUNS=100000;
147       startChronometer();
148       for (int i=0; i< RUNS; i++)
149           {
150           measurementObject.testMethodOperations();
151           }
152       }
153
154   public void test11MethodCalibration()
155       {
156       startChronometer();
157       for (int i=0; i< RUNS; i++)
158           {
159           calibrationObject.testMethodOperations();
160           }
161       }
162
163   public void test12NoAdvice()
164       {
165       startChronometer();
166       for (int i=0; i< RUNS; i++)
167           {
168           measurementObject.testNonJPOperations();
169           }
170       }
171
172   public void test12NoAdviceCalibration()
173       {
174       startChronometer();
175       for (int i=0; i< RUNS; i++)
176           {
177           calibrationObject.testNonJPOperations();
178           }
179       }
180
181     public void test00CalibrationCall()
182     {
183     startChronometer();
184     for(int i = 0; i < RUNS; i++)
185         {
186         if (callDummyMethod)
187             { dummyMethod(callDummyMethod); }
188         }
189     }
190
191     public void test01InterfaceCallShort()
192     {
193
194     TestInterface interfaceObject = measurementObject;
195     startChronometer();
196     for (int i=0; i < RUNS; i++)
197         {
198         interfaceObject.interfaceMethodShort();
199         }
200     }
201
202     public void test01InterfaceCallLong()
203     {
204     String JavaDoc x = "hello";
205     TestInterface interfaceObject = measurementObject;
206       startChronometer();
207     for (int i=0; i < RUNS; i++)
208         {
209         interfaceObject.interfaceMethodLong(x,x);
210         }
211     }
212
213
214
215     public void test02VirtualCallShort()
216     {
217       startChronometer();
218     for (int i=0; i < RUNS; i++)
219         {
220         measurementObject.instanceMethodShort();
221         }
222     }
223
224     public void test02VirtualCallLong()
225     {
226     String JavaDoc x = "String";
227       startChronometer();
228     for (int i=0; i < RUNS; i++)
229         {
230         measurementObject.instanceMethodLong(x,x);
231         }
232     }
233
234
235
236     public void test03SyncVirtualCallShort()
237     {
238       startChronometer();
239     for (int i=0; i < RUNS; i++)
240         {
241         measurementObject.syncInstanceMethodShort();
242         }
243     }
244
245     public void test03SyncVirtualCallLong()
246     {
247     String JavaDoc x = "String";
248       startChronometer();
249     for (int i=0; i < RUNS; i++)
250         {
251         measurementObject.syncInstanceMethodLong(x,x);
252         }
253     }
254
255     public void test04PutField()
256     {
257     startChronometer();
258
259     measurementObject.testPutField(RUNS);
260     }
261
262     public void test04PutFieldCalibration()
263     {
264     startChronometer();
265     calibrationObject.testPutField(RUNS);
266     }
267
268     public void test05GetField()
269     {startChronometer();
270     measurementObject.testGetField(RUNS);
271     }
272
273     public void test05GetFieldCalibration()
274     {startChronometer();
275     calibrationObject.testGetField(RUNS);
276     }
277
278
279
280   /**
281    * Test suite.
282    * @return test instance
283    */

284   public static
285   Test suite()
286   {
287     return new PerformanceTestSuite(BenchmarkMeasurement.class);
288   }
289
290 }
291
292
293 //======================================================================
294
//
295
// $Log: BenchmarkMeasurement.java,v $
296
// Revision 1.2 2004/05/12 17:26:52 anicoara
297
// Adapt Junit tests to 3.8.1 version and the new package structure
298
//
299
// Revision 1.1.1.1 2003/07/02 15:30:45 apopovic
300
// Imported from ETH Zurich
301
//
302
// Revision 1.13 2003/07/02 12:42:39 anicoara
303
// Added CatchJoinPoint Functionality (Requests, Join-Points, Filters, CatchCuts, Tests)
304
//
305
// Revision 1.12 2003/05/05 14:03:03 popovici
306
// renaming from runes to prose
307
//
308
// Revision 1.11 2003/04/17 15:14:53 popovici
309
// Extension->Aspect renaming
310
//
311
// Revision 1.10 2003/03/04 18:35:58 popovici
312
// Organization of imprts
313
//
314
// Revision 1.9 2003/03/04 11:26:09 popovici
315
// Important refactorization step (march):
316
// - removal of 'JoinPointEvents'; JoinPoints now have the same function as events
317
// - reimplementation of the JVMAIDebuggerAspectInterface (better performance, coding conventions, removal of ProseVM
318
// structures
319
//
320
// Revision 1.8 2002/11/26 17:15:49 pschoch
321
// RootComponent now added (replaces RootComponent now added (replaces old ProseSystem)
322
// ProseSystem now owns and starts the Aspect interface.
323
// ProseSystem now containes a 'test' AspectManager
324
// AspectManager now owns the JoinPointManager.
325
// ExtensionManger can be 'connected' to the JVM, or disconnected. The
326
// JoinPointManager of a connected Ext.Mgr enables joinpoints; the
327
// JoinPointManger of a disconnected Ext.Mgr never enables join-points
328
// Documentation updated accordingly.
329
//
330
// Revision 1.7 2002/09/27 14:19:58 popovici
331
// Added unified nr of iterations depending on enabled debugger
332
//
333
// Revision 1.6 2002/05/06 09:08:11 popovici
334
// all _test now real test cases; JVMAI measurement enhanced with interface testing
335
//
336
// Revision 1.5 2002/03/28 09:15:35 popovici
337
// CrosscutMeasurement not any more in All Measurements
338
//
339
// Revision 1.4 2002/03/18 12:47:25 popovici
340
// *** empty log message ***
341
//
342
// Revision 1.3 2002/03/14 08:46:22 popovici
343
// Minor adaptations and corrections
344
//
345
// Revision 1.2 2002/03/12 10:17:19 popovici
346
// Long methods now (Object,Object); syntax corrections
347
//
348
// Revision 1.1 2002/03/12 09:50:13 popovici
349
// Initial version of the Benchmark measurements
350
//
351
Popular Tags