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() {