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>