[jboss-cvs] JBossAS SVN: r86471 - in projects/jboss-jca/trunk/core/src/test/java/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
Mon Mar 30 09:37:41 EDT 2009
Author: jeff.zhang
Date: 2009-03-30 09:37:40 -0400 (Mon, 30 Mar 2009)
New Revision: 86471
Added:
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/PriorityWork.java
Modified:
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/LongRunningWork.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/ShortRunningWork.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkInterfaceTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkManagementModelTestCase.java
Log:
[JBJCA-33] refactor tests
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/LongRunningWork.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/LongRunningWork.java 2009-03-30 13:17:46 UTC (rev 86470)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/LongRunningWork.java 2009-03-30 13:37:40 UTC (rev 86471)
@@ -21,6 +21,8 @@
*/
package org.jboss.jca.test.core.spec.chapter10.common;
+import java.util.concurrent.CountDownLatch;
+
import javax.resource.spi.work.Work;
/**
@@ -31,6 +33,10 @@
{
private boolean wasReleased;
private long releaseThread;
+ private boolean postRun;
+ private CountDownLatch start;
+ private CountDownLatch done;
+ private long threadId;
/**
* Constructor.
@@ -40,6 +46,17 @@
}
/**
+ * Constructor.
+ * @param start Latch when enter run method
+ * @param done Latch when leave run method
+ */
+ public LongRunningWork(CountDownLatch start, CountDownLatch done)
+ {
+ this.start = start;
+ this.done = done;
+ }
+
+ /**
* release method
*/
public void release()
@@ -53,6 +70,17 @@
*/
public void run()
{
+ try
+ {
+ start.await();
+ }
+ catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ threadId = Thread.currentThread().getId();
+ postRun = true;
+ done.countDown();
}
/**
@@ -72,5 +100,21 @@
{
return releaseThread;
}
+
+ /**
+ * @return long current thread id
+ */
+ public long getThreadId()
+ {
+ return threadId;
+ }
+
+ /**
+ * @return boolean if enter run method, has executed
+ */
+ public boolean hasPostRun()
+ {
+ return postRun;
+ }
}
Added: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/PriorityWork.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/PriorityWork.java (rev 0)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/PriorityWork.java 2009-03-30 13:37:40 UTC (rev 86471)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.jca.test.core.spec.chapter10.common;
+
+import javax.resource.spi.work.Work;
+
+/**
+ * PriorityWork
+ * @version $Revision: $
+ */
+public class PriorityWork implements Work
+{
+ private int threadPriority;
+
+ /**
+ * Constructor.
+ */
+ public PriorityWork()
+ {
+ }
+
+ /**
+ * release method
+ */
+ public void release()
+ {
+
+ }
+
+ /**
+ * run method
+ */
+ public void run()
+ {
+ threadPriority = Thread.currentThread().getPriority();
+ }
+
+ /**
+ * @return thread priority
+ */
+ public int getThreadPriority()
+ {
+ return threadPriority;
+ }
+}
+
Property changes on: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/PriorityWork.java
___________________________________________________________________
Name: svn:keywords
+ Id Reversion Date
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/ShortRunningWork.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/ShortRunningWork.java 2009-03-30 13:17:46 UTC (rev 86470)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/common/ShortRunningWork.java 2009-03-30 13:37:40 UTC (rev 86471)
@@ -32,6 +32,7 @@
private boolean wasReleased;
private boolean callRun;
private boolean throwTestWorkException;
+
/**
* Constructor.
*/
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkInterfaceTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkInterfaceTestCase.java 2009-03-30 13:17:46 UTC (rev 86470)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkInterfaceTestCase.java 2009-03-30 13:37:40 UTC (rev 86471)
@@ -21,9 +21,6 @@
*/
package org.jboss.jca.test.core.spec.chapter10.section3;
-import org.jboss.jca.common.api.ThreadPool;
-import org.jboss.jca.common.threadpool.ThreadPoolImpl;
-
import org.jboss.jca.test.core.spec.chapter10.common.LongRunningWork;
import org.jboss.jca.test.core.spec.chapter10.common.ShortRunningWork;
import org.jboss.jca.test.core.spec.chapter10.common.SynchronizedWork;
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-30 13:17:46 UTC (rev 86470)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/test/core/spec/chapter10/section3/WorkManagementModelTestCase.java 2009-03-30 13:37:40 UTC (rev 86471)
@@ -21,19 +21,22 @@
*/
package org.jboss.jca.test.core.spec.chapter10.section3;
-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 org.jboss.jca.test.core.spec.chapter10.common.BlockRunningWork;
+import org.jboss.jca.test.core.spec.chapter10.common.LongRunningWork;
+import org.jboss.jca.test.core.spec.chapter10.common.PriorityWork;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+
import javax.resource.spi.BootstrapContext;
import javax.resource.spi.work.ExecutionContext;
import javax.resource.spi.work.Work;
import javax.resource.spi.work.WorkAdapter;
import javax.resource.spi.work.WorkListener;
+import javax.resource.spi.work.WorkManager;
import org.jboss.ejb3.test.mc.bootstrap.EmbeddedTestMcBootstrap;
import org.jboss.util.threadpool.Task;
@@ -86,18 +89,30 @@
public void testOneThreadPickWorkInstance() throws Throwable
{
WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
- ThreadPoolImpl tpImpl = (ThreadPoolImpl)bootstrap.lookup("WorkManagerThreadPool", ThreadPool.class);
- int poolNum = tpImpl.getPoolNumber();
- int poolSize = tpImpl.getPoolSize();
+
+ final CountDownLatch startA = new CountDownLatch(1);
+ final CountDownLatch doneA = new CountDownLatch(1);
+ final CountDownLatch startB = new CountDownLatch(1);
+ final CountDownLatch doneB = new CountDownLatch(1);
+ long threadIdA;
+ long threadIdB;
- SimpleWork work = new SimpleWork();
- work.setBlockRun(true);
+ LongRunningWork mwA = new LongRunningWork(startA, doneA);
+ LongRunningWork mwB = new LongRunningWork(startB, doneB);
+
+ startA.countDown();
+ workManager.startWork(mwA);
+ threadIdA = mwA.getThreadId();
- assertFalse(work.isCallRun());
- workManager.scheduleWork(work);
+ startB.countDown();
+ workManager.startWork(mwB);
+ threadIdB = mwB.getThreadId();
- assertEquals(poolNum, tpImpl.getPoolNumber());
- assertEquals(poolSize + 1, tpImpl.getPoolSize());
+ doneA.await();
+ doneB.await();
+
+ assertNotSame(threadIdA, threadIdB);
+
}
/**
@@ -110,26 +125,34 @@
public void testManyWorkInstancesSubmitted() throws Throwable
{
WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
- SimpleWork work1 = new SimpleWork();
- work1.setBlockRun(true);
- SimpleWork work2 = new SimpleWork();
- work2.setBlockRun(true);
- SimpleWork work3 = new SimpleWork();
- work3.setBlockRun(true);
- assertFalse(work1.isCallRun());
- assertFalse(work2.isCallRun());
- assertFalse(work3.isCallRun());
+ final CountDownLatch start1 = new CountDownLatch(1);
+ final CountDownLatch done1 = new CountDownLatch(1);
+ final CountDownLatch start2 = new CountDownLatch(1);
+ final CountDownLatch done2 = new CountDownLatch(1);
+ final CountDownLatch start3 = new CountDownLatch(1);
+ final CountDownLatch done3 = new CountDownLatch(1);
+
+ LongRunningWork work1 = new LongRunningWork(start1, done1);
+ LongRunningWork work2 = new LongRunningWork(start2, done2);
+ LongRunningWork work3 = new LongRunningWork(start3, done3);
+
+ assertFalse(work1.hasPostRun());
+ assertFalse(work2.hasPostRun());
+ assertFalse(work3.hasPostRun());
+ start1.countDown();
+ start2.countDown();
+ start3.countDown();
workManager.startWork(work1);
workManager.startWork(work2);
workManager.startWork(work3);
- Thread.currentThread().sleep(SimpleWork.BLOCK_TIME + SimpleWork.FOLLOW_TIME);
- assertTrue(work1.isCallRun());
- assertTrue(work2.isCallRun());
- assertTrue(work3.isCallRun());
- work1 = null;
- work2 = null;
- work3 = null;
+ done1.await();
+ done2.await();
+ done3.await();
+
+ assertTrue(work1.hasPostRun());
+ assertTrue(work2.hasPostRun());
+ assertTrue(work3.hasPostRun());
}
/**
@@ -142,24 +165,36 @@
public void testAnytimeWorkInstanceSubmitted() throws Throwable
{
WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
- SimpleWork work1 = new SimpleWork();
- work1.setBlockRun(true);
- SimpleWork work2 = new SimpleWork();
- work2.setBlockRun(true);
- assertFalse(work1.isCallRun());
- assertFalse(work2.isCallRun());
-
+ final CountDownLatch start1 = new CountDownLatch(1);
+ final CountDownLatch done1 = new CountDownLatch(1);
+ final CountDownLatch start2 = new CountDownLatch(1);
+ final CountDownLatch done2 = new CountDownLatch(1);
+ final CountDownLatch start3 = new CountDownLatch(1);
+ final CountDownLatch done3 = new CountDownLatch(1);
+
+ LongRunningWork work1 = new LongRunningWork(start1, done1);
+ LongRunningWork work2 = new LongRunningWork(start2, done2);
+ LongRunningWork work3 = new LongRunningWork(start3, done3);
+
+ assertFalse(work1.hasPostRun());
+ assertFalse(work2.hasPostRun());
+ assertFalse(work3.hasPostRun());
+ start1.countDown();
+ start2.countDown();
+ start3.countDown();
workManager.startWork(work1);
- Thread.currentThread().sleep(SimpleWork.FOLLOW_TIME);
workManager.startWork(work2);
- Thread.currentThread().sleep(SimpleWork.BLOCK_TIME + SimpleWork.FOLLOW_TIME);
- assertTrue(work1.isCallRun());
- assertTrue(work2.isCallRun());
+ done1.await();
+ done2.await();
+
+ workManager.startWork(work3);
+ done3.await();
- work1 = null;
- work2 = null;
+ assertTrue(work1.hasPostRun());
+ assertTrue(work2.hasPostRun());
+ assertTrue(work3.hasPostRun());
}
/**
@@ -168,9 +203,11 @@
* server reuses the thread.
* @throws Throwable throwable exception
*/
- @Test
+ @Ignore
public void testThreadBackPoolWhenWorkDone() throws Throwable
{
+ //TODO
+ /*
WorkManager workManager = bootstrap.lookup("WorkManager", WorkManager.class);
ThreadPoolImpl tpImpl = (ThreadPoolImpl)bootstrap.lookup("WorkManagerThreadPool", ThreadPool.class);
int poolNum = tpImpl.getPoolNumber();
@@ -185,6 +222,7 @@
assertEquals(poolNum, tpImpl.getPoolNumber());
assertEquals(poolSize, tpImpl.getPoolSize());
+ */
}
/**
@@ -220,18 +258,24 @@
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());
+
+ List<PriorityWork> listWorks = new ArrayList<PriorityWork>();
+ PriorityWork pwork;
+ for (int i = 0; i < 3; i++)
+ {
+ pwork = new PriorityWork();
+ listWorks.add(pwork);
+ workManager.startWork(pwork);
+ }
+ int threadPriortity = -1;
+ for (PriorityWork work : listWorks)
+ {
+ if (threadPriortity == -1)
+ {
+ threadPriortity = work.getThreadPriority();
+ }
+ assertEquals(work.getThreadPriority(), threadPriortity);
+ }
}
// --------------------------------------------------------------------------------||
More information about the jboss-cvs-commits
mailing list