You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2012/06/01 22:00:05 UTC

svn commit: r1345326 [2/2] - in /activemq/activemq-cpp/trunk/activemq-cpp/src: main/ main/decaf/internal/util/concurrent/ main/decaf/lang/ main/decaf/util/ main/decaf/util/concurrent/locks/ test/ test/decaf/lang/ test/decaf/util/concurrent/locks/

Added: activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/locks/ReentrantReadWriteLockTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/locks/ReentrantReadWriteLockTest.cpp?rev=1345326&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/locks/ReentrantReadWriteLockTest.cpp (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/locks/ReentrantReadWriteLockTest.cpp Fri Jun  1 20:00:04 2012
@@ -0,0 +1,1672 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+
+#include "ReentrantReadWriteLockTest.h"
+
+using namespace decaf;
+using namespace decaf::util;
+using namespace decaf::util::concurrent;
+using namespace decaf::util::concurrent::locks;
+
+////////////////////////////////////////////////////////////////////////////////
+ReentrantReadWriteLockTest::ReentrantReadWriteLockTest() {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+ReentrantReadWriteLockTest::~ReentrantReadWriteLockTest() {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ReentrantReadWriteLockTest::testConstructor() {
+}
+
+
+///**
+// * A runnable calling lockInterruptibly
+// */
+//class InterruptibleLockRunnable implements Runnable {
+//    final ReentrantReadWriteLock lock;
+//    InterruptibleLockRunnable(ReentrantReadWriteLock l) { lock = l; }
+//    public void run() {
+//        try {
+//            lock.writeLock().lockInterruptibly();
+//        } catch(InterruptedException success){}
+//    }
+//}
+//
+///**
+// * A runnable calling lockInterruptibly that expects to be
+// * interrupted
+// */
+//class InterruptedLockRunnable implements Runnable {
+//    final ReentrantReadWriteLock lock;
+//    InterruptedLockRunnable(ReentrantReadWriteLock l) { lock = l; }
+//    public void run() {
+//        try {
+//            lock.writeLock().lockInterruptibly();
+//            threadShouldThrow();
+//        } catch(InterruptedException success){}
+//    }
+//}
+//
+///**
+// * Subclass to expose protected methods
+// */
+//static class PublicReentrantReadWriteLock extends ReentrantReadWriteLock {
+//    PublicReentrantReadWriteLock() { super(); }
+//    public Collection<Thread> getQueuedThreads() {
+//        return super.getQueuedThreads();
+//    }
+//    public Collection<Thread> getWaitingThreads(Condition c) {
+//        return super.getWaitingThreads(c);
+//    }
+//}
+//
+///**
+// * Constructor sets given fairness, and is in unlocked state
+// */
+//public void testConstructor() {
+//ReentrantReadWriteLock rl = new ReentrantReadWriteLock();
+//    assertFalse(rl.isFair());
+//    assertFalse(rl.isWriteLocked());
+//    assertEquals(0, rl.getReadLockCount());
+//ReentrantReadWriteLock r2 = new ReentrantReadWriteLock(true);
+//    assertTrue(r2.isFair());
+//    assertFalse(r2.isWriteLocked());
+//    assertEquals(0, r2.getReadLockCount());
+//}
+//
+///**
+// * write-locking and read-locking an unlocked lock succeed
+// */
+//public void testLock() {
+//ReentrantReadWriteLock rl = new ReentrantReadWriteLock();
+//    rl.writeLock().lock();
+//    assertTrue(rl.isWriteLocked());
+//    assertTrue(rl.isWriteLockedByCurrentThread());
+//    assertEquals(0, rl.getReadLockCount());
+//    rl.writeLock().unlock();
+//    assertFalse(rl.isWriteLocked());
+//    assertFalse(rl.isWriteLockedByCurrentThread());
+//    assertEquals(0, rl.getReadLockCount());
+//    rl.readLock().lock();
+//    assertFalse(rl.isWriteLocked());
+//    assertFalse(rl.isWriteLockedByCurrentThread());
+//    assertEquals(1, rl.getReadLockCount());
+//    rl.readLock().unlock();
+//    assertFalse(rl.isWriteLocked());
+//    assertFalse(rl.isWriteLockedByCurrentThread());
+//    assertEquals(0, rl.getReadLockCount());
+//}
+//
+//
+///**
+// * locking an unlocked fair lock succeeds
+// */
+//public void testFairLock() {
+//ReentrantReadWriteLock rl = new ReentrantReadWriteLock(true);
+//    rl.writeLock().lock();
+//    assertTrue(rl.isWriteLocked());
+//    assertTrue(rl.isWriteLockedByCurrentThread());
+//    assertEquals(0, rl.getReadLockCount());
+//    rl.writeLock().unlock();
+//    assertFalse(rl.isWriteLocked());
+//    assertFalse(rl.isWriteLockedByCurrentThread());
+//    assertEquals(0, rl.getReadLockCount());
+//    rl.readLock().lock();
+//    assertFalse(rl.isWriteLocked());
+//    assertFalse(rl.isWriteLockedByCurrentThread());
+//    assertEquals(1, rl.getReadLockCount());
+//    rl.readLock().unlock();
+//    assertFalse(rl.isWriteLocked());
+//    assertFalse(rl.isWriteLockedByCurrentThread());
+//    assertEquals(0, rl.getReadLockCount());
+//}
+//
+///**
+// * getWriteHoldCount returns number of recursive holds
+// */
+//public void testGetWriteHoldCount() {
+//ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//for(int i = 1; i <= SIZE; i++) {
+//    lock.writeLock().lock();
+//    assertEquals(i,lock.getWriteHoldCount());
+//}
+//for(int i = SIZE; i > 0; i--) {
+//    lock.writeLock().unlock();
+//    assertEquals(i-1,lock.getWriteHoldCount());
+//}
+//}
+//
+//
+///**
+// * write-unlocking an unlocked lock throws IllegalMonitorStateException
+// */
+//public void testUnlock_IllegalMonitorStateException() {
+//ReentrantReadWriteLock rl = new ReentrantReadWriteLock();
+//try {
+//    rl.writeLock().unlock();
+//    shouldThrow();
+//} catch(IllegalMonitorStateException success){}
+//}
+//
+//
+///**
+// * write-lockInterruptibly is interruptible
+// */
+//public void testWriteLockInterruptibly_Interrupted() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//                try {
+//        lock.writeLock().lockInterruptibly();
+//                    lock.writeLock().unlock();
+//        lock.writeLock().lockInterruptibly();
+//                    lock.writeLock().unlock();
+//        } catch(InterruptedException success){}
+//    }
+//    });
+//    try {
+//        lock.writeLock().lock();
+//        t.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        t.interrupt();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().unlock();
+//        t.join();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * timed write-tryLock is interruptible
+// */
+//public void testWriteTryLock_Interrupted() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//                try {
+//        lock.writeLock().tryLock(1000,TimeUnit.MILLISECONDS);
+//        } catch(InterruptedException success){}
+//    }
+//    });
+//    try {
+//        t.start();
+//        t.interrupt();
+//        lock.writeLock().unlock();
+//        t.join();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * read-lockInterruptibly is interruptible
+// */
+//public void testReadLockInterruptibly_Interrupted() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//                try {
+//        lock.readLock().lockInterruptibly();
+//        } catch(InterruptedException success){}
+//    }
+//    });
+//    try {
+//        t.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        t.interrupt();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().unlock();
+//        t.join();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * timed read-tryLock is interruptible
+// */
+//public void testReadTryLock_Interrupted() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//                try {
+//        lock.readLock().tryLock(1000,TimeUnit.MILLISECONDS);
+//        threadShouldThrow();
+//        } catch(InterruptedException success){}
+//    }
+//    });
+//    try {
+//        t.start();
+//        t.interrupt();
+//        t.join();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * write-tryLock fails if locked
+// */
+//public void testWriteTryLockWhenLocked() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//                threadAssertFalse(lock.writeLock().tryLock());
+//    }
+//    });
+//    try {
+//        t.start();
+//        t.join();
+//        lock.writeLock().unlock();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * read-tryLock fails if locked
+// */
+//public void testReadTryLockWhenLocked() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//                threadAssertFalse(lock.readLock().tryLock());
+//    }
+//    });
+//    try {
+//        t.start();
+//        t.join();
+//        lock.writeLock().unlock();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * Multiple threads can hold a read lock when not write-locked
+// */
+//public void testMultipleReadLocks() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.readLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//                threadAssertTrue(lock.readLock().tryLock());
+//                lock.readLock().unlock();
+//    }
+//    });
+//    try {
+//        t.start();
+//        t.join();
+//        lock.readLock().unlock();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * A writelock succeeds after reading threads unlock
+// */
+//public void testWriteAfterMultipleReadLocks() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.readLock().lock();
+//Thread t1 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.readLock().lock();
+//                lock.readLock().unlock();
+//    }
+//    });
+//Thread t2 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.writeLock().lock();
+//                lock.writeLock().unlock();
+//    }
+//    });
+//
+//    try {
+//        t1.start();
+//        t2.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.readLock().unlock();
+//        t1.join(MEDIUM_DELAY_MS);
+//        t2.join(MEDIUM_DELAY_MS);
+//        assertTrue(!t1.isAlive());
+//        assertTrue(!t2.isAlive());
+//
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * Readlocks succeed after a writing thread unlocks
+// */
+//public void testReadAfterWriteLock() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//Thread t1 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.readLock().lock();
+//                lock.readLock().unlock();
+//    }
+//    });
+//Thread t2 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.readLock().lock();
+//                lock.readLock().unlock();
+//    }
+//    });
+//
+//    try {
+//        t1.start();
+//        t2.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().unlock();
+//        t1.join(MEDIUM_DELAY_MS);
+//        t2.join(MEDIUM_DELAY_MS);
+//        assertTrue(!t1.isAlive());
+//        assertTrue(!t2.isAlive());
+//
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * Read trylock succeeds if write locked by current thread
+// */
+//public void testReadHoldingWriteLock() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//    assertTrue(lock.readLock().tryLock());
+//    lock.readLock().unlock();
+//    lock.writeLock().unlock();
+//}
+//
+///**
+// * Read lock succeeds if write locked by current thread even if
+// * other threads are waiting for readlock
+// */
+//public void testReadHoldingWriteLock2() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//Thread t1 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.readLock().lock();
+//                lock.readLock().unlock();
+//    }
+//    });
+//Thread t2 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.readLock().lock();
+//                lock.readLock().unlock();
+//    }
+//    });
+//
+//    try {
+//        t1.start();
+//        t2.start();
+//        lock.readLock().lock();
+//        lock.readLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.readLock().lock();
+//        lock.readLock().unlock();
+//        lock.writeLock().unlock();
+//        t1.join(MEDIUM_DELAY_MS);
+//        t2.join(MEDIUM_DELAY_MS);
+//        assertTrue(!t1.isAlive());
+//        assertTrue(!t2.isAlive());
+//
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// *  Read lock succeeds if write locked by current thread even if
+// * other threads are waiting for writelock
+// */
+//public void testReadHoldingWriteLock3() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//Thread t1 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.writeLock().lock();
+//                lock.writeLock().unlock();
+//    }
+//    });
+//Thread t2 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.writeLock().lock();
+//                lock.writeLock().unlock();
+//    }
+//    });
+//
+//    try {
+//        t1.start();
+//        t2.start();
+//        lock.readLock().lock();
+//        lock.readLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.readLock().lock();
+//        lock.readLock().unlock();
+//        lock.writeLock().unlock();
+//        t1.join(MEDIUM_DELAY_MS);
+//        t2.join(MEDIUM_DELAY_MS);
+//        assertTrue(!t1.isAlive());
+//        assertTrue(!t2.isAlive());
+//
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// *  Write lock succeeds if write locked by current thread even if
+// * other threads are waiting for writelock
+// */
+//public void testWriteHoldingWriteLock4() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//Thread t1 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.writeLock().lock();
+//                lock.writeLock().unlock();
+//    }
+//    });
+//Thread t2 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.writeLock().lock();
+//                lock.writeLock().unlock();
+//    }
+//    });
+//
+//    try {
+//        t1.start();
+//        t2.start();
+//        lock.writeLock().lock();
+//        lock.writeLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().lock();
+//        lock.writeLock().unlock();
+//        lock.writeLock().unlock();
+//        t1.join(MEDIUM_DELAY_MS);
+//        t2.join(MEDIUM_DELAY_MS);
+//        assertTrue(!t1.isAlive());
+//        assertTrue(!t2.isAlive());
+//
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * Fair Read trylock succeeds if write locked by current thread
+// */
+//public void testReadHoldingWriteLockFair() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);
+//lock.writeLock().lock();
+//    assertTrue(lock.readLock().tryLock());
+//    lock.readLock().unlock();
+//    lock.writeLock().unlock();
+//}
+//
+///**
+// * Fair Read lock succeeds if write locked by current thread even if
+// * other threads are waiting for readlock
+// */
+//public void testReadHoldingWriteLockFair2() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);
+//lock.writeLock().lock();
+//Thread t1 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.readLock().lock();
+//                lock.readLock().unlock();
+//    }
+//    });
+//Thread t2 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.readLock().lock();
+//                lock.readLock().unlock();
+//    }
+//    });
+//
+//    try {
+//        t1.start();
+//        t2.start();
+//        lock.readLock().lock();
+//        lock.readLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.readLock().lock();
+//        lock.readLock().unlock();
+//        lock.writeLock().unlock();
+//        t1.join(MEDIUM_DELAY_MS);
+//        t2.join(MEDIUM_DELAY_MS);
+//        assertTrue(!t1.isAlive());
+//        assertTrue(!t2.isAlive());
+//
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * Fair Read lock succeeds if write locked by current thread even if
+// * other threads are waiting for writelock
+// */
+//public void testReadHoldingWriteLockFair3() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);
+//lock.writeLock().lock();
+//Thread t1 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.writeLock().lock();
+//                lock.writeLock().unlock();
+//    }
+//    });
+//Thread t2 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.writeLock().lock();
+//                lock.writeLock().unlock();
+//    }
+//    });
+//
+//    try {
+//        t1.start();
+//        t2.start();
+//        lock.readLock().lock();
+//        lock.readLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.readLock().lock();
+//        lock.readLock().unlock();
+//        lock.writeLock().unlock();
+//        t1.join(MEDIUM_DELAY_MS);
+//        t2.join(MEDIUM_DELAY_MS);
+//        assertTrue(!t1.isAlive());
+//        assertTrue(!t2.isAlive());
+//
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * Fair Write lock succeeds if write locked by current thread even if
+// * other threads are waiting for writelock
+// */
+//public void testWriteHoldingWriteLockFair4() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);
+//lock.writeLock().lock();
+//Thread t1 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.writeLock().lock();
+//                lock.writeLock().unlock();
+//    }
+//    });
+//Thread t2 = new Thread(new Runnable() {
+//            public void run() {
+//                lock.writeLock().lock();
+//                lock.writeLock().unlock();
+//    }
+//    });
+//
+//    try {
+//        t1.start();
+//        t2.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertTrue(lock.isWriteLockedByCurrentThread());
+//        assertTrue(lock.getWriteHoldCount() == 1);
+//        lock.writeLock().lock();
+//        assertTrue(lock.getWriteHoldCount() == 2);
+//        lock.writeLock().unlock();
+//        lock.writeLock().lock();
+//        lock.writeLock().unlock();
+//        lock.writeLock().unlock();
+//        t1.join(MEDIUM_DELAY_MS);
+//        t2.join(MEDIUM_DELAY_MS);
+//        assertTrue(!t1.isAlive());
+//        assertTrue(!t2.isAlive());
+//
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * Read tryLock succeeds if readlocked but not writelocked
+// */
+//public void testTryLockWhenReadLocked() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.readLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//                threadAssertTrue(lock.readLock().tryLock());
+//                lock.readLock().unlock();
+//    }
+//    });
+//    try {
+//        t.start();
+//        t.join();
+//        lock.readLock().unlock();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+//
+///**
+// * write tryLock fails when readlocked
+// */
+//public void testWriteTryLockWhenReadLocked() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.readLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//                threadAssertFalse(lock.writeLock().tryLock());
+//    }
+//    });
+//    try {
+//        t.start();
+//        t.join();
+//        lock.readLock().unlock();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * Fair Read tryLock succeeds if readlocked but not writelocked
+// */
+//public void testTryLockWhenReadLockedFair() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);
+//lock.readLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//                threadAssertTrue(lock.readLock().tryLock());
+//                lock.readLock().unlock();
+//    }
+//    });
+//    try {
+//        t.start();
+//        t.join();
+//        lock.readLock().unlock();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+//
+///**
+// * Fair write tryLock fails when readlocked
+// */
+//public void testWriteTryLockWhenReadLockedFair() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);
+//lock.readLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//                threadAssertFalse(lock.writeLock().tryLock());
+//    }
+//    });
+//    try {
+//        t.start();
+//        t.join();
+//        lock.readLock().unlock();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+//
+///**
+// * write timed tryLock times out if locked
+// */
+//public void testWriteTryLock_Timeout() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//        try {
+//                    threadAssertFalse(lock.writeLock().tryLock(1, TimeUnit.MILLISECONDS));
+//                } catch (Exception ex) {
+//                    threadUnexpectedException();
+//                }
+//    }
+//    });
+//    try {
+//        t.start();
+//        t.join();
+//        lock.writeLock().unlock();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * read timed tryLock times out if write-locked
+// */
+//public void testReadTryLock_Timeout() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//lock.writeLock().lock();
+//Thread t = new Thread(new Runnable() {
+//            public void run() {
+//        try {
+//                    threadAssertFalse(lock.readLock().tryLock(1, TimeUnit.MILLISECONDS));
+//                } catch (Exception ex) {
+//                    threadUnexpectedException();
+//                }
+//    }
+//    });
+//    try {
+//        t.start();
+//        t.join();
+//        lock.writeLock().unlock();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * write lockInterruptibly succeeds if lock free else is interruptible
+// */
+//public void testWriteLockInterruptibly() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//try {
+//        lock.writeLock().lockInterruptibly();
+//    } catch(Exception e) {
+//        unexpectedException();
+//    }
+//Thread t = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.writeLock().lockInterruptibly();
+//        threadShouldThrow();
+//        }
+//        catch(InterruptedException success) {
+//                }
+//    }
+//    });
+//    try {
+//        t.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        t.interrupt();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        t.join();
+//        lock.writeLock().unlock();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// *  read lockInterruptibly succeeds if lock free else is interruptible
+// */
+//public void testReadLockInterruptibly() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//try {
+//        lock.writeLock().lockInterruptibly();
+//    } catch(Exception e) {
+//        unexpectedException();
+//    }
+//Thread t = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.readLock().lockInterruptibly();
+//        threadShouldThrow();
+//        }
+//        catch(InterruptedException success) {
+//                }
+//    }
+//    });
+//    try {
+//        t.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        t.interrupt();
+//        t.join();
+//        lock.writeLock().unlock();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * Calling await without holding lock throws IllegalMonitorStateException
+// */
+//public void testAwait_IllegalMonitor() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//    try {
+//        c.await();
+//        shouldThrow();
+//    }
+//    catch (IllegalMonitorStateException success) {
+//    }
+//    catch (Exception ex) {
+//        shouldThrow();
+//    }
+//}
+//
+///**
+// * Calling signal without holding lock throws IllegalMonitorStateException
+// */
+//public void testSignal_IllegalMonitor() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//    try {
+//        c.signal();
+//        shouldThrow();
+//    }
+//    catch (IllegalMonitorStateException success) {
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * awaitNanos without a signal times out
+// */
+//public void testAwaitNanos_Timeout() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//    try {
+//        lock.writeLock().lock();
+//        long t = c.awaitNanos(100);
+//        assertTrue(t <= 0);
+//        lock.writeLock().unlock();
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// *  timed await without a signal times out
+// */
+//public void testAwait_Timeout() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//    try {
+//        lock.writeLock().lock();
+//        lock.writeLock().unlock();
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * awaitUntil without a signal times out
+// */
+//public void testAwaitUntil_Timeout() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//    try {
+//        lock.writeLock().lock();
+//        java.util.Date d = new java.util.Date();
+//        lock.writeLock().unlock();
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * await returns when signalled
+// */
+//public void testAwait() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//Thread t = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.writeLock().lock();
+//                    c.await();
+//                    lock.writeLock().unlock();
+//        }
+//        catch(InterruptedException e) {
+//                    threadUnexpectedException();
+//                }
+//    }
+//    });
+//
+//    try {
+//        t.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().lock();
+//        c.signal();
+//        lock.writeLock().unlock();
+//        t.join(SHORT_DELAY_MS);
+//        assertFalse(t.isAlive());
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///** A helper class for uninterruptible wait tests */
+//class UninterruptableThread extends Thread {
+//    private Lock lock;
+//    private Condition c;
+//
+//    public volatile boolean canAwake = false;
+//    public volatile boolean interrupted = false;
+//    public volatile boolean lockStarted = false;
+//
+//    public UninterruptableThread(Lock lock, Condition c) {
+//        this.lock = lock;
+//        this.c = c;
+//    }
+//
+//    public synchronized void run() {
+//        lock.lock();
+//        lockStarted = true;
+//
+//        while (!canAwake) {
+//            c.awaitUninterruptibly();
+//        }
+//
+//        interrupted = isInterrupted();
+//        lock.unlock();
+//    }
+//}
+//
+///**
+// * awaitUninterruptibly doesn't abort on interrupt
+// */
+//public void testAwaitUninterruptibly() {
+//    final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//    UninterruptableThread thread = new UninterruptableThread(lock.writeLock(), c);
+//
+//    try {
+//        thread.start();
+//
+//        while (!thread.lockStarted) {
+//            Thread.sleep(100);
+//        }
+//
+//        lock.writeLock().lock();
+//        try {
+//            thread.interrupt();
+//            thread.canAwake = true;
+//            c.signal();
+//        } finally {
+//            lock.writeLock().unlock();
+//        }
+//
+//        thread.join();
+//        assertTrue(thread.interrupted);
+//        assertFalse(thread.isAlive());
+//    } catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * await is interruptible
+// */
+//public void testAwait_Interrupt() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//Thread t = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.writeLock().lock();
+//                    c.await();
+//                    lock.writeLock().unlock();
+//                    threadShouldThrow();
+//        }
+//        catch(InterruptedException success) {
+//                }
+//    }
+//    });
+//
+//    try {
+//        t.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        t.interrupt();
+//        t.join(SHORT_DELAY_MS);
+//        assertFalse(t.isAlive());
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * awaitNanos is interruptible
+// */
+//public void testAwaitNanos_Interrupt() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//Thread t = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.writeLock().lock();
+//                    c.awaitNanos(SHORT_DELAY_MS * 2 * 1000000);
+//                    lock.writeLock().unlock();
+//                    threadShouldThrow();
+//        }
+//        catch(InterruptedException success) {
+//                }
+//    }
+//    });
+//
+//    try {
+//        t.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        t.interrupt();
+//        t.join(SHORT_DELAY_MS);
+//        assertFalse(t.isAlive());
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * awaitUntil is interruptible
+// */
+//public void testAwaitUntil_Interrupt() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//Thread t = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.writeLock().lock();
+//                    java.util.Date d = new java.util.Date();
+//                    c.awaitUntil(new java.util.Date(d.getTime() + 10000));
+//                    lock.writeLock().unlock();
+//                    threadShouldThrow();
+//        }
+//        catch(InterruptedException success) {
+//                }
+//    }
+//    });
+//
+//    try {
+//        t.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        t.interrupt();
+//        t.join(SHORT_DELAY_MS);
+//        assertFalse(t.isAlive());
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * signalAll wakes up all threads
+// */
+//public void testSignalAll() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//Thread t1 = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.writeLock().lock();
+//                    c.await();
+//                    lock.writeLock().unlock();
+//        }
+//        catch(InterruptedException e) {
+//                    threadUnexpectedException();
+//                }
+//    }
+//    });
+//
+//Thread t2 = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.writeLock().lock();
+//                    c.await();
+//                    lock.writeLock().unlock();
+//        }
+//        catch(InterruptedException e) {
+//                    threadUnexpectedException();
+//                }
+//    }
+//    });
+//
+//    try {
+//        t1.start();
+//        t2.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().lock();
+//        c.signalAll();
+//        lock.writeLock().unlock();
+//        t1.join(SHORT_DELAY_MS);
+//        t2.join(SHORT_DELAY_MS);
+//        assertFalse(t1.isAlive());
+//        assertFalse(t2.isAlive());
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * A serialized lock deserializes as unlocked
+// */
+//public void testSerialization() {
+//    ReentrantReadWriteLock l = new ReentrantReadWriteLock();
+//    l.readLock().lock();
+//    l.readLock().unlock();
+//
+//    try {
+//        ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
+//        ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
+//        out.writeObject(l);
+//        out.close();
+//
+//        ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
+//        ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
+//        ReentrantReadWriteLock r = (ReentrantReadWriteLock) in.readObject();
+//        r.readLock().lock();
+//        r.readLock().unlock();
+//    } catch(Exception e){
+//        e.printStackTrace();
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * hasQueuedThreads reports whether there are waiting threads
+// */
+//public void testhasQueuedThreads() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    Thread t1 = new Thread(new InterruptedLockRunnable(lock));
+//    Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
+//    try {
+//        assertFalse(lock.hasQueuedThreads());
+//        lock.writeLock().lock();
+//        t1.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertTrue(lock.hasQueuedThreads());
+//        t2.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertTrue(lock.hasQueuedThreads());
+//        t1.interrupt();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertTrue(lock.hasQueuedThreads());
+//        lock.writeLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertFalse(lock.hasQueuedThreads());
+//        t1.join();
+//        t2.join();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * hasQueuedThread(null) throws NPE
+// */
+//public void testHasQueuedThreadNPE() {
+//final ReentrantReadWriteLock sync = new ReentrantReadWriteLock();
+//    try {
+//        sync.hasQueuedThread(null);
+//        shouldThrow();
+//    } catch (NullPointerException success) {
+//    }
+//}
+//
+///**
+// * hasQueuedThread reports whether a thread is queued.
+// */
+//public void testHasQueuedThread() {
+//final ReentrantReadWriteLock sync = new ReentrantReadWriteLock();
+//    Thread t1 = new Thread(new InterruptedLockRunnable(sync));
+//    Thread t2 = new Thread(new InterruptibleLockRunnable(sync));
+//    try {
+//        assertFalse(sync.hasQueuedThread(t1));
+//        assertFalse(sync.hasQueuedThread(t2));
+//        sync.writeLock().lock();
+//        t1.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertTrue(sync.hasQueuedThread(t1));
+//        t2.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertTrue(sync.hasQueuedThread(t1));
+//        assertTrue(sync.hasQueuedThread(t2));
+//        t1.interrupt();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertFalse(sync.hasQueuedThread(t1));
+//        assertTrue(sync.hasQueuedThread(t2));
+//        sync.writeLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertFalse(sync.hasQueuedThread(t1));
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertFalse(sync.hasQueuedThread(t2));
+//        t1.join();
+//        t2.join();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * getQueueLength reports number of waiting threads
+// */
+//public void testGetQueueLength() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    Thread t1 = new Thread(new InterruptedLockRunnable(lock));
+//    Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
+//    try {
+//        assertEquals(0, lock.getQueueLength());
+//        lock.writeLock().lock();
+//        t1.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertEquals(1, lock.getQueueLength());
+//        t2.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertEquals(2, lock.getQueueLength());
+//        t1.interrupt();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertEquals(1, lock.getQueueLength());
+//        lock.writeLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertEquals(0, lock.getQueueLength());
+//        t1.join();
+//        t2.join();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * getQueuedThreads includes waiting threads
+// */
+//public void testGetQueuedThreads() {
+//final PublicReentrantReadWriteLock lock = new PublicReentrantReadWriteLock();
+//    Thread t1 = new Thread(new InterruptedLockRunnable(lock));
+//    Thread t2 = new Thread(new InterruptibleLockRunnable(lock));
+//    try {
+//        assertTrue(lock.getQueuedThreads().isEmpty());
+//        lock.writeLock().lock();
+//        assertTrue(lock.getQueuedThreads().isEmpty());
+//        t1.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertTrue(lock.getQueuedThreads().contains(t1));
+//        t2.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertTrue(lock.getQueuedThreads().contains(t1));
+//        assertTrue(lock.getQueuedThreads().contains(t2));
+//        t1.interrupt();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertFalse(lock.getQueuedThreads().contains(t1));
+//        assertTrue(lock.getQueuedThreads().contains(t2));
+//        lock.writeLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        assertTrue(lock.getQueuedThreads().isEmpty());
+//        t1.join();
+//        t2.join();
+//    } catch(Exception e){
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * hasWaiters throws NPE if null
+// */
+//public void testHasWaitersNPE() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    try {
+//        lock.hasWaiters(null);
+//        shouldThrow();
+//    } catch (NullPointerException success) {
+//    } catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * getWaitQueueLength throws NPE if null
+// */
+//public void testGetWaitQueueLengthNPE() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    try {
+//        lock.getWaitQueueLength(null);
+//        shouldThrow();
+//    } catch (NullPointerException success) {
+//    } catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * getWaitingThreads throws NPE if null
+// */
+//public void testGetWaitingThreadsNPE() {
+//final PublicReentrantReadWriteLock lock = new PublicReentrantReadWriteLock();
+//    try {
+//        lock.getWaitingThreads(null);
+//        shouldThrow();
+//    } catch (NullPointerException success) {
+//    } catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * hasWaiters throws IAE if not owned
+// */
+//public void testHasWaitersIAE() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = (lock.writeLock().newCondition());
+//final ReentrantReadWriteLock lock2 = new ReentrantReadWriteLock();
+//    try {
+//        lock2.hasWaiters(c);
+//        shouldThrow();
+//    } catch (IllegalArgumentException success) {
+//    } catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * hasWaiters throws IMSE if not locked
+// */
+//public void testHasWaitersIMSE() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = (lock.writeLock().newCondition());
+//    try {
+//        lock.hasWaiters(c);
+//        shouldThrow();
+//    } catch (IllegalMonitorStateException success) {
+//    } catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * getWaitQueueLength throws IAE if not owned
+// */
+//public void testGetWaitQueueLengthIAE() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = (lock.writeLock().newCondition());
+//final ReentrantReadWriteLock lock2 = new ReentrantReadWriteLock();
+//    try {
+//        lock2.getWaitQueueLength(c);
+//        shouldThrow();
+//    } catch (IllegalArgumentException success) {
+//    } catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * getWaitQueueLength throws IMSE if not locked
+// */
+//public void testGetWaitQueueLengthIMSE() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = (lock.writeLock().newCondition());
+//    try {
+//        lock.getWaitQueueLength(c);
+//        shouldThrow();
+//    } catch (IllegalMonitorStateException success) {
+//    } catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * getWaitingThreads throws IAE if not owned
+// */
+//public void testGetWaitingThreadsIAE() {
+//final PublicReentrantReadWriteLock lock = new PublicReentrantReadWriteLock();
+//    final Condition c = (lock.writeLock().newCondition());
+//final PublicReentrantReadWriteLock lock2 = new PublicReentrantReadWriteLock();
+//    try {
+//        lock2.getWaitingThreads(c);
+//        shouldThrow();
+//    } catch (IllegalArgumentException success) {
+//    } catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * getWaitingThreads throws IMSE if not locked
+// */
+//public void testGetWaitingThreadsIMSE() {
+//final PublicReentrantReadWriteLock lock = new PublicReentrantReadWriteLock();
+//    final Condition c = (lock.writeLock().newCondition());
+//    try {
+//        lock.getWaitingThreads(c);
+//        shouldThrow();
+//    } catch (IllegalMonitorStateException success) {
+//    } catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * hasWaiters returns true when a thread is waiting, else false
+// */
+//public void testHasWaiters() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = (lock.writeLock().newCondition());
+//Thread t = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.writeLock().lock();
+//                    threadAssertFalse(lock.hasWaiters(c));
+//                    threadAssertEquals(0, lock.getWaitQueueLength(c));
+//                    c.await();
+//                    lock.writeLock().unlock();
+//        }
+//        catch(InterruptedException e) {
+//                    threadUnexpectedException();
+//                }
+//    }
+//    });
+//
+//    try {
+//        t.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().lock();
+//        assertTrue(lock.hasWaiters(c));
+//        assertEquals(1, lock.getWaitQueueLength(c));
+//        c.signal();
+//        lock.writeLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().lock();
+//        assertFalse(lock.hasWaiters(c));
+//        assertEquals(0, lock.getWaitQueueLength(c));
+//        lock.writeLock().unlock();
+//        t.join(SHORT_DELAY_MS);
+//        assertFalse(t.isAlive());
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * getWaitQueueLength returns number of waiting threads
+// */
+//public void testGetWaitQueueLength() {
+//final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    final Condition c = (lock.writeLock().newCondition());
+//Thread t = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.writeLock().lock();
+//                    threadAssertFalse(lock.hasWaiters(c));
+//                    threadAssertEquals(0, lock.getWaitQueueLength(c));
+//                    c.await();
+//                    lock.writeLock().unlock();
+//        }
+//        catch(InterruptedException e) {
+//                    threadUnexpectedException();
+//                }
+//    }
+//    });
+//
+//    try {
+//        t.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().lock();
+//        assertTrue(lock.hasWaiters(c));
+//        assertEquals(1, lock.getWaitQueueLength(c));
+//        c.signal();
+//        lock.writeLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().lock();
+//        assertFalse(lock.hasWaiters(c));
+//        assertEquals(0, lock.getWaitQueueLength(c));
+//        lock.writeLock().unlock();
+//        t.join(SHORT_DELAY_MS);
+//        assertFalse(t.isAlive());
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+//
+///**
+// * getWaitingThreads returns only and all waiting threads
+// */
+//public void testGetWaitingThreads() {
+//final PublicReentrantReadWriteLock lock = new PublicReentrantReadWriteLock();
+//    final Condition c = lock.writeLock().newCondition();
+//Thread t1 = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.writeLock().lock();
+//                    threadAssertTrue(lock.getWaitingThreads(c).isEmpty());
+//                    c.await();
+//                    lock.writeLock().unlock();
+//        }
+//        catch(InterruptedException e) {
+//                    threadUnexpectedException();
+//                }
+//    }
+//    });
+//
+//Thread t2 = new Thread(new Runnable() {
+//    public void run() {
+//        try {
+//        lock.writeLock().lock();
+//                    threadAssertFalse(lock.getWaitingThreads(c).isEmpty());
+//                    c.await();
+//                    lock.writeLock().unlock();
+//        }
+//        catch(InterruptedException e) {
+//                    threadUnexpectedException();
+//                }
+//    }
+//    });
+//
+//    try {
+//        lock.writeLock().lock();
+//        assertTrue(lock.getWaitingThreads(c).isEmpty());
+//        lock.writeLock().unlock();
+//        t1.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        t2.start();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().lock();
+//        assertTrue(lock.hasWaiters(c));
+//        assertTrue(lock.getWaitingThreads(c).contains(t1));
+//        assertTrue(lock.getWaitingThreads(c).contains(t2));
+//        c.signalAll();
+//        lock.writeLock().unlock();
+//        Thread.sleep(SHORT_DELAY_MS);
+//        lock.writeLock().lock();
+//        assertFalse(lock.hasWaiters(c));
+//        assertTrue(lock.getWaitingThreads(c).isEmpty());
+//        lock.writeLock().unlock();
+//        t1.join(SHORT_DELAY_MS);
+//        t2.join(SHORT_DELAY_MS);
+//        assertFalse(t1.isAlive());
+//        assertFalse(t2.isAlive());
+//    }
+//    catch (Exception ex) {
+//        unexpectedException();
+//    }
+//}
+//
+///**
+// * toString indicates current lock state
+// */
+//public void testToString() {
+//    ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    String us = lock.toString();
+//    assertTrue(us.indexOf("Write locks = 0") >= 0);
+//    assertTrue(us.indexOf("Read locks = 0") >= 0);
+//    lock.writeLock().lock();
+//    String ws = lock.toString();
+//    assertTrue(ws.indexOf("Write locks = 1") >= 0);
+//    assertTrue(ws.indexOf("Read locks = 0") >= 0);
+//    lock.writeLock().unlock();
+//    lock.readLock().lock();
+//    lock.readLock().lock();
+//    String rs = lock.toString();
+//    assertTrue(rs.indexOf("Write locks = 0") >= 0);
+//    assertTrue(rs.indexOf("Read locks = 2") >= 0);
+//}
+//
+///**
+// * readLock.toString indicates current lock state
+// */
+//public void testReadLockToString() {
+//    ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    String us = lock.readLock().toString();
+//    assertTrue(us.indexOf("Read locks = 0") >= 0);
+//    lock.readLock().lock();
+//    lock.readLock().lock();
+//    String rs = lock.readLock().toString();
+//    assertTrue(rs.indexOf("Read locks = 2") >= 0);
+//}
+//
+///**
+// * writeLock.toString indicates current lock state
+// */
+//public void testWriteLockToString() {
+//    ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+//    String us = lock.writeLock().toString();
+//    assertTrue(us.indexOf("Unlocked") >= 0);
+//    lock.writeLock().lock();
+//    String ls = lock.writeLock().toString();
+//    assertTrue(ls.indexOf("Locked") >= 0);
+//}

Propchange: activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/locks/ReentrantReadWriteLockTest.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/locks/ReentrantReadWriteLockTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/locks/ReentrantReadWriteLockTest.h?rev=1345326&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/locks/ReentrantReadWriteLockTest.h (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/locks/ReentrantReadWriteLockTest.h Fri Jun  1 20:00:04 2012
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+
+#ifndef _DECAF_UTIL_CONCURRENT_LOCKS_REENTRANTREADWRITELOCKTEST_H_
+#define _DECAF_UTIL_CONCURRENT_LOCKS_REENTRANTREADWRITELOCKTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+#include <decaf/util/concurrent/ExecutorsTestSupport.h>
+
+namespace decaf {
+namespace util {
+namespace concurrent {
+namespace locks {
+
+    class ReentrantReadWriteLockTest : public ExecutorsTestSupport {
+
+        CPPUNIT_TEST_SUITE( ReentrantReadWriteLockTest );
+        CPPUNIT_TEST( testConstructor );
+        CPPUNIT_TEST_SUITE_END();
+
+    public:
+
+        ReentrantReadWriteLockTest();
+        virtual ~ReentrantReadWriteLockTest();
+
+        void testConstructor();
+
+    };
+
+}}}}
+
+#endif /* _DECAF_UTIL_CONCURRENT_LOCKS_REENTRANTREADWRITELOCKTEST_H_ */

Propchange: activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/locks/ReentrantReadWriteLockTest.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/testRegistry.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/testRegistry.cpp?rev=1345326&r1=1345325&r2=1345326&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/testRegistry.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/testRegistry.cpp Fri Jun  1 20:00:04 2012
@@ -234,6 +234,8 @@ CPPUNIT_TEST_SUITE_REGISTRATION( decaf::
 CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ExceptionTest );
 #include <decaf/lang/ThreadTest.h>
 CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ThreadTest );
+#include <decaf/lang/ThreadLocalTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ThreadLocalTest );
 #include <decaf/lang/SystemTest.h>
 CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::SystemTest );
 #include <decaf/lang/PointerTest.h>
@@ -305,6 +307,8 @@ CPPUNIT_TEST_SUITE_REGISTRATION( decaf::
 CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::locks::AbstractQueuedSynchronizerTest );
 #include <decaf/util/concurrent/locks/ReentrantLockTest.h>
 CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::locks::ReentrantLockTest );
+#include <decaf/util/concurrent/locks/ReentrantReadWriteLockTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::locks::ReentrantReadWriteLockTest );
 
 #include <decaf/util/AbstractCollectionTest.h>
 CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::AbstractCollectionTest );
