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

tschoening pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git


The following commit(s) were added to refs/heads/master by this push:
     new 56e18c79 Revert "LOGCXX-527: mock the clock for tests"
56e18c79 is described below

commit 56e18c79c6bb16e706d2f5d855db4d7d6189912d
Author: Thorsten Schöning <[email protected]>
AuthorDate: Fri Aug 19 20:45:16 2022 +0200

    Revert "LOGCXX-527: mock the clock for tests"
    
    This reverts commit b5db5f0ab56955b2b89c2ed2364c048a3514b9c3.
---
 src/examples/cpp/delayedloop.cpp                   |   1 -
 src/main/cpp/aprinitializer.cpp                    |   3 +-
 src/main/cpp/date.cpp                              |  25 +-
 src/main/cpp/filewatchdog.cpp                      |   1 +
 src/main/cpp/hierarchy.cpp                         |   1 -
 src/main/cpp/htmllayout.cpp                        |   4 +-
 src/main/cpp/loggingevent.cpp                      |   4 +-
 src/main/cpp/propertyconfigurator.cpp              |   1 -
 src/main/cpp/timebasedrollingpolicy.cpp            |  21 +-
 src/main/include/log4cxx/helpers/aprinitializer.h  |   5 +-
 src/main/include/log4cxx/helpers/date.h            |  22 +-
 .../log4cxx/rolling/timebasedrollingpolicy.h       |   1 -
 src/test/cpp/rolling/timebasedrollingtest.cpp      | 474 ++++++++++-----------
 src/test/resources/witness/rolling/tbr-test4.0     |   1 -
 src/test/resources/witness/rolling/tbr-test4.3     |   1 -
 src/test/resources/witness/rolling/tbr-test5.0     |   1 -
 src/test/resources/witness/rolling/tbr-test5.3     |   1 -
 src/test/resources/witness/rolling/tbr-test6.0     |   1 -
 .../witness/rolling/{tbr-test4.3 => tbr-test6.3}   |   1 -
 19 files changed, 259 insertions(+), 310 deletions(-)

diff --git a/src/examples/cpp/delayedloop.cpp b/src/examples/cpp/delayedloop.cpp
index d1768135..194473a8 100644
--- a/src/examples/cpp/delayedloop.cpp
+++ b/src/examples/cpp/delayedloop.cpp
@@ -20,7 +20,6 @@
 #include <log4cxx/propertyconfigurator.h>
 #include <apr_general.h>
 #include <apr_time.h>
-#include <apr.h>
 #include <iostream>
 #include <log4cxx/stream.h>
 #include <exception>
diff --git a/src/main/cpp/aprinitializer.cpp b/src/main/cpp/aprinitializer.cpp
index cbaeb77d..0bd91d22 100644
--- a/src/main/cpp/aprinitializer.cpp
+++ b/src/main/cpp/aprinitializer.cpp
@@ -26,7 +26,6 @@
 #include <apr_thread_mutex.h>
 #include <apr_thread_proc.h>
 #include <log4cxx/helpers/filewatchdog.h>
-#include <log4cxx/helpers/date.h>
 
 using namespace log4cxx::helpers;
 using namespace log4cxx;
@@ -47,7 +46,7 @@ APRInitializer::APRInitializer() : p(0), startTime(0), 
tlsKey(0)
        apr_initialize();
        apr_pool_create(&p, NULL);
        apr_atomic_init(p);
-       startTime = Date::currentTime();
+       startTime = apr_time_now();
 #if APR_HAS_THREADS
        apr_status_t stat = apr_threadkey_private_create(&tlsKey, tlsDestruct, 
p);
        assert(stat == APR_SUCCESS);
diff --git a/src/main/cpp/date.cpp b/src/main/cpp/date.cpp
index 1fb3a836..a1ea7cec 100644
--- a/src/main/cpp/date.cpp
+++ b/src/main/cpp/date.cpp
@@ -17,7 +17,7 @@
 #include <log4cxx/logstring.h>
 #include <log4cxx/helpers/date.h>
 
-#define LOG4CXX_USEC_PER_SEC 1000000LL
+#include <apr_time.h>
 #ifndef INT64_C
        #define INT64_C(x) x ## LL
 #endif
@@ -27,10 +27,7 @@ using namespace log4cxx::helpers;
 
 IMPLEMENT_LOG4CXX_OBJECT(Date)
 
-
-Date::GetCurrentTimeFn Date::getCurrentTimeFn = Date::getCurrentTimeStd;
-
-Date::Date() : time(getCurrentTimeFn())
+Date::Date() : time(apr_time_now())
 {
 }
 
@@ -44,28 +41,16 @@ Date::~Date()
 
 log4cxx_time_t Date::getMicrosecondsPerDay()
 {
-       return 86400000000ull;
+       return APR_INT64_C(86400000000);
 }
 
 log4cxx_time_t Date::getMicrosecondsPerSecond()
 {
-       return LOG4CXX_USEC_PER_SEC;
+       return APR_USEC_PER_SEC;
 }
 
 
 log4cxx_time_t Date::getNextSecond() const
 {
-       return ((time / LOG4CXX_USEC_PER_SEC) + 1) * LOG4CXX_USEC_PER_SEC;
-}
-
-void Date::setGetCurrentTimeFunction(GetCurrentTimeFn fn){
-       getCurrentTimeFn = fn;
-}
-
-log4cxx_time_t Date::currentTime(){
-       return getCurrentTimeFn();
-}
-
-log4cxx_time_t Date::getCurrentTimeStd(){
-       return 
std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
+       return ((time / APR_USEC_PER_SEC) + 1) * APR_USEC_PER_SEC;
 }
diff --git a/src/main/cpp/filewatchdog.cpp b/src/main/cpp/filewatchdog.cpp
index 42576bb3..f9d0d7f0 100644
--- a/src/main/cpp/filewatchdog.cpp
+++ b/src/main/cpp/filewatchdog.cpp
@@ -18,6 +18,7 @@
 #include <log4cxx/logstring.h>
 #include <log4cxx/helpers/filewatchdog.h>
 #include <log4cxx/helpers/loglog.h>
+#include <apr_time.h>
 #include <apr_thread_proc.h>
 #include <apr_atomic.h>
 #include <log4cxx/helpers/transcoder.h>
diff --git a/src/main/cpp/hierarchy.cpp b/src/main/cpp/hierarchy.cpp
index 91dee598..22caa895 100644
--- a/src/main/cpp/hierarchy.cpp
+++ b/src/main/cpp/hierarchy.cpp
@@ -38,7 +38,6 @@
 #include <log4cxx/defaultconfigurator.h>
 #include <log4cxx/spi/rootlogger.h>
 #include <mutex>
-#include <apr.h>
 #include "assert.h"
 
 
diff --git a/src/main/cpp/htmllayout.cpp b/src/main/cpp/htmllayout.cpp
index 8c18d950..f63e78ee 100644
--- a/src/main/cpp/htmllayout.cpp
+++ b/src/main/cpp/htmllayout.cpp
@@ -24,8 +24,8 @@
 #include <log4cxx/helpers/iso8601dateformat.h>
 #include <log4cxx/helpers/stringhelper.h>
 #include <log4cxx/helpers/transcoder.h>
