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 2011/07/21 21:35:06 UTC

svn commit: r1149333 - in /activemq/activemq-cpp/trunk/activemq-cpp/src: main/ main/decaf/util/concurrent/ test/ test/decaf/util/concurrent/

Author: tabish
Date: Thu Jul 21 19:35:04 2011
New Revision: 1149333

URL: http://svn.apache.org/viewvc?rev=1149333&view=rev
Log:
Implement the FutureTask class and associated tests.  

Added:
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/FutureTaskTest.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/FutureTaskTest.h   (with props)
Modified:
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/Makefile.am
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/ExecutorsTestSupport.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/testRegistry.cpp

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am?rev=1149333&r1=1149332&r2=1149333&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am Thu Jul 21 19:35:04 2011
@@ -447,6 +447,7 @@ cc_sources = \
     decaf/util/concurrent/ExecutorService.cpp \
     decaf/util/concurrent/Executors.cpp \
     decaf/util/concurrent/Future.cpp \
+    decaf/util/concurrent/FutureTask.cpp \
     decaf/util/concurrent/LinkedBlockingQueue.cpp \
     decaf/util/concurrent/Lock.cpp \
     decaf/util/concurrent/Mutex.cpp \
@@ -1043,6 +1044,7 @@ h_sources = \
     decaf/util/concurrent/ExecutorService.h \
     decaf/util/concurrent/Executors.h \
     decaf/util/concurrent/Future.h \
+    decaf/util/concurrent/FutureTask.h \
     decaf/util/concurrent/LinkedBlockingQueue.h \
     decaf/util/concurrent/Lock.h \
     decaf/util/concurrent/Mutex.h \

Added: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.cpp?rev=1149333&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.cpp (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.cpp Thu Jul 21 19:35:04 2011
@@ -0,0 +1,18 @@
+/*
+ * 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 "FutureTask.h"

Propchange: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Added: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.h?rev=1149333&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.h (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.h Thu Jul 21 19:35:04 2011
@@ -0,0 +1,401 @@
+/*
+ * 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_FUTURETASK_H_
+#define _DECAF_UTIL_CONCURRENT_FUTURETASK_H_
+
+#include <decaf/util/Config.h>
+
+#include <decaf/lang/Thread.h>
+#include <decaf/lang/Pointer.h>
+#include <decaf/lang/exceptions/NullPointerException.h>
+
+#include <decaf/util/concurrent/RunnableFuture.h>
+#include <decaf/util/concurrent/Callable.h>
+#include <decaf/util/concurrent/Executors.h>
+#include <decaf/util/concurrent/CancellationException.h>
+#include <decaf/util/concurrent/ExecutionException.h>
+#include <decaf/util/concurrent/TimeoutException.h>
+#include <decaf/util/concurrent/TimeUnit.h>
+#include <decaf/util/concurrent/locks/AbstractQueuedSynchronizer.h>
+
+namespace decaf {
+namespace util {
+namespace concurrent {
+
+    using decaf::lang::Pointer;
+
+    /**
+     * A cancellable asynchronous computation. This class provides a base implementation of
+     * Future, with methods to start and cancel a computation, query to see if the computation
+     * is complete, and retrieve the result of the computation. The result can only be retrieved
+     * when the computation has completed; the get method will block if the computation has not
+     * yet completed. Once the computation has completed, the computation cannot be restarted
+     * or canceled.
+     *
+     * A FutureTask can be used to wrap a Callable or Runnable object. Because FutureTask
+     * implements Runnable, a FutureTask can be submitted to an Executor for execution.
+     *
+     * In addition to serving as a standalone class, this class provides protected functionality
+     * that may be useful when creating customized task classes.
+     *
+     * @since 1.0
+     */
+    template<typename T>
+    class FutureTask : public RunnableFuture<T> {
+    private:
+
+        /**
+         * Synchronization control for FutureTask.
+         *
+         * Uses AQS sync state to represent run status
+         */
+        class FutureTaskSync : public locks::AbstractQueuedSynchronizer {
+        private:
+
+            enum SyncState {
+                /** State value representing that task is ready to run */
+                READY = 0,
+                /** State value representing that task is running */
+                RUNNING = 1,
+                /** State value representing that task ran */
+                RAN = 2,
+                /** State value representing that task was canceled */
+                CANCELLED = 4
+            };
+
+            /** The underlying callable */
+            Pointer< Callable<T> > callable;
+
+            /** The result to return from get() */
+            T result;
+
+            /** The exception to throw from get() */
+            Pointer<decaf::lang::Exception> exception;
+
+            // The FutureTask parent of the Sync object.
+            FutureTask* parent;
+
+            /**
+             * The thread running task. When nulled after set/cancel, this indicates that
+             * the results are accessible.
+             */
+            decaf::lang::Thread* runner;
+
+        public:
+
+            FutureTaskSync(FutureTask* parent, Callable<T>* callable) :
+                AbstractQueuedSynchronizer(), callable(callable), result(), exception(), parent(parent), runner(NULL) {
+            }
+
+            virtual ~FutureTaskSync() {
+
+            }
+
+            bool innerIsCancelled() const {
+                return getState() == CANCELLED;
+            }
+
+            bool innerIsDone() const {
+                return ranOrCancelled(getState()) && this->runner == NULL;
+            }
+
+            T innerGet() {
+                this->acquireSharedInterruptibly(0);
+                if (getState() == CANCELLED) {
+                    throw CancellationException();
+                }
+                if (exception != NULL) {
+                    throw ExecutionException(exception.get());
+                }
+                return result;
+            }
+
+            T innerGet(long long nanosTimeout) {
+                if (!tryAcquireSharedNanos(0, nanosTimeout)) {
+                    throw TimeoutException();
+                }
+                if (getState() == CANCELLED) {
+                    throw CancellationException();
+                }
+                if (exception != NULL) {
+                    throw ExecutionException(exception.get());
+                }
+                return result;
+            }
+
+            void innerSet(const T& result) {
+                for (;;) {
+                    int s = getState();
+                    if (s == RAN) {
+                        return;
+                    }
+                    if (s == CANCELLED) {
+                        // aggressively release to set runner to null,
+                        // in case we are racing with a cancel request
+                        // that will try to interrupt runner
+                        releaseShared(0);
+                        return;
+                    }
+                    if (compareAndSetState(s, RAN)) {
+                        this->result = result;
+                        releaseShared(0);
+                        this->parent->done();
+                        return;
+                    }
+                }
+            }
+
+            void innerSetException(const decaf::lang::Exception& t) {
+                for (;;) {
+                    int s = getState();
+                    if (s == RAN) {
+                        return;
+                    }
+                    if (s == CANCELLED) {
+                        // aggressively release to set runner to null,
+                        // in case we are racing with a cancel request
+                        // that will try to interrupt runner
+                        releaseShared(0);
+                        return;
+                    }
+                    if (compareAndSetState(s, RAN)) {
+                        exception.reset(t.clone());
+                        releaseShared(0);
+                        this->parent->done();
+                        return;
+                    }
+                }
+            }
+
+            bool innerCancel(bool mayInterruptIfRunning) {
+                for (;;) {
+                    int s = getState();
+                    if (ranOrCancelled(s)) {
+                        return false;
+                    }
+                    if (compareAndSetState(s, CANCELLED)) {
+                        break;
+                    }
+                }
+
+                if (mayInterruptIfRunning) {
+                    decaf::lang::Thread* r = runner;
+                    if (r != NULL) {
+                        r->interrupt();
+                    }
+                }
+
+                releaseShared(0);
+                this->parent->done();
+                return true;
+            }
+
+            void innerRun() {
+                if (!compareAndSetState(READY, RUNNING)) {
+                    return;
+                }
+
+                runner = decaf::lang::Thread::currentThread();
+                if (getState() == RUNNING) { // recheck after setting thread
+                    T result;
+                    try {
+                        result = this->callable->call();
+                    } catch(decaf::lang::Exception& ex) {
+                        this->parent->setException(ex);
+                        return;
+                    }
+                    this->parent->set(result);
+                } else {
+                    releaseShared(0); // cancel
+                }
+            }
+
+            bool innerRunAndReset() {
+                if (!compareAndSetState(READY, RUNNING)) {
+                    return false;
+                }
+
+                try {
+                    this->runner = decaf::lang::Thread::currentThread();
+                    if (getState() == RUNNING) {
+                        this->callable->call(); // don't set result
+                    }
+                    this->runner = NULL;
+                    return compareAndSetState(RUNNING, READY);
+                } catch(decaf::lang::Exception& ex) {
+                    this->parent->setException(ex);
+                    return false;
+                }
+            }
+
+        protected:
+
+            /**
+             * Implements AQS base acquire to succeed if ran or cancelled
+             */
+            virtual int tryAcquireShared(int ignore) {
+                return innerIsDone() ? 1 : -1;
+            }
+
+            /**
+             * Implements AQS base release to always signal after setting
+             * final done status by nulling runner thread.
+             */
+            virtual bool tryReleaseShared(int ignore) {
+                runner = NULL;
+                return true;
+            }
+
+        private:
+
+            bool ranOrCancelled(int state) const {
+                return (state & (RAN | CANCELLED)) != 0;
+            }
+        };
+
+    private:
+
+        FutureTaskSync* sync;
+
+    public:
+
+        /**
+         * Creates a FutureTask instance that will, upon running, execute the
+         * given Callable.
+         *
+         * @param callable
+         *      The callable task that will be invoked when run.
+         *
+         * @throws NullPointerException if callable pointer is NULL
+         */
+        FutureTask(Callable<T>* callable) : sync(NULL) {
+            if (callable == NULL ) {
+                throw decaf::lang::exceptions::NullPointerException(__FILE__, __LINE__,
+                    "The Callable pointer passed to the constructor was NULL");
+            }
+
+            this->sync = new FutureTaskSync(this, callable);
+        }
+
+        /**
+         * Creates a FutureTask that will, upon running, execute the given Runnable,
+         * and arrange that the get method will return the given result on successful
+         * completion.
+         *
+         * @param runnable
+         *      The runnable task that the future will execute.
+         * @param result
+         *      The result to return on successful completion.
+         *
+         * @throws NullPointerException if runnable is NULL.
+         */
+        FutureTask(decaf::lang::Runnable* runnable, const T& result) {
+            if (runnable == NULL ) {
+                throw decaf::lang::exceptions::NullPointerException(__FILE__, __LINE__,
+                    "The Runnable pointer passed to the constructor was NULL");
+            }
+
+            sync = new FutureTaskSync(this, Executors::callable<T>(runnable, result));
+        }
+
+        virtual ~FutureTask() {
+            try{
+                delete this->sync;
+            }
+            DECAF_CATCHALL_NOTHROW()
+        }
+
+        virtual bool isCancelled() const {
+            return this->sync->innerIsCancelled();
+        }
+
+        virtual bool isDone() const {
+            return this->sync->innerIsDone();
+        }
+
+        virtual bool cancel(bool mayInterruptIfRunning) {
+            return this->sync->innerCancel(mayInterruptIfRunning);
+        }
+
+        virtual T get() {
+            return this->sync->innerGet();
+        }
+
+        virtual T get(long long timeout, const TimeUnit& unit) {
+            return this->sync->innerGet(unit.toNanos(timeout));
+        }
+
+    public:
+
+        /**
+         * Protected method invoked when this task transitions to state isDone
+         * (whether normally or via cancellation). The default implementation
+         * does nothing.  Subclasses may override this method to invoke completion
+         * callbacks or perform bookkeeping. Note that you can query status inside
+         * the implementation of this method to determine whether this task has
+         * been canceled.
+         */
+        virtual void done() {}
+
+        /**
+         * Sets the result of this Future to the given value unless this future
+         * has already been set or has been cancelled.  This method is invoked
+         * internally by the <tt>run</tt> method upon successful completion of
+         * the computation.
+         *
+         * @param v
+         *      The value to return as the result of this Future.
+         */
+        virtual void set(const T& result) {
+            this->sync->innerSet(result);
+        }
+
+        /**
+         * Causes this future to report an ExecutionException with the given
+         * Exception as its cause, unless this Future has already been set or
+         * has been canceled.  This method is invoked internally by the run
+         * method upon failure of the computation.
+         *
+         * @param error
+         *      The cause of failure that is thrown from run.
+         */
+        virtual void setException(const decaf::lang::Exception& error) {
+            this->sync->innerSetException(error);
+        }
+
+        virtual void run() {
+            this->sync->innerRun();
+        }
+
+        /**
+         * Executes the computation without setting its result, and then resets
+         * this Future to initial state, failing to do so if the computation
+         * encounters an exception or is canceled.  This is designed for use
+         * with tasks that intrinsically execute more than once.
+         *
+         * @return true if successfully run and reset
+         */
+        virtual bool runAndReset() {
+            return this->sync->innerRunAndReset();
+        }
+
+    };
+
+}}}
+
+#endif /* _DECAF_UTIL_CONCURRENT_FUTURETASK_H_ */

