Modified: incubator/qpid/trunk/qpid/cpp/src/tests/HeadersExchangeTest.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/HeadersExchangeTest.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/HeadersExchangeTest.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/HeadersExchangeTest.cpp Fri Oct 26 
12:48:31 2007
@@ -19,7 +19,7 @@
  *
  */
 
-#include "qpid/QpidError.h"
+#include "qpid/Exception.h"
 #include "qpid/broker/HeadersExchange.h"
 #include "qpid/framing/FieldTable.h"
 #include "qpid/framing/FieldValue.h"
@@ -118,7 +118,7 @@
         try {
             //just checking this doesn't cause assertion etc
             exchange.bind(queue, key, &args);
-        } catch(qpid::QpidError&) {
+        } catch(qpid::Exception&) {
             //expected
         }
     }

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/InProcessBroker.h
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/InProcessBroker.h?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/InProcessBroker.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/InProcessBroker.h Fri Oct 26 
12:48:31 2007
@@ -25,6 +25,9 @@
 #include "qpid/client/Connector.h"
 #include "qpid/client/Connection.h"
 #include "qpid/log/Statement.h"
+#include "qpid/sys/Thread.h"
+#include "qpid/sys/ConcurrentQueue.h"
+#include "qpid/shared_ptr.h"
 
 #include <vector>
 #include <iostream>