-#include <log4cxx/helpers/date.h>
 
+#include <apr_time.h>
 #include <apr_strings.h>
 #include <string.h>
 
@@ -185,7 +185,7 @@ void HTMLLayout::appendHeader(LogString& output, Pool& p)
        output.append(LOG4CXX_EOL);
        output.append(LOG4CXX_STR("Log session start time "));
 
-       dateFormat.format(output, Date::currentTime(), p);
+       dateFormat.format(output, apr_time_now(), p);
 
        output.append(LOG4CXX_STR("<br>"));
        output.append(LOG4CXX_EOL);
diff --git a/src/main/cpp/loggingevent.cpp b/src/main/cpp/loggingevent.cpp
index 46a7f671..eb59e2fb 100644
--- a/src/main/cpp/loggingevent.cpp
+++ b/src/main/cpp/loggingevent.cpp
@@ -29,6 +29,7 @@
 #include <log4cxx/helpers/threadspecificdata.h>
 #include <log4cxx/helpers/transcoder.h>
 
+#include <apr_time.h>
 #include <apr_portable.h>
 #include <apr_strings.h>
 #include <log4cxx/helpers/stringhelper.h>
@@ -36,7 +37,6 @@
 #include <log4cxx/helpers/bytebuffer.h>
 #include <log4cxx/logger.h>
 #include <log4cxx/private/log4cxx_private.h>
-#include <log4cxx/helpers/date.h>
 
 using namespace log4cxx;
 using namespace log4cxx::spi;
@@ -75,7 +75,7 @@ LoggingEvent::LoggingEvent(
        ndcLookupRequired(true),
        mdcCopyLookupRequired(true),
        message(message1),
-       timeStamp(Date::currentTime()),
+       timeStamp(apr_time_now()),
        locationInfo(locationInfo1),
        threadName(getCurrentThreadName()),
        threadUserName(getCurrentThreadUserName())
diff --git a/src/main/cpp/propertyconfigurator.cpp 
b/src/main/cpp/propertyconfigurator.cpp
index 1edd2e45..65efadc2 100644
--- a/src/main/cpp/propertyconfigurator.cpp
+++ b/src/main/cpp/propertyconfigurator.cpp
@@ -40,7 +40,6 @@
 
 #define LOG4CXX 1
 #include <log4cxx/helpers/aprinitializer.h>
-#include <apr.h>
 
 
 using namespace log4cxx;
diff --git a/src/main/cpp/timebasedrollingpolicy.cpp 
b/src/main/cpp/timebasedrollingpolicy.cpp
index cd1fe908..c81f09d5 100644
--- a/src/main/cpp/timebasedrollingpolicy.cpp
+++ b/src/main/cpp/timebasedrollingpolicy.cpp
@@ -34,6 +34,12 @@
 #include <log4cxx/rolling/rollingfileappenderskeleton.h>
 #include<iostream>
 
+#ifndef INT64_C
+       #define INT64_C(x) x ## LL
+#endif
+
+#include <apr_time.h>
+
 using namespace log4cxx;
 using namespace log4cxx::rolling;
 using namespace log4cxx::helpers;
@@ -196,8 +202,9 @@ void 
TimeBasedRollingPolicy::activateOptions(log4cxx::helpers::Pool& pool)
                throw IllegalStateException();
        }
 
+       apr_time_t n = apr_time_now();
        LogString buf;
-       ObjectPtr obj(new Date());
+       ObjectPtr obj(new Date(n));
        formatFileName(obj, buf, pool);
        lastFileName = buf;
 
