You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ts...@apache.org on 2020/02/16 18:44:56 UTC

[logging-log4cxx] 02/05: Resolve conflicts with ghpr_14_replace-ant-build-with-cmake

This is an automated email from the ASF dual-hosted git repository.

tschoening pushed a commit to branch ghpr_14_replace-ant-build-with-cmake
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git

commit 0021dfb11c03b2e30a5748541fe49e5b56643c12
Merge: 6c798a2 6105320
Author: Stephen Webb <st...@sabreautonomous.com.au>
AuthorDate: Sat Feb 15 17:05:04 2020 +1100

    Resolve conflicts with ghpr_14_replace-ant-build-with-cmake

 .astylerc                                          |    1 +
 CMakeLists.txt                                     |   41 +
 pom.xml                                            |  110 +-
 src/changes/changes.xml                            |    2 +-
 src/site/apt/building/cmake.apt                    |    2 +
 src/test/cpp/abts.cpp                              |  834 +++++++------
 src/test/cpp/abts.h                                |   75 +-
 src/test/cpp/appenderskeletontestcase.cpp          |   20 +-
 src/test/cpp/appenderskeletontestcase.h            |    6 +-
 src/test/cpp/asyncappendertestcase.cpp             |  115 +-
 src/test/cpp/consoleappendertestcase.cpp           |   52 +-
 src/test/cpp/customlogger/xlogger.cpp              |   82 +-
 src/test/cpp/customlogger/xlogger.h                |  184 +--
 src/test/cpp/customlogger/xloggertestcase.cpp      |   86 +-
 src/test/cpp/db/odbcappendertestcase.cpp           |   23 +-
 src/test/cpp/decodingtest.cpp                      |  178 +--
 src/test/cpp/defaultinit/testcase1.cpp             |   44 +-
 src/test/cpp/defaultinit/testcase2.cpp             |   48 +-
 src/test/cpp/defaultinit/testcase3.cpp             |   54 +-
 src/test/cpp/defaultinit/testcase4.cpp             |   50 +-
 src/test/cpp/encodingtest.cpp                      |  298 ++---
 src/test/cpp/fileappendertest.cpp                  |   92 +-
 src/test/cpp/fileappendertestcase.cpp              |  153 +--
 src/test/cpp/fileappendertestcase.h                |    6 +-
 src/test/cpp/filetestcase.cpp                      |  263 +++--
 src/test/cpp/filter/andfiltertest.cpp              |  277 ++---
 src/test/cpp/filter/denyallfiltertest.cpp          |   42 +-
 src/test/cpp/filter/levelmatchfiltertest.cpp       |  184 +--
 src/test/cpp/filter/levelrangefiltertest.cpp       |  225 ++--
 src/test/cpp/filter/loggermatchfiltertest.cpp      |  147 +--
 src/test/cpp/filter/stringmatchfiltertest.cpp      |  186 +--
 .../cpp/helpers/absolutetimedateformattestcase.cpp |  276 ++---
 src/test/cpp/helpers/cacheddateformattestcase.cpp  | 1232 ++++++++++----------
 src/test/cpp/helpers/charsetdecodertestcase.cpp    |  101 +-
 src/test/cpp/helpers/charsetencodertestcase.cpp    |  532 +++++----
 src/test/cpp/helpers/cyclicbuffertestcase.cpp      |  261 +++--
 .../cpp/helpers/datetimedateformattestcase.cpp     |  327 +++---
 src/test/cpp/helpers/filewatchdogtest.cpp          |   65 +-
 src/test/cpp/helpers/inetaddresstestcase.cpp       |  109 +-
 src/test/cpp/helpers/iso8601dateformattestcase.cpp |  241 ++--
 src/test/cpp/helpers/localechanger.cpp             |   39 +-
 src/test/cpp/helpers/localechanger.h               |   70 +-
 src/test/cpp/helpers/messagebuffertest.cpp         |  292 ++---
 src/test/cpp/helpers/optionconvertertestcase.cpp   |  343 +++---
 src/test/cpp/helpers/propertiestestcase.cpp        |  449 +++----
 .../cpp/helpers/relativetimedateformattestcase.cpp |   82 +-
 src/test/cpp/helpers/stringhelpertestcase.cpp      |  182 +--
 src/test/cpp/helpers/stringtokenizertestcase.cpp   |  230 ++--
 src/test/cpp/helpers/syslogwritertest.cpp          |   23 +-
 src/test/cpp/helpers/threadtestcase.cpp            |   65 +-
 src/test/cpp/helpers/timezonetestcase.cpp          |  169 +--
 src/test/cpp/helpers/transcodertestcase.cpp        |  546 +++++----
 src/test/cpp/hierarchytest.cpp                     |   46 +-
 src/test/cpp/hierarchythresholdtestcase.cpp        |  174 +--
 src/test/cpp/insertwide.h                          |    4 +-
 src/test/cpp/jsonlayouttest.cpp                    |  146 +--
 src/test/cpp/l7dtestcase.cpp                       |  124 +-
 src/test/cpp/leveltestcase.cpp                     |  164 +--
 src/test/cpp/loggertestcase.cpp                    |  819 ++++++-------
 src/test/cpp/logunit.cpp                           |  346 +++---
 src/test/cpp/logunit.h                             |  403 ++++---
 src/test/cpp/mdctestcase.cpp                       |   46 +-
 src/test/cpp/minimumtestcase.cpp                   |  377 +++---
 src/test/cpp/ndctestcase.cpp                       |  138 +--
 src/test/cpp/net/smtpappendertestcase.cpp          |  153 +--
 src/test/cpp/net/socketappendertestcase.cpp        |   23 +-
 src/test/cpp/net/sockethubappendertestcase.cpp     |   85 +-
 src/test/cpp/net/socketserverstarter.cpp           |  294 +++--
 src/test/cpp/net/socketservertestcase.cpp          |  784 ++++++-------
 src/test/cpp/net/socketservertestcase.h            |    6 +-
 src/test/cpp/net/syslogappendertestcase.cpp        |   23 +-
 src/test/cpp/net/telnetappendertestcase.cpp        |   99 +-
 src/test/cpp/net/xmlsocketappendertestcase.cpp     |   23 +-
 src/test/cpp/nt/nteventlogappendertestcase.cpp     |  126 +-
 src/test/cpp/pattern/num343patternconverter.cpp    |   18 +-
 src/test/cpp/pattern/num343patternconverter.h      |   31 +-
 src/test/cpp/pattern/patternparsertestcase.cpp     |  340 +++---
 src/test/cpp/patternlayouttest.cpp                 |  925 +++++++--------
 src/test/cpp/propertyconfiguratortest.cpp          |  103 +-
 src/test/cpp/rolling/filenamepatterntestcase.cpp   |  303 ++---
 src/test/cpp/rolling/filterbasedrollingtest.cpp    |  196 ++--
 src/test/cpp/rolling/manualrollingtest.cpp         |  508 ++++----
 .../obsoletedailyrollingfileappendertest.cpp       |  166 +--
 .../rolling/obsoleterollingfileappendertest.cpp    |  216 ++--
 src/test/cpp/rolling/sizebasedrollingtest.cpp      |  616 +++++-----
 src/test/cpp/rolling/timebasedrollingtest.cpp      |  258 ++--
 src/test/cpp/rollingfileappendertestcase.cpp       |   23 +-
 src/test/cpp/spi/loggingeventtest.cpp              |  165 +--
 src/test/cpp/streamtestcase.cpp                    | 1109 +++++++++---------
 src/test/cpp/testchar.h                            |    8 +-
 src/test/cpp/util/absolutedateandtimefilter.cpp    |    2 +-
 src/test/cpp/util/absolutedateandtimefilter.h      |   10 +-
 src/test/cpp/util/absolutetimefilter.cpp           |    2 +-
 src/test/cpp/util/absolutetimefilter.h             |   10 +-
 src/test/cpp/util/binarycompare.cpp                |  107 +-
 src/test/cpp/util/binarycompare.h                  |   27 +-
 src/test/cpp/util/compare.cpp                      |  273 +++--
 src/test/cpp/util/compare.h                        |   35 +-
 src/test/cpp/util/controlfilter.cpp                |    2 +-
 src/test/cpp/util/controlfilter.h                  |   12 +-
 src/test/cpp/util/filenamefilter.cpp               |   33 +-
 src/test/cpp/util/filenamefilter.h                 |   12 +-
 src/test/cpp/util/filter.h                         |   48 +-
 src/test/cpp/util/iso8601filter.h                  |   10 +-
 src/test/cpp/util/linenumberfilter.cpp             |    4 +-
 src/test/cpp/util/linenumberfilter.h               |   10 +-
 src/test/cpp/util/relativetimefilter.cpp           |    4 +-
 src/test/cpp/util/relativetimefilter.h             |   10 +-
 src/test/cpp/util/serializationtesthelper.cpp      |   87 +-
 src/test/cpp/util/serializationtesthelper.h        |   32 +-
 src/test/cpp/util/threadfilter.h                   |   10 +-
 src/test/cpp/util/transformer.cpp                  |  360 +++---
 src/test/cpp/util/transformer.h                    |   50 +-
 src/test/cpp/util/utilfilter.cpp                   |    7 +-
 src/test/cpp/util/xmlfilenamefilter.cpp            |   13 +-
 src/test/cpp/util/xmlfilenamefilter.h              |   10 +-
 src/test/cpp/util/xmllineattributefilter.cpp       |    5 +-
 src/test/cpp/util/xmllineattributefilter.h         |   10 +-
 src/test/cpp/util/xmlthreadfilter.cpp              |    3 +-
 src/test/cpp/util/xmlthreadfilter.h                |   10 +-
 src/test/cpp/util/xmltimestampfilter.cpp           |    2 +-
 src/test/cpp/util/xmltimestampfilter.h             |   10 +-
 src/test/cpp/varia/errorhandlertestcase.cpp        |  154 +--
 src/test/cpp/varia/levelmatchfiltertestcase.cpp    |  225 ++--
 src/test/cpp/varia/levelrangefiltertestcase.cpp    |  412 +++----
 src/test/cpp/vectorappender.cpp                    |   26 +-
 src/test/cpp/vectorappender.h                      |   72 +-
 src/test/cpp/writerappendertestcase.cpp            |    5 +-
 src/test/cpp/writerappendertestcase.h              |    6 +-
 src/test/cpp/xml/customleveltestcase.cpp           |  152 +--
 src/test/cpp/xml/domtestcase.cpp                   |  302 ++---
 src/test/cpp/xml/xlevel.cpp                        |   71 +-
 src/test/cpp/xml/xlevel.h                          |   70 +-
 src/test/cpp/xml/xmllayouttest.cpp                 |  745 ++++++------
 src/test/cpp/xml/xmllayouttestcase.cpp             |  548 ++++-----
 src/test/resources/input/socketServer2.properties  |    2 +-
 src/test/resources/input/socketServer3.properties  |    2 +-
 src/test/resources/witness/socketServer.2          |    6 +-
 src/test/resources/witness/socketServer.3          |    6 +-
 139 files changed, 12012 insertions(+), 10914 deletions(-)

