You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rm...@apache.org on 2022/09/09 16:50:53 UTC
[logging-log4cxx] 01/01: Added fallback test
This is an automated email from the ASF dual-hosted git repository.
rmiddleton pushed a commit to branch add-fallback-test
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
commit cb96ae91fd73e94bcf34a06077e991b9ae477fdc
Author: Robert Middleton <ro...@rm5248.com>
AuthorDate: Fri Sep 9 12:46:32 2022 -0400
Added fallback test
Added another test for the fallback handling to ensure that multiple appenders
on the same logger will not segfault if replaced while iterating.
---
src/test/cpp/varia/errorhandlertestcase.cpp | 43 +++++++++++++++++++++-
src/test/resources/input/xml/fallback1.xml | 2 +-
.../input/xml/{fallback1.xml => fallback2.xml} | 9 ++++-
3 files changed, 50 insertions(+), 4 deletions(-)
diff --git a/src/test/cpp/varia/errorhandlertestcase.cpp b/src/test/cpp/varia/errorhandlertestcase.cpp
index e86972d1..816896e8 100644
--- a/src/test/cpp/varia/errorhandlertestcase.cpp
+++ b/src/test/cpp/varia/errorhandlertestcase.cpp
@@ -35,6 +35,7 @@ LOGUNIT_CLASS(ErrorHandlerTestCase)
{
LOGUNIT_TEST_SUITE(ErrorHandlerTestCase);
LOGUNIT_TEST(test1);
+ LOGUNIT_TEST(test2);
LOGUNIT_TEST_SUITE_END();
LoggerPtr root;
@@ -85,7 +86,7 @@ public:
try
{
- Transformer::transform("output/fallback", "output/fallbackfiltered", filters);
+ Transformer::transform("output/fallback1", "output/fallbackfiltered1", filters);
}
catch (UnexpectedFormatException& e)
{
@@ -94,7 +95,45 @@ public:
}
- LOGUNIT_ASSERT(Compare::compare("output/fallbackfiltered", "witness/fallback1"));
+ LOGUNIT_ASSERT(Compare::compare("output/fallbackfiltered1", "witness/fallback1"));
+ }
+
+ void test2()
+ {
+ DOMConfigurator::configure("input/xml/fallback2.xml");
+ AppenderPtr appender = root->getAppender(LOG4CXX_STR("PRIMARY"));
+ FileAppenderPtr primary = log4cxx::cast<FileAppender>(appender);
+ log4cxx::varia::FallbackErrorHandlerPtr eh;
+ log4cxx::spi::ErrorHandlerPtr errHandle = primary->getErrorHandler();
+ eh = log4cxx::cast<log4cxx::varia::FallbackErrorHandler>(errHandle);
+ LOGUNIT_ASSERT(eh != 0);
+
+ common();
+
+ std::string TEST1_PAT =
+ "FALLBACK - (root|test) - Message {0-9}";
+
+ ControlFilter cf;
+ cf << TEST1_PAT;
+
+ LineNumberFilter lineNumberFilter;
+
+ std::vector<Filter*> filters;
+ filters.push_back(&cf);
+ filters.push_back(&lineNumberFilter);
+
+ try
+ {
+ Transformer::transform("output/fallback2", "output/fallbackfiltered2", filters);
+ }
+ catch (UnexpectedFormatException& e)
+ {
+ std::cout << "UnexpectedFormatException :" << e.what() << std::endl;
+ throw;
+ }
+
+
+ LOGUNIT_ASSERT(Compare::compare("output/fallbackfiltered2", "witness/fallback1"));
}
void common()
diff --git a/src/test/resources/input/xml/fallback1.xml b/src/test/resources/input/xml/fallback1.xml
index 90072a31..83ed810e 100644
--- a/src/test/resources/input/xml/fallback1.xml
+++ b/src/test/resources/input/xml/fallback1.xml
@@ -45,7 +45,7 @@
</appender>
<appender name="FALLBACK" class="org.apache.log4j.FileAppender">
- <param name="File" value="output/fallback" />
+ <param name="File" value="output/fallback1" />
<param name="Append" value="false" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="FALLBACK - %c - %m%n"/>
diff --git a/src/test/resources/input/xml/fallback1.xml b/src/test/resources/input/xml/fallback2.xml
similarity index 86%
copy from src/test/resources/input/xml/fallback1.xml
copy to src/test/resources/input/xml/fallback2.xml
index 90072a31..e0f37003 100644
--- a/src/test/resources/input/xml/fallback1.xml
+++ b/src/test/resources/input/xml/fallback2.xml
@@ -45,17 +45,24 @@
</appender>
<appender name="FALLBACK" class="org.apache.log4j.FileAppender">
- <param name="File" value="output/fallback" />
+ <param name="File" value="output/fallback2" />
<param name="Append" value="false" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="FALLBACK - %c - %m%n"/>
</layout>
</appender>
+ <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
+ <param name="Target" value="System.out"/>
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="STDOUT - %m%n"/>
+ </layout>
+ </appender>
<root>
<priority value ="debug" />
<appender-ref ref="PRIMARY" />
+ <appender-ref ref="STDOUT" />
</root>
</log4j:configuration>