Propchange: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/FutureTask.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/Makefile.am
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/Makefile.am?rev=1149333&r1=1149332&r2=1149333&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/Makefile.am (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/Makefile.am Thu Jul 21 19:35:04 2011
@@ -209,6 +209,7 @@ cc_sources = \
     decaf/util/concurrent/CountDownLatchTest.cpp \
     decaf/util/concurrent/ExecutorsTest.cpp \
     decaf/util/concurrent/ExecutorsTestSupport.cpp \
+    decaf/util/concurrent/FutureTaskTest.cpp \
     decaf/util/concurrent/LinkedBlockingQueueTest.cpp \
     decaf/util/concurrent/MutexTest.cpp \
     decaf/util/concurrent/SemaphoreTest.cpp \
@@ -436,6 +437,7 @@ h_sources = \
     decaf/util/concurrent/CountDownLatchTest.h \
     decaf/util/concurrent/ExecutorsTest.h \
     decaf/util/concurrent/ExecutorsTestSupport.h \
+    decaf/util/concurrent/FutureTaskTest.h \
     decaf/util/concurrent/LinkedBlockingQueueTest.h \
     decaf/util/concurrent/MutexTest.h \
     decaf/util/concurrent/SemaphoreTest.h \

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/ExecutorsTestSupport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/ExecutorsTestSupport.h?rev=1149333&r1=1149332&r2=1149333&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/ExecutorsTestSupport.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/ExecutorsTestSupport.h Thu Jul 21 19:35:04 2011
@@ -25,6 +25,7 @@
 #include <decaf/lang/Runnable.h>
 
 #include <decaf/lang/Throwable.h>
+#include <decaf/util/concurrent/Callable.h>
 #include <decaf/util/concurrent/ThreadFactory.h>
 #include <decaf/util/concurrent/ExecutorService.h>
 #include <decaf/util/concurrent/ThreadPoolExecutor.h>
@@ -88,6 +89,20 @@ namespace concurrent {
             }
         };
 
