Author: rmannibucau
Date: Tue Aug 21 09:32:57 2012
New Revision: 1375446

URL: http://svn.apache.org/viewvc?rev=1375446&view=rev
Log:
fixing warmup logic + arquillian port (mistake on the key in the map)

Modified:
    
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/QuickServerXmlParser.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/Core.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
    
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationCustomProviderTest.java

Modified: 
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/QuickServerXmlParser.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/QuickServerXmlParser.java?rev=1375446&r1=1375445&r2=1375446&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/QuickServerXmlParser.java
 (original)
+++ 
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/QuickServerXmlParser.java
 Tue Aug 21 09:32:57 2012
@@ -7,7 +7,6 @@ import org.xml.sax.helpers.DefaultHandle
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 import java.io.File;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.TreeMap;
 
@@ -73,15 +72,23 @@ public class QuickServerXmlParser extend
     }
 
     public String http() {
-        return ports.get(DEFAULT_HTTP_PORT);
+        return value(HTTP_KEY, DEFAULT_HTTP_PORT);
     }
 
     public String ajp() {
-        return ports.get(DEFAULT_AJP_PORT);
+        return value(AJP_KEY, DEFAULT_AJP_PORT);
     }
 
     public String stop() {
-        return ports.get(DEFAULT_STOP_PORT);
+        return value(STOP_KEY, DEFAULT_STOP_PORT);
+    }
+
+    private String value(final String key, final String defaultValue) {
+        final String port = ports.get(key);
+        if (port == null) {
+            return defaultValue;
+        }
+        return port;
     }
 
     @Override

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/Core.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/Core.java?rev=1375446&r1=1375445&r2=1375446&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/Core.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/Core.java
 Tue Aug 21 09:32:57 2012