@@ -261,9 +268,8 @@ RolloverDescriptionPtr TimeBasedRollingPolicy::initialize(
        const   bool        append,
        Pool&       pool)
 {
-       Date now;
-       log4cxx_time_t n = now.getTime();
-       nextCheck = now.getNextSecond();
+       apr_time_t n = apr_time_now();
+       nextCheck = ((n / APR_USEC_PER_SEC) + 1) * APR_USEC_PER_SEC;
 
        File currentFile(currentActiveFile);
 
@@ -293,9 +299,8 @@ RolloverDescriptionPtr TimeBasedRollingPolicy::rollover(
        const   bool        append,
        Pool&       pool)
 {
-       Date now;
-       log4cxx_time_t n = now.getTime();
-       nextCheck = now.getNextSecond();
+       apr_time_t n = apr_time_now();
+       nextCheck = ((n / APR_USEC_PER_SEC) + 1) * APR_USEC_PER_SEC;
 
        LogString buf;
        ObjectPtr obj(new Date(n));
@@ -414,6 +419,6 @@ bool TimeBasedRollingPolicy::isTriggeringEvent(
 
        return ((apr_time_now()) > nextCheck) || (!bAlreadyInitialized);
 #else
-       return Date::currentTime() > nextCheck;
+       return apr_time_now() > nextCheck;
 #endif
 }
diff --git a/src/main/include/log4cxx/helpers/aprinitializer.h 
b/src/main/include/log4cxx/helpers/aprinitializer.h
index 9fcdd5ca..fccd18e0 100644
--- a/src/main/include/log4cxx/helpers/aprinitializer.h
+++ b/src/main/include/log4cxx/helpers/aprinitializer.h
@@ -23,14 +23,13 @@
 #endif
 
 #include <list>
-#include <log4cxx/helpers/date.h>
 
 extern "C" {
        typedef struct apr_thread_mutex_t apr_thread_mutex_t;
        typedef struct apr_threadkey_t apr_threadkey_t;
-       struct apr_pool_t;
 }
 
+#include <apr_time.h>
 #include <mutex>
 
 namespace log4cxx
@@ -62,7 +61,7 @@ class APRInitializer
                apr_pool_t* p;
                std::mutex mutex;
                std::list<FileWatchdog*> watchdogs;
-               log4cxx_time_t startTime;
+               apr_time_t startTime;
                apr_threadkey_t* tlsKey;
                static APRInitializer& getInstance();
 
diff --git a/src/main/include/log4cxx/helpers/date.h 
b/src/main/include/log4cxx/helpers/date.h
index c031531d..facace72 100644
--- a/src/main/include/log4cxx/helpers/date.h
+++ b/src/main/include/log4cxx/helpers/date.h
@@ -20,7 +20,7 @@
 
 #include <log4cxx/helpers/object.h>
 #include <log4cxx/log4cxx.h>
-#include <functional>
+
 
 namespace log4cxx
 {
@@ -36,13 +36,6 @@ class LOG4CXX_EXPORT Date : public Object
 {
                const log4cxx_time_t time;
 
-               /**
-                * A function that will return the current time(in 
microseconds) when called
-                */
-               typedef std::function<log4cxx_time_t()> GetCurrentTimeFn;
-
-               static log4cxx_time_t getCurrentTimeStd();
-
        public:
                DECLARE_LOG4CXX_OBJECT(Date)
                BEGIN_LOG4CXX_CAST_MAP()
@@ -67,19 +60,6 @@ class LOG4CXX_EXPORT Date : public Object
                static log4cxx_time_t getMicrosecondsPerDay();
                static log4cxx_time_t getMicrosecondsPerSecond();
 
-               static log4cxx_time_t currentTime();
-
-               static GetCurrentTimeFn getCurrentTimeFn;
-
-               /**
-                * Set the function that is used to get the current time.
-                * This is used only for testing purposes and should never be 
called
-                * under normal circumstances.
-                *
-                * @param fn
-                */
-               static void setGetCurrentTimeFunction(GetCurrentTimeFn fn);
-
 };
 
 LOG4CXX_PTR_DEF(Date);
diff --git a/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h 
b/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h
index 7c82e3d8..ddeacf5e 100755
--- a/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h
+++ b/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h
@@ -25,7 +25,6 @@
 #include <log4cxx/writerappender.h>
 #include <log4cxx/helpers/outputstream.h>
 #include <apr_mmap.h>
-#include <functional>
 
 #if defined(_MSC_VER)
        #pragma warning ( push )
diff --git a/src/test/cpp/rolling/timebasedrollingtest.cpp 
b/src/test/cpp/rolling/timebasedrollingtest.cpp
index 7825d947..706cb3df 100644
--- a/src/test/cpp/rolling/timebasedrollingtest.cpp
+++ b/src/test/cpp/rolling/timebasedrollingtest.cpp
@@ -24,7 +24,6 @@
 #include <log4cxx/patternlayout.h>
 #include <log4cxx/rolling/timebasedrollingpolicy.h>
 #include <log4cxx/helpers/simpledateformat.h>
-#include <log4cxx/helpers/date.h>
 #include <iostream>
 #include <log4cxx/helpers/stringhelper.h>
 #include "../util/compare.h"
@@ -41,12 +40,9 @@
 // into other string literals or as an object. While macros are hard to debug, 
embedding into string
 // literals is easier this way, because the compiler can automatically collaps 
them, and if we have
 // one macro already, a second for a similar purpose shouldn't hurt as well.
-#define DATE_PATTERN           "yyyy-MM-dd_HH_mm_ss"
-#define DATE_PATTERN_STR       LogString(LOG4CXX_STR("yyyy-MM-dd_HH_mm_ss"))
-#define PATTERN_LAYOUT         LOG4CXX_STR("%c{1} - %m%n")
-
-#define DIR_PRE_OUTPUT "output/rolling/tbr-"
-#define DIR_PRE_WITNESS        "witness/rolling/tbr-"
+#define DATE_PATTERN        "yyyy-MM-dd_HH_mm_ss"
+#define DATE_PATTERN_STR    LogString(LOG4CXX_STR("yyyy-MM-dd_HH_mm_ss"))
+#define PATTERN_LAYOUT      LOG4CXX_STR("%c{1} - %m%n")
 
 using namespace log4cxx;
 using namespace log4cxx::helpers;
@@ -81,12 +77,19 @@ LOGUNIT_CLASS(TimeBasedRollingTest)
        LOGUNIT_TEST(test5);
        LOGUNIT_TEST(test6);
        LOGUNIT_TEST(test7);
-       LOGUNIT_TEST(rollIntoDir);
+//     LOGUNIT_TEST(create_directories);
        LOGUNIT_TEST_SUITE_END();
 
 private:
-       static  LoggerPtr               logger;
-                       log4cxx_time_t  current_time;
+       static LoggerPtr logger;
+
+       /**
+        * Currently running test.
+        * <p>
+        * Number of currently running test, used e.g. for some generic code in 
{@link setUp()}.
+        * </p>
+        */
+       size_t num_test;
 
        /**
         * Build file names with timestamps.
@@ -110,31 +113,30 @@ private:
         * therefore "now" could have easily past and the first file name will 
never be found, because
         * the rolling appender creates it with a newer "now", at least one 
second in the future.
         * </p>
-        * @param[in,out]       pool
-        * @param[in]           prefix
-        * @param[in]           fnames
-        * @param[in,opt]       compressed
-        * @param[in,opt]       startInFuture
+        * @param[in,out]   pool
+        * @param[in]       prefix
+        * @param[in]       fileNames
+        * param[in,opt]    withCompression
+        * param[in,opt]    startInFuture
         */
        template<size_t N>
-       void buildTsFnames(
-                               Pool&           pool,
-               const   logchar*        prefix,
-                               LogString       (&fnames)[N],
-                               bool            compressed              = false,
-                               bool            startInFuture   = false)
+       void buildTsFileNames(          Pool &       pool,
+               const   logchar *    prefix,
+               LogString   (&fileNames)[N],
+               bool        withCompression = false,
+               bool        startInFuture   = false)
        {
-               SimpleDateFormat        sdf(DATE_PATTERN_STR);
-               log4cxx_time_t          now(current_time);
-               LogString                       ext(compressed ? 
LOG4CXX_STR(".gz") : LOG4CXX_STR(""));
+               SimpleDateFormat    sdf(DATE_PATTERN_STR);
+               apr_time_t          now(apr_time_now());
+               LogString           ext(withCompression ? LOG4CXX_STR(".gz") : 
LOG4CXX_STR(""));
 
                now += startInFuture ? APR_USEC_PER_SEC : 0;
 
                for (size_t i = 0; i < N; ++i)
                {
-                       fnames[i].assign(LogString(LOG4CXX_STR("" 
DIR_PRE_OUTPUT)) + prefix);
-                       sdf.format(fnames[i], now, pool);
-                       fnames[i].append(ext);
+                       fileNames[i].assign(LogString(LOG4CXX_STR("output/")) + 
prefix);
+                       sdf.format(fileNames[i], now, pool);
+                       fileNames[i].append(ext);
 
                        now += APR_USEC_PER_SEC;
                }
@@ -168,26 +170,25 @@ private:
         * We had macro wrappers around this method dealing with such things in 
the past, but as args
         * where added, those become more and more difficult to maintain 
properly and therefore removed.
         * </p>
-        * @param[in,out]       pool
-        * @param[in]           howOften
-        * @param[in]           srcFunc
-        * @param[in]           srcLine
-        * @param[in,opt]       startWith
-        * @param[in]           waitFactor
+        * @param[in,out]   pool
+        * @param[in]       howOften
+        * @param[in]       srcFunc
+        * @param[in]       srcLine
+        * @param[in,opt]   startWith
+        * @param[in]       waitFactor
         */
-       void logMsgAndSleep(
-               Pool&           pool,
-               size_t          howOften,
-               std::string     srcFunc,
-               size_t          srcLine,
-               size_t          startWith       = 0,
-               float           waitFactor      = 0.5)
+       void logMsgAndSleep(Pool &       pool,
+               size_t      howOften,
+               std::string srcFunc,
+               size_t      srcLine,
+               size_t      startWith   = 0,
+               float       waitFactor  = 0.5)
        {
 #undef  LOG4CXX_LOCATION
-#define LOG4CXX_LOCATION ::log4cxx::spi::LocationInfo( \
-       __FILE__,                       \
-       __FILE__,                       \
-       srcFunc.c_str(),        \
+#define LOG4CXX_LOCATION ::log4cxx::spi::LocationInfo(  \
+       __FILE__,                   \
+       __FILE__,                   \
+       srcFunc.c_str(),            \
        srcLine)
 
                for (size_t i = startWith; i < startWith + howOften; ++i)
@@ -196,14 +197,14 @@ private:
                        message.append(pool.itoa(i));
 
                        LOG4CXX_DEBUG(logger, message);
-                       current_time += (APR_USEC_PER_SEC * waitFactor);
+                       apr_sleep(APR_USEC_PER_SEC * waitFactor);
                }
 
 #undef  LOG4CXX_LOCATION
-#define LOG4CXX_LOCATION ::log4cxx::spi::LocationInfo( \
-       __FILE__,                       \
-       __FILE__,                       \
-       __LOG4CXX_FUNC__,       \
+#define LOG4CXX_LOCATION ::log4cxx::spi::LocationInfo(  \
+       __FILE__,                   \
+       __FILE__,                   \
+       __LOG4CXX_FUNC__,           \
        __LINE__)
        }
 
@@ -219,26 +220,23 @@ private:
         * We don't use a wrapper macro this time because the src line should 
have the same name in all
         * compilers and is easily to add for the caller.
         * </p>
-        * @param[in,out]       pool
-        * @param[in]           prefix
-        * @param[in]           fname
-        * @param[in]           witnessIdx
-        * @param[in]           srcLine
+        * @param[in,out]   pool
+        * @param[in]       prefix
+        * @param[in]       fileName
+        * @param[in]       witnessIdx
+        * @param[in]       srcLine
         */
-       void compareWitness(
-                               Pool&           pool,
-               const   logchar*        prefix,
-               const   LogString&      fname,
-                               size_t          witnessIdx,
-                               size_t          srcLine)
+       void compareWitness(        Pool &       pool,
+               const   logchar *    prefix,
+               const   LogString &  fileName,
+               size_t      witnessIdx,
+               size_t      srcLine)
        {
-               LogString witness(LOG4CXX_STR("" DIR_PRE_WITNESS));
+               LogString   witness(LOG4CXX_STR("witness/rolling/tbr-"));
                witness.append(prefix);
-               StringHelper::toString(witnessIdx, pool, witness);
 
-               //std::wcerr << L"Comparing file:    " << fname << L"\n";
-               //std::wcerr << L"Comparing witness: " << witness       << 
L"\n";
-               LOGUNIT_ASSERT_SRCL(Compare::compare(fname, File(witness)), 
srcLine);
+               StringHelper::toString(witnessIdx, pool, witness);
+               LOGUNIT_ASSERT_SRCL(Compare::compare(fileName, File(witness)), 
srcLine);
        }
 
        /**
@@ -247,21 +245,20 @@ private:
         * This method is a wrapper around {@link compareWitness}, used to 
iterate over all files from a
         * given test.
         * </p>
-        * @param[in,out]       pool
-        * @param[in]           prefix
-        * @param[in]           fnames
-        * @param[in]           srcLine
+        * @param[in,out]   pool
+        * @param[in]       prefix
+        * @param[in]       fileNames
+        * @param[in]       srcLine
         */
        template<size_t N>
-       void compareWitnesses(
-                               Pool&           pool,
-               const   logchar*        prefix,
-                               LogString       (&fnames)[N],
-                               size_t          srcLine)
+       void compareWitnesses(          Pool &       pool,
+               const   logchar *    prefix,
+               LogString   (&fileNames)[N],
+               size_t      srcLine)
        {
                for (int i = 0; i < N; ++i)
                {
-                       this->compareWitness(pool, prefix, fnames[i], i, 
srcLine);
+                       this->compareWitness(pool, prefix, fileNames[i], i, 
srcLine);
                }
        }
 
@@ -272,30 +269,26 @@ private:
         * the last one by content to some witness.
         * </p>
         * <p>
-        * We don't use a wrapper macro this time because the src line should 
have the same name in all
+        * We don't use a wrapper macro this time because the src line schould 
have the same name in all
         * compilers and is easily to add for the caller.
         * </p>
-        * @param[in,out]       pool
-        * @param[in]           prefix
-        * @param[in]           fnames
-        * @param[in]           witnessIdx
-        * @param[in]           srcLine
+        * @param[in,out]   pool
+        * @param[in]       prefix
+        * @param[in]       fileNames
+        * @param[in]       srcLine
         */
        template<size_t N>
-       void checkFilesExist(
-                               Pool&           pool,
-               const   logchar*        prefix,
-                               LogString       (&fnames)[N],
-                               size_t          witnessIdx,
-                               size_t          srcLine)
+       void checkFilesExist(           Pool &       pool,
+               const   logchar *    prefix,
+               LogString   (&fileNames)[N],
+               size_t      srcLine)
        {
                for (int i = 0; i < N - 1; ++i)
                {
-                       //std::wcerr << L"Check: " << fnames[i] << L"\n";
-                       LOGUNIT_ASSERT_EQUAL_SRCL(true, 
File(fnames[i]).exists(pool), srcLine);
+                       LOGUNIT_ASSERT_EQUAL_SRCL(true, 
File(fileNames[0]).exists(pool), srcLine);
                }
 
-               this->compareWitness(pool, prefix, fnames[witnessIdx], 
witnessIdx, srcLine);
+               this->compareWitness(pool, prefix, fileNames[N - 1], N - 1, 
srcLine);
        }
 
        /**
@@ -306,9 +299,12 @@ private:
         * </p>
         * @param[in,opt] millis
         */
-       void delayUntilNextSecond()
+       void delayUntilNextSecond(size_t millis = 100)
        {
-               current_time += APR_USEC_PER_SEC;
+               apr_time_t now  = apr_time_now();
+               apr_time_t next = ((now / APR_USEC_PER_SEC) + 1) * 
APR_USEC_PER_SEC + millis * 1000L;
+
+               apr_sleep(next - now);
        }
 
        /**
@@ -319,53 +315,74 @@ private:
         * </p>
         * @param[in,opt] millis
         */
-       void delayUntilNextSecondWithMsg()
+       void delayUntilNextSecondWithMsg(size_t millis = 100)
        {
-               std::cout << "Advancing one second\n";
-               delayUntilNextSecond();
+               std::cout << "Waiting until next second and " << millis << " 
millis.";
+               delayUntilNextSecond(millis);
+               std::cout << "Done waiting." << std::endl;
        }
 
        /**
-        * Delete generic log file.
+        * Delete generic log files.
         * <p>
         * Some tests use generic log file names which may already be available 
during subsequent calls
         * to the test and influence their behavior, e.g. because 
RollingFileAppender uses the last
-        * modification time of already existing files to create its internal 
name. Such a date might be
-        * from the arbitrary past, but most of the tests assume operations 
like rollovers within a few
-        * seconds around "new". Those assumptions will fail for older existing 
files. This method can
-        * be used to delete those files, while documenting the problem at the 
same time.
+        * modification time of already existing files to create their internal 
names. Such a date may
+        * be from the arbitrary past, but ost of the test assumes operations 
like rollovers within few
+        * seconds around "new". Thos assumptions will fail for older existing 
files. So this method can
+        * be called during {@link setUp()} of an test to clear such 
generically named files for each
+        * test. We currently only care about {@code output/testxy.log}.
         * </p>
-        * @param[in,out]       pool
-        * @param[in]           path
+        * @param[in] num_test
         */
-       void delGenericLogFile(
-                       Pool&           pool,
-                       LogString       path)
+       void deleteGenericLogFilePerTest(size_t num_test)
        {
+               Pool        pool;
+               LogString   path(LOG4CXX_STR("output/test"));
+
+               StringHelper::toString(num_test, pool, path);
+               path.append(LOG4CXX_STR(".log"));
+
                File(path).deleteFile(pool);
        }
 
        /**
-        * Set the current time for each individual test methhod run.
+        * Setup for internal test call.
+        * <p>
+        * This method has a similar intention like {@link setUp()}, only that 
it focusses on internal
+        * calls of the tests, where we don't need to create some loggers and 
such, but may need to
+        * delete some files etc. to make tests work.
+        * </p>
+        * @param[in] num_test
+        */
+       void internalSetUp(size_t num_test)
+       {
+               this->deleteGenericLogFilePerTest(num_test);
+       }
+
+       /**
+        * Counterpart for {@like internalSetUp(size_t)}.
         * <p>
-        * There's at least one test running multiple other tests WITHIN the 
same lifecycle of
-        * {@code setUp} and {@code tearDown}, but each of the test methods 
need the same current time
-        * to start with. So this method can be used to set that and is simply 
used by {@code setUp}
-        * as well.
+        * Counterpart for {@like internalSetUp(size_t)}.
         * </p>
         */
-       void setUpCurrTime()
+       void internalTearDown()
        {
-               //current_time = log4cxx::helpers::Date::currentTime(); // 
Start at "about" now.
-               //current_time -= (current_time % APR_USEC_PER_SEC); // Go to 
the top of the second
-               //current_time++; // Need to not be at the top of a second for 
rollover logic to work correctly
-               current_time = 1; // Start at about unix epoch
+               // Nothing to do currently.
        }
 
 public:
-       log4cxx_time_t currentTime()
+       /**
+        * Extract number of current test.
+        * <p>
+        * {@code setUp()} needs the number of the current runnign test for 
some generic work and this
+        * is the only place where we can extract and save it in the instance.
+        * </p>
+        */
+       void setCase(abts_case * tc)
        {
-               return current_time;
+               LogUnit::TestFixture::setCase(tc);
+               this->num_test = tc->suite->num_test;
        }
 
        void setUp()
@@ -375,240 +392,216 @@ public:
                        ConsoleAppenderPtr(new ConsoleAppender(
                                        PatternLayoutPtr(new PatternLayout(
                                                        
LOG4CXX_STR("%d{ABSOLUTE} [%t] %level %c{2}#%M:%L - %m%n"))))));
-
-               this->setUpCurrTime();
-               log4cxx::helpers::Date::setGetCurrentTimeFunction( std::bind( 
&TimeBasedRollingTest::currentTime, this ) );
+               this->internalSetUp(this->num_test);
        }
 
        void tearDown()
        {
+               this->internalTearDown();
                LogManager::shutdown();
        }
 
        /**
-        * Test rolling without compression, activeFileName left blank, no 
stop/start.
+        * Test rolling without compression, activeFileName left blank, no 
stop/start
         */
        void test1()
        {
-                               Pool            pool;
-               const   size_t          nrOfFnames(4);
-                               LogString       fnames[nrOfFnames];
+               Pool        pool;
+               const   size_t      nrOfFileNames = 4;
+               LogString   fileNames[nrOfFileNames];
 
-               PatternLayoutPtr                layout( new 
PatternLayout(PATTERN_LAYOUT));
-               RollingFileAppenderPtr  rfa(    new RollingFileAppender());
-               rfa->setAppend(false);
+               PatternLayoutPtr        layout( new 
PatternLayout(PATTERN_LAYOUT));
+               RollingFileAppenderPtr  rfa(    new RollingFileAppender());
                rfa->setLayout(layout);
 
                TimeBasedRollingPolicyPtr tbrp(new TimeBasedRollingPolicy());
-               tbrp->setFileNamePattern(LOG4CXX_STR("" DIR_PRE_OUTPUT 
"test1-%d{" DATE_PATTERN "}"));
+               tbrp->setFileNamePattern(LOG4CXX_STR("output/test1-%d{" 
DATE_PATTERN "}"));
                tbrp->activateOptions(pool);
                rfa->setRollingPolicy(tbrp);
                rfa->activateOptions(pool);
                logger->addAppender(rfa);
 
-               this->buildTsFnames(pool, LOG4CXX_STR("test1-"), fnames);
+               this->buildTsFileNames(pool, LOG4CXX_STR("test1-"), fileNames);
                this->delayUntilNextSecondWithMsg();
-               this->logMsgAndSleep(   pool, nrOfFnames + 1, __LOG4CXX_FUNC__, 
__LINE__);
-               this->compareWitnesses( pool, LOG4CXX_STR("test1."), fnames, 
__LINE__);
+               this->logMsgAndSleep(   pool, nrOfFileNames + 1, 
__LOG4CXX_FUNC__, __LINE__);
+               this->compareWitnesses( pool, LOG4CXX_STR("test1."), fileNames, 
__LINE__);
        }
 