@@ -364,115 +368,115 @@ CPPUNIT_TEST_SUITE_REGISTRATION( decaf::
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //// Marshaler Tests
 ////
-//#include <activemq/wireformat/openwire/marshal/generated/ActiveMQBlobMessageMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQBlobMessageMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ActiveMQBytesMessageMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQBytesMessageMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ActiveMQMapMessageMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQMapMessageMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ActiveMQMessageMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQMessageMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ActiveMQObjectMessageMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQObjectMessageMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ActiveMQQueueMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQQueueMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ActiveMQStreamMessageMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQStreamMessageMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ActiveMQTempQueueMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQTempQueueMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ActiveMQTempTopicMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQTempTopicMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ActiveMQTextMessageMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQTextMessageMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ActiveMQTopicMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQTopicMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/BrokerIdMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::BrokerIdMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/BrokerInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::BrokerInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ConnectionControlMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConnectionControlMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ConnectionErrorMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConnectionErrorMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ConnectionIdMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConnectionIdMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ConnectionInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConnectionInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ConsumerControlMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConsumerControlMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ConsumerIdMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConsumerIdMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ConsumerInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConsumerInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ControlCommandMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ControlCommandMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/DataArrayResponseMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::DataArrayResponseMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/DataResponseMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::DataResponseMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/DestinationInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::DestinationInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/DiscoveryEventMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::DiscoveryEventMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ExceptionResponseMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ExceptionResponseMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/FlushCommandMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::FlushCommandMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/IntegerResponseMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::IntegerResponseMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/JournalQueueAckMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::JournalQueueAckMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/JournalTopicAckMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::JournalTopicAckMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/JournalTraceMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::JournalTraceMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/JournalTransactionMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::JournalTransactionMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/KeepAliveInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::KeepAliveInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/LastPartialCommandMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::LastPartialCommandMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/LocalTransactionIdMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::LocalTransactionIdMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/MessageAckMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::MessageAckMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/MessageDispatchMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::MessageDispatchMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/MessageDispatchNotificationMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::MessageDispatchNotificationMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/MessageIdMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::MessageIdMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/MessagePullMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::MessagePullMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/NetworkBridgeFilterMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::NetworkBridgeFilterMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/PartialCommandMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::PartialCommandMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ProducerAckMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ProducerAckMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ProducerIdMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ProducerIdMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ProducerInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ProducerInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/RemoveInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::RemoveInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/RemoveSubscriptionInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::RemoveSubscriptionInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ReplayCommandMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ReplayCommandMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ResponseMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ResponseMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/SessionIdMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::SessionIdMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/SessionInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::SessionInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/ShutdownInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ShutdownInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/SubscriptionInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::SubscriptionInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/TransactionInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::TransactionInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/WireFormatInfoMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::WireFormatInfoMarshallerTest );
-//#include <activemq/wireformat/openwire/marshal/generated/XATransactionIdMarshallerTest.h>
-//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::XATransactionIdMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ActiveMQBlobMessageMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQBlobMessageMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ActiveMQBytesMessageMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQBytesMessageMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ActiveMQMapMessageMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQMapMessageMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ActiveMQMessageMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQMessageMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ActiveMQObjectMessageMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQObjectMessageMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ActiveMQQueueMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQQueueMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ActiveMQStreamMessageMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQStreamMessageMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ActiveMQTempQueueMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQTempQueueMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ActiveMQTempTopicMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQTempTopicMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ActiveMQTextMessageMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQTextMessageMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ActiveMQTopicMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ActiveMQTopicMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/BrokerIdMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::BrokerIdMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/BrokerInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::BrokerInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ConnectionControlMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConnectionControlMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ConnectionErrorMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConnectionErrorMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ConnectionIdMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConnectionIdMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ConnectionInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConnectionInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ConsumerControlMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConsumerControlMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ConsumerIdMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConsumerIdMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ConsumerInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ConsumerInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ControlCommandMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ControlCommandMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/DataArrayResponseMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::DataArrayResponseMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/DataResponseMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::DataResponseMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/DestinationInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::DestinationInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/DiscoveryEventMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::DiscoveryEventMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ExceptionResponseMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ExceptionResponseMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/FlushCommandMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::FlushCommandMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/IntegerResponseMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::IntegerResponseMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/JournalQueueAckMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::JournalQueueAckMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/JournalTopicAckMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::JournalTopicAckMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/JournalTraceMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::JournalTraceMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/JournalTransactionMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::JournalTransactionMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/KeepAliveInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::KeepAliveInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/LastPartialCommandMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::LastPartialCommandMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/LocalTransactionIdMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::LocalTransactionIdMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/MessageAckMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::MessageAckMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/MessageDispatchMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::MessageDispatchMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/MessageDispatchNotificationMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::MessageDispatchNotificationMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/MessageIdMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::MessageIdMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/MessagePullMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::MessagePullMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/NetworkBridgeFilterMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::NetworkBridgeFilterMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/PartialCommandMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::PartialCommandMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ProducerAckMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ProducerAckMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ProducerIdMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ProducerIdMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ProducerInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ProducerInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/RemoveInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::RemoveInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/RemoveSubscriptionInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::RemoveSubscriptionInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ReplayCommandMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ReplayCommandMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ResponseMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ResponseMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/SessionIdMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::SessionIdMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/SessionInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::SessionInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/ShutdownInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::ShutdownInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/SubscriptionInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::SubscriptionInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/TransactionInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::TransactionInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/WireFormatInfoMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::WireFormatInfoMarshallerTest );
+#include <activemq/wireformat/openwire/marshal/generated/XATransactionIdMarshallerTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::generated::XATransactionIdMarshallerTest );