@@ -19,6 +19,7 @@ package org.apache.openejb;
 import org.apache.openejb.util.Messages;
 
 import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
 
 /**
 * @version $Rev$ $Date$
@@ -58,11 +59,10 @@ public class Core {
                 "org.apache.openejb.loader.SystemInstance",
                 "org.apache.openejb.monitoring.StatsInterceptor",
                 "org.apache.openejb.persistence.JtaEntityManagerRegistry",
-                "org.apache.openejb.util.Duration",
+                // "org.apache.openejb.util.Duration",
                 "org.apache.openejb.util.Join",
                 "org.apache.openejb.util.JuliLogStreamFactory",
                 "org.apache.openejb.util.LogCategory",
-                "org.apache.openejb.util.Logger",
                 "org.apache.openejb.util.Messages",
                 "org.apache.openejb.util.SafeToolkit",
                 "org.apache.openejb.util.StringTemplate",
@@ -85,34 +85,39 @@ public class Core {
         };
         preloadMessages.start();
 
-        final int permits = Runtime.getRuntime().availableProcessors() + 1;
-        final Semaphore semaphore = new Semaphore(permits);
+        final int permits = 2 * Runtime.getRuntime().availableProcessors() + 1;
+        final Semaphore semaphore = new Semaphore(0);
         final ClassLoader loader = OpenEjbContainer.class.getClassLoader();
 
-        try { // do it before all other to force juli config
+        try { // logging classes should be loaded before any other classes so 
do it here synchronously
+            Class.forName("org.apache.openejb.util.Logger", true, loader);
             Class.forName("org.apache.openejb.util.JuliLogStreamFactory", 
true, loader);
         } catch (Throwable e) {
             // no-op
         }
 
-        final int part = classes.length / permits; // works since we have a 
pair number of classes
+        long start = System.nanoTime();
+        final int part = (int) Math.round(classes.length * 1. / permits);
         for (int i = 0; i < permits; i++) {
             final int offset = i * part;
-            final Thread thread = new Thread(new Runnable() {
+            final Thread thread = new Thread() {
                 @Override
                 public void run() {
-                    try {
-                        semaphore.acquire();
-                        for (int c = offset; c < offset + part; c++) {
+                    int max = offset + part;
+                    if (offset / part == permits - 1) { // last one
+                        max = classes.length;
+                    }
+
+                    for (int c = offset; c < max; c++) {
+                        try {
                             Class.forName(classes[c], true, loader);
+                        } catch (Throwable e) {
+                            // no-op
                         }
-                    } catch (Throwable e) {
-                        // no-op
-                    } finally {
-                        semaphore.release();
                     }
+                    semaphore.release();
                 }
-            });
+            };
             thread.setDaemon(true);
             thread.start();
         }
@@ -122,6 +127,8 @@ public class Core {
         } catch (InterruptedException e) {
             Thread.interrupted();
         }
+        long end = System.nanoTime();
+        System.out.println(TimeUnit.NANOSECONDS.toMillis(end - start));
     }
 
     public static void warmup() {}

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java?rev=1375446&r1=1375445&r2=1375446&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
 Tue Aug 21 09:32:57 2012
@@ -283,46 +283,7 @@ public class RemoteServer {
                     System.out.println(Join.join("\n", args));
                 }
 
-                // tmp
-                Thread t = new Thread() {
-                    @Override
-                    public void run() {
-                        setName("[DEBUG] Dump Observer");
-
-                        boolean end = false;
-                        int i = 0;
-                        while (!end) {
-                            try {
-                                if (server == null) {
-                                    throw new IllegalThreadStateException();
-                                }
-                                server.exitValue();
-                                end = true;
-                            } catch (IllegalThreadStateException e) {
-                                i++;
-                                try {
-                                    Thread.sleep(Integer.getInteger("sleep", 
5000 * 60));
-                                } catch (InterruptedException e1) {
-                                    e1.printStackTrace();
-                                }
-                                if (i == 5) {
-                                    try {
-                                        final Field f = 
server.getClass().getDeclaredField("pid");
-                                        f.setAccessible(true);
-                                        int pid = (Integer) f.get(server);
-                                        
Pipe.pipe(Runtime.getRuntime().exec("kill -3 " + pid));
-                                    } catch (Exception e1) {
-                                        e1.printStackTrace();
-                                    }
-                                    i = 0;
-                                }
-                            }
-                        }
-                    }
-                };
-                t.setDaemon(true);
-                t.start();
-                // end tmp
+                // kill3UNIXDebug();
 
                 server = Runtime.getRuntime().exec(args);
 
@@ -343,6 +304,48 @@ public class RemoteServer {
         }
     }
 
+    // debugging method (mainly for buildbot), don't let it activated when all 
is fine
+    private void kill3UNIXDebug() {
+        Thread t = new Thread() {
+            @Override
+            public void run() {
+                setName("[DEBUG] Dump Observer");
+
+                boolean end = false;
+                int i = 0;
+                while (!end) {
+                    try {
+                        if (server == null) {
+                            throw new IllegalThreadStateException();
+                        }
+                        server.exitValue();
+                        end = true;
+                    } catch (IllegalThreadStateException e) {
+                        i++;
+                        try {
+                            Thread.sleep(Integer.getInteger("sleep", 5000 * 
60));
+                        } catch (InterruptedException e1) {
+                            e1.printStackTrace();
+                        }
+                        if (i == 5) {
+                            try {
+                                final Field f = 
server.getClass().getDeclaredField("pid");
+                                f.setAccessible(true);
+                                int pid = (Integer) f.get(server);
+                                Pipe.pipe(Runtime.getRuntime().exec("kill -3 " 
+ pid));
+                            } catch (Exception e1) {
+                                e1.printStackTrace();
+                            }
+                            i = 0;
+                        }
+                    }
+                }
+            }
+        };
+        t.setDaemon(true);
+        t.start();
+    }
+
     private File lib(String name, File... dirs) {
         for (File dir : dirs) {
             final File[] files = dir.listFiles();

Modified: 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationCustomProviderTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationCustomProviderTest.java?rev=1375446&r1=1375445&r2=1375446&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationCustomProviderTest.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationCustomProviderTest.java
 Tue Aug 21 09:32:57 2012
@@ -17,6 +17,7 @@
 package org.apache.openejb.bval;
 
 import org.apache.bval.jsr303.ApacheValidationProvider;
+import org.apache.openejb.Core;
 import org.apache.openejb.assembler.classic.ValidatorBuilder;
 import org.apache.openejb.bval.util.CustomValidatorProvider;
 import org.apache.openejb.jee.Empty;
@@ -41,6 +42,9 @@ import static org.junit.Assert.assertTru
 public class BeanValidationCustomProviderTest {
     @EJB
     private ABean bean;
+    static {
+        Core.warmup();
+    }
 
     @BeforeClass
     public static void initProvider() {


Reply via email to