@@ -32,112 +35,176 @@
 
 
 namespace qpid {
-namespace broker {
+
 
 /**
- * A broker that implements client::Connector allowing direct
- * in-process connection of client to broker. Used to write round-trip
- * tests without requiring an external broker process.
- *
+ * A client::Connector that connects directly to an in-process broker.
  * Also allows you to "snoop" on frames exchanged between client & broker.
  * 
  * see FramingTest::testRequestResponseRoundtrip() for example of use.
  */
-class InProcessBroker : public client::Connector {
+class InProcessConnector :
+        public client::Connector
+{
   public:
+    typedef sys::Mutex Mutex;
+    typedef Mutex::ScopedLock Lock;
+    typedef framing::FrameHandler FrameHandler;
+    typedef framing::AMQFrame AMQFrame;
+
     enum Sender {CLIENT,BROKER};
 
-    /** A frame tagged with the sender */
-    struct TaggedFrame {
-        TaggedFrame(Sender e, framing::AMQFrame& f) : frame(f), sender(e) {}
-        bool fromBroker() const { return sender == BROKER; }
-        bool fromClient() const { return sender == CLIENT; }
-
-        template <class MethodType>
-        MethodType* asMethod() {
-            return dynamic_cast<MethodType*>(frame.getBody());
+    /** Simulate the network thread of a peer with a queue and a thread.
+     * With setInputHandler(0) drops frames simulating network packet loss.
+     */
+    class NetworkQueue : public sys::Runnable
+    {
+      public:
+        NetworkQueue(const char* r) : inputHandler(0), receiver(r) {
+            thread=sys::Thread(this);
+        }
+
+        ~NetworkQueue() { 
+            queue.shutdown();
+            thread.join();
+        }
+
+        void push(AMQFrame& f) { queue.push(f); }
+
+        void run() {
+            AMQFrame f;
+            while (queue.waitPop(f)) {
+                Lock l(lock);
+                if (inputHandler) { 
+                    QPID_LOG(debug, QPID_MSG(receiver << " RECV: " << f));
+                    inputHandler->handle(f);
+                }
+                else {
+                    QPID_LOG(debug, QPID_MSG(receiver << " DROP: " << f));
+                }
+            }
+        }
+
+        void setInputHandler(FrameHandler* h) {
+            Lock l(lock);
+            inputHandler = h;
+        }
+        
+      private:
+        sys::Mutex lock;
+        sys::ConcurrentQueue<AMQFrame> queue;
+        sys::Thread thread;
+        FrameHandler* inputHandler;
+        const char* const receiver;
+    };
+
+    struct InProcessHandler : public sys::ConnectionOutputHandler {
+        Sender from;
+        NetworkQueue queue;
+        const char* const sender;
+
+        InProcessHandler(Sender s)
+            : from(s),
+              queue(from==CLIENT? "BROKER" : "CLIENT"),
+              sender(from==BROKER? "BROKER" : "CLIENT")
+        {}
+
+        ~InProcessHandler() {  }
+        
+        void send(AMQFrame& f) {
+            QPID_LOG(debug, QPID_MSG(sender << " SENT: " << f));
+            queue.push(f);
+        }
+        
+        void close() {
+            // Do not shut down the queue here, we may be in
+            // the queue's dispatch thread. 
         }
-        framing::AMQFrame frame;
-        Sender sender;
     };
-    
-    typedef std::vector<TaggedFrame> Conversation;
 
-    InProcessBroker(framing::ProtocolVersion ver=
-                    framing::highestProtocolVersion
-    ) :
-        Connector(ver),
-        protocolInit(ver),
-        broker(broker::Broker::create()),
-        brokerOut(BROKER, conversation),
+    InProcessConnector(shared_ptr<broker::Broker> b,
+                       framing::ProtocolVersion v=framing::ProtocolVersion()) :
+        Connector(v),
+        protocolInit(v),
+        broker(b),
+        brokerOut(BROKER),
         brokerConnection(&brokerOut, *broker),
-        clientOut(CLIENT, conversation, &brokerConnection)
-    {}
+        clientOut(CLIENT),
+        isClosed(false)
+    {
+        clientOut.queue.setInputHandler(&brokerConnection);
+    }
 
-    ~InProcessBroker() { broker->shutdown(); }
+    ~InProcessConnector() {
+        close();
+        
+    }
 
     void connect(const std::string& /*host*/, int /*port*/) {}
+
     void init() { brokerConnection.initiated(protocolInit); }
-    void close() {}
+
+    void close() {
+        if (!isClosed) {
+            isClosed = true;
+            brokerOut.close();
+            clientOut.close();
+            brokerConnection.closed();
+        }
+    }
 
     /** Client's input handler. */
     void setInputHandler(framing::InputHandler* handler) {
-        brokerOut.in = handler;
+        brokerOut.queue.setInputHandler(handler);
     }
 
     /** Called by client to send a frame */
     void send(framing::AMQFrame& frame) {
-        clientOut.send(frame);
+        clientOut.handle(frame);
     }
 
-    /** Entire client-broker conversation is recorded here */
-    Conversation conversation;
+    /** Sliently discard frames sent by either party, lost network traffic. */
+    void discard() {
+        brokerOut.queue.setInputHandler(0);
+        clientOut.queue.setInputHandler(0);
+    }
 
   private:
-    /** OutputHandler that forwards data to an InputHandler */
-    struct OutputToInputHandler : public sys::ConnectionOutputHandler {
-        OutputToInputHandler(
-            Sender sender_, Conversation& conversation_,
-            framing::InputHandler* ih=0
-        ) : sender(sender_), conversation(conversation_), in(ih) {}
-
-        void send(framing::AMQFrame& frame) {
-            QPID_LOG(debug,
-                     (sender==CLIENT ? "CLIENT: " : "BROKER: ") << frame);
-            conversation.push_back(TaggedFrame(sender, frame));
-            in->received(frame);
-        }
-
-        void close() {}
-        
-        Sender sender;
-        Conversation& conversation;
-        framing::InputHandler* in;
-    };
-
+    sys::Mutex lock;
     framing::ProtocolInitiation protocolInit;
-    shared_ptr<Broker>  broker;
-    OutputToInputHandler brokerOut;
+    shared_ptr<broker::Broker>  broker;
+    InProcessHandler brokerOut;
     broker::Connection brokerConnection;
-    OutputToInputHandler clientOut;
+    InProcessHandler  clientOut;
+    bool isClosed;
 };
 
-std::ostream& operator<<(
-    std::ostream& out, const InProcessBroker::TaggedFrame& tf)
-{
-    return out << (tf.fromBroker()? "BROKER: ":"CLIENT: ") << tf.frame;
-}
+struct InProcessConnection : public client::Connection {
+    InProcessConnection(shared_ptr<broker::Broker> b)
+        : client::Connection(
+            shared_ptr<client::Connector>(
+                new InProcessConnector(b)))
+    {
+        open("");
+    }
+
+    ~InProcessConnection() { }
+    
+    /** Simulate disconnected network connection. */
+    void disconnect() { impl->getConnector()->close(); }
+    
+    /** Sliently discard frames sent by either party, lost network traffic. */
+    void discard() {
+        dynamic_pointer_cast<InProcessConnector>(
+            impl->getConnector())->discard();
+    }
+};   
 
-std::ostream& operator<<(
-    std::ostream& out, const InProcessBroker::Conversation& conv)
-{    
-    copy(conv.begin(), conv.end(),
-         std::ostream_iterator<InProcessBroker::TaggedFrame>(out, "\n"));
-    return out;
-}
+/** A connector with its own broker */
+struct InProcessBroker : public InProcessConnector {
+    InProcessBroker() : InProcessConnector(broker::Broker::create()) {}
+};
 
-} // namespace broker
 } // namespace qpid
-
 
 #endif // _tests_InProcessBroker_h

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/Makefile.am
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/Makefile.am?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/Makefile.am (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/Makefile.am Fri Oct 26 12:48:31 2007
@@ -20,16 +20,10 @@
 # Unit test programs.
 # 
 
-# FIXME aconway 2007-08-29: enable when session is reinstated.
-# TESTS+=Session
-# check_PROGRAMS+=Session
-# Session_SOURCES=Session.cpp
-# Session_LDADD=-lboost_unit_test_framework $(lib_broker)
-
-TESTS+=ResumeHandler
-check_PROGRAMS+=ResumeHandler
-ResumeHandler_SOURCES=ResumeHandler.cpp 
-ResumeHandler_LDADD=-lboost_unit_test_framework $(lib_common)
+TESTS+=SessionState
+check_PROGRAMS+=SessionState
+SessionState_SOURCES=SessionState.cpp 
+SessionState_LDADD=-lboost_unit_test_framework $(lib_common)
 
 TESTS+=Blob
 check_PROGRAMS+=Blob

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp Fri Oct 26 12:48:31 
2007
@@ -54,7 +54,7 @@
 public:
     void deliverTo(Queue::shared_ptr& queue)
     {
-        throw Exception(boost::format("Invalid delivery to %1%") % 
queue->getName());
+        throw Exception(QPID_MSG("Invalid delivery to " << queue->getName()));
     }
 };
 

Added: incubator/qpid/trunk/qpid/cpp/src/tests/SessionState.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/SessionState.cpp?rev=588761&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/SessionState.cpp (added)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/SessionState.cpp Fri Oct 26 
12:48:31 2007
@@ -0,0 +1,142 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 "qpid/framing/SessionState.h"
+
+#define BOOST_AUTO_TEST_MAIN
+#include <boost/test/auto_unit_test.hpp>
+#include <boost/bind.hpp>
+
+using namespace std;
+using namespace qpid::framing;
+using namespace boost;
+
+// Create a frame with a one-char string.
+AMQFrame& frame(char s) {
+    static AMQFrame frame;
+    frame.setBody(AMQContentBody(string(&s, 1)));
+    return frame;
+}
+
+// Extract the one-char string from a frame.
+char charFromFrame(const AMQFrame& f) {
+    const AMQContentBody* b=dynamic_cast<const AMQContentBody*>(f.getBody());
+    BOOST_REQUIRE(b && b->getData().size() > 0);
+    return b->getData()[0];
+}
+
+// Sent chars as frames
+void sent(SessionState& session, const std::string& frames) {
+    for_each(frames.begin(), frames.end(),
+             bind(&SessionState::sent, ref(session), bind(frame, _1)));
+}
+
+// Received chars as frames
+void received(SessionState& session, const std::string& frames) {
+    for_each(frames.begin(), frames.end(),
+             bind(&SessionState::received, session, bind(frame, _1)));
+}
+
+// Make a string from a ReplayRange.
+std::string replayChars(const SessionState::Replay& frames) {
+    string result(frames.size(), ' ');
+    transform(frames.begin(), frames.end(), result.begin(),
+              bind(&charFromFrame, _1));
+    return result;
+}
+
+namespace qpid {
+namespace framing {
+
+bool operator==(const AMQFrame& a, const AMQFrame& b) {
+    const AMQContentBody* ab=dynamic_cast<const AMQContentBody*>(a.getBody());
+    const AMQContentBody* bb=dynamic_cast<const AMQContentBody*>(b.getBody());
+    return ab && bb && ab->getData() == bb->getData();
+}
+
+}} // namespace qpid::framing
+
+
+BOOST_AUTO_TEST_CASE(testSent) {
+    // Test that we send solicit-ack at the right interval.
+    AMQContentBody f; 
+    SessionState s1(1);
+    BOOST_CHECK(s1.sent(f));
+    BOOST_CHECK(s1.sent(f));
+    BOOST_CHECK(s1.sent(f));
+    
+    SessionState s3(3);
+    BOOST_CHECK(!s3.sent(f));
+    BOOST_CHECK(!s3.sent(f));
+    BOOST_CHECK(s3.sent(f));
+
+    BOOST_CHECK(!s3.sent(f));
+    BOOST_CHECK(!s3.sent(f));
+    s3.receivedAck(4);
+    BOOST_CHECK(!s3.sent(f));
+    BOOST_CHECK(!s3.sent(f));
+    BOOST_CHECK(s3.sent(f));
+}
+
+BOOST_AUTO_TEST_CASE(testReplay) {
+    // Replay of all frames.
+    SessionState session(100);
+    sent(session, "abc"); 
+    session.suspend(); session.resuming();
+    session.receivedAck(-1);
+    BOOST_CHECK_EQUAL(replayChars(session.replay()), "abc");
+
+    // Replay with acks
+    session.receivedAck(0); // ack a.
+    session.suspend();
+    session.resuming();
+    session.receivedAck(1); // ack b.
+    BOOST_CHECK_EQUAL(replayChars(session.replay()), "c");
+
+    // Replay after further frames.
+    sent(session, "def");
+    session.suspend();
+    session.resuming();
+    session.receivedAck(3);
+    BOOST_CHECK_EQUAL(replayChars(session.replay()), "ef");
+
+    // Bad ack, too high
+    try {
+        session.receivedAck(6);
+        BOOST_FAIL("expected exception");
+    } catch(const qpid::Exception&) {}
+
+}
+
+BOOST_AUTO_TEST_CASE(testReceived) {
+    // Check that we request acks at the right interval.
+    AMQContentBody f;
+    SessionState s1(1);
+    BOOST_CHECK_EQUAL(0u, *s1.received(f));
+    BOOST_CHECK_EQUAL(1u, *s1.received(f));
+    BOOST_CHECK_EQUAL(2u, *s1.received(f));
+
+    SessionState s3(3);
+    BOOST_CHECK(!s3.received(f));
+    BOOST_CHECK(!s3.received(f));
+    BOOST_CHECK_EQUAL(2u, *s3.received(f));
+
+    BOOST_CHECK(!s3.received(f));
+    BOOST_CHECK(!s3.received(f));
+    BOOST_CHECK_EQUAL(5u, *s3.received(f));
+}

Propchange: incubator/qpid/trunk/qpid/cpp/src/tests/SessionState.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/qpid/trunk/qpid/cpp/src/tests/SessionState.cpp
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/Shlib.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/Shlib.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/Shlib.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/Shlib.cpp Fri Oct 26 12:48:31 2007
@@ -20,6 +20,7 @@
 
 #include "test_tools.h"
 #include "qpid/sys/Shlib.h"
+#include "qpid/Exception.h"
 
 #define BOOST_AUTO_TEST_MAIN    // Must come before #include<boost/test/*>
 #include <boost/test/auto_unit_test.hpp>
@@ -40,7 +41,7 @@
         sh.getSymbol("callMe");
         BOOST_FAIL("Expected exception");
     }
-    catch (...) {}
+    catch (const qpid::Exception&) {}
 }
     
 BOOST_AUTO_TEST_CASE(testAutoShlib) {

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/TimerTest.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/TimerTest.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/TimerTest.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/TimerTest.cpp Fri Oct 26 12:48:31 
2007
@@ -26,6 +26,7 @@
 #include <iostream>
 #include <memory>
 #include <boost/format.hpp>
+#include <boost/lexical_cast.hpp>
 
 using namespace qpid::broker;
 using namespace qpid::sys;

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/TxMocks.h
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/TxMocks.h?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/TxMocks.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/TxMocks.h Fri Oct 26 12:48:31 2007
@@ -25,7 +25,6 @@
 #include "qpid/Exception.h"
 #include "qpid/broker/TransactionalStore.h"
 #include "qpid/broker/TxOp.h"
-#include <boost/format.hpp>
 #include <iostream>
 #include <vector>
 
@@ -40,9 +39,9 @@
         i++;
     }
     if (i < expected.size()) {
-        throw qpid::Exception(boost::format("Missing %1%") % expected[i]);
+        throw qpid::Exception(QPID_MSG("Missing " << expected[i]));
     } else if (i < actual.size()) {
-        throw qpid::Exception(boost::format("Extra %1%") % actual[i]);
+        throw qpid::Exception(QPID_MSG("Extra " << actual[i]));
     }
     CPPUNIT_ASSERT_EQUAL(expected.size(), actual.size());
 }

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/client_test.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/client_test.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/client_test.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/client_test.cpp Fri Oct 26 12:48:31 
2007
@@ -29,7 +29,6 @@
 #include <iostream>
 
 #include "TestOptions.h"
