[jboss-cvs] JBossAS SVN: r86160 - in projects/jboss-jca/trunk/core/src/test: resources/org/jboss/jca/test/core/spec/chapter10/section3 and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Mar 20 04:06:30 EDT 2009
Author: jeff.zhang
Date: 2009-03-20 04:06:30 -0400 (Fri, 20 Mar 2009)
New Revision: 86160
Added:
projects/jboss-jca/trunk/core/src/test/resources/org/jboss/jca/test/core/spec/chapter10/section3/WorkListenerInterfaceTestCase-jboss-beans.xml
Modified:
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkListenerInterfaceTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkManagementModelTestCase.java
Log:
[JBJCA-33] add more tests
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkListenerInterfaceTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkListenerInterfaceTestCase.java 2009-03-20 07:29:31 UTC (rev 86159)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkListenerInterfaceTestCase.java 2009-03-20 08:06:30 UTC (rev 86160)
@@ -21,6 +21,16 @@
*/
package org.jboss.jca.test.core.spec.chapter10.section3;
+import org.jboss.jca.test.core.spec.chapter10.SimpleWork;
+
+import javax.resource.spi.work.Work;
+import javax.resource.spi.work.WorkAdapter;
+import javax.resource.spi.work.WorkEvent;
+import javax.resource.spi.work.WorkListener;
+import javax.resource.spi.work.WorkManager;
+
+import org.jboss.ejb3.test.mc.bootstrap.EmbeddedTestMcBootstrap;
+
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
@@ -37,7 +47,11 @@
*/
public class WorkListenerInterfaceTestCase
{
-
+ /*
+ * Bootstrap (MC Facade)
+ */
+ private static EmbeddedTestMcBootstrap bootstrap;
+
/**
* Test for paragraph 1 Section 3.3.1
* @throws Throwable throwable exception
@@ -51,9 +65,29 @@
* Test for paragraph 1 Section 3.3.2
* @throws Throwable throwable exception
*/
- @Ignore
+ @Test
public void testWorkAcceptedStatus() throws Throwable
{
+ final Called called = new Called();
+ WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
+
+ SimpleWork work1 = new SimpleWork();
+ SimpleWork work2 = new SimpleWork();
+ SimpleWork work3 = new SimpleWork();
+
+ WorkListener wl1 = new WorkAdapter(){
+ public void workAccepted(WorkEvent e)
+ {
+ assertEquals(e.getType(), WorkEvent.WORK_ACCEPTED);
+ synchronized (this) {
+ called.accept_count ++;
+ }
+ }
+ };
+ workManager.doWork(work1, 0, null, wl1);
+ workManager.startWork(work2, 0, null, wl1);
+ workManager.scheduleWork(work3, 0, null, wl1);
+ assertEquals("should be same", called.accept_count , 3);
}
/**
@@ -72,15 +106,74 @@
@Ignore
public void testWorkStartedStatus() throws Throwable
{
+ final Called called = new Called();
+ WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
+
+ SimpleWork work1 = new SimpleWork();
+ SimpleWork work2 = new SimpleWork();
+ SimpleWork work3 = new SimpleWork();
+ work3.setBlockRun(true);
+
+ WorkListener wl1 = new WorkAdapter(){
+ public void workAccepted(WorkEvent e)
+ {
+ assertEquals(e.getType(), WorkEvent.WORK_ACCEPTED);
+ synchronized (this) {
+ called.accept_count ++;
+ }
+ }
+ public void workStarted(WorkEvent e)
+ {
+ assertEquals(e.getType(), WorkEvent.WORK_STARTED);
+ synchronized (this) {
+ called.start_count ++;
+ }
+ }
+ };
+ workManager.doWork(work1, SimpleWork.BLOCK_TIME, null, wl1);
+ workManager.startWork(work2, SimpleWork.BLOCK_TIME, null, wl1);
+ workManager.scheduleWork(work3, SimpleWork.BLOCK_TIME, null, wl1);
+ assertEquals("should be same", called.accept_count , 3);
+ assertEquals("should be same", called.start_count , 2);//TODO here maybe we have a bug
}
/**
* Test for paragraph 1 Section 3.3.5
* @throws Throwable throwable exception
*/
- @Ignore
+ @Test
public void testWorkCompletedStatus() throws Throwable
{
+ final Called called = new Called();
+ WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
+
+ SimpleWork work1 = new SimpleWork();
+ SimpleWork work2 = new SimpleWork();
+ work2.setBlockRun(true);
+ SimpleWork work3 = new SimpleWork();
+ work3.setBlockRun(true);
+
+ WorkListener wl1 = new WorkAdapter(){
+ public void workAccepted(WorkEvent e)
+ {
+ assertEquals(e.getType(), WorkEvent.WORK_ACCEPTED);
+ synchronized (this) {
+ called.accept_count ++;
+ }
+ }
+ public void workCompleted(WorkEvent e)
+ {
+ assertEquals(e.getType(), WorkEvent.WORK_COMPLETED);
+ synchronized (this) {
+ called.completed_count ++;
+ }
+ }
+ };
+ workManager.doWork(work1, SimpleWork.BLOCK_TIME, null, wl1);
+ workManager.startWork(work2, SimpleWork.BLOCK_TIME, null, wl1);
+ workManager.scheduleWork(work3, SimpleWork.BLOCK_TIME, null, wl1);
+ assertEquals("should be same", called.accept_count , 3);
+ assertEquals("should be same", called.completed_count , 1);
}
/**
@@ -101,9 +194,18 @@
* The source object, that is, the Work instance, on which the event initially occurred.
* @throws Throwable throwable exception
*/
- @Ignore
+ @Test
public void testSourceObjectIsInitial() throws Throwable
{
+ WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
+
+ SimpleWork work1 = new SimpleWork();
+
+ MyWorkAdapter wl1 = new MyWorkAdapter();
+
+ workManager.doWork(work1, 0, null, wl1);
+
+ assertEquals("should be same object", workManager , wl1.getSource());
}
/**
@@ -111,9 +213,18 @@
* A handle to the associated Work instance.
* @throws Throwable throwable exception
*/
- @Ignore
+ @Test
public void testHandleAssociatedWork() throws Throwable
{
+ WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
+
+ SimpleWork work1 = new SimpleWork();
+
+ MyWorkAdapter wl1 = new MyWorkAdapter();
+
+ workManager.doWork(work1, 0, null, wl1);
+
+ assertEquals("should be same object", work1 , wl1.getWork());
}
/**
@@ -124,6 +235,16 @@
@Ignore
public void testStartDelayDuration() throws Throwable
{
+ WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
+
+ SimpleWork work1 = new SimpleWork();
+
+ MyWorkAdapter wl1 = new MyWorkAdapter();
+
+ workManager.doWork(work1, 0, null, wl1);
+
+ assertTrue(wl1.getStartDuration() >= 0);
+ //TODO it seems we haven't impl this feture
}
/**
@@ -154,8 +275,108 @@
* The WorkListener implementation must not make any assumptions on the ordering of notifications.
* @throws Throwable throwable exception
*/
- @Ignore
+ @Test
public void testNotificationWithoutOrder() throws Throwable
{
+ final Called called = new Called();
+ WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
+
+ SimpleWork work1 = new SimpleWork();
+ SimpleWork work2 = new SimpleWork();
+
+ WorkListener wl1 = new WorkAdapter(){
+ public void workAccepted(WorkEvent e)
+ {
+ synchronized (this) {
+ called.accept_count ++;
+ }
+ }
+ };
+ workManager.doWork(work1, 0, null, wl1);
+ workManager.startWork(work2, 0, null, wl1);
+ assertEquals("should be same", called.accept_count , 2);
+
+ workManager.startWork(work1, 0, null, wl1);
+ workManager.doWork(work2, 0, null, wl1);
+ assertEquals("should be same", called.accept_count , 4);
}
+
+
+ // --------------------------------------------------------------------------------||
+ // Lifecycle Methods --------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+ /**
+ * Lifecycle start, before the suite is executed
+ * @throws Throwable throwable exception
+ */
+ @BeforeClass
+ public static void beforeClass() throws Throwable
+ {
+ // Create and set a new MC Bootstrap
+ bootstrap = EmbeddedTestMcBootstrap.createEmbeddedMcBootstrap();
+
+ // Deploy Naming and Transaction
+ bootstrap.deploy(WorkManagerInterfaceTestCase.class.getClassLoader(), "naming-jboss-beans.xml");
+ bootstrap.deploy(WorkManagerInterfaceTestCase.class.getClassLoader(), "transaction-jboss-beans.xml");
+
+ // Deploy Beans
+ bootstrap.deploy(WorkManagerInterfaceTestCase.class);
+ }
+
+ /**
+ * Lifecycle stop, after the suite is executed
+ * @throws Throwable throwable exception
+ */
+ @AfterClass
+ public static void afterClass() throws Throwable
+ {
+ // Undeploy Transaction and Naming
+ bootstrap.undeploy(WorkManagerInterfaceTestCase.class.getClassLoader(), "transaction-jboss-beans.xml");
+ bootstrap.undeploy(WorkManagerInterfaceTestCase.class.getClassLoader(), "naming-jboss-beans.xml");
+
+ // Undeploy Beans
+ bootstrap.undeploy(WorkManagerInterfaceTestCase.class);
+
+ // Shutdown MC
+ bootstrap.shutdown();
+
+ // Set Bootstrap to null
+ bootstrap = null;
+ }
+
+ class Called
+ {
+ int accept_count;
+ int start_count;
+ int completed_count;
+ }
+
+ class MyWorkAdapter extends WorkAdapter
+ {
+ private Object source;
+ private Work work;
+ private long startDuration;
+
+ public void workAccepted(WorkEvent e)
+ {
+ source = e.getSource();
+ work = e.getWork();
+ startDuration = e.getStartDuration();
+ }
+
+ public Object getSource()
+ {
+ return source;
+ }
+
+ public Work getWork()
+ {
+ return work;
+ }
+
+ public long getStartDuration()
+ {
+ return startDuration;
+ }
+ }
}
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkManagementModelTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkManagementModelTestCase.java 2009-03-20 07:29:31 UTC (rev 86159)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkManagementModelTestCase.java 2009-03-20 08:06:30 UTC (rev 86160)
@@ -23,15 +23,20 @@
import org.jboss.jca.common.api.ThreadPool;
import org.jboss.jca.common.threadpool.ThreadPoolImpl;
+import org.jboss.jca.core.api.WorkManager;
+import org.jboss.jca.core.api.WorkWrapper;
import org.jboss.jca.test.core.spec.chapter10.SimpleBootstrapContext;
import org.jboss.jca.test.core.spec.chapter10.SimpleWork;
import javax.resource.spi.BootstrapContext;
+import javax.resource.spi.work.ExecutionContext;
import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import javax.resource.spi.work.WorkAdapter;
+import javax.resource.spi.work.WorkListener;
import org.jboss.ejb3.test.mc.bootstrap.EmbeddedTestMcBootstrap;
+import org.jboss.util.threadpool.Task;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -211,9 +216,22 @@
* process Work instances submitted by a specific resource adapter.
* @throws Throwable throwable exception
*/
- @Ignore
+ @Test
public void testAsUseThreadSamePriorityLevel() throws Throwable
{
+ WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
+ SimpleWork work = new SimpleWork();
+ ExecutionContext ec = new ExecutionContext();
+ WorkListener wa = new WorkAdapter();
+ //define in WorkManagerImpl.doWork
+ WorkWrapper wrapper1 = new WorkWrapper(workManager, work, Task.WAIT_FOR_START, 0L, ec, wa);
+ //define in WorkManagerImpl.startWork
+ WorkWrapper wrapper2 = new WorkWrapper(workManager, work, Task.WAIT_FOR_START, 0L, ec, wa);
+ //define in WorkManagerImpl.scheduleWork
+ WorkWrapper wrapper3 = new WorkWrapper(workManager, work, Task.WAIT_NONE, 0L, ec, wa);
+
+ assertEquals("same priority", wrapper1.getPriority(), wrapper1.getPriority());
+ assertEquals("same priority", wrapper1.getPriority(), wrapper2.getPriority());
}
// --------------------------------------------------------------------------------||
Added: projects/jboss-jca/trunk/core/src/test/resources/org/jboss/jca/test/core/spec/chapter10/section3/WorkListenerInterfaceTestCase-jboss-beans.xml
===================================================================
--- projects/jboss-jca/trunk/core/src/test/resources/org/jboss/jca/test/core/spec/chapter10/section3/WorkListenerInterfaceTestCase-jboss-beans.xml (rev 0)
+++ projects/jboss-jca/trunk/core/src/test/resources/org/jboss/jca/test/core/spec/chapter10/section3/WorkListenerInterfaceTestCase-jboss-beans.xml 2009-03-20 08:06:30 UTC (rev 86160)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ JBoss JCA
+-->
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="WorkManagerThreadPool" interface="org.jboss.jca.common.threadpool.ThreadPool" class="org.jboss.jca.common.threadpool.ThreadPoolImpl">
+ <!-- The name that appears in thread names -->
+ <property name="name">WorkManager</property>
+
+ <!-- The maximum amount of work in the queue -->
+ <property name="maximumQueueSize">1024</property>
+
+ <!-- The maximum number of active threads -->
+ <property name="maximumPoolSize">100</property>
+
+ <!-- How long to keep threads alive after their last work (default one minute) -->
+ <property name="keepAliveTime">60000</property>
+ </bean>
+
+ <bean name="WorkManager" interface="org.jboss.jca.core.api.WorkManager" class="org.jboss.jca.core.workmanager.WorkManagerImpl">
+ <!-- The thread pool -->
+ <property name="threadPool"><inject bean="WorkManagerThreadPool"/></property>
+
+ <!-- The XA terminator -->
+ <property name="XATerminator"><inject bean="TransactionManager" property="XATerminator"/></property>
+ </bean>
+
+</deployment>
More information about the jboss-cvs-commits
mailing list