1 /*------------------------------------------------------------------------------
2 Name: Embedded.java
3 Project: xmlBlaster.org
4 Copyright: xmlBlaster.org, see xmlBlaster-LICENSE file
5 ------------------------------------------------------------------------------*/
6 package org.xmlBlaster.test.memoryleak;
7
8 import java.util.logging.Logger;
9 import java.util.logging.Level;
10 import org.xmlBlaster.util.ThreadLister;
11 import org.xmlBlaster.util.Global;
12 import org.xmlBlaster.util.XmlBlasterException;
13 import org.xmlBlaster.util.EmbeddedXmlBlaster;
14 import org.xmlBlaster.engine.runlevel.RunlevelManager;
15
16 import org.xmlBlaster.test.Util;
17
18
19 /**
20 * Here we start stop an embeded xmlBlaster instance to test memory an thread consumption.
21 */
22 public class Embedded
23 {
24 private static String ME = "Embedded";
25 private final Global glob;
26 private static Logger log = Logger.getLogger(Embedded.class.getName());
27 private int serverPort = 7615;
28
29 /**
30 * Constructs the Embedded object.
31 */
32 public Embedded(Global glob) {
33 this.glob = glob;
34
35 Thread.currentThread().setName("EmbeddedTest.MainThread");
36 }
37
38 /**
39 * Loop with start and stop embeded xmlBlaster.
40 */
41 protected void testLoop() {
42 boolean interactive = this.glob.getProperty().get("interactive", false);
43 long sleep = this.glob.getProperty().get("sleep", 1000L);
44
45 int n = 100;
46 for(int i=0; i<n; i++) {
47
48 if (interactive) {
49 log.info("Hit a key to start embedded xmlBlaster #" + (i+1) + "/" + n);
50 try { System.in.read(); } catch(java.io.IOException e) {}
51 }
52 else {
53 log.info("********* Start embedded xmlBlaster #" + (i+1) + "/" + n);
54 }
55
56 if (i==0) {
57 //System.gc();
58 log.info("Threads before starting #" + (i+1) + " num=" + ThreadLister.countThreads());
59 ThreadLister.listAllThreads(System.out);
60 }
61
62 //this.glob.init(Util.getOtherServerPorts(serverPort));
63 EmbeddedXmlBlaster embeddedXmlBlaster = EmbeddedXmlBlaster.startXmlBlaster(this.glob);
64
65 log.info("Threads with alive server #" + (i+1) + " num=" + ThreadLister.countThreads());
66 ThreadLister.listAllThreads(System.out);
67
68 if (interactive) {
69 log.info("Hit a key to stop embedded xmlBlaster #" + (i+1) + "/" + n);
70 try { System.in.read(); } catch(java.io.IOException e) {}
71 }
72 else {
73 log.info("********* Stop embedded xmlBlaster #" + (i+1) + "/" + n);
74 }
75
76 embeddedXmlBlaster.stopServer(true);
77 embeddedXmlBlaster = null;
78 //Util.resetPorts();
79
80 log.info("Threads after stopping #" + (i+1) + " num=" + ThreadLister.countThreads());
81 ThreadLister.listAllThreads(System.out);
82
83 if (!interactive) {
84 try { Thread.sleep(sleep); } catch( InterruptedException e) {}
85 }
86 }
87 log.info("Done");
88 }
89 /**
90 * Invoke:
91 * <pre>
92 * java org.xmlBlaster.test.memoryleak.Embedded -interactive true
93 * <pre>
94 */
95 public static void main(String args[]) {
96 Embedded embedded = new Embedded(new Global(args));
97 embedded.testLoop();
98 }
99 }
syntax highlighted by Code2HTML, v. 0.9.1