-#include "qpid/QpidError.h"
 #include "qpid/client/Channel.h"
 #include "qpid/client/Connection.h"
 #include "qpid/client/Message.h"

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/echo_service.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/echo_service.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/echo_service.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/echo_service.cpp Fri Oct 26 
12:48:31 2007
@@ -27,7 +27,6 @@
  * sender-specified private queue.
  */
 
-#include "qpid/QpidError.h"
 #include "qpid/client/Channel.h"
 #include "qpid/client/Connection.h"
 #include "qpid/client/Exchange.h"

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/exception_test.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/exception_test.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/exception_test.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/exception_test.cpp Fri Oct 26 
12:48:31 2007
@@ -22,7 +22,6 @@
 #include <iostream>
 
 #include "TestOptions.h"
-#include "qpid/QpidError.h"
 #include "qpid/client/Channel.h"
 #include "qpid/client/Connection.h"
 #include "qpid/client/Message.h"

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/interop_runner.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/interop_runner.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/interop_runner.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/interop_runner.cpp Fri Oct 26 
12:48:31 2007
@@ -21,7 +21,6 @@
 
 #include "qpid/Options.h"
 #include "qpid/Exception.h"
-#include "qpid/QpidError.h"
 #include "qpid/client/Channel.h"
 #include "qpid/client/Connection.h"
 #include "qpid/client/Exchange.h"

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/logging.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/logging.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/logging.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/logging.cpp Fri Oct 26 12:48:31 2007
@@ -71,22 +71,18 @@
     BOOST_CHECK(s.isEnabled(critical, "oops"));
 }
 
