Author: dpsenner
Date: Sun Nov  1 17:44:48 2015
New Revision: 1711831

URL: http://svn.apache.org/viewvc?rev=1711831&view=rev
Log:
Added a basic SmtpPickupDirAppenderTest (closes #17)

Added:
    logging/log4net/trunk/tests/src/Appender/SmtpPickupDirAppenderTest.cs
Modified:
    logging/log4net/trunk/tests/src/log4net.Tests.vs2008.csproj
    logging/log4net/trunk/tests/src/log4net.Tests.vs2010.csproj
    logging/log4net/trunk/tests/src/log4net.Tests.vs2012.csproj

Added: logging/log4net/trunk/tests/src/Appender/SmtpPickupDirAppenderTest.cs
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Appender/SmtpPickupDirAppenderTest.cs?rev=1711831&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Appender/SmtpPickupDirAppenderTest.cs 
(added)
+++ logging/log4net/trunk/tests/src/Appender/SmtpPickupDirAppenderTest.cs Sun 
Nov  1 17:44:48 2015
@@ -0,0 +1,194 @@
+#region Apache License
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more 
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership. 
+// The ASF licenses this file to you under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with 
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#endregion
+
+using System;
+using System.Collections;
+using System.Diagnostics;
+using System.IO;
+using System.Text;
+
+using log4net.Appender;
+using log4net.Core;
+using log4net.Layout;
+
+using NUnit.Framework;
+
+namespace log4net.Tests.Appender
+{
+       /// <summary>
+       /// Used for internal unit testing the <see 
cref="SmtpPickupDirAppender"/> class.
+       /// </summary>
+       [TestFixture]
+       public class SmtpPickupDirAppenderTest
+       {
+               private readonly string _testPickupDir;
+
+               private class SilentErrorHandler : IErrorHandler
+               {
+                       private StringBuilder m_buffer = new StringBuilder();
+
+                       public string Message
+                       {
+                               get { return m_buffer.ToString(); }
+                       }
+
+                       public void Error(string message)
+                       {
+                               m_buffer.Append(message + "\n");
+                       }
+
+                       public void Error(string message, Exception e)
+                       {
+                               m_buffer.Append(message + "\n" + e.Message + 
"\n");
+                       }
+
+                       public void Error(string message, Exception e, 
ErrorCode errorCode)
+                       {
+                               m_buffer.Append(message + "\n" + e.Message + 
"\n");
+                       }
+               }
+
+               public SmtpPickupDirAppenderTest()
+               {
+                       _testPickupDir = 
Path.Combine(Directory.GetCurrentDirectory(), 
"SmtpPickupDirAppenderTest_PickupDir");
+               }
+               /// <summary>
+               /// Sets up variables used for the tests
+               /// </summary>
+               private void InitializePickupDir()
+               {
+                       Directory.CreateDirectory(_testPickupDir);
+               }
+
+               /// <summary>
+               /// Shuts down any loggers in the hierarchy, along
+               /// with all appenders, and deletes any test files used
+               /// for logging.
+               /// </summary>
+               private void ResetLogger()
+               {
+                       // Regular users should not use the clear method 
lightly!
+                       LogManager.GetRepository().ResetConfiguration();
+                       LogManager.GetRepository().Shutdown();
+                       
((Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Clear();
+               }
+
+               /// <summary>
+               /// Any initialization that happens before each test can
+               /// go here
+               /// </summary>
+               [SetUp]
+               public void SetUp()
+               {
+                       ResetLogger();
+                       DeleteTestFiles();
+                       InitializePickupDir();
+               }
+
+               /// <summary>
+               /// Any steps that happen after each test go here
+               /// </summary>
+               [TearDown]
+               public void TearDown()
+               {
+                       ResetLogger();
+                       DeleteTestFiles();
+               }
+
+               /// <summary>
+               /// Removes all test files that exist
+               /// </summary>
+               private void DeleteTestFiles()
+               {
+                       if (Directory.Exists(_testPickupDir))
+                       {
+                               Directory.Delete(_testPickupDir, true);
+                       }
+               }
+
+               /// <summary>
+               /// Creates a logger hierarchy, configures a SMTP pickup dir 
appender and returns an ILogger
+               /// </summary>
+               /// <param name="appender">The appender to use</param>
+               /// <returns>A configured ILogger</returns>
+               private ILogger CreateLogger(SmtpPickupDirAppender appender)
+               {
+                       Repository.Hierarchy.Hierarchy h = 
(Repository.Hierarchy.Hierarchy)LogManager.CreateRepository("TestRepository");
+
+                       PatternLayout layout = new PatternLayout();
+                       layout.ConversionPattern = "%m%n";
+                       layout.ActivateOptions();
+
+                       appender.Layout = layout;
+                       appender.ActivateOptions();
+
+                       h.Root.AddAppender(appender);
+                       h.Configured = true;
+
+                       ILogger log = h.GetLogger("Logger");
+                       return log;
+               }
+
+               /// <summary>
+               /// Create an appender to use for the logger
+               /// </summary>
+               /// <param name="handler">The error handler to use.</param>
+               /// <returns></returns>
+               private SmtpPickupDirAppender 
CreateSmtpPickupDirAppender(IErrorHandler handler)
+               {
+                       SmtpPickupDirAppender appender = new 
SmtpPickupDirAppender();
+                       appender.PickupDir = _testPickupDir;
+                       appender.ErrorHandler = handler;
+                       return appender;
+               }
+
+               /// <summary>
+               /// Destroys the logger hierarchy created by <see 
cref="SmtpPickupDirAppenderTest.CreateLogger"/>
+               /// </summary>
+               private static void DestroyLogger()
+               {
+                       Repository.Hierarchy.Hierarchy h = 
(Repository.Hierarchy.Hierarchy)LogManager.GetRepository("TestRepository");
+                       h.ResetConfiguration();
+                       //Replace the repository selector so that we can 
recreate the hierarchy with the same name if necessary
+                       LoggerManager.RepositorySelector = new 
DefaultRepositorySelector(typeof(log4net.Repository.Hierarchy.Hierarchy));
+               }
+
+               /// <summary>
+               /// Verifies that logging a message actually produces output
+               /// </summary>
+               [Test]
+               public void TestDefaultFileNameIsAGuid()
+               {
+                       SilentErrorHandler sh = new SilentErrorHandler();
+                       SmtpPickupDirAppender appender = 
CreateSmtpPickupDirAppender(sh);
+                       ILogger log = CreateLogger(appender);
+                       log.Log(GetType(), Level.Info, "This is a message", 
null);
+                       log.Log(GetType(), Level.Info, "This is a message 2", 
null);
+                       DestroyLogger();
+
+                       Assert.AreEqual(1, 
Directory.GetFiles(_testPickupDir).Length);
+                       var fileInfo = new 
FileInfo(Directory.GetFiles(_testPickupDir)[0]);
+                       Assert.IsEmpty(fileInfo.Extension);
+                       Guid tmpGuid;
+                       Assert.IsTrue(Guid.TryParse(fileInfo.Name, out 
tmpGuid)); // Assert that filename is a guid
+
+                       Assert.AreEqual("", sh.Message, "Unexpected error 
message");
+               }
+       }
+}
\ No newline at end of file

Modified: logging/log4net/trunk/tests/src/log4net.Tests.vs2008.csproj
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/log4net.Tests.vs2008.csproj?rev=1711831&r1=1711830&r2=1711831&view=diff
==============================================================================
--- logging/log4net/trunk/tests/src/log4net.Tests.vs2008.csproj (original)
+++ logging/log4net/trunk/tests/src/log4net.Tests.vs2008.csproj Sun Nov  1 
17:44:48 2015
@@ -139,6 +139,9 @@
     <Compile Include="Appender\RemotingAppenderTest.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="Appender\SmtpPickupDirAppenderTest.cs">
+      <SubType>Code</SubType>
+    </Compile>
     <Compile Include="Appender\RollingFileAppenderTest.cs">
       <SubType>Code</SubType>
     </Compile>

Modified: logging/log4net/trunk/tests/src/log4net.Tests.vs2010.csproj
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/log4net.Tests.vs2010.csproj?rev=1711831&r1=1711830&r2=1711831&view=diff
==============================================================================
--- logging/log4net/trunk/tests/src/log4net.Tests.vs2010.csproj (original)
+++ logging/log4net/trunk/tests/src/log4net.Tests.vs2010.csproj Sun Nov  1 
17:44:48 2015
@@ -156,6 +156,9 @@
     <Compile Include="Appender\RemotingAppenderTest.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="Appender\SmtpPickupDirAppenderTest.cs">
+      <SubType>Code</SubType>
+    </Compile>
     <Compile Include="Appender\RollingFileAppenderTest.cs">
       <SubType>Code</SubType>
     </Compile>

Modified: logging/log4net/trunk/tests/src/log4net.Tests.vs2012.csproj
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/log4net.Tests.vs2012.csproj?rev=1711831&r1=1711830&r2=1711831&view=diff
==============================================================================
--- logging/log4net/trunk/tests/src/log4net.Tests.vs2012.csproj (original)
+++ logging/log4net/trunk/tests/src/log4net.Tests.vs2012.csproj Sun Nov  1 
17:44:48 2015
@@ -156,6 +156,9 @@
     <Compile Include="Appender\RemotingAppenderTest.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="Appender\SmtpPickupDirAppenderTest.cs">
+      <SubType>Code</SubType>
+    </Compile>
     <Compile Include="Appender\RollingFileAppenderTest.cs">
       <SubType>Code</SubType>
     </Compile>


Reply via email to