You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by rg...@apache.org on 2008/01/13 19:45:32 UTC

svn commit: r611623 - in /logging/log4net/trunk/tests/src: Hierarchy/Hierarchy.cs Util/PatternConverterTest.cs log4net.Tests.vs2005.csproj

Author: rgrabowski
Date: Sun Jan 13 10:45:31 2008
New Revision: 611623

URL: http://svn.apache.org/viewvc?rev=611623&view=rev
Log:
Added test for LOG4NET-53 (allow repository properties to be set in xml config file). Added test case for LOG4NET-31 (allow additional properties to be set on converters).

Added:
    logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs
    logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs
Modified:
    logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj

Added: logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs?rev=611623&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs (added)
+++ logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs Sun Jan 13 10:45:31 2008
@@ -0,0 +1,39 @@
+using System;
+using System.Xml;
+using log4net.Config;
+using log4net.Repository;
+using NUnit.Framework;
+
+namespace log4net.Tests.Hierarchy
+{
+    [TestFixture]
+    public class Hierarchy
+    {
+        [Test]
+        public void SetRepositoryPropertiesInConfigFile()
+        {
+            // LOG4NET-53: Allow repository properties to be set in the config file
+            XmlDocument log4netConfig = new XmlDocument();
+            log4netConfig.LoadXml(@"
+                <log4net>
+                  <property>
+                    <key value=""two-plus-two"" />
+                    <value value=""4"" />
+                  </property>
+                  <appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
+                    <layout type=""log4net.Layout.SimpleLayout"" />
+                  </appender>
+                  <root>
+                    <level value=""ALL"" />                  
+                    <appender-ref ref=""StringAppender"" />
+                  </root>  
+                </log4net>");
+
+            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+            XmlConfigurator.Configure(rep, log4netConfig["log4net"]);
+
+            Assert.AreEqual("4", rep.Properties["two-plus-two"]);
+            Assert.IsNull(rep.Properties["one-plus-one"]);
+        }
+    }
+}

Added: logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs?rev=611623&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs (added)
+++ logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs Sun Jan 13 10:45:31 2008
@@ -0,0 +1,171 @@
+using System;
+using System.IO;
+using System.Xml;
+using log4net.Config;
+using log4net.Core;
+using log4net.Layout.Pattern;
+using log4net.Repository;
+using log4net.Tests.Appender;
+using log4net.Util;
+using NUnit.Framework;
+
+namespace log4net.Tests.Util
+{
+    [TestFixture]
+    public class PatternConverterTest
+    {
+        [Test]
+        public void PatternLayoutConverterProperties()
+        {
+            XmlDocument log4netConfig = new XmlDocument();
+            log4netConfig.LoadXml(@"
+                <log4net>
+                  <appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
+                    <layout type=""log4net.Layout.PatternLayout"">
+                        <converter>
+                            <name value=""propertyKeyCount"" />
+                            <type value=""log4net.Tests.Util.PropertyKeyCountPatternLayoutConverter, log4net.Tests"" />
+                            <property>
+                                <key value=""one-plus-one"" />
+                                <value value=""2"" />
+                            </property>
+                            <property>
+                               <key value=""two-plus-two"" />
+                               <value value=""4"" />
+                            </property> 
+                        </converter>
+                        <conversionPattern value=""%propertyKeyCount"" />
+                    </layout>
+                  </appender>
+                  <root>
+                    <level value=""ALL"" />                  
+                    <appender-ref ref=""StringAppender"" />
+                  </root>  
+                </log4net>");
+
+            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+            XmlConfigurator.Configure(rep, log4netConfig["log4net"]);
+
+            ILog log = LogManager.GetLogger(rep.Name, "PatternLayoutConverterProperties");
+            log.Debug("Message");
+
+            PropertyKeyCountPatternLayoutConverter converter = 
+                PropertyKeyCountPatternLayoutConverter.MostRecentInstance;
+            Assert.AreEqual(2, converter.Properties.Count);
+            Assert.AreEqual("4", converter.Properties["two-plus-two"]);
+
+            StringAppender appender = 
+                (StringAppender)LogManager.GetRepository(rep.Name).GetAppenders()[0];
+            Assert.AreEqual("2", appender.GetString());
+        }
+
+        [Test]
+        public void PatternConverterProperties()
+        {
+            XmlDocument log4netConfig = new XmlDocument();
+            log4netConfig.LoadXml(@"
+                <log4net>
+                  <appender name=""PatternStringAppender"" type=""log4net.Tests.Util.PatternStringAppender, log4net.Tests"">
+                    <layout type=""log4net.Layout.SimpleLayout"" />
+                    <setting>
+                        <converter>
+                            <name value=""propertyKeyCount"" />
+                            <type value=""log4net.Tests.Util.PropertyKeyCountPatternConverter, log4net.Tests"" />
+                            <property>
+                                <key value=""one-plus-one"" />
+                                <value value=""2"" />
+                            </property>
+                            <property>
+                               <key value=""two-plus-two"" />
+                               <value value=""4"" />
+                            </property> 
+                        </converter>
+                        <conversionPattern value=""%propertyKeyCount"" />
+                    </setting>
+                  </appender>
+                  <root>
+                    <level value=""ALL"" />                  
+                    <appender-ref ref=""PatternStringAppender"" />
+                  </root>  
+                </log4net>");
+
+            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+            XmlConfigurator.Configure(rep, log4netConfig["log4net"]);
+
+            ILog log = LogManager.GetLogger(rep.Name, "PatternConverterProperties");
+            log.Debug("Message");
+
+            PropertyKeyCountPatternConverter converter =
+                PropertyKeyCountPatternConverter.MostRecentInstance;
+            Assert.AreEqual(2, converter.Properties.Count);
+            Assert.AreEqual("4", converter.Properties["two-plus-two"]);
+
+            PatternStringAppender appender =
+                (PatternStringAppender)LogManager.GetRepository(rep.Name).GetAppenders()[0];
+            Assert.AreEqual("2", appender.Setting.Format());
+        }
+    }
+
+    public class PropertyKeyCountPatternLayoutConverter : PatternLayoutConverter
+    {
+        private static PropertyKeyCountPatternLayoutConverter mostRecentInstance;
+
+        public PropertyKeyCountPatternLayoutConverter()
+        {
+            mostRecentInstance = this;
+        }
+
+        protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
+        {
+            writer.Write(Properties.GetKeys().Length);
+        }
+
+        public static PropertyKeyCountPatternLayoutConverter MostRecentInstance
+        {
+            get { return mostRecentInstance; }
+        }
+    }
+
+    public class PropertyKeyCountPatternConverter : PatternConverter
+    {
+        private static PropertyKeyCountPatternConverter mostRecentInstance;
+
+        public PropertyKeyCountPatternConverter()
+        {
+            mostRecentInstance = this;
+        }
+
+        protected override void Convert(TextWriter writer, object state)
+        {
+            writer.Write(Properties.GetKeys().Length);
+        }
+
+        public static PropertyKeyCountPatternConverter MostRecentInstance
+        {
+            get { return mostRecentInstance; }
+        }
+    }
+
+    public class PatternStringAppender : StringAppender
+    {
+        private static PatternStringAppender mostRecentInstace;
+
+        private PatternString setting;
+
+        public PatternStringAppender()
+        {
+            mostRecentInstace = this;
+        }
+
+        public PatternString Setting
+        {
+            get { return setting; }
+            set { setting = value; }
+        }
+
+        public static PatternStringAppender MostRecentInstace
+        {
+            get { return mostRecentInstace; }
+        }
+    }
+}

Modified: logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj?rev=611623&r1=611622&r2=611623&view=diff
==============================================================================
--- logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj (original)
+++ logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj Sun Jan 13 10:45:31 2008
@@ -133,6 +133,7 @@
     <Compile Include="Core\StringFormatTest.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="Hierarchy\Hierarchy.cs" />
     <Compile Include="Hierarchy\Logger.cs">
       <SubType>Code</SubType>
     </Compile>
@@ -151,6 +152,7 @@
     </Compile>
     <Compile Include="Util\EnvironmentPatternConverterTest.cs" />
     <Compile Include="Util\LogLogTest.cs" />
+    <Compile Include="Util\PatternConverterTest.cs" />
     <Compile Include="Util\PatternStringTest.cs" />
     <Compile Include="Util\PropertiesDictionaryTest.cs">
       <SubType>Code</SubType>