diff --cc src/test/cpp/asyncappendertestcase.cpp
index 3e2533d,d2b4b41..6661e4f
--- a/src/test/cpp/asyncappendertestcase.cpp
+++ b/src/test/cpp/asyncappendertestcase.cpp
@@@ -102,187 -113,202 +113,187 @@@ typedef helpers::ObjectPtrT<BlockableVe
   */
  class AsyncAppenderTestCase : public AppenderSkeletonTestCase
  {
 -		LOGUNIT_TEST_SUITE(AsyncAppenderTestCase);
 -		//
 -		//    tests inherited from AppenderSkeletonTestCase
 -		//
 -		LOGUNIT_TEST(testDefaultThreshold);
 -		LOGUNIT_TEST(testSetOptionThreshold);
 -
 -		LOGUNIT_TEST(closeTest);
 -		LOGUNIT_TEST(test2);
 -		LOGUNIT_TEST(test3);
 -		//
 -		//   TODO: test fails on Linux.
 -		//LOGUNIT_TEST(testBadAppender);
 -		LOGUNIT_TEST(testLocationInfoTrue);
 -		LOGUNIT_TEST(testConfiguration);
 -		LOGUNIT_TEST_SUITE_END();
 -
 -
 -	public:
 -		void setUp()
 -		{
 -			AppenderSkeletonTestCase::setUp();
 -		}
 -
 -		void tearDown()
 -		{
 -			LogManager::shutdown();
 -			AppenderSkeletonTestCase::tearDown();
 -		}
 -
 -		AppenderSkeleton* createAppenderSkeleton() const
 -		{
 -			return new AsyncAppender();
 -		}
 -
 -		// this test checks whether it is possible to write to a closed AsyncAppender
 -		void closeTest()
 -		{
 -			LoggerPtr root = Logger::getRootLogger();
 -			LayoutPtr layout = new SimpleLayout();
 -			VectorAppenderPtr vectorAppender = new VectorAppender();
 -			AsyncAppenderPtr asyncAppender = new AsyncAppender();
 -			asyncAppender->setName(LOG4CXX_STR("async-CloseTest"));
 -			asyncAppender->addAppender(vectorAppender);
 -			root->addAppender(asyncAppender);
 -
 -			root->debug(LOG4CXX_TEST_STR("m1"));
 -			asyncAppender->close();
 -			root->debug(LOG4CXX_TEST_STR("m2"));
 -
 -			const std::vector<spi::LoggingEventPtr>& v = vectorAppender->getVector();
 -			LOGUNIT_ASSERT_EQUAL((size_t) 1, v.size());
 -		}
 -
 -		// this test checks whether appenders embedded within an AsyncAppender are also
 -		// closed
 -		void test2()
 -		{
 -			LoggerPtr root = Logger::getRootLogger();
 -			LayoutPtr layout = new SimpleLayout();
 -			VectorAppenderPtr vectorAppender = new VectorAppender();
 -			AsyncAppenderPtr asyncAppender = new AsyncAppender();
 -			asyncAppender->setName(LOG4CXX_STR("async-test2"));
 -			asyncAppender->addAppender(vectorAppender);
 -			root->addAppender(asyncAppender);
 -
 -			root->debug(LOG4CXX_TEST_STR("m1"));
 -			asyncAppender->close();
 -			root->debug(LOG4CXX_TEST_STR("m2"));
 -
 -			const std::vector<spi::LoggingEventPtr>& v = vectorAppender->getVector();
 -			LOGUNIT_ASSERT_EQUAL((size_t) 1, v.size());
 -			LOGUNIT_ASSERT(vectorAppender->isClosed());
 -		}
 -
 -		// this test checks whether appenders embedded within an AsyncAppender are also
 -		// closed
 -		void test3()
 -		{
 -			size_t LEN = 200;
 -			LoggerPtr root = Logger::getRootLogger();
 -			VectorAppenderPtr vectorAppender = new VectorAppender();
 -			AsyncAppenderPtr asyncAppender = new AsyncAppender();
 -			asyncAppender->setName(LOG4CXX_STR("async-test3"));
 -			asyncAppender->addAppender(vectorAppender);
 -			root->addAppender(asyncAppender);
 -
 -			for (size_t i = 0; i < LEN; i++)
 -			{
 -				LOG4CXX_DEBUG(root, "message" << i);
 -			}
 -
 -			asyncAppender->close();
 -			root->debug(LOG4CXX_TEST_STR("m2"));
 -
 -			const std::vector<spi::LoggingEventPtr>& v = vectorAppender->getVector();
 -			LOGUNIT_ASSERT_EQUAL(LEN, v.size());
 -			LOGUNIT_ASSERT_EQUAL(true, vectorAppender->isClosed());
 -		}
 -
 -		/**
 -		 * Tests that a bad appender will switch async back to sync.
 -		 */
 -		void testBadAppender()
 -		{
 -			AppenderPtr nullPointerAppender = new NullPointerAppender();
 -			AsyncAppenderPtr asyncAppender = new AsyncAppender();
 -			asyncAppender->addAppender(nullPointerAppender);
 -			asyncAppender->setBufferSize(5);
 -			Pool p;
 -			asyncAppender->activateOptions(p);
 -			LoggerPtr root = Logger::getRootLogger();
 -			root->addAppender(asyncAppender);
 -			LOG4CXX_INFO(root, "Message");
 -			Thread::sleep(10);
 -
 -			try
 -			{
 -				LOG4CXX_INFO(root, "Message");
 -				LOGUNIT_FAIL("Should have thrown exception");
 -			}
 -			catch (NullPointerException& ex)
 -			{
 -			}
 -		}
 -
 -		/**
 -		 * Tests non-blocking behavior.
 -		 */
 -		void testLocationInfoTrue()
 -		{
 -			BlockableVectorAppenderPtr blockableAppender = new BlockableVectorAppender();
 -			AsyncAppenderPtr async = new AsyncAppender();
 -			async->addAppender(blockableAppender);
 -			async->setBufferSize(5);
 -			async->setLocationInfo(true);
 -			async->setBlocking(false);
 -			Pool p;
 -			async->activateOptions(p);
 -			LoggerPtr rootLogger = Logger::getRootLogger();
 -			rootLogger->addAppender(async);
 -			{
 -				synchronized sync(blockableAppender->getBlocker());
 -
 -				for (int i = 0; i < 140; i++)
 -				{
 -					LOG4CXX_INFO(rootLogger, "Hello, World");
 -					Thread::sleep(1);
 -				}
 -
 -				LOG4CXX_ERROR(rootLogger, "That's all folks.");
 -			}
 -			async->close();
 -			const std::vector<spi::LoggingEventPtr>& events = blockableAppender->getVector();
 -			LOGUNIT_ASSERT(events.size() > 0);
 -			LoggingEventPtr initialEvent = events[0];
 -			LoggingEventPtr discardEvent = events[events.size() - 1];
 -			LOGUNIT_ASSERT(initialEvent->getMessage() == LOG4CXX_STR("Hello, World"));
 -			LOGUNIT_ASSERT(discardEvent->getMessage().substr(0, 10) == LOG4CXX_STR("Discarded "));
 -			LOGUNIT_ASSERT_EQUAL(log4cxx::spi::LocationInfo::getLocationUnavailable().getClassName(),
 -				discardEvent->getLocationInformation().getClassName());
 -		}
 -
 -		void testConfiguration()
 -		{
 -			log4cxx::xml::DOMConfigurator::configure("input/xml/asyncAppender1.xml");
 -			AsyncAppenderPtr asyncAppender(Logger::getRootLogger()->getAppender(LOG4CXX_STR("ASYNC")));
 -			LOGUNIT_ASSERT(!(asyncAppender == 0));
 -			LOGUNIT_ASSERT_EQUAL(100, asyncAppender->getBufferSize());
 -			LOGUNIT_ASSERT_EQUAL(false, asyncAppender->getBlocking());
 -			LOGUNIT_ASSERT_EQUAL(true, asyncAppender->getLocationInfo());
 -			AppenderList nestedAppenders(asyncAppender->getAllAppenders());
 -			//   TODO:
 -			//   test seems to work okay, but have not found a working way to
 -			//      get a reference to the nested vector appender
 -			//
 -			//              LOGUNIT_ASSERT_EQUAL((size_t) 1, nestedAppenders.size());
 -			//              VectorAppenderPtr vectorAppender(nestedAppenders[0]);
 -			//              LOGUNIT_ASSERT(0 != vectorAppender);
 -			LoggerPtr root(Logger::getRootLogger());
 -
 -			size_t LEN = 20;
 -
 -			for (size_t i = 0; i < LEN; i++)
 -			{
 -				LOG4CXX_DEBUG(root, "message" << i);
 -			}
 -
 -			asyncAppender->close();
 -			//              const std::vector<spi::LoggingEventPtr>& v = vectorAppender->getVector();
 -			//              LOGUNIT_ASSERT_EQUAL(LEN, v.size());
 -			//              LOGUNIT_ASSERT_EQUAL(true, vectorAppender->isClosed());
 -		}
 -
 -
 -};
 +        LOGUNIT_TEST_SUITE(AsyncAppenderTestCase);
 +                //
 +                //    tests inherited from AppenderSkeletonTestCase
 +                //
 +                LOGUNIT_TEST(testDefaultThreshold);
 +                LOGUNIT_TEST(testSetOptionThreshold);
 +
 +                LOGUNIT_TEST(closeTest);
 +                LOGUNIT_TEST(test2);
 +                LOGUNIT_TEST(test3);
 +                //
 +                //   TODO: test fails on Linux.
 +                //LOGUNIT_TEST(testBadAppender);
 +                LOGUNIT_TEST(testLocationInfoTrue);
 +                LOGUNIT_TEST(testConfiguration);
 +        LOGUNIT_TEST_SUITE_END();
 +
 +
 +public:
 +        void setUp() {
 +           AppenderSkeletonTestCase::setUp();
 +        }
 +
 +        void tearDown()
 +        {
 +                LogManager::shutdown();
 +                AppenderSkeletonTestCase::tearDown();
 +        }
 +
 +        AppenderSkeleton* createAppenderSkeleton() const {
 +          return new AsyncAppender();
 +        }
 +
 +        // this test checks whether it is possible to write to a closed AsyncAppender
 +        void closeTest() 
 +        {
 +                LoggerPtr root = Logger::getRootLogger();
 +                LayoutPtr layout = new SimpleLayout();
 +                VectorAppenderPtr vectorAppender = new VectorAppender();
 +                AsyncAppenderPtr asyncAppender = new AsyncAppender();
 +                asyncAppender->setName(LOG4CXX_STR("async-CloseTest"));
 +                asyncAppender->addAppender(vectorAppender);
 +                root->addAppender(asyncAppender);
 +
 +                root->debug(LOG4CXX_TEST_STR("m1"));
 +                asyncAppender->close();
 +                root->debug(LOG4CXX_TEST_STR("m2"));
 +
 +                const std::vector<spi::LoggingEventPtr>& v = vectorAppender->getVector();
 +                LOGUNIT_ASSERT_EQUAL((size_t) 1, v.size());
 +        }
 +
 +        // this test checks whether appenders embedded within an AsyncAppender are also
 +        // closed
 +        void test2()
 +        {
 +                LoggerPtr root = Logger::getRootLogger();
 +                LayoutPtr layout = new SimpleLayout();
 +                VectorAppenderPtr vectorAppender = new VectorAppender();
 +                AsyncAppenderPtr asyncAppender = new AsyncAppender();
 +                asyncAppender->setName(LOG4CXX_STR("async-test2"));
 +                asyncAppender->addAppender(vectorAppender);
 +                root->addAppender(asyncAppender);
 +
 +                root->debug(LOG4CXX_TEST_STR("m1"));
 +                asyncAppender->close();
 +                root->debug(LOG4CXX_TEST_STR("m2"));
 +
 +                const std::vector<spi::LoggingEventPtr>& v = vectorAppender->getVector();
 +                LOGUNIT_ASSERT_EQUAL((size_t) 1, v.size());
 +                LOGUNIT_ASSERT(vectorAppender->isClosed());
 +        }
 +
 +        // this test checks whether appenders embedded within an AsyncAppender are also
 +        // closed
 +        void test3()
 +        {
 +                size_t LEN = 200;
 +                LoggerPtr root = Logger::getRootLogger();
 +                VectorAppenderPtr vectorAppender = new VectorAppender();
 +                AsyncAppenderPtr asyncAppender = new AsyncAppender();
 +                asyncAppender->setName(LOG4CXX_STR("async-test3"));
 +                asyncAppender->addAppender(vectorAppender);
 +                root->addAppender(asyncAppender);
 +
 +                for (size_t i = 0; i < LEN; i++) {
 +                        LOG4CXX_DEBUG(root, "message" << i);
 +                }
 +
 +                asyncAppender->close();
 +                root->debug(LOG4CXX_TEST_STR("m2"));
 +
 +                const std::vector<spi::LoggingEventPtr>& v = vectorAppender->getVector();
 +                LOGUNIT_ASSERT_EQUAL(LEN, v.size());
 +                LOGUNIT_ASSERT_EQUAL(true, vectorAppender->isClosed());
 +        }
 +        
 +    /**
 +     * Tests that a bad appender will switch async back to sync.
 +     */
 +    void testBadAppender() {
 +        AppenderPtr nullPointerAppender = new NullPointerAppender();
 +        AsyncAppenderPtr asyncAppender = new AsyncAppender();
 +        asyncAppender->addAppender(nullPointerAppender);
 +        asyncAppender->setBufferSize(5);
 +        Pool p;
 +        asyncAppender->activateOptions(p);
 +        LoggerPtr root = Logger::getRootLogger();
 +        root->addAppender(asyncAppender);
 +        LOG4CXX_INFO(root, "Message");
 +        Thread::sleep(10);
 +        try {
 +           LOG4CXX_INFO(root, "Message");
 +           LOGUNIT_FAIL("Should have thrown exception");
 +        } catch(NullPointerException&) {
 +        }
 +    }
 +    
 +    /**
 +     * Tests non-blocking behavior.
 +     */
 +    void testLocationInfoTrue() {
 +        BlockableVectorAppenderPtr blockableAppender = new BlockableVectorAppender();
 +        AsyncAppenderPtr async = new AsyncAppender();
 +        async->addAppender(blockableAppender);
 +        async->setBufferSize(5);
 +        async->setLocationInfo(true);
 +        async->setBlocking(false);
 +        Pool p;
 +        async->activateOptions(p);
 +        LoggerPtr rootLogger = Logger::getRootLogger();
 +        rootLogger->addAppender(async);
 +        {
 +            synchronized sync(blockableAppender->getBlocker());
 +            for (int i = 0; i < 140; i++) {
 +                   LOG4CXX_INFO(rootLogger, "Hello, World");
 +                   Thread::sleep(1);
 +            }
 +            LOG4CXX_ERROR(rootLogger, "That's all folks.");
 +        }
 +        async->close();
 +        const std::vector<spi::LoggingEventPtr>& events = blockableAppender->getVector();
 +        LOGUNIT_ASSERT(events.size() > 0);
 +        LoggingEventPtr initialEvent = events[0];
 +        LoggingEventPtr discardEvent = events[events.size() - 1];
 +        LOGUNIT_ASSERT(initialEvent->getMessage() == LOG4CXX_STR("Hello, World"));
 +        LOGUNIT_ASSERT(discardEvent->getMessage().substr(0,10) == LOG4CXX_STR("Discarded "));
 +        LOGUNIT_ASSERT_EQUAL(log4cxx::spi::LocationInfo::getLocationUnavailable().getClassName(), 
 +            discardEvent->getLocationInformation().getClassName()); 
 +    }
 +    
 +        void testConfiguration() {
 +              log4cxx::xml::DOMConfigurator::configure("input/xml/asyncAppender1.xml");
 +              AsyncAppenderPtr asyncAppender(Logger::getRootLogger()->getAppender(LOG4CXX_STR("ASYNC")));
 +              LOGUNIT_ASSERT(!(asyncAppender == 0));
 +              LOGUNIT_ASSERT_EQUAL(100, asyncAppender->getBufferSize());
 +              LOGUNIT_ASSERT_EQUAL(false, asyncAppender->getBlocking());
 +              LOGUNIT_ASSERT_EQUAL(true, asyncAppender->getLocationInfo());
 +              AppenderList nestedAppenders(asyncAppender->getAllAppenders());
 +              //   TODO:
 +              //   test seems to work okay, but have not found a working way to 
 +              //      get a reference to the nested vector appender 
 +              //
 +//              LOGUNIT_ASSERT_EQUAL((size_t) 1, nestedAppenders.size());
 +//              VectorAppenderPtr vectorAppender(nestedAppenders[0]);
 +//              LOGUNIT_ASSERT(0 != vectorAppender);
 +              LoggerPtr root(Logger::getRootLogger()); 
 +              
 +              size_t LEN = 20;
 +              for (size_t i = 0; i < LEN; i++) {
 +                        LOG4CXX_DEBUG(root, "message" << i);
 +              }
 +              
 +              asyncAppender->close();
 +//              const std::vector<spi::LoggingEventPtr>& v = vectorAppender->getVector();
 +//              LOGUNIT_ASSERT_EQUAL(LEN, v.size());
 +//              LOGUNIT_ASSERT_EQUAL(true, vectorAppender->isClosed());
 +        }
 +
