[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