-Logger& clearLogger() {
-    Logger::instance().clear();
-    return Logger::instance();
-}
-
 BOOST_AUTO_TEST_CASE(testStatementEnabled) {
-    // Verify that the logger enables and disables log statements.
-    Logger& l=clearLogger();
+    // Verify that the singleton enables and disables static
+    // log statements.
+    Logger& l = Logger::instance();
     l.select(Selector(debug));
-    Statement s=QPID_LOG_STATEMENT_INIT(debug);
+    static Statement s=QPID_LOG_STATEMENT_INIT(debug);
     BOOST_CHECK(!s.enabled);
-    Statement::Initializer init(s);
+    static Statement::Initializer init(s);
     BOOST_CHECK(s.enabled);
 
-    Statement s2=QPID_LOG_STATEMENT_INIT(warning);
-    Statement::Initializer init2(s2);
+    static Statement s2=QPID_LOG_STATEMENT_INIT(warning);
+    static Statement::Initializer init2(s2);
     BOOST_CHECK(!s2.enabled);
 
     l.select(Selector(warning));
@@ -98,9 +94,10 @@
     vector<string> msg;
     vector<Statement> stmt;
 
-    TestOutput() {
-        Logger::instance().output(qpid::make_auto_ptr<Logger::Output>(this));
+    TestOutput(Logger& l) {
+        l.output(std::auto_ptr<Logger::Output>(this));
     }
+                 
     void log(const Statement& s, const string& m) {
         msg.push_back(m);
         stmt.push_back(s);
@@ -111,10 +108,12 @@
 using boost::assign::list_of;
 
 BOOST_AUTO_TEST_CASE(testLoggerOutput) {
-    Logger& l=clearLogger();
+    Logger l;
+    l.clear();
     l.select(Selector(debug));
     Statement s=QPID_LOG_STATEMENT_INIT(debug);
-    TestOutput* out=new TestOutput();
+
+    TestOutput* out=new TestOutput(l);
 
     // Verify message is output.
     l.log(s, "foo");
@@ -122,7 +121,7 @@
     BOOST_CHECK_EQUAL(expect, out->msg);
 
     // Verify multiple outputs
-    TestOutput* out2=new TestOutput();
+    TestOutput* out2=new TestOutput(l);
     l.log(Statement(), "baz");
     expect.push_back("baz\n");
     BOOST_CHECK_EQUAL(expect, out->msg);
@@ -131,9 +130,10 @@
 }
 
 BOOST_AUTO_TEST_CASE(testMacro) {
-    Logger& l = clearLogger();
+    Logger& l=Logger::instance();
+    l.clear();
     l.select(Selector(info));
-    TestOutput* out=new TestOutput();
+    TestOutput* out=new TestOutput(l);
     QPID_LOG(info, "foo");
     vector<string> expect=list_of("foo\n");
     BOOST_CHECK_EQUAL(expect, out->msg);
@@ -150,9 +150,9 @@
 }
 
 BOOST_AUTO_TEST_CASE(testLoggerFormat) {
-    Logger& l=clearLogger();
+    Logger& l = Logger::instance();
     l.select(Selector(critical));
-    TestOutput* out=new TestOutput();
+    TestOutput* out=new TestOutput(l);
 
     // Time format is YYY-Month-dd hh:mm:ss
     l.format(Logger::TIME);
@@ -183,7 +183,8 @@
 }
 
 BOOST_AUTO_TEST_CASE(testOstreamOutput) {
-    Logger& l=clearLogger();
+    Logger& l=Logger::instance();
+    l.clear();
     l.select(Selector(error));
     ostringstream os;
     l.output(os);
@@ -191,12 +192,12 @@
     QPID_LOG(error, "bar");
     QPID_LOG(error, "baz");
     BOOST_CHECK_EQUAL("foo\nbar\nbaz\n", os.str());
-    l.clear();
 }
 
 #if 0 // This test requires manual intervention. Normally disabled.
 BOOST_AUTO_TEST_CASE(testSyslogOutput) {
-    Logger& l = clearLogger();
+    Logger& l=Logger::instance();
+    l.clear();
     l.select(Selector(info));
     l.syslog("qpid_test");
     QPID_LOG(info, "Testing QPID");
@@ -312,7 +313,7 @@
 }
 
 BOOST_AUTO_TEST_CASE(testOptionsFormat) {
-    Logger& l = clearLogger();
+    Logger l;
     {
         Options opts;
         BOOST_CHECK_EQUAL(Logger::TIME|Logger::LEVEL, l.format(opts));
@@ -344,7 +345,8 @@
 }
 
 BOOST_AUTO_TEST_CASE(testLoggerConfigure) {
-    Logger& l = clearLogger();
+    Logger& l=Logger::instance();
+    l.clear();
     Options opts;
     char* argv[]={
         0,

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/perftest.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/perftest.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/perftest.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/perftest.cpp Fri Oct 26 12:48:31 
2007
@@ -27,7 +27,6 @@
 #include "qpid/client/Connection.h"
 #include "qpid/client/MessageListener.h"
 #include "qpid/client/Message.h"
-#include "qpid/QpidError.h"
 #include "qpid/sys/Monitor.h"
 #include "qpid/sys/Time.h"
 

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/run-unit-tests
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/run-unit-tests?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/run-unit-tests (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/run-unit-tests Fri Oct 26 12:48:31 
2007
@@ -24,5 +24,5 @@
 test -z "$srcdir" && srcdir=.
 
 # libdlclose_noop prevents unloading symbols needed for valgrind output.
-LD_PRELOAD=.libs/libdlclose_noop.so exec $srcdir/test_env DllPlugInTester -c 
-b $TEST_ARGS
-
+export LD_PRELOAD=.libs/libdlclose_noop.so
+source $srcdir/run_test DllPlugInTester -c -b $TEST_ARGS

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/topic_listener.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/topic_listener.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/topic_listener.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/topic_listener.cpp Fri Oct 26 
12:48:31 2007
@@ -32,7 +32,6 @@
  * listening).
  */
 
-#include "qpid/QpidError.h"
 #include "TestOptions.h"
 #include "qpid/client/Channel.h"
 #include "qpid/client/Connection.h"

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/topic_publisher.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/topic_publisher.cpp?rev=588761&r1=588760&r2=588761&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/topic_publisher.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/topic_publisher.cpp Fri Oct 26 
12:48:31 2007
@@ -35,7 +35,6 @@
  */
 
 #include "TestOptions.h"
-#include "qpid/QpidError.h"
 #include "qpid/client/Channel.h"
 #include "qpid/client/Connection.h"
 #include "qpid/client/Exchange.h"


Reply via email to