-         
- };
++
++};        
  
  LOGUNIT_TEST_SUITE_REGISTRATION(AsyncAppenderTestCase);
  #endif
diff --cc src/test/cpp/util/serializationtesthelper.cpp
index a14343f,b495499..6c82e91
--- a/src/test/cpp/util/serializationtesthelper.cpp
+++ b/src/test/cpp/util/serializationtesthelper.cpp
@@@ -31,51 -31,58 +31,58 @@@ using namespace log4cxx::spi
  
  
  bool SerializationTestHelper::compare(
-     const char* witness, const LoggingEventPtr& event, size_t endCompare)  {
-     ByteArrayOutputStreamPtr memOut = new ByteArrayOutputStream();
-     Pool p;
-     ObjectOutputStream objOut(memOut, p);
-     event->write(objOut, p);
-     objOut.close(p);
-     return compare(witness, memOut->toByteArray(), endCompare, p);
-   }
+ 	const char* witness, const LoggingEventPtr& event, size_t endCompare)
+ {
+ 	ByteArrayOutputStreamPtr memOut = new ByteArrayOutputStream();
+ 	Pool p;
+ 	ObjectOutputStream objOut(memOut, p);
+ 	event->write(objOut, p);
+ 	objOut.close(p);
+ 	return compare(witness, memOut->toByteArray(), endCompare, p);
+ }
  
