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