+        template<typename E>
+        class NoOpCallable : public Callable<E> {
+        public:
+
+            NoOpCallable() : decaf::util::concurrent::Callable<E>() {
+            }
+
+            virtual ~NoOpCallable() {}
+
+            virtual E call() {
+                return E();
+            }
+        };
+
         class ShortRunnable : public decaf::lang::Runnable {
         private:
 

Added: activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/FutureTaskTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/FutureTaskTest.cpp?rev=1149333&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/FutureTaskTest.cpp (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/FutureTaskTest.cpp Thu Jul 21 19:35:04 2011
@@ -0,0 +1,641 @@
+/*
+ * 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 "FutureTaskTest.h"
+
+#include <decaf/util/LinkedList.h>
+#include <decaf/util/concurrent/FutureTask.h>
+#include <decaf/util/concurrent/Callable.h>
+#include <decaf/lang/Integer.h>
+#include <decaf/lang/Thread.h>
+#include <decaf/lang/exceptions/IllegalArgumentException.h>
+
+using namespace std;
+using namespace decaf;
+using namespace decaf::lang;
+using namespace decaf::lang::exceptions;
+using namespace decaf::util;
+using namespace decaf::util::concurrent;
+
+////////////////////////////////////////////////////////////////////////////////
+namespace {
+
+    class PublicFutureTask : public FutureTask<std::string> {
+    public:
+
+        PublicFutureTask(Callable<std::string>* r) : FutureTask<std::string>(r) {}
+
+        virtual ~PublicFutureTask() {}
+
+        virtual bool runAndReset() {
+            return FutureTask::runAndReset();
+        }
+
+        virtual void set(const std::string& x) {
+            FutureTask::set(x);
+        }
+
+        virtual void setException(const Exception& ex) {
+            FutureTask::setException(ex);
+        }
+    };
+
+}
+
+////////////////////////////////////////////////////////////////////////////////
+FutureTaskTest::FutureTaskTest() {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+FutureTaskTest::~FutureTaskTest() {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testConstructor1() {
+
+    CPPUNIT_ASSERT_THROW_MESSAGE(
+        "Should have thrown a NullPointerException",
+        new FutureTask<std::string>(NULL),
+        NullPointerException);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testConstructor2() {
+
+    CPPUNIT_ASSERT_THROW_MESSAGE(
+        "Should have thrown a NullPointerException",
+        new FutureTask<std::string>(NULL, "Test"),
+        NullPointerException);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testIsDone() {
+
+    FutureTask<int> task(new NoOpCallable<int>());
+    task.run();
+    CPPUNIT_ASSERT(task.isDone());
+    CPPUNIT_ASSERT(!task.isCancelled());
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testRunAndReset() {
+    PublicFutureTask task(new NoOpCallable<std::string>());
+    CPPUNIT_ASSERT(task.runAndReset());
+    CPPUNIT_ASSERT(!task.isDone());
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testResetAfterCancel() {
+    PublicFutureTask task(new NoOpCallable<std::string>());
+    CPPUNIT_ASSERT(task.cancel(false));
+    CPPUNIT_ASSERT(!task.runAndReset());
+    CPPUNIT_ASSERT(task.isDone());
+    CPPUNIT_ASSERT(task.isCancelled());
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testSet() {
+    PublicFutureTask task(new NoOpCallable<std::string>());
+    task.set("one");
+    try {
+        CPPUNIT_ASSERT_EQUAL(task.get(), std::string("one"));
+    } catch(Exception& e) {
+        unexpectedException();
+    }
+}
+
+#include <typeinfo>
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testSetException() {
+    NoSuchElementException nse;
+    PublicFutureTask task(new NoOpCallable<std::string>());
+    task.setException(nse);
+    try {
+        std::string x = task.get();
+        shouldThrow();
+    } catch(ExecutionException& ee) {
+        const NoSuchElementException* cause =
+            dynamic_cast<const NoSuchElementException*>(ee.getCause());
+        CPPUNIT_ASSERT(cause != NULL);
+    } catch(Exception& e) {
+        unexpectedException();
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testCancelBeforeRun() {
+    PublicFutureTask task(new NoOpCallable<std::string>());
+    CPPUNIT_ASSERT(task.cancel(false));
+    task.run();
+    CPPUNIT_ASSERT(task.isDone());
+    CPPUNIT_ASSERT(task.isCancelled());
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testCancelBeforeRun2() {
+    PublicFutureTask task(new NoOpCallable<std::string>());
+    CPPUNIT_ASSERT(task.cancel(true));
+    task.run();
+    CPPUNIT_ASSERT(task.isDone());
+    CPPUNIT_ASSERT(task.isCancelled());
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testCancelAfterRun() {
+    PublicFutureTask task(new NoOpCallable<std::string>());
+    task.run();
+    CPPUNIT_ASSERT(!task.cancel(false));
+    CPPUNIT_ASSERT(task.isDone());
+    CPPUNIT_ASSERT(!task.isCancelled());
+}
+
+////////////////////////////////////////////////////////////////////////////////
+namespace {
+
+    template<typename E>
+    class MediumSleepCallable : public Callable<E> {
+    private:
+
+        FutureTaskTest* parent;
+
+    public:
+
+        MediumSleepCallable(FutureTaskTest* parent) : Callable<E>(), parent(parent) {
+        }
+
+        virtual ~MediumSleepCallable() {
+        }
+
+        virtual E call() {
+            try {
+                Thread::sleep(FutureTaskTest::MEDIUM_DELAY_MS);
+                this->parent->threadShouldThrow();
+            } catch (InterruptedException& success) {
+            }
+
+            return E();
+        }
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testCancelInterrupt() {
+
+    FutureTask<std::string> task(new MediumSleepCallable<std::string>(this));
+    Thread t(&task);
+    t.start();
+
+    try {
+        Thread::sleep(SHORT_DELAY_MS);
+        CPPUNIT_ASSERT(task.cancel(true));
+        t.join();
+        CPPUNIT_ASSERT(task.isDone());
+        CPPUNIT_ASSERT(task.isCancelled());
+    } catch(InterruptedException& e) {
+        unexpectedException();
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+namespace {
+
+    template<typename E>
+    class MediumNoInterruptsSleepCallable : public Callable<E> {
+    private:
+
+        FutureTaskTest* parent;
+
+    public:
+
+        MediumNoInterruptsSleepCallable(FutureTaskTest* parent) : Callable<E>(), parent(parent) {
+        }
+
+        virtual ~MediumNoInterruptsSleepCallable() {
+        }
+
+        virtual E call() {
+            try {
+                Thread::sleep(FutureTaskTest::MEDIUM_DELAY_MS);
+            } catch (InterruptedException& success) {
+                this->parent->threadFail("Should not interrupt");
+            }
+
+            return E();
+        }
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testCancelNoInterrupt() {
+
+    FutureTask<std::string> task(new MediumNoInterruptsSleepCallable<std::string>(this));
+    Thread t(&task);
+    t.start();
+
+    try {
+        Thread::sleep(SHORT_DELAY_MS);
+        CPPUNIT_ASSERT(task.cancel(false));
+        t.join();
+        CPPUNIT_ASSERT(task.isDone());
+        CPPUNIT_ASSERT(task.isCancelled());
+    } catch(InterruptedException& e) {
+        unexpectedException();
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+namespace {
+
+    class MediumNoInterruptsSleepRunnable : public Runnable {
+    private:
+
+        FutureTaskTest* parent;
+        FutureTask<std::string>* task;
+
+    public:
+
+        MediumNoInterruptsSleepRunnable(FutureTaskTest* parent, FutureTask<std::string>* task) :
+            Runnable(), parent(parent), task(task) {
+        }
+
+        virtual ~MediumNoInterruptsSleepRunnable() {
+        }
+
+        virtual void run() {
+            try {
+                task->get();
+            } catch(Exception& e) {
+                this->parent->threadUnexpectedException();
+            }
+        }
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testGet1() {
+
+    FutureTask<std::string> ft(new MediumNoInterruptsSleepCallable<std::string>(this));
+    MediumNoInterruptsSleepRunnable runner(this, &ft);
+    Thread t(&runner);
+
+    try {
+        CPPUNIT_ASSERT(!ft.isDone());
+        CPPUNIT_ASSERT(!ft.isCancelled());
+        t.start();
+        Thread::sleep(SHORT_DELAY_MS);
+        ft.run();
+        t.join();
+        CPPUNIT_ASSERT(ft.isDone());
+        CPPUNIT_ASSERT(!ft.isCancelled());
+    } catch(InterruptedException& e) {
+        unexpectedException();
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+namespace {
+
+    class GetDelayedFutureTaskRunnable : public Runnable {
+    private:
+
+        FutureTaskTest* parent;
+        FutureTask<std::string>* task;
+
+    public:
+
+        GetDelayedFutureTaskRunnable(FutureTaskTest* parent, FutureTask<std::string>* task) :
+            Runnable(), parent(parent), task(task) {
+        }
+
+        virtual ~GetDelayedFutureTaskRunnable() {
+        }
+
+        virtual void run() {
+            try {
+                task->get(FutureTaskTest::SHORT_DELAY_MS, TimeUnit::MILLISECONDS);
+            } catch(TimeoutException& success) {
+            } catch(Exception& e) {
+                this->parent->threadUnexpectedException();
+            }
+        }
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testTimedGet1() {
+
+    FutureTask<std::string> ft(new MediumNoInterruptsSleepCallable<std::string>(this));
+    GetDelayedFutureTaskRunnable runner(this, &ft);
+    Thread t(&runner);
+
+    try {
+        CPPUNIT_ASSERT(!ft.isDone());
+        CPPUNIT_ASSERT(!ft.isCancelled());
+        t.start();
+        ft.run();
+        t.join();
+        CPPUNIT_ASSERT(ft.isDone());
+        CPPUNIT_ASSERT(!ft.isCancelled());
+    } catch(InterruptedException& e) {
+        unexpectedException();
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+namespace {
+
+    template<typename E>
+    class ShortSleepCallable : public Callable<E> {
+    private:
+
+        FutureTaskTest* parent;
+
+    public:
+
+        ShortSleepCallable(FutureTaskTest* parent) : Callable<E>(), parent(parent) {
+        }
+
+        virtual ~ShortSleepCallable() {
+        }
+
+        virtual E call() {
+            try {
+                Thread::sleep(FutureTaskTest::MEDIUM_DELAY_MS);
+                this->parent->threadShouldThrow();
+            } catch (InterruptedException& success) {
+            }
+
+            return E();
+        }
+    };
+
+    class InterruptedGetDelayedFutureTaskRunnable : public Runnable {
+    private:
+
+        FutureTaskTest* parent;
+        FutureTask<std::string>* task;
+
+    public:
+
+        InterruptedGetDelayedFutureTaskRunnable(FutureTaskTest* parent, FutureTask<std::string>* task) :
+            Runnable(), parent(parent), task(task) {
+        }
+
+        virtual ~InterruptedGetDelayedFutureTaskRunnable() {
+        }
+
+        virtual void run() {
+            try {
+                task->get(FutureTaskTest::MEDIUM_DELAY_MS, TimeUnit::MILLISECONDS);
+                this->parent->threadShouldThrow();
+            } catch(CancellationException& success) {
+            } catch(Exception& e) {
+                this->parent->threadUnexpectedException();
+            }
+        }
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testTimedGetCancellation() {
+
+    FutureTask<std::string> ft(new ShortSleepCallable<std::string>(this));
+    InterruptedGetDelayedFutureTaskRunnable runner(this, &ft);
+
+    try {
+        Thread t1(&runner);
+        Thread t2(&ft);
+        t1.start();
+        t2.start();
+        Thread::sleep(SHORT_DELAY_MS);
+        ft.cancel(true);
+        t1.join();
+        t2.join();
+    } catch(InterruptedException& ie) {
+        unexpectedException();
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+namespace {
+
+    class CancelledGetFutureTaskRunnable : public Runnable {
+    private:
+
+        FutureTaskTest* parent;
+        FutureTask<std::string>* task;
+
+    public:
+
+        CancelledGetFutureTaskRunnable(FutureTaskTest* parent, FutureTask<std::string>* task) :
+            Runnable(), parent(parent), task(task) {
+        }
+
+        virtual ~CancelledGetFutureTaskRunnable() {
+        }
+
+        virtual void run() {
+            try {
+                task->get();
+                this->parent->threadShouldThrow();
+            } catch(CancellationException& success) {
+            } catch(Exception& e) {
+                this->parent->threadUnexpectedException();
+            }
+        }
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testGetCancellation() {
+
+    FutureTask<std::string> ft(new MediumSleepCallable<std::string>(this));
+    CancelledGetFutureTaskRunnable runner(this, &ft);
+
+    try {
+        Thread t1(&runner);
+        Thread t2(&ft);
+        t1.start();
+        t2.start();
+        Thread::sleep(SHORT_DELAY_MS);
+        ft.cancel(true);
+        t1.join();
+        t2.join();
+    } catch(InterruptedException& success) {
+        unexpectedException();
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+namespace {
+
+    template<typename E>
+    class ErrorThrowingCallable : public Callable<E> {
+    private:
+
+        FutureTaskTest* parent;
+
+    public:
+
+        ErrorThrowingCallable(FutureTaskTest* parent) : Callable<E>(), parent(parent) {
+        }
+
+        virtual ~ErrorThrowingCallable() {
+        }
+
+        virtual E call() {
+            throw Exception(__FILE__, __LINE__, "Something aweful");
+            return E();
+        }
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testGetExecutionException() {
+
+    FutureTask<std::string> ft(new ErrorThrowingCallable<std::string>(this));
+
+    try {
+        ft.run();
+        ft.get();
+        shouldThrow();
+    } catch(ExecutionException& success) {
+    } catch(Exception& e) {
+        unexpectedException();
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testTimedGetExecutionException2() {
+
+    FutureTask<std::string> ft(new ErrorThrowingCallable<std::string>(this));
+
+    try {
+        ft.run();
+        ft.get(SHORT_DELAY_MS, TimeUnit::MILLISECONDS);
+        shouldThrow();
+    } catch(ExecutionException& success) {
+    } catch(TimeoutException& success) {
+    } catch(Exception& e) {
+        unexpectedException();
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+namespace {
+
+    class InterruptableFutureTaskGetRunnable : public Runnable {
+    private:
+
+        FutureTaskTest* parent;
+        FutureTask<std::string>* task;
+
+    public:
+
+        InterruptableFutureTaskGetRunnable(FutureTaskTest* parent, FutureTask<std::string>* task) :
+            Runnable(), parent(parent), task(task) {
+        }
+
+        virtual ~InterruptableFutureTaskGetRunnable() {
+        }
+
+        virtual void run() {
+            try {
+                task->get();
+                this->parent->threadShouldThrow();
+            } catch(InterruptedException& success) {
+            } catch(Exception& e) {
+                this->parent->threadUnexpectedException();
+            }
+        }
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testGetInterruptedException() {
+
+    FutureTask<std::string> ft(new NoOpCallable<std::string>());
+    Thread t(&ft);
+
+    try {
+        t.start();
+        Thread::sleep( SHORT_DELAY_MS);
+        t.interrupt();
+        t.join();
+    } catch(Exception& e) {
+        unexpectedException();
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+namespace {
+
+    class InterruptableFutureTaskLongTimeoutGetRunnable : public Runnable {
+    private:
+
+        FutureTaskTest* parent;
+        FutureTask<std::string>* task;
+
+    public:
+
+        InterruptableFutureTaskLongTimeoutGetRunnable(FutureTaskTest* parent, FutureTask<std::string>* task) :
+            Runnable(), parent(parent), task(task) {
+        }
+
+        virtual ~InterruptableFutureTaskLongTimeoutGetRunnable() {
+        }
+
+        virtual void run() {
+            try {
+                task->get(FutureTaskTest::LONG_DELAY_MS,TimeUnit::MILLISECONDS);
+                this->parent->threadShouldThrow();
+            } catch(InterruptedException& success) {
+            } catch(Exception& e) {
+                this->parent->threadUnexpectedException();
+            }
+        }
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testTimedGetInterruptedException2() {
+    FutureTask<std::string> ft(new NoOpCallable<std::string>());
+    InterruptableFutureTaskLongTimeoutGetRunnable runner(this, &ft);
+    Thread t(&runner);
+
+    try {
+        t.start();
+        Thread::sleep(SHORT_DELAY_MS);
+        t.interrupt();
+        t.join();
+    } catch(Exception& e) {
+        unexpectedException();
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void FutureTaskTest::testGetTimeoutException() {
+    try {
+        FutureTask<std::string> ft(new NoOpCallable<std::string>());
+        ft.get(1, TimeUnit::MILLISECONDS);
+        shouldThrow();
+    } catch(TimeoutException& success) {
+    } catch(Exception& success) {
+        unexpectedException();
+    }
+}

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

Added: activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/FutureTaskTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/FutureTaskTest.h?rev=1149333&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/FutureTaskTest.h (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/FutureTaskTest.h Thu Jul 21 19:35:04 2011
@@ -0,0 +1,84 @@
+/*
+ * 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_FUTURETASKTEST_H_
+#define _DECAF_UTIL_CONCURRENT_FUTURETASKTEST_H_
+
+#include <decaf/util/concurrent/ExecutorsTestSupport.h>
+
+namespace decaf {
+namespace util {
+namespace concurrent {
+
+    class FutureTaskTest : public ExecutorsTestSupport {
+
+        CPPUNIT_TEST_SUITE( FutureTaskTest );
+        CPPUNIT_TEST( testConstructor1 );
+        CPPUNIT_TEST( testConstructor2 );
+        CPPUNIT_TEST( testIsDone );
+        CPPUNIT_TEST( testRunAndReset );
+        CPPUNIT_TEST( testResetAfterCancel );
+        CPPUNIT_TEST( testSet );
+        CPPUNIT_TEST( testSetException );
+        CPPUNIT_TEST( testCancelBeforeRun );
+        CPPUNIT_TEST( testCancelBeforeRun2 );
+        CPPUNIT_TEST( testCancelAfterRun );
+        CPPUNIT_TEST( testCancelInterrupt );
+        CPPUNIT_TEST( testCancelNoInterrupt );
+        CPPUNIT_TEST( testGet1 );
+        CPPUNIT_TEST( testTimedGet1 );
+        CPPUNIT_TEST( testTimedGetCancellation );
+        CPPUNIT_TEST( testGetCancellation );
+        CPPUNIT_TEST( testGetExecutionException );
+        CPPUNIT_TEST( testTimedGetExecutionException2 );
+        CPPUNIT_TEST( testGetInterruptedException );
+        CPPUNIT_TEST( testTimedGetInterruptedException2 );
+        CPPUNIT_TEST( testGetTimeoutException );
+        CPPUNIT_TEST_SUITE_END();
+
+    public:
+
+        FutureTaskTest();
+        virtual ~FutureTaskTest();
+
+        void testConstructor1();
+        void testConstructor2();
+        void testIsDone();
+        void testRunAndReset();
+        void testResetAfterCancel();
+        void testSet();
+        void testSetException();
+        void testCancelBeforeRun();
+        void testCancelBeforeRun2();
+        void testCancelAfterRun();
+        void testCancelInterrupt();
+        void testCancelNoInterrupt();
+        void testGet1();
+        void testTimedGet1();
+        void testTimedGetCancellation();
+        void testGetCancellation();
+        void testGetExecutionException();
+        void testTimedGetExecutionException2();
+        void testGetInterruptedException();
+        void testTimedGetInterruptedException2();
+        void testGetTimeoutException();
+
+    };
+
+}}}
+
+#endif /* _DECAF_UTIL_CONCURRENT_FUTURETASKTEST_H_ */

Propchange: activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/FutureTaskTest.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=1149333&r1=1149332&r2=1149333&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/testRegistry.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/testRegistry.cpp Thu Jul 21 19:35:04 2011
@@ -18,340 +18,342 @@
 // All CPP Unit tests are registered in here so we can disable them and
 // enable them easily in one place.
 
-#include <activemq/commands/BrokerInfoTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::BrokerInfoTest );
-#include <activemq/commands/BrokerIdTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::BrokerIdTest );
-#include <activemq/commands/ActiveMQTopicTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQTopicTest );
-#include <activemq/commands/ActiveMQTextMessageTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQTextMessageTest );
-#include <activemq/commands/ActiveMQTempTopicTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQTempTopicTest );
-#include <activemq/commands/ActiveMQTempQueueTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQTempQueueTest );
-#include <activemq/commands/ActiveMQQueueTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQQueueTest );
-#include <activemq/commands/ActiveMQMessageTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQMessageTest );
-#include <activemq/commands/ActiveMQMapMessageTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQMapMessageTest );
-#include <activemq/commands/ActiveMQDestinationTest2.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQDestinationTest );
-#include <activemq/commands/ActiveMQBytesMessageTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQBytesMessageTest );
-#include <activemq/commands/ActiveMQStreamMessageTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQStreamMessageTest );
-#include <activemq/commands/XATransactionIdTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::XATransactionIdTest );
-
-#include <activemq/wireformat/openwire/marshal/BaseDataStreamMarshallerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::BaseDataStreamMarshallerTest );
-#include <activemq/wireformat/openwire/marshal/PrimitiveTypesMarshallerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::PrimitiveTypesMarshallerTest );
-
-#include <activemq/wireformat/openwire/utils/BooleanStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::utils::BooleanStreamTest );
-#include <activemq/wireformat/openwire/utils/HexTableTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::utils::HexTableTest );
-#include <activemq/wireformat/openwire/utils/MessagePropertyInterceptorTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::utils::MessagePropertyInterceptorTest );
-
-#include <activemq/wireformat/openwire/OpenWireFormatTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::OpenWireFormatTest );
-
-#include <activemq/cmsutil/CmsAccessorTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::cmsutil::CmsAccessorTest );
-#include <activemq/cmsutil/CmsDestinationAccessorTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::cmsutil::CmsDestinationAccessorTest );
-#include <activemq/cmsutil/CmsTemplateTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::cmsutil::CmsTemplateTest );
-#include <activemq/cmsutil/DynamicDestinationResolverTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::cmsutil::DynamicDestinationResolverTest );
-#include <activemq/cmsutil/SessionPoolTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::cmsutil::SessionPoolTest );
-
-#include <activemq/core/ActiveMQConnectionFactoryTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::ActiveMQConnectionFactoryTest );
-#include <activemq/core/ActiveMQConnectionTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::ActiveMQConnectionTest );
-#include <activemq/core/ActiveMQSessionTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::ActiveMQSessionTest );
-#include <activemq/core/FifoMessageDispatchChannelTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::FifoMessageDispatchChannelTest );
-#include <activemq/core/SimplePriorityMessageDispatchChannelTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::SimplePriorityMessageDispatchChannelTest );
-
-#include <activemq/state/ConnectionStateTrackerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::ConnectionStateTrackerTest );
-#include <activemq/state/ConnectionStateTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::ConnectionStateTest );
-#include <activemq/state/ConsumerStateTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::ConsumerStateTest );
-#include <activemq/state/ProducerStateTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::ProducerStateTest );
-#include <activemq/state/SessionStateTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::SessionStateTest );
-#include <activemq/state/TransactionStateTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::TransactionStateTest );
-
-#include <activemq/transport/failover/FailoverTransportTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::failover::FailoverTransportTest );
-
-#include <activemq/transport/correlator/ResponseCorrelatorTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::correlator::ResponseCorrelatorTest );
-
-#include <activemq/transport/mock/MockTransportFactoryTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::mock::MockTransportFactoryTest );
-
-#include <activemq/transport/inactivity/InactivityMonitorTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::inactivity::InactivityMonitorTest );
-
-#include <activemq/transport/TransportRegistryTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::TransportRegistryTest );
-#include <activemq/transport/IOTransportTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::IOTransportTest );
-
-#include <activemq/exceptions/ActiveMQExceptionTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::exceptions::ActiveMQExceptionTest );
-
-#include <activemq/util/IdGeneratorTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::IdGeneratorTest );
-#include <activemq/util/LongSequenceGeneratorTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::LongSequenceGeneratorTest );
-#include <activemq/util/PrimitiveValueNodeTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::PrimitiveValueNodeTest );
-#include <activemq/util/PrimitiveListTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::PrimitiveListTest );
-#include <activemq/util/PrimitiveMapTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::PrimitiveMapTest );
-#include <activemq/util/PrimitiveValueConverterTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::PrimitiveValueConverterTest );
-#include <activemq/util/URISupportTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::URISupportTest );
-#include <activemq/util/MemoryUsageTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::MemoryUsageTest );
-#include <activemq/util/MarshallingSupportTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::MarshallingSupportTest );
-
-#include <activemq/threads/SchedulerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::threads::SchedulerTest );
-#include <activemq/threads/DedicatedTaskRunnerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::threads::DedicatedTaskRunnerTest );
-#include <activemq/threads/CompositeTaskRunnerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::threads::CompositeTaskRunnerTest );
-
-#include <activemq/wireformat/WireFormatRegistryTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::WireFormatRegistryTest );
-
-#include <decaf/internal/util/ByteArrayAdapterTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::util::ByteArrayAdapterTest );
-#include <decaf/internal/util/TimerTaskHeapTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::util::TimerTaskHeapTest );
-
-#include <decaf/internal/net/ssl/DefaultSSLSocketFactoryTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::net::ssl::DefaultSSLSocketFactoryTest );
-
-#include <decaf/internal/nio/ByteArrayBufferTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::ByteArrayBufferTest );
-#include <decaf/internal/nio/BufferFactoryTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::BufferFactoryTest );
-#include <decaf/internal/nio/CharArrayBufferTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::CharArrayBufferTest );
-#include <decaf/internal/nio/DoubleArrayBufferTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::DoubleArrayBufferTest );
-#include <decaf/internal/nio/FloatArrayBufferTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::FloatArrayBufferTest );
-#include <decaf/internal/nio/LongArrayBufferTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::LongArrayBufferTest );
-#include <decaf/internal/nio/IntArrayBufferTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::IntArrayBufferTest );
-#include <decaf/internal/nio/ShortArrayBufferTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::ShortArrayBufferTest );
-
-#include <decaf/internal/net/URIEncoderDecoderTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::net::URIEncoderDecoderTest );
-#include <decaf/internal/net/URIHelperTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::net::URIHelperTest );
-
-#include <decaf/nio/BufferTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::nio::BufferTest );
-
-#include <decaf/io/InputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::InputStreamTest );
-#include <decaf/io/OutputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::OutputStreamTest );
-#include <decaf/io/FilterInputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::FilterInputStreamTest );
-#include <decaf/io/FilterOutputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::FilterOutputStreamTest );
-#include <decaf/io/BufferedInputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::BufferedInputStreamTest );
-#include <decaf/io/BufferedOutputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::BufferedOutputStreamTest );
-#include <decaf/io/ByteArrayInputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::ByteArrayInputStreamTest );
-#include <decaf/io/ByteArrayOutputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::ByteArrayOutputStreamTest );
-#include <decaf/io/PushbackInputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::PushbackInputStreamTest );
-#include <decaf/io/DataInputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::DataInputStreamTest );
-#include <decaf/io/DataOutputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::DataOutputStreamTest );
-#include <decaf/io/WriterTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::WriterTest );
-#include <decaf/io/ReaderTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::ReaderTest );
-#include <decaf/io/OutputStreamWriterTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::OutputStreamWriterTest );
-#include <decaf/io/InputStreamReaderTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::InputStreamReaderTest );
-
-#include <decaf/lang/MathTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::MathTest );
-#include <decaf/lang/ByteTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ByteTest );
-#include <decaf/lang/CharacterTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::CharacterTest );
-#include <decaf/lang/BooleanTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::BooleanTest );
-#include <decaf/lang/ShortTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ShortTest );
-#include <decaf/lang/IntegerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::IntegerTest );
-#include <decaf/lang/LongTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::LongTest );
-#include <decaf/lang/FloatTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::FloatTest );
-#include <decaf/lang/DoubleTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::DoubleTest );
-#include <decaf/lang/ExceptionTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ExceptionTest );
-#include <decaf/lang/ThreadTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ThreadTest );
-#include <decaf/lang/SystemTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::SystemTest );
-#include <decaf/lang/PointerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::PointerTest );
-#include <decaf/lang/ArrayPointerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ArrayPointerTest );
-#include <decaf/lang/StringTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::StringTest );
-
-#include <decaf/net/InetAddressTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::InetAddressTest );
-#include <decaf/net/Inet4AddressTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::InetAddressTest );
-#include <decaf/net/Inet6AddressTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::InetAddressTest );
-#include <decaf/net/SocketFactoryTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::SocketFactoryTest );
-#include <decaf/net/ServerSocketTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::ServerSocketTest );
-#include <decaf/net/SocketTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::SocketTest );
-#include <decaf/net/URITest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::URITest );
-#include <decaf/net/URISyntaxExceptionTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::URISyntaxExceptionTest );
-#include <decaf/net/URLEncoderTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::URLEncoderTest );
-#include <decaf/net/URLDecoderTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::URLDecoderTest );
-
-#include <decaf/net/ssl/SSLSocketFactoryTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::ssl::SSLSocketFactoryTest );
-
-#include <decaf/util/concurrent/CopyOnWriteArrayListTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::CopyOnWriteArrayListTest );
-#include <decaf/util/concurrent/CopyOnWriteArraySetTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::CopyOnWriteArraySetTest );
-#include <decaf/util/concurrent/ConcurrentStlMapTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::ConcurrentStlMapTest );
-#include <decaf/util/concurrent/CountDownLatchTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::CountDownLatchTest );
-#include <decaf/util/concurrent/MutexTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::MutexTest );
-#include <decaf/util/concurrent/ThreadPoolExecutorTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::ThreadPoolExecutorTest );
-#include <decaf/util/concurrent/ExecutorsTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::ExecutorsTest );
-#include <decaf/util/concurrent/TimeUnitTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::TimeUnitTest );
-#include <decaf/util/concurrent/LinkedBlockingQueueTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::LinkedBlockingQueueTest );
-#include <decaf/util/concurrent/SemaphoreTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::SemaphoreTest );
-
-#include <decaf/util/concurrent/atomic/AtomicBooleanTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::atomic::AtomicBooleanTest );
-#include <decaf/util/concurrent/atomic/AtomicIntegerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::atomic::AtomicIntegerTest );
-#include <decaf/util/concurrent/atomic/AtomicReferenceTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::atomic::AtomicReferenceTest );
-
-#include <decaf/util/concurrent/locks/LockSupportTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::locks::LockSupportTest );
-#include <decaf/util/concurrent/locks/AbstractQueuedSynchronizerTest.h>
-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/AbstractCollectionTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::AbstractCollectionTest );
-#include <decaf/util/AbstractListTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::AbstractListTest );
-#include <decaf/util/AbstractSequentialListTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::AbstractSequentialListTest );
-#include <decaf/util/DateTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::DateTest );
-#include <decaf/util/UUIDTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::UUIDTest );
-#include <decaf/util/ListTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::ListTest );
-#include <decaf/util/LinkedListTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::LinkedListTest );
-#include <decaf/util/ArrayListTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::ArrayListTest );
-#include <decaf/util/ArraysTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::ArraysTest );
-#include <decaf/util/StlMapTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::StlMapTest );
-#include <decaf/util/PropertiesTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::PropertiesTest );
-#include <decaf/util/QueueTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::QueueTest );
-#include <decaf/util/RandomTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::RandomTest );
-#include <decaf/util/SetTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::SetTest );
-#include <decaf/util/StringTokenizerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::StringTokenizerTest );
-#include <decaf/util/TimerTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::TimerTest );
-#include <decaf/util/PriorityQueueTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::PriorityQueueTest );
-
-#include <decaf/util/zip/DeflaterTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::DeflaterTest );
-#include <decaf/util/zip/InflaterTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::InflaterTest );
-#include <decaf/util/zip/Adler32Test.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::Adler32Test );
-#include <decaf/util/zip/CRC32Test.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::CRC32Test );
-#include <decaf/util/zip/CheckedInputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::CheckedInputStreamTest );
-#include <decaf/util/zip/CheckedOutputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::CheckedOutputStreamTest );
-#include <decaf/util/zip/DeflaterOutputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::DeflaterOutputStreamTest );
-#include <decaf/util/zip/InflaterInputStreamTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::InflaterInputStreamTest );
-
-#include <decaf/security/SecureRandomTest.h>
-CPPUNIT_TEST_SUITE_REGISTRATION( decaf::security::SecureRandomTest );
+//#include <activemq/commands/BrokerInfoTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::BrokerInfoTest );
+//#include <activemq/commands/BrokerIdTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::BrokerIdTest );
+//#include <activemq/commands/ActiveMQTopicTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQTopicTest );
+//#include <activemq/commands/ActiveMQTextMessageTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQTextMessageTest );
+//#include <activemq/commands/ActiveMQTempTopicTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQTempTopicTest );
+//#include <activemq/commands/ActiveMQTempQueueTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQTempQueueTest );
+//#include <activemq/commands/ActiveMQQueueTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQQueueTest );
+//#include <activemq/commands/ActiveMQMessageTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQMessageTest );
+//#include <activemq/commands/ActiveMQMapMessageTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQMapMessageTest );
+//#include <activemq/commands/ActiveMQDestinationTest2.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQDestinationTest );
+//#include <activemq/commands/ActiveMQBytesMessageTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQBytesMessageTest );
+//#include <activemq/commands/ActiveMQStreamMessageTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::ActiveMQStreamMessageTest );
+//#include <activemq/commands/XATransactionIdTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::commands::XATransactionIdTest );
+//
+//#include <activemq/wireformat/openwire/marshal/BaseDataStreamMarshallerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::BaseDataStreamMarshallerTest );
+//#include <activemq/wireformat/openwire/marshal/PrimitiveTypesMarshallerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::marshal::PrimitiveTypesMarshallerTest );
+//
+//#include <activemq/wireformat/openwire/utils/BooleanStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::utils::BooleanStreamTest );
+//#include <activemq/wireformat/openwire/utils/HexTableTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::utils::HexTableTest );
+//#include <activemq/wireformat/openwire/utils/MessagePropertyInterceptorTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::utils::MessagePropertyInterceptorTest );
+//
+//#include <activemq/wireformat/openwire/OpenWireFormatTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::openwire::OpenWireFormatTest );
+//
+//#include <activemq/cmsutil/CmsAccessorTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::cmsutil::CmsAccessorTest );
+//#include <activemq/cmsutil/CmsDestinationAccessorTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::cmsutil::CmsDestinationAccessorTest );
+//#include <activemq/cmsutil/CmsTemplateTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::cmsutil::CmsTemplateTest );
+//#include <activemq/cmsutil/DynamicDestinationResolverTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::cmsutil::DynamicDestinationResolverTest );
+//#include <activemq/cmsutil/SessionPoolTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::cmsutil::SessionPoolTest );
+//
+//#include <activemq/core/ActiveMQConnectionFactoryTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::ActiveMQConnectionFactoryTest );
+//#include <activemq/core/ActiveMQConnectionTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::ActiveMQConnectionTest );
+//#include <activemq/core/ActiveMQSessionTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::ActiveMQSessionTest );
+//#include <activemq/core/FifoMessageDispatchChannelTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::FifoMessageDispatchChannelTest );
+//#include <activemq/core/SimplePriorityMessageDispatchChannelTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::core::SimplePriorityMessageDispatchChannelTest );
+//
+//#include <activemq/state/ConnectionStateTrackerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::ConnectionStateTrackerTest );
+//#include <activemq/state/ConnectionStateTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::ConnectionStateTest );
+//#include <activemq/state/ConsumerStateTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::ConsumerStateTest );
+//#include <activemq/state/ProducerStateTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::ProducerStateTest );
+//#include <activemq/state/SessionStateTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::SessionStateTest );
+//#include <activemq/state/TransactionStateTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::state::TransactionStateTest );
+//
+//#include <activemq/transport/failover/FailoverTransportTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::failover::FailoverTransportTest );
+//
+//#include <activemq/transport/correlator/ResponseCorrelatorTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::correlator::ResponseCorrelatorTest );
+//
+//#include <activemq/transport/mock/MockTransportFactoryTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::mock::MockTransportFactoryTest );
+//
+//#include <activemq/transport/inactivity/InactivityMonitorTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::inactivity::InactivityMonitorTest );
+//
+//#include <activemq/transport/TransportRegistryTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::TransportRegistryTest );
+//#include <activemq/transport/IOTransportTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::transport::IOTransportTest );
+//
+//#include <activemq/exceptions/ActiveMQExceptionTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::exceptions::ActiveMQExceptionTest );
+//
+//#include <activemq/util/IdGeneratorTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::IdGeneratorTest );
+//#include <activemq/util/LongSequenceGeneratorTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::LongSequenceGeneratorTest );
+//#include <activemq/util/PrimitiveValueNodeTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::PrimitiveValueNodeTest );
+//#include <activemq/util/PrimitiveListTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::PrimitiveListTest );
+//#include <activemq/util/PrimitiveMapTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::PrimitiveMapTest );
+//#include <activemq/util/PrimitiveValueConverterTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::PrimitiveValueConverterTest );
+//#include <activemq/util/URISupportTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::URISupportTest );
+//#include <activemq/util/MemoryUsageTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::MemoryUsageTest );
+//#include <activemq/util/MarshallingSupportTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::MarshallingSupportTest );
+//
+//#include <activemq/threads/SchedulerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::threads::SchedulerTest );
+//#include <activemq/threads/DedicatedTaskRunnerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::threads::DedicatedTaskRunnerTest );
+//#include <activemq/threads/CompositeTaskRunnerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::threads::CompositeTaskRunnerTest );
+//
+//#include <activemq/wireformat/WireFormatRegistryTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( activemq::wireformat::WireFormatRegistryTest );
+//
+//#include <decaf/internal/util/ByteArrayAdapterTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::util::ByteArrayAdapterTest );
+//#include <decaf/internal/util/TimerTaskHeapTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::util::TimerTaskHeapTest );
+//
+//#include <decaf/internal/net/ssl/DefaultSSLSocketFactoryTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::net::ssl::DefaultSSLSocketFactoryTest );
+//
+//#include <decaf/internal/nio/ByteArrayBufferTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::ByteArrayBufferTest );
+//#include <decaf/internal/nio/BufferFactoryTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::BufferFactoryTest );
+//#include <decaf/internal/nio/CharArrayBufferTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::CharArrayBufferTest );
+//#include <decaf/internal/nio/DoubleArrayBufferTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::DoubleArrayBufferTest );
+//#include <decaf/internal/nio/FloatArrayBufferTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::FloatArrayBufferTest );
+//#include <decaf/internal/nio/LongArrayBufferTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::LongArrayBufferTest );
+//#include <decaf/internal/nio/IntArrayBufferTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::IntArrayBufferTest );
+//#include <decaf/internal/nio/ShortArrayBufferTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::nio::ShortArrayBufferTest );
+//
+//#include <decaf/internal/net/URIEncoderDecoderTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::net::URIEncoderDecoderTest );
+//#include <decaf/internal/net/URIHelperTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::internal::net::URIHelperTest );
+//
+//#include <decaf/nio/BufferTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::nio::BufferTest );
+//
+//#include <decaf/io/InputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::InputStreamTest );
+//#include <decaf/io/OutputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::OutputStreamTest );
+//#include <decaf/io/FilterInputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::FilterInputStreamTest );
+//#include <decaf/io/FilterOutputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::FilterOutputStreamTest );
+//#include <decaf/io/BufferedInputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::BufferedInputStreamTest );
+//#include <decaf/io/BufferedOutputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::BufferedOutputStreamTest );
+//#include <decaf/io/ByteArrayInputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::ByteArrayInputStreamTest );
+//#include <decaf/io/ByteArrayOutputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::ByteArrayOutputStreamTest );
+//#include <decaf/io/PushbackInputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::PushbackInputStreamTest );
+//#include <decaf/io/DataInputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::DataInputStreamTest );
+//#include <decaf/io/DataOutputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::DataOutputStreamTest );
+//#include <decaf/io/WriterTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::WriterTest );
+//#include <decaf/io/ReaderTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::ReaderTest );
+//#include <decaf/io/OutputStreamWriterTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::OutputStreamWriterTest );
+//#include <decaf/io/InputStreamReaderTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::InputStreamReaderTest );
+//
+//#include <decaf/lang/MathTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::MathTest );
+//#include <decaf/lang/ByteTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ByteTest );
+//#include <decaf/lang/CharacterTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::CharacterTest );
+//#include <decaf/lang/BooleanTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::BooleanTest );
+//#include <decaf/lang/ShortTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ShortTest );
+//#include <decaf/lang/IntegerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::IntegerTest );
+//#include <decaf/lang/LongTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::LongTest );
+//#include <decaf/lang/FloatTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::FloatTest );
+//#include <decaf/lang/DoubleTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::DoubleTest );
+//#include <decaf/lang/ExceptionTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ExceptionTest );
+//#include <decaf/lang/ThreadTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ThreadTest );
+//#include <decaf/lang/SystemTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::SystemTest );
+//#include <decaf/lang/PointerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::PointerTest );
+//#include <decaf/lang/ArrayPointerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ArrayPointerTest );
+//#include <decaf/lang/StringTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::StringTest );
+//
+//#include <decaf/net/InetAddressTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::InetAddressTest );
+//#include <decaf/net/Inet4AddressTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::InetAddressTest );
+//#include <decaf/net/Inet6AddressTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::InetAddressTest );
+//#include <decaf/net/SocketFactoryTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::SocketFactoryTest );
+//#include <decaf/net/ServerSocketTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::ServerSocketTest );
+//#include <decaf/net/SocketTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::SocketTest );
+//#include <decaf/net/URITest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::URITest );
+//#include <decaf/net/URISyntaxExceptionTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::URISyntaxExceptionTest );
+//#include <decaf/net/URLEncoderTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::URLEncoderTest );
+//#include <decaf/net/URLDecoderTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::URLDecoderTest );
+//
+//#include <decaf/net/ssl/SSLSocketFactoryTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::ssl::SSLSocketFactoryTest );
+//
+//#include <decaf/util/concurrent/CopyOnWriteArrayListTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::CopyOnWriteArrayListTest );
+//#include <decaf/util/concurrent/CopyOnWriteArraySetTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::CopyOnWriteArraySetTest );
+//#include <decaf/util/concurrent/ConcurrentStlMapTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::ConcurrentStlMapTest );
+//#include <decaf/util/concurrent/CountDownLatchTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::CountDownLatchTest );
+//#include <decaf/util/concurrent/MutexTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::MutexTest );
+//#include <decaf/util/concurrent/ThreadPoolExecutorTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::ThreadPoolExecutorTest );
+//#include <decaf/util/concurrent/ExecutorsTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::ExecutorsTest );
+//#include <decaf/util/concurrent/TimeUnitTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::TimeUnitTest );
+//#include <decaf/util/concurrent/LinkedBlockingQueueTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::LinkedBlockingQueueTest );
+//#include <decaf/util/concurrent/SemaphoreTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::SemaphoreTest );
+#include <decaf/util/concurrent/FutureTaskTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::FutureTaskTest );
+//
+//#include <decaf/util/concurrent/atomic/AtomicBooleanTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::atomic::AtomicBooleanTest );
+//#include <decaf/util/concurrent/atomic/AtomicIntegerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::atomic::AtomicIntegerTest );
+//#include <decaf/util/concurrent/atomic/AtomicReferenceTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::atomic::AtomicReferenceTest );
+//
+//#include <decaf/util/concurrent/locks/LockSupportTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::locks::LockSupportTest );
+//#include <decaf/util/concurrent/locks/AbstractQueuedSynchronizerTest.h>
+//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/AbstractCollectionTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::AbstractCollectionTest );
+//#include <decaf/util/AbstractListTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::AbstractListTest );
+//#include <decaf/util/AbstractSequentialListTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::AbstractSequentialListTest );
+//#include <decaf/util/DateTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::DateTest );
+//#include <decaf/util/UUIDTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::UUIDTest );
+//#include <decaf/util/ListTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::ListTest );
+//#include <decaf/util/LinkedListTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::LinkedListTest );
+//#include <decaf/util/ArrayListTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::ArrayListTest );
+//#include <decaf/util/ArraysTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::ArraysTest );
+//#include <decaf/util/StlMapTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::StlMapTest );
+//#include <decaf/util/PropertiesTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::PropertiesTest );
+//#include <decaf/util/QueueTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::QueueTest );
+//#include <decaf/util/RandomTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::RandomTest );
+//#include <decaf/util/SetTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::SetTest );
+//#include <decaf/util/StringTokenizerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::StringTokenizerTest );
+//#include <decaf/util/TimerTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::TimerTest );
+//#include <decaf/util/PriorityQueueTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::PriorityQueueTest );
+//
+//#include <decaf/util/zip/DeflaterTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::DeflaterTest );
+//#include <decaf/util/zip/InflaterTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::InflaterTest );
+//#include <decaf/util/zip/Adler32Test.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::Adler32Test );
+//#include <decaf/util/zip/CRC32Test.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::CRC32Test );
+//#include <decaf/util/zip/CheckedInputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::CheckedInputStreamTest );
+//#include <decaf/util/zip/CheckedOutputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::CheckedOutputStreamTest );
+//#include <decaf/util/zip/DeflaterOutputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::DeflaterOutputStreamTest );
+//#include <decaf/util/zip/InflaterInputStreamTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::zip::InflaterInputStreamTest );
+//
+//#include <decaf/security/SecureRandomTest.h>
+//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::security::SecureRandomTest );
 
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //// Marshaler Tests