-   /**
-    * Asserts the serialized form of an object.
-    * @param witness file name of expected serialization.
-    * @param actual byte array of actual serialization.
-    * @param skip positions to skip comparison.
-    * @param endCompare position to stop comparison.
-    * @throws IOException thrown on IO or serialization exception.
-    */
+ /**
+  * Asserts the serialized form of an object.
+  * @param witness file name of expected serialization.
+  * @param actual byte array of actual serialization.
+  * @param skip positions to skip comparison.
+  * @param endCompare position to stop comparison.
+  * @throws IOException thrown on IO or serialization exception.
+  */
  bool SerializationTestHelper::compare(
-     const char* witness, const std::vector<unsigned char>& actual, 
-     size_t endCompare, Pool& p) {
-     File witnessFile(witness);
+ 	const char* witness, const std::vector<unsigned char>& actual,
+ 	size_t endCompare, Pool& p)
+ {
+ 	File witnessFile(witness);
+ 
+ 	char* expected = p.pstralloc(actual.size());
+ 	FileInputStreamPtr is(new FileInputStream(witnessFile));
+ 	ByteBuffer readBuffer(expected, actual.size());
+ 	int bytesRead = is->read(readBuffer);
+ 	is->close();
+ 
+ 	if (bytesRead < endCompare)
+ 	{
+ 		puts("Witness file is shorter than expected");
+ 		return false;
+ 	}
  
-       char* expected = p.pstralloc(actual.size());
-       FileInputStreamPtr is(new FileInputStream(witnessFile));
-       ByteBuffer readBuffer(expected, actual.size());
-       int bytesRead = is->read(readBuffer);
-       is->close();
 -	int endScan = actual.size();
++	size_t endScan = actual.size();
  
-       if(bytesRead < endCompare) {
-           puts("Witness file is shorter than expected");
-           return false;
-       }
+ 	if (endScan > endCompare)
+ 	{
+ 		endScan = endCompare;
+ 	}
  
-       size_t endScan = actual.size();
 -	for (int i = 0; i < endScan; i++)
++	for (size_t i = 0; i < endScan; i++)
+ 	{
+ 		if (((unsigned char) expected[i]) != actual[i])
+ 		{
+ 			printf("Difference at offset %d, expected %x, actual %x\n", i, expected[i], actual[i]);
+ 			return false;
+ 		}
+ 	}
  
-       if (endScan > endCompare) {
-         endScan = endCompare;
-       }
+ 	return true;
  
-       for (int i = 0; i < endScan; i++) {
-           if (((unsigned char) expected[i]) != actual[i]) {
-             printf("Difference at offset %d, expected %x, actual %x\n", i, expected[i], actual[i]);
-             return false;
-           }
-         }
-     return true;
-   
  }