-
        /**
-        * No compression, with stop/restart, activeFileName left blank.
+        * No compression, with stop/restart, activeFileName left blank
         */
        void test2()
        {
-                               Pool            pool;
-               const   size_t          nrOfFnames(4);
-                               LogString       fnames[nrOfFnames];
+               Pool        pool;
+               const   size_t      nrOfFileNames = 4;
+               LogString   fileNames[nrOfFileNames];
 
-               PatternLayoutPtr                layout1(new 
PatternLayout(PATTERN_LAYOUT));
-               RollingFileAppenderPtr  rfa1(   new RollingFileAppender());
-               rfa1->setAppend(false);
+               PatternLayoutPtr        layout1(new 
PatternLayout(PATTERN_LAYOUT));
+               RollingFileAppenderPtr  rfa1(   new RollingFileAppender());
                rfa1->setLayout(layout1);
 
                TimeBasedRollingPolicyPtr tbrp1(new TimeBasedRollingPolicy());
-               tbrp1->setFileNamePattern(LOG4CXX_STR("" DIR_PRE_OUTPUT 
"test2-%d{" DATE_PATTERN "}"));
+               tbrp1->setFileNamePattern(LOG4CXX_STR("output/test2-%d{" 
DATE_PATTERN "}"));
                tbrp1->activateOptions(pool);
                rfa1->setRollingPolicy(tbrp1);
                rfa1->activateOptions(pool);
                logger->addAppender(rfa1);
 
-               this->buildTsFnames(pool, LOG4CXX_STR("test2-"), fnames);
+               this->buildTsFileNames(pool, LOG4CXX_STR("test2-"), fileNames);
                this->delayUntilNextSecondWithMsg();
                this->logMsgAndSleep(pool, 3, __LOG4CXX_FUNC__, __LINE__);
 
                logger->removeAppender(rfa1);
                rfa1->close();
 
-               PatternLayoutPtr                layout2(new 
PatternLayout(PATTERN_LAYOUT));
-               RollingFileAppenderPtr  rfa2(   new RollingFileAppender());
+               PatternLayoutPtr        layout2(new 
PatternLayout(PATTERN_LAYOUT));
+               RollingFileAppenderPtr  rfa2(   new RollingFileAppender());
                rfa2->setLayout(layout2);
 
                TimeBasedRollingPolicyPtr tbrp2 = TimeBasedRollingPolicyPtr(new 
TimeBasedRollingPolicy());
-               tbrp2->setFileNamePattern(LOG4CXX_STR("" DIR_PRE_OUTPUT 
"test2-%d{" DATE_PATTERN "}"));
+               tbrp2->setFileNamePattern(LOG4CXX_STR("output/test2-%d{" 
DATE_PATTERN "}"));
                tbrp2->activateOptions(pool);
                rfa2->setRollingPolicy(tbrp2);
                rfa2->activateOptions(pool);
-               rfa2->setAppend(false);
                logger->addAppender(rfa2);
 
-               this->logMsgAndSleep(   pool, 2, __LOG4CXX_FUNC__, __LINE__, 3);
-               this->compareWitnesses( pool, LOG4CXX_STR("test2."), fnames, 
__LINE__);
+               this->logMsgAndSleep(   pool, 2, __LOG4CXX_FUNC__, __LINE__, 3);
+               this->compareWitnesses( pool, LOG4CXX_STR("test2."), fileNames, 
__LINE__);
        }
 
