You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2017/09/15 12:43:53 UTC
tomee git commit: Use annotations
Repository: tomee
Updated Branches:
refs/heads/master f2015d5ae -> 36cde83c7
Use annotations
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/36cde83c
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/36cde83c
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/36cde83c
Branch: refs/heads/master
Commit: 36cde83c781d679bf9455fab620b2a612fa90a72
Parents: f2015d5
Author: andygumbrecht <an...@gmx.de>
Authored: Fri Sep 15 14:43:47 2017 +0200
Committer: andygumbrecht <an...@gmx.de>
Committed: Fri Sep 15 14:43:47 2017 +0200
----------------------------------------------------------------------
.../stateless/StatelessInvocationStatsTest.java | 127 ++++++++++---------
1 file changed, 70 insertions(+), 57 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/36cde83c/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessInvocationStatsTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessInvocationStatsTest.java b/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessInvocationStatsTest.java
index a5428d5..2abd084 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessInvocationStatsTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessInvocationStatsTest.java
@@ -5,18 +5,17 @@
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.openejb.core.stateless;
-import junit.framework.TestCase;
import org.apache.openejb.OpenEJB;
import org.apache.openejb.api.Monitor;
import org.apache.openejb.assembler.classic.Assembler;
@@ -24,10 +23,15 @@ import org.apache.openejb.assembler.classic.SecurityServiceInfo;
import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
import org.apache.openejb.assembler.classic.TransactionServiceInfo;
import org.apache.openejb.config.ConfigurationFactory;
+import org.apache.openejb.core.OpenEJBInitialContextFactory;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.StatelessBean;
import org.apache.openejb.monitoring.LocalMBeanServer;
+import org.junit.After;
import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@@ -58,7 +62,8 @@ import java.util.logging.Logger;
* javax.management.MBeanAttributeInfo[description=, name=InvocationCount, type=long, read-only, descriptor={}]
* javax.management.MBeanAttributeInfo[description=, name=InvocationTime, type=long, read-only, descriptor={}]
* javax.management.MBeanAttributeInfo[description=, name=MonitoredMethods, type=long, read-only, descriptor={}]
- * javax.management.MBeanOperationInfo[description=, name=FilterAttributes, returnType=void, signature=[javax.management.MBeanParameterInfo[description="", name=excludeRegex, type=java.lang.String, descriptor={}], javax.management.MBeanParameterInfo[description="", name=includeRegex, type=java.lang.String, descriptor={}]], impact=unknown, descriptor={}]
+ * javax.management.MBeanOperationInfo[description=, name=FilterAttributes, returnType=void, signature=[javax.management.MBeanParameterInfo[description="", name=excludeRegex, type=java
+ * .lang.String, descriptor={}], javax.management.MBeanParameterInfo[description="", name=includeRegex, type=java.lang.String, descriptor={}]], impact=unknown, descriptor={}]
* <p/>
* Then for every method there will be these attributes and operations:
* <p/>
@@ -81,7 +86,8 @@ import java.util.logging.Logger;
* javax.management.MBeanAttributeInfo[description=, name=someMethod().Sum, type=double, read-only, descriptor={}]
* javax.management.MBeanAttributeInfo[description=, name=someMethod().Sumsq, type=double, read-only, descriptor={}]
* javax.management.MBeanAttributeInfo[description=, name=someMethod().Variance, type=double, read-only, descriptor={}]
- * javax.management.MBeanOperationInfo[description=, name=someMethod().setSampleSize, returnType=void, signature=[javax.management.MBeanParameterInfo[description=, name=p1, type=int, descriptor={}]], impact=unknown, descriptor={}]
+ * javax.management.MBeanOperationInfo[description=, name=someMethod().setSampleSize, returnType=void, signature=[javax.management.MBeanParameterInfo[description=, name=p1, type=int,
+ * descriptor={}]], impact=unknown, descriptor={}]
* javax.management.MBeanOperationInfo[description=, name=someMethod().sortedValues, returnType=[D, signature=[], impact=unknown, descriptor={}]
* javax.management.MBeanOperationInfo[description=, name=someMethod().values, returnType=[D, signature=[], impact=unknown, descriptor={}]
* <p/>
@@ -102,13 +108,14 @@ import java.util.logging.Logger;
*
* @version $Rev$ $Date$
*/
-public class StatelessInvocationStatsTest extends TestCase {
- @Override
+public class StatelessInvocationStatsTest {
+
+ @Before
public void setUp() {
System.setProperty(LocalMBeanServer.OPENEJB_JMX_ACTIVE, Boolean.TRUE.toString());
}
- @Override
+ @After
public void tearDown() {
System.clearProperty(LocalMBeanServer.OPENEJB_JMX_ACTIVE);
}
@@ -122,8 +129,9 @@ public class StatelessInvocationStatsTest extends TestCase {
* This whole method is a template, feel free to split it anyway you like
* Fine to have one big
*
- * @throws Exception
+ * @throws Exception On error
*/
+ @Test
public void testBasic() throws Exception {
// some pre-load to avoid to load the class lazily with the first invocation
new CounterBean().red();
@@ -131,7 +139,7 @@ public class StatelessInvocationStatsTest extends TestCase {
new CounterBean().green();
// end preload
- System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, org.apache.openejb.core.LocalInitialContextFactory.class.getName());
+ System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, OpenEJBInitialContextFactory.class.getName());
final ConfigurationFactory config = new ConfigurationFactory();
final Assembler assembler = new Assembler();
@@ -164,20 +172,21 @@ public class StatelessInvocationStatsTest extends TestCase {
bean.blue();
final MBeanServer server = LocalMBeanServer.get();
- final ObjectName invocationsName = new ObjectName("openejb.management:J2EEServer=openejb,J2EEApplication=<empty>,EJBModule=StatsModule,StatelessSessionBean=CounterBean,j2eeType=Invocations,name=CounterBean");
+ final ObjectName invocationsName = new ObjectName("openejb.management:J2EEServer=openejb,J2EEApplication=<empty>,EJBModule=StatsModule,StatelessSessionBean=CounterBean," +
+ "j2eeType=Invocations,name=CounterBean");
// Grab the mbeanInfo and check the expected attributes exist and have the correct return types and parameters
/*
- * Invocation MBeanInfo
- *
- */
- final List<MBeanAttributeInfo> expectedAttributes = new ArrayList<MBeanAttributeInfo>();
+ * Invocation MBeanInfo
+ *
+ */
+ final List<MBeanAttributeInfo> expectedAttributes = new ArrayList<>();
expectedAttributes.add(new MBeanAttributeInfo("InvocationCount", "long", "", true, false, false));
expectedAttributes.add(new MBeanAttributeInfo("InvocationTime", "long", "", true, false, false));
expectedAttributes.add(new MBeanAttributeInfo("MonitoredMethods", "long", "", true, false, false));
- final Map<String, Object> expectedValues = new TreeMap<String, Object>();
+ final Map<String, Object> expectedValues = new TreeMap<>();
expectedValues.put("InvocationCount", (long) 6);
expectedValues.put("InvocationTime", (long) 0);
expectedValues.put("MonitoredMethods", (long) 4);
@@ -229,8 +238,8 @@ public class StatelessInvocationStatsTest extends TestCase {
expectedValues.put(s + ".Variance", 0.0);
}
- final List<MBeanAttributeInfo> actualAttributes = new ArrayList<MBeanAttributeInfo>();
- final Map<String, Object> actualValues = new TreeMap<String, Object>();
+ final List<MBeanAttributeInfo> actualAttributes = new ArrayList<>();
+ final Map<String, Object> actualValues = new TreeMap<>();
final MBeanInfo beanInfo = server.getMBeanInfo(invocationsName);
for (final MBeanAttributeInfo info : beanInfo.getAttributes()) {
actualAttributes.add(info);
@@ -238,35 +247,37 @@ public class StatelessInvocationStatsTest extends TestCase {
}
//Verify invocation attributes and values
- assertEquals(expectedAttributes, actualAttributes);
+ Assert.assertEquals(expectedAttributes, actualAttributes);
boolean ok = true;
for (final Map.Entry<String, Object> entry : actualValues.entrySet()) {
final Number value = (Number) expectedValues.get(entry.getKey());
final Number real = (Number) actualValues.get(entry.getKey());
if (!value.equals(real)) { // tolerating a 1 wide range
- Logger.getLogger(StatelessInvocationStatsTest.class.getName()).log(Level.WARNING, "Test tolerance: " + entry.getKey() + " => " + entry.getValue() + "/" + expectedValues.get(entry.getKey()));
+ Logger.getLogger(StatelessInvocationStatsTest.class.getName()).log(Level.WARNING, "Test tolerance: " + entry.getKey() + " => " + entry.getValue() + "/" + expectedValues
+ .get(entry.getKey()));
final Double abs = Math.abs(real.doubleValue() - value.doubleValue());
if (abs.intValue() > 1) {
ok = false;
}
}
}
- // assertEquals(expectedValues, actualValues);
- assertTrue(ok);
+
+ Assert.assertTrue("Expected status to be true, but was: " + ok, ok);
// Grab invocation mbean operations
final MBeanParameterInfo[] invocationParameters1 = {
- new MBeanParameterInfo("excludeRegex", "java.lang.String", "\"\""),
- new MBeanParameterInfo("includeRegex", "java.lang.String", "\"\"")};
+ new MBeanParameterInfo("excludeRegex", "java.lang.String", "\"\""),
+ new MBeanParameterInfo("includeRegex", "java.lang.String", "\"\"")};
final MBeanParameterInfo[] invocationParameters2 = {
- new MBeanParameterInfo("p1", "int", "")};
+ new MBeanParameterInfo("p1", "int", "")};
- final List<MBeanOperationInfo> expectedOperations = new ArrayList<MBeanOperationInfo>();
+ final List<MBeanOperationInfo> expectedOperations = new ArrayList<>();
expectedOperations.add(new MBeanOperationInfo(
- "FilterAttributes",
- "Filters the attributes that show up in the MBeanInfo. The exclude is applied first, then any attributes that match the include are re-added. It may be required to disconnect and reconnect the JMX console to force a refresh of the MBeanInfo",
- invocationParameters1, "void", MBeanOperationInfo.UNKNOWN));
+ "FilterAttributes",
+ "Filters the attributes that show up in the MBeanInfo. The exclude is applied first, then any attributes that match the include are re-added. It may be required to " +
+ "disconnect and reconnect the JMX console to force a refresh of the MBeanInfo",
+ invocationParameters1, "void", MBeanOperationInfo.UNKNOWN));
for (final String s : methods) {
expectedOperations.add(new MBeanOperationInfo(s + ".setSampleSize", "", invocationParameters2, "void", MBeanOperationInfo.UNKNOWN));
@@ -274,18 +285,19 @@ public class StatelessInvocationStatsTest extends TestCase {
expectedOperations.add(new MBeanOperationInfo(s + ".values", "", new MBeanParameterInfo[0], "[D", MBeanOperationInfo.UNKNOWN));
}
- final List<MBeanOperationInfo> actualOperations1 = new ArrayList<MBeanOperationInfo>();
+ final List<MBeanOperationInfo> actualOperations1 = new ArrayList<>();
actualOperations1.addAll(Arrays.asList(beanInfo.getOperations()));
//Verify invocation operation information and remove bean.
- assertEquals(expectedOperations, actualOperations1);
+ Assert.assertEquals(expectedOperations, actualOperations1);
}
/**
- * @throws Exception
+ * @throws Exception On error
*/
+ @Test
public void testInvocation() throws Exception {
- System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, org.apache.openejb.core.LocalInitialContextFactory.class.getName());
+ System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, OpenEJBInitialContextFactory.class.getName());
final ConfigurationFactory config = new ConfigurationFactory();
final Assembler assembler = new Assembler();
@@ -319,26 +331,27 @@ public class StatelessInvocationStatsTest extends TestCase {
bean.waitSecs();
final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
- final ObjectName invocationsName = new ObjectName("openejb.management:J2EEServer=openejb,J2EEApplication=<empty>,EJBModule=StatsInvocModule,StatelessSessionBean=CounterBean,j2eeType=Invocations,name=CounterBean");
+ final ObjectName invocationsName = new ObjectName("openejb.management:J2EEServer=openejb,J2EEApplication=<empty>,EJBModule=StatsInvocModule,StatelessSessionBean=CounterBean," +
+ "j2eeType=Invocations,name=CounterBean");
// Grab the mbeanInfo and check the expected attributes exist and have the correct return types and parameters
final MBeanInfo invocationsMBeanInfo = server.getMBeanInfo(invocationsName);
for (final MBeanAttributeInfo info : invocationsMBeanInfo.getAttributes()) {
-// System.out.println("//" + info.getName() + " " + server.getAttribute(invocationsName, info.getName()));
+ // System.out.println("//" + info.getName() + " " + server.getAttribute(invocationsName, info.getName()));
if (info.getName().equals("waitSecs().GeometricMean")
- || info.getName().equals("waitSecs().Max")
- || info.getName().equals("waitSecs().Mean")
- || info.getName().equals("waitSecs().Min")
- || info.getName().equals("waitSecs().Percentile01")
- || info.getName().equals("waitSecs().Percentile10")
- || info.getName().equals("waitSecs().Percentile25")
- || info.getName().equals("waitSecs().Percentile50")
- || info.getName().equals("waitSecs().Percentile75")
- || info.getName().equals("waitSecs().Percentile90")
- || info.getName().equals("waitSecs().Percentile99")
- || info.getName().equals("waitSecs().Sum")) {
+ || info.getName().equals("waitSecs().Max")
+ || info.getName().equals("waitSecs().Mean")
+ || info.getName().equals("waitSecs().Min")
+ || info.getName().equals("waitSecs().Percentile01")
+ || info.getName().equals("waitSecs().Percentile10")
+ || info.getName().equals("waitSecs().Percentile25")
+ || info.getName().equals("waitSecs().Percentile50")
+ || info.getName().equals("waitSecs().Percentile75")
+ || info.getName().equals("waitSecs().Percentile90")
+ || info.getName().equals("waitSecs().Percentile99")
+ || info.getName().equals("waitSecs().Sum")) {
final Double actual = (Double) (server.getAttribute(invocationsName, info.getName()));
- assertTrue("Expected: " + actual + " >= 999", actual >= 999);
+ Assert.assertTrue("Expected: " + actual + " >= 999", actual >= 999);
}
}
ejbJar.removeEnterpriseBean("StatsInvocModule");
@@ -357,10 +370,10 @@ public class StatelessInvocationStatsTest extends TestCase {
* // Release them all back into the pool
* startingPistol.countDown();
*
- * @param bean
- * @param count
- * @return
- * @throws InterruptedException
+ * @param bean CounterBean
+ * @param count int
+ * @return CountDownLatch
+ * @throws InterruptedException On error
*/
private CountDownLatch checkout(final CounterBean bean, final int count) throws InterruptedException {
final CountDownLatch startingLine = new CountDownLatch(count);