1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package de.bea.domingo;
24
25 import java.util.Calendar;
26 import java.util.Iterator;
27
28 /***
29 * Test stability of Domingo.
30 *
31 * @author <a href=mailto:kriede@users.sourceforge.net>Kurt Riede</a>
32 */
33 public final class TestStability {
34
35 /***
36 * Constructor.
37 */
38 public TestStability() {
39 }
40
41 /***
42 * Main method of the test.
43 *
44 * @param args arguments
45 */
46 public static void main(final String[] args) {
47 log("Start");
48 logMem();
49 TestStability test = new TestStability();
50 test.run();
51 logMem();
52 log("Finished");
53 }
54
55 private void run() {
56 log("run repeated tests");
57 for (int i = 0; i < 10; i++) {
58 logMem();
59 test();
60 sleep(10);
61 }
62 log("Wait, run gc, run finalizers");
63 for (int i = 0; i < 10; i++) {
64 System.gc();
65 sleep(50);
66 logMem();
67 }
68 logMem();
69 }
70
71 private void test() {
72 try {
73 final DNotesFactory factory = DNotesFactory.getInstance();
74 final DSession session = factory.getSession();
75 final DDatabase database = session.getDatabase("", "log.nsf");
76 final Iterator iterator = database.getAllDocuments();
77 while (iterator.hasNext()) {
78 DDocument doc = (DDocument) iterator.next();
79 doc.replaceItemValue("Form", "Test");
80 doc.getLastModified();
81 doc.replaceItemValue("Calendar", Calendar.getInstance());
82 }
83 } catch (DNotesException e) {
84 e.printStackTrace();
85 } finally {
86 try {
87 DNotesFactory.dispose();
88 } catch (DNotesRuntimeException e1) {
89 e1.printStackTrace();
90 }
91 }
92 }
93
94 private static void log(String msg) {
95 System.out.println(msg);
96 }
97
98 private static void logMem() {
99 System.out.println("Free Memory: " + Runtime.getRuntime().freeMemory());
100 }
101
102 private void sleep(int millis) {
103 try {
104 synchronized (this) {
105 wait(millis);
106 }
107 } catch (InterruptedException e1) {
108 e1.printStackTrace();
109 }
110 }
111 }