-
        /**
-        * With compression, activeFileName left blank, no stop/restart.
+        * With compression, activeFileName left blank, no stop/restart
         */
        void test3()
        {
-                               Pool            pool;
-               const   size_t          nrOfFnames(4);
-                               LogString       fnames[nrOfFnames];
+               Pool        pool;
+               const   size_t      nrOfFileNames = 4;
+               LogString   fileNames[nrOfFileNames];
 
-               PatternLayoutPtr                layout( new 
PatternLayout(PATTERN_LAYOUT));
-               RollingFileAppenderPtr  rfa(    new RollingFileAppender());
+               PatternLayoutPtr        layout( new 
PatternLayout(PATTERN_LAYOUT));
+               RollingFileAppenderPtr  rfa(    new RollingFileAppender());
                rfa->setAppend(false);
                rfa->setLayout(layout);
 
                TimeBasedRollingPolicyPtr tbrp = TimeBasedRollingPolicyPtr(new 
TimeBasedRollingPolicy());
-               tbrp->setFileNamePattern(LogString(LOG4CXX_STR("" 
DIR_PRE_OUTPUT "test3-%d{" DATE_PATTERN "}.gz")));
+               
tbrp->setFileNamePattern(LogString(LOG4CXX_STR("output/test3-%d{" DATE_PATTERN 
"}.gz")));
                tbrp->activateOptions(pool);
                rfa->setRollingPolicy(tbrp);
                rfa->activateOptions(pool);
                logger->addAppender(rfa);
 
-               this->buildTsFnames(pool, LOG4CXX_STR("test3-"), fnames, true);
-               fnames[nrOfFnames - 1].resize(fnames[nrOfFnames - 1].size() - 
3);
+               this->buildTsFileNames(pool, LOG4CXX_STR("test3-"), fileNames, 
true);
+               fileNames[3].resize(fileNames[3].size() - 3);
                this->delayUntilNextSecondWithMsg();
-               this->logMsgAndSleep(   pool, nrOfFnames + 1, __LOG4CXX_FUNC__, 
__LINE__);
-               this->checkFilesExist(  pool, LOG4CXX_STR("test3."), fnames, 
nrOfFnames - 1, __LINE__);
+               this->logMsgAndSleep(   pool, nrOfFileNames + 1, 
__LOG4CXX_FUNC__, __LINE__);
+               this->checkFilesExist(  pool, LOG4CXX_STR("test3."), fileNames, 
__LINE__);
        }
 
        /**
         * Without compression, activeFileName set,  with stop/restart
-        *
-        * Note: because this test stops and restarts, it is not possible to 
use the
-        * date pattern in the filenames, as log4cxx will use the file's last 
modified
-        * time when rolling over and determining the new filename.
         */
        void test4()
        {
-                               Pool            pool;
-               const   size_t          nrOfFnames(4);
-               const   size_t          nrOfLogMsgs(((nrOfFnames - 1) * 2) - 1);
-                               LogString       fnames[nrOfFnames];
+               Pool        pool;
+               const   size_t      nrOfFileNames = 4;
+               LogString   fileNames[nrOfFileNames];
 
-               PatternLayoutPtr                layout1(new 
PatternLayout(PATTERN_LAYOUT));
-               RollingFileAppenderPtr  rfa1(   new RollingFileAppender());
+               PatternLayoutPtr        layout1(new 
PatternLayout(PATTERN_LAYOUT));
+               RollingFileAppenderPtr  rfa1(   new RollingFileAppender());
                rfa1->setLayout(layout1);
 
                TimeBasedRollingPolicyPtr tbrp1 = TimeBasedRollingPolicyPtr(new 
TimeBasedRollingPolicy());
-               tbrp1->setFileNamePattern(LOG4CXX_STR("" DIR_PRE_OUTPUT 
"test4-%d{" DATE_PATTERN "}"));
+               rfa1->setFile(LOG4CXX_STR("output/test4.log"));
+               tbrp1->setFileNamePattern(LOG4CXX_STR("output/test4-%d{" 
DATE_PATTERN "}"));
                tbrp1->activateOptions(pool);
-               rfa1->setFile(LOG4CXX_STR("" DIR_PRE_OUTPUT "test4.log"));
                rfa1->setRollingPolicy(tbrp1);
                rfa1->activateOptions(pool);
                logger->addAppender(rfa1);
 
-               this->delGenericLogFile(pool, rfa1->getFile());
-               this->buildTsFnames(pool, LOG4CXX_STR("test4-"), fnames);
-               fnames[0].assign(rfa1->getFile());
+               this->buildTsFileNames(pool, LOG4CXX_STR("test4-"), fileNames);
+               fileNames[3].assign(rfa1->getFile());
                this->delayUntilNextSecondWithMsg();
-               this->logMsgAndSleep(pool, nrOfLogMsgs, __LOG4CXX_FUNC__, 
__LINE__);
+               this->logMsgAndSleep(pool, 3, __LOG4CXX_FUNC__, __LINE__);
 
                logger->removeAppender(rfa1);
                rfa1->close();
 
-               PatternLayoutPtr                layout2(new 
PatternLayout(PATTERN_LAYOUT));
-               RollingFileAppenderPtr  rfa2(   new RollingFileAppender());
+               PatternLayoutPtr        layout2(new 
PatternLayout(PATTERN_LAYOUT));
+               RollingFileAppenderPtr  rfa2(   new RollingFileAppender());
                rfa2->setLayout(layout2);
 
                TimeBasedRollingPolicyPtr tbrp2 = TimeBasedRollingPolicyPtr(new 
TimeBasedRollingPolicy());
-               tbrp2->setFileNamePattern(LOG4CXX_STR("" DIR_PRE_OUTPUT 
"test4-%d{" DATE_PATTERN "}"));
+               tbrp2->setFileNamePattern(LOG4CXX_STR("output/test4-%d{" 
DATE_PATTERN "}"));
+               rfa2->setFile(fileNames[3]);
                tbrp2->activateOptions(pool);
-               rfa2->setFile(rfa1->getFile());
                rfa2->setRollingPolicy(tbrp2);
                rfa2->activateOptions(pool);
                logger->addAppender(rfa2);
 
-               // The one file not checked is the active file from the old 
appender reused by the new one
-               // and rolled over afterwards. The problem is that because the 
reused file exists already,
-               // it doesn't get an expected fname, but the last write time 
instead. Though, should be safe
-               // enough to not check that special file.
-               this->logMsgAndSleep(pool, 2, __LOG4CXX_FUNC__, __LINE__, 
nrOfLogMsgs);
-               this->compareWitness(pool, LOG4CXX_STR("test4."), fnames[0], 0, 
__LINE__);
-               this->compareWitness(pool, LOG4CXX_STR("test4."), fnames[1], 1, 
__LINE__);
-               this->compareWitness(pool, LOG4CXX_STR("test4."), fnames[2], 2, 
__LINE__);
+               this->logMsgAndSleep(   pool, 2, __LOG4CXX_FUNC__, __LINE__, 3);
+               this->compareWitnesses( pool, LOG4CXX_STR("test4."), fileNames, 
__LINE__);
        }
 
        /**
-        * No compression, activeFileName set, without stop/restart.
+        * No compression, activeFileName set,  without stop/restart
         */
        void test5()
        {
-                               Pool            pool;
-               const   size_t          nrOfFnames(4);
-               const   size_t          nrOfLogMsgs((nrOfFnames * 2) - 1);
-                               LogString       fnames[nrOfFnames];
+               Pool        pool;
+               const   size_t      nrOfFileNames = 4;
+               LogString   fileNames[nrOfFileNames];
 
-               PatternLayoutPtr                layout( new 
PatternLayout(PATTERN_LAYOUT));
-               RollingFileAppenderPtr  rfa(    new RollingFileAppender());
+               PatternLayoutPtr        layout( new 
PatternLayout(PATTERN_LAYOUT));
+               RollingFileAppenderPtr  rfa(    new RollingFileAppender());
                rfa->setLayout(layout);
 
                TimeBasedRollingPolicyPtr tbrp = TimeBasedRollingPolicyPtr(new 
TimeBasedRollingPolicy());
-               tbrp->setFileNamePattern(LOG4CXX_STR("" DIR_PRE_OUTPUT 
"test5-%d{" DATE_PATTERN "}"));
-               rfa->setFile(LOG4CXX_STR("" DIR_PRE_OUTPUT "test5.log"));
+               tbrp->setFileNamePattern(LOG4CXX_STR("output/test5-%d{" 
DATE_PATTERN "}"));
+               rfa->setFile(LOG4CXX_STR("output/test5.log"));
 
                tbrp->activateOptions(pool);
                rfa->setRollingPolicy(tbrp);
                rfa->activateOptions(pool);
                logger->addAppender(rfa);
 
-               this->delGenericLogFile(pool, rfa->getFile());
-               this->buildTsFnames(pool, LOG4CXX_STR("test5-"), fnames);
-               fnames[0].assign(rfa->getFile());
-
+               this->buildTsFileNames(pool, LOG4CXX_STR("test5-"), fileNames);
+               fileNames[3].assign(rfa->getFile());
                this->delayUntilNextSecondWithMsg();
-               this->logMsgAndSleep(   pool, nrOfLogMsgs, __LOG4CXX_FUNC__, 
__LINE__);
-               this->compareWitnesses( pool, LOG4CXX_STR("test5."), fnames, 
__LINE__);
+               this->logMsgAndSleep(   pool, nrOfFileNames + 1, 
__LOG4CXX_FUNC__, __LINE__);
+               this->compareWitnesses( pool, LOG4CXX_STR("test5."), fileNames, 
__LINE__);
        }
 
        /**
-        * With compression, activeFileName set, no stop/restart.
+        * With compression, activeFileName set, no stop/restart,
         */
        void test6()
        {
-                               Pool            pool;
-               const   size_t          nrOfFnames(4);
-               const   size_t          nrOfLogMsgs((nrOfFnames * 2) - 1);
-                               LogString       fnames[nrOfFnames];
+               Pool        pool;
+               const   size_t      nrOfFileNames = 4;
+               LogString   fileNames[nrOfFileNames];
 
-               PatternLayoutPtr                layout( new 
PatternLayout(PATTERN_LAYOUT));
-               RollingFileAppenderPtr  rfa(    new RollingFileAppender());
+               PatternLayoutPtr        layout( new 
PatternLayout(PATTERN_LAYOUT));
+               RollingFileAppenderPtr  rfa(    new RollingFileAppender());
                rfa->setAppend(false);
                rfa->setLayout(layout);
 
                TimeBasedRollingPolicyPtr tbrp = TimeBasedRollingPolicyPtr(new 
TimeBasedRollingPolicy());
-               tbrp->setFileNamePattern(LogString(LOG4CXX_STR("" 
DIR_PRE_OUTPUT "test6-%d{" DATE_PATTERN "}.gz")));
-               rfa->setFile(LOG4CXX_STR("" DIR_PRE_OUTPUT "test6.log"));
+               
tbrp->setFileNamePattern(LogString(LOG4CXX_STR("output/test6-%d{" DATE_PATTERN 
"}.gz")));
+               rfa->setFile(LOG4CXX_STR("output/test6.log"));
                tbrp->activateOptions(pool);
                rfa->setRollingPolicy(tbrp);
                rfa->activateOptions(pool);
                logger->addAppender(rfa);
 
-               this->delGenericLogFile(pool, rfa->getFile());
-               this->buildTsFnames(pool, LOG4CXX_STR("test6-"), fnames, true);
-               fnames[0].assign(rfa->getFile());
-
+               this->buildTsFileNames(pool, LOG4CXX_STR("test6-"), fileNames, 
true);
+               fileNames[3].assign(rfa->getFile());
                this->delayUntilNextSecondWithMsg();
-               this->logMsgAndSleep(   pool, nrOfLogMsgs, __LOG4CXX_FUNC__, 
__LINE__);
-               this->checkFilesExist(  pool, LOG4CXX_STR("test6."), fnames, 0, 
__LINE__);
+               this->logMsgAndSleep(   pool, nrOfFileNames + 1, 
__LOG4CXX_FUNC__, __LINE__);
+               this->checkFilesExist(  pool, LOG4CXX_STR("test6."), fileNames, 
__LINE__);
        }
 
        /**
-        * Repeat some tests with generic file names.
+        * Repeat some test with generic file name.s
         * <p>
         * This test calls some tests which use generic file names and will 
only work properly if those
         * got deleted before running the test during setup.
@@ -619,8 +612,8 @@ public:
                typedef void (TimeBasedRollingTest::*Test)();
                typedef std::vector<Test> Tests;
 
-               Tests   tests(10);
-               size_t  numTest = 0;
+               Tests   tests(10);
+               size_t  numTest = 0;
 
                tests.at(4) = &TimeBasedRollingTest::test4;
                tests.at(5) = &TimeBasedRollingTest::test5;
@@ -629,40 +622,39 @@ public:
                for (size_t numTest = 1; numTest < tests.size(); ++numTest)
                {
                        Test test(tests.at(numTest));
+
                        if (!test)
                        {
                                continue;
                        }
 
-                       this->setUpCurrTime();
+                       this->internalSetUp(numTest);
                        (this->*test)();
+                       this->internalTearDown();
                }
        }
 
-       void rollIntoDir()
+       void create_directories()
        {
-                               Pool            pool;
-               const   size_t          nrOfFnames(4);
-               const   size_t          nrOfLogMsgs((nrOfFnames * 2) - 1);
-                               LogString       fnames[nrOfFnames];
+               Pool        pool;
+               const   size_t      nrOfFileNames = 4;
+               LogString   fileNames[nrOfFileNames];
 
-               PatternLayoutPtr                layout( new 
PatternLayout(PATTERN_LAYOUT));
-               RollingFileAppenderPtr  rfa(    new RollingFileAppender());
+               PatternLayoutPtr        layout( new 
PatternLayout(PATTERN_LAYOUT));
+               RollingFileAppenderPtr  rfa(    new RollingFileAppender());
                rfa->setLayout(layout);
-               rfa->setFile(LOG4CXX_STR("" DIR_PRE_OUTPUT "rollIntoDir.log"));
+               
rfa->setFile(LOG4CXX_STR("output/timebasedrolling_create_dir.log"));
 
                std::random_device dev;
                std::mt19937 rng(dev());
                std::uniform_int_distribution<std::mt19937::result_type> 
dist(1,100000);
-               LogString filenamePattern = LOG4CXX_STR("" DIR_PRE_OUTPUT);
+               LogString filenamePattern = 
LOG4CXX_STR("output/tbrolling-directory-");
 #if LOG4CXX_LOGCHAR_IS_WCHAR
                LogString dirNumber = std::to_wstring(dist(rng));
 #else
                LogString dirNumber = std::to_string(dist(rng));
 #endif
-               LogString directoryName = LOG4CXX_STR("tbr-rollIntoDir-");
-               directoryName.append( dirNumber );
-               filenamePattern.append( directoryName );
+               filenamePattern.append( dirNumber );
                LogString filenamePatternPrefix = filenamePattern;
                filenamePattern.append( LOG4CXX_STR("/file-%d{" DATE_PATTERN 
"}") );
 
@@ -673,17 +665,15 @@ public:
                rfa->activateOptions(pool);
                logger->addAppender(rfa);
 
-               const logchar* prefix = 
directoryName.append(LOG4CXX_STR("/file-")).data();
-
-               this->delGenericLogFile(pool, rfa->getFile());
-               this->buildTsFnames(pool, prefix, fnames);
-               fnames[0].assign(rfa->getFile());
-
+               this->buildTsFileNames(pool, 
filenamePatternPrefix.append(LOG4CXX_STR("/file-")).data(), fileNames);
                this->delayUntilNextSecondWithMsg();
-               this->logMsgAndSleep(   pool, nrOfLogMsgs, __LOG4CXX_FUNC__, 
__LINE__);
-               this->checkFilesExist(  pool, LOG4CXX_STR("test6."), fnames, 0, 
__LINE__);
-       }
+               this->logMsgAndSleep(   pool, nrOfFileNames + 1, 
__LOG4CXX_FUNC__, __LINE__);
+//             this->compareWitnesses( pool, LOG4CXX_STR("test1."), fileNames, 
__LINE__);
 
+               for( size_t x = 0; x < nrOfFileNames - 1; x++ ){
+                       LOGUNIT_ASSERT_EQUAL(true, 
File(fileNames[x]).exists(pool));
+               }
+       }
 };
 
 LoggerPtr 
TimeBasedRollingTest::logger(Logger::getLogger("org.apache.log4j.TimeBasedRollingTest"));
diff --git a/src/test/resources/witness/rolling/tbr-test4.0 
b/src/test/resources/witness/rolling/tbr-test4.0
index ae12f7ad..e69de29b 100644
--- a/src/test/resources/witness/rolling/tbr-test4.0
+++ b/src/test/resources/witness/rolling/tbr-test4.0
@@ -1 +0,0 @@
-TimeBasedRollingTest - Hello---6
diff --git a/src/test/resources/witness/rolling/tbr-test4.3 
b/src/test/resources/witness/rolling/tbr-test4.3
index 9a81d949..dfc095dc 100644
--- a/src/test/resources/witness/rolling/tbr-test4.3
+++ b/src/test/resources/witness/rolling/tbr-test4.3
@@ -1,2 +1 @@
 TimeBasedRollingTest - Hello---4
-TimeBasedRollingTest - Hello---5
diff --git a/src/test/resources/witness/rolling/tbr-test5.0 
b/src/test/resources/witness/rolling/tbr-test5.0
index ae12f7ad..e69de29b 100644
--- a/src/test/resources/witness/rolling/tbr-test5.0
+++ b/src/test/resources/witness/rolling/tbr-test5.0
@@ -1 +0,0 @@
-TimeBasedRollingTest - Hello---6
diff --git a/src/test/resources/witness/rolling/tbr-test5.3 
b/src/test/resources/witness/rolling/tbr-test5.3
index 9a81d949..dfc095dc 100644
--- a/src/test/resources/witness/rolling/tbr-test5.3
+++ b/src/test/resources/witness/rolling/tbr-test5.3
@@ -1,2 +1 @@
 TimeBasedRollingTest - Hello---4
-TimeBasedRollingTest - Hello---5
diff --git a/src/test/resources/witness/rolling/tbr-test6.0 
b/src/test/resources/witness/rolling/tbr-test6.0
deleted file mode 100644
index ae12f7ad..00000000
--- a/src/test/resources/witness/rolling/tbr-test6.0
+++ /dev/null
@@ -1 +0,0 @@
-TimeBasedRollingTest - Hello---6
diff --git a/src/test/resources/witness/rolling/tbr-test4.3 
b/src/test/resources/witness/rolling/tbr-test6.3
similarity index 50%
copy from src/test/resources/witness/rolling/tbr-test4.3
copy to src/test/resources/witness/rolling/tbr-test6.3
index 9a81d949..dfc095dc 100644
--- a/src/test/resources/witness/rolling/tbr-test4.3
+++ b/src/test/resources/witness/rolling/tbr-test6.3
@@ -1,2 +1 @@
 TimeBasedRollingTest - Hello---4
-TimeBasedRollingTest - Hello---5

Reply via email to