You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by sw...@apache.org on 2024/01/08 03:15:00 UTC
(logging-log4cxx) branch master updated: Remove unnecessary delays in unit tests (#325)
This is an automated email from the ASF dual-hosted git repository.
swebb2066 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 13c1abca Remove unnecessary delays in unit tests (#325)
13c1abca is described below
commit 13c1abcacfa2161cce28f51396cf61be7cce4465
Author: Stephen Webb <st...@ieee.org>
AuthorDate: Mon Jan 8 14:14:54 2024 +1100
Remove unnecessary delays in unit tests (#325)
* Improve AsyncAppenderTestCase clarity
---
src/test/cpp/asyncappendertestcase.cpp | 27 +++++++++++++--------------
src/test/cpp/streamtestcase.cpp | 5 +++--
src/test/cpp/vectorappender.cpp | 6 +++---
src/test/cpp/vectorappender.h | 9 +++++++--
4 files changed, 26 insertions(+), 21 deletions(-)
diff --git a/src/test/cpp/asyncappendertestcase.cpp b/src/test/cpp/asyncappendertestcase.cpp
index fd98ed0f..22c32860 100644
--- a/src/test/cpp/asyncappendertestcase.cpp
+++ b/src/test/cpp/asyncappendertestcase.cpp
@@ -123,9 +123,9 @@ class AsyncAppenderTestCase : public AppenderSkeletonTestCase
LOGUNIT_TEST(closeTest);
LOGUNIT_TEST(test2);
- LOGUNIT_TEST(test3);
+ LOGUNIT_TEST(testEventFlush);
LOGUNIT_TEST(testBadAppender);
- LOGUNIT_TEST(testLocationInfoTrue);
+ LOGUNIT_TEST(testBufferOverflowBehavior);
#if LOG4CXX_HAS_DOMCONFIGURATOR
LOGUNIT_TEST(testConfiguration);
#endif
@@ -197,15 +197,15 @@ class AsyncAppenderTestCase : public AppenderSkeletonTestCase
LOGUNIT_ASSERT(vectorAppender->isClosed());
}
- // this test checks whether appenders embedded within an AsyncAppender are also
- // closed
- void test3()
+ // this test checks all messages are delivered when an AsyncAppender is closed
+ void testEventFlush()
{
- size_t LEN = 200;
+ size_t LEN = 200; // Larger than default buffer size (128)
LoggerPtr root = Logger::getRootLogger();
VectorAppenderPtr vectorAppender = VectorAppenderPtr(new VectorAppender());
+ vectorAppender->setMillisecondDelay(1);
AsyncAppenderPtr asyncAppender = AsyncAppenderPtr(new AsyncAppender());
- asyncAppender->setName(LOG4CXX_STR("async-test3"));
+ asyncAppender->setName(LOG4CXX_STR("async-testEventFlush"));
asyncAppender->addAppender(vectorAppender);
root->addAppender(asyncAppender);
@@ -253,14 +253,14 @@ class AsyncAppenderTestCase : public AppenderSkeletonTestCase
}
/**
- * Tests non-blocking behavior.
+ * Tests behavior when the the async buffer overflows.
*/
- void testLocationInfoTrue()
+ void testBufferOverflowBehavior()
{
BlockableVectorAppenderPtr blockableAppender = BlockableVectorAppenderPtr(new BlockableVectorAppender());
blockableAppender->setName(LOG4CXX_STR("async-blockableVector"));
AsyncAppenderPtr async = AsyncAppenderPtr(new AsyncAppender());
- async->setName(LOG4CXX_STR("async-testLocationInfoTrue"));
+ async->setName(LOG4CXX_STR("async-testBufferOverflowBehavior"));
async->addAppender(blockableAppender);
async->setBufferSize(5);
async->setLocationInfo(true);
@@ -275,16 +275,15 @@ class AsyncAppenderTestCase : public AppenderSkeletonTestCase
for (int i = 0; i < 140; i++)
{
LOG4CXX_INFO(rootLogger, "Hello, World");
- std::this_thread::sleep_for( std::chrono::milliseconds( 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(!events.empty());
+ LoggingEventPtr initialEvent = events.front();
+ LoggingEventPtr discardEvent = events.back();
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(),
diff --git a/src/test/cpp/streamtestcase.cpp b/src/test/cpp/streamtestcase.cpp
index c90efd90..df2bdd92 100644
--- a/src/test/cpp/streamtestcase.cpp
+++ b/src/test/cpp/streamtestcase.cpp
@@ -188,8 +188,9 @@ public:
{
LoggerPtr root(Logger::getRootLogger());
LOG4CXX_INFO(root, std::scientific << 0.000001115);
- spi::LoggingEventPtr event(vectorAppender->getVector()[0]);
- LogString msg(event->getMessage());
+ auto events = vectorAppender->getVector();
+ LOGUNIT_ASSERT_EQUAL((size_t) 1, events.size());
+ LogString msg(events.front()->getMessage());
LOGUNIT_ASSERT(msg.find(LOG4CXX_STR("e-")) != LogString::npos ||
msg.find(LOG4CXX_STR("E-")) != LogString::npos);
}
diff --git a/src/test/cpp/vectorappender.cpp b/src/test/cpp/vectorappender.cpp
index 13fa5656..e01dbad8 100644
--- a/src/test/cpp/vectorappender.cpp
+++ b/src/test/cpp/vectorappender.cpp
@@ -25,9 +25,9 @@ IMPLEMENT_LOG4CXX_OBJECT(VectorAppender)
void VectorAppender::append(const spi::LoggingEventPtr& event, Pool& /*p*/)
{
- std::this_thread::sleep_for( std::chrono::milliseconds( 100 ) );
-
- vector.push_back(event);
+ if (0 < this->appendMillisecondDelay)
+ std::this_thread::sleep_for( std::chrono::milliseconds( this->appendMillisecondDelay ) );
+ this->vector.push_back(event);
}
void VectorAppender::close()
diff --git a/src/test/cpp/vectorappender.h b/src/test/cpp/vectorappender.h
index fe184dea..0d379fd4 100644
--- a/src/test/cpp/vectorappender.h
+++ b/src/test/cpp/vectorappender.h
@@ -37,7 +37,7 @@ class VectorAppender : public AppenderSkeleton
END_LOG4CXX_CAST_MAP()
std::vector<spi::LoggingEventPtr> vector;
-
+ int appendMillisecondDelay = 0;
/**
This method is called by the AppenderSkeleton#doAppend
@@ -47,7 +47,7 @@ class VectorAppender : public AppenderSkeleton
const std::vector<spi::LoggingEventPtr>& getVector() const
{
- return vector;
+ return this->vector;
}
void close() override;
@@ -61,6 +61,11 @@ class VectorAppender : public AppenderSkeleton
{
return false;
}
+
+ void setMillisecondDelay(int milliseconds)
+ {
+ this->appendMillisecondDelay = milliseconds;
+ }
};
typedef std::shared_ptr<VectorAppender> VectorAppenderPtr;
}