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 2007/12/31 17:25:47 UTC
svn commit: r607749 - in /logging/log4net/trunk/tests/src: ./ Appender/
Appender/AdoNet/
Author: rgrabowski
Date: Mon Dec 31 08:25:45 2007
New Revision: 607749
URL: http://svn.apache.org/viewvc?rev=607749&view=rev
Log:
Added stub Ado.Net provider to allow testing of AdoNetAppender.
Added:
logging/log4net/trunk/tests/src/Appender/AdoNet/ (with props)
logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetCommand.cs
logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetConnection.cs
logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetParameter.cs
logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetParameterCollection.cs
logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetTransaction.cs
logging/log4net/trunk/tests/src/Appender/AdoNetAppenderTest.cs
Modified:
logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj
Propchange: logging/log4net/trunk/tests/src/Appender/AdoNet/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Mon Dec 31 08:25:45 2007
@@ -0,0 +1 @@
+(LOG4NET-\d+)
Propchange: logging/log4net/trunk/tests/src/Appender/AdoNet/
------------------------------------------------------------------------------
bugtraq:url = http://issues.apache.org/jira/browse/%BUGID%
Added: logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetCommand.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetCommand.cs?rev=607749&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetCommand.cs (added)
+++ logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetCommand.cs Mon Dec 31 08:25:45 2007
@@ -0,0 +1,123 @@
+using System;
+using System.Data;
+
+namespace log4net.Tests.Appender.AdoNet
+{
+ public class Log4NetCommand : IDbCommand
+ {
+ #region AdoNetAppender
+
+ private static Log4NetCommand mostRecentInstance;
+
+ private IDbTransaction transaction;
+ private string commandText;
+ private readonly IDataParameterCollection parameters;
+ private CommandType commandType;
+ private int executeNonQueryCount;
+
+ public Log4NetCommand()
+ {
+ mostRecentInstance = this;
+
+ parameters = new Log4NetParameterCollection();
+ }
+
+ public void Dispose()
+ {
+ // empty
+ }
+
+ public IDbTransaction Transaction
+ {
+ get { return transaction; }
+ set { transaction = value; }
+ }
+
+ public int ExecuteNonQuery()
+ {
+ executeNonQueryCount++;
+ return 0;
+ }
+
+ public int ExecuteNonQueryCount
+ {
+ get { return executeNonQueryCount; }
+ }
+
+ public IDbDataParameter CreateParameter()
+ {
+ return new Log4NetParameter();
+ }
+
+ public string CommandText
+ {
+ get { return commandText; }
+ set { commandText = value; }
+ }
+
+ public CommandType CommandType
+ {
+ get { return commandType; }
+ set { commandType = value; }
+ }
+
+ public void Prepare()
+ {
+ // empty
+ }
+
+ public IDataParameterCollection Parameters
+ {
+ get { return parameters; }
+ }
+
+ public static Log4NetCommand MostRecentInstance
+ {
+ get { return mostRecentInstance; }
+ }
+
+ #endregion
+
+ #region Not Implemented
+
+ public void Cancel()
+ {
+ throw new NotImplementedException();
+ }
+
+ public IDataReader ExecuteReader()
+ {
+ throw new NotImplementedException();
+ }
+
+ public IDataReader ExecuteReader(CommandBehavior behavior)
+ {
+ throw new NotImplementedException();
+ }
+
+ public object ExecuteScalar()
+ {
+ throw new NotImplementedException();
+ }
+
+ public IDbConnection Connection
+ {
+ get { throw new NotImplementedException(); }
+ set { throw new NotImplementedException(); }
+ }
+
+ public int CommandTimeout
+ {
+ get { throw new NotImplementedException(); }
+ set { throw new NotImplementedException(); }
+ }
+
+ public UpdateRowSource UpdatedRowSource
+ {
+ get { throw new NotImplementedException(); }
+ set { throw new NotImplementedException(); }
+ }
+
+ #endregion
+ }
+}
Added: logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetConnection.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetConnection.cs?rev=607749&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetConnection.cs (added)
+++ logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetConnection.cs Mon Dec 31 08:25:45 2007
@@ -0,0 +1,90 @@
+using System;
+using System.Data;
+
+namespace log4net.Tests.Appender.AdoNet
+{
+ public class Log4NetConnection : IDbConnection
+ {
+ #region AdoNetAppender
+
+ private static Log4NetConnection mostRecentInstance;
+
+ private bool open;
+ private string connectionString;
+
+ public Log4NetConnection()
+ {
+ mostRecentInstance = this;
+ }
+
+ public void Close()
+ {
+ open = false;
+ }
+
+ public ConnectionState State
+ {
+ get
+ {
+ return open ? ConnectionState.Open : ConnectionState.Closed;
+ }
+ }
+
+ public string ConnectionString
+ {
+ get { return connectionString; }
+ set { connectionString = value; }
+ }
+
+ public IDbTransaction BeginTransaction()
+ {
+ return new Log4NetTransaction();
+ }
+
+ public IDbCommand CreateCommand()
+ {
+ return new Log4NetCommand();
+ }
+
+ public void Open()
+ {
+ open = true;
+ }
+
+ public static Log4NetConnection MostRecentInstance
+ {
+ get { return mostRecentInstance; }
+ }
+
+ #endregion
+
+ #region Not Implemented
+
+ public IDbTransaction BeginTransaction(IsolationLevel il)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void ChangeDatabase(string databaseName)
+ {
+ throw new NotImplementedException();
+ }
+
+ public int ConnectionTimeout
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ public string Database
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ public void Dispose()
+ {
+ throw new NotImplementedException();
+ }
+
+ #endregion
+ }
+}
Added: logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetParameter.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetParameter.cs?rev=607749&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetParameter.cs (added)
+++ logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetParameter.cs Mon Dec 31 08:25:45 2007
@@ -0,0 +1,82 @@
+using System;
+using System.Data;
+
+namespace log4net.Tests.Appender.AdoNet
+{
+ public class Log4NetParameter : IDbDataParameter
+ {
+ #region AdoNetAppender
+
+ private string parameterName;
+ private byte precision;
+ private byte scale;
+ private int size;
+ private DbType dbType;
+ private object value;
+
+ public string ParameterName
+ {
+ get { return parameterName; }
+ set { parameterName = value; }
+ }
+
+ public byte Precision
+ {
+ get { return precision; }
+ set { precision = value; }
+ }
+
+ public byte Scale
+ {
+ get { return scale; }
+ set { scale = value; }
+ }
+
+ public int Size
+ {
+ get { return size; }
+ set { size = value; }
+ }
+
+ public DbType DbType
+ {
+ get { return dbType; }
+ set { dbType = value; }
+ }
+
+ public object Value
+ {
+ get { return value; }
+ set { this.value = value; }
+ }
+
+ #endregion
+
+ #region Not Implemented
+
+ public ParameterDirection Direction
+ {
+ get { throw new NotImplementedException(); }
+ set { throw new NotImplementedException(); }
+ }
+
+ public bool IsNullable
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ public string SourceColumn
+ {
+ get { throw new NotImplementedException(); }
+ set { throw new NotImplementedException(); }
+ }
+
+ public DataRowVersion SourceVersion
+ {
+ get { throw new NotImplementedException(); }
+ set { throw new NotImplementedException(); }
+ }
+
+ #endregion
+ }
+}
Added: logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetParameterCollection.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetParameterCollection.cs?rev=607749&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetParameterCollection.cs (added)
+++ logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetParameterCollection.cs Mon Dec 31 08:25:45 2007
@@ -0,0 +1,48 @@
+using System;
+using System.Collections;
+using System.Data;
+
+namespace log4net.Tests.Appender.AdoNet
+{
+ public class Log4NetParameterCollection : CollectionBase, IDataParameterCollection
+ {
+ #region AdoNetAppender
+
+ private readonly Hashtable parameterNameToIndex = new Hashtable();
+
+ protected override void OnInsertComplete(int index, object value)
+ {
+ base.OnInsertComplete(index, value);
+
+ IDataParameter param = (IDataParameter)value;
+ parameterNameToIndex[param.ParameterName] = index;
+ }
+
+ public int IndexOf(string parameterName)
+ {
+ return (int)parameterNameToIndex[parameterName];
+ }
+
+ public object this[string parameterName]
+ {
+ get { return InnerList[IndexOf(parameterName)]; }
+ set { InnerList[InnerList.IndexOf(parameterName)] = value; }
+ }
+
+ #endregion
+
+ #region Not Implemented
+
+ public void RemoveAt(string parameterName)
+ {
+ throw new NotImplementedException();
+ }
+
+ public bool Contains(string parameterName)
+ {
+ throw new NotImplementedException();
+ }
+
+ #endregion
+ }
+}
Added: logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetTransaction.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetTransaction.cs?rev=607749&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetTransaction.cs (added)
+++ logging/log4net/trunk/tests/src/Appender/AdoNet/Log4NetTransaction.cs Mon Dec 31 08:25:45 2007
@@ -0,0 +1,41 @@
+using System;
+using System.Data;
+
+namespace log4net.Tests.Appender.AdoNet
+{
+ public class Log4NetTransaction : IDbTransaction
+ {
+ #region AdoNetAppender
+
+ public void Commit()
+ {
+ // empty
+ }
+
+ public void Rollback()
+ {
+ // empty
+ }
+
+ #endregion
+
+ #region Not Implemented
+
+ public IDbConnection Connection
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ public IsolationLevel IsolationLevel
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ public void Dispose()
+ {
+ throw new NotImplementedException();
+ }
+
+ #endregion
+ }
+}
Added: logging/log4net/trunk/tests/src/Appender/AdoNetAppenderTest.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Appender/AdoNetAppenderTest.cs?rev=607749&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Appender/AdoNetAppenderTest.cs (added)
+++ logging/log4net/trunk/tests/src/Appender/AdoNetAppenderTest.cs Mon Dec 31 08:25:45 2007
@@ -0,0 +1,122 @@
+using System;
+using System.Data;
+using System.Xml;
+using log4net.Appender;
+using log4net.Config;
+using log4net.Core;
+using log4net.Repository;
+using log4net.Tests.Appender.AdoNet;
+using NUnit.Framework;
+
+namespace log4net.Tests.Appender
+{
+ [TestFixture]
+ public class AdoNetAppenderTest
+ {
+ [Test]
+ public void NoBufferingTest()
+ {
+ ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+
+ AdoNetAppender adoNetAppender = new AdoNetAppender();
+ adoNetAppender.BufferSize = -1;
+ adoNetAppender.ConnectionType = "log4net.Tests.Appender.AdoNet.Log4NetConnection";
+ adoNetAppender.ActivateOptions();
+
+ BasicConfigurator.Configure(rep, adoNetAppender);
+
+ ILog log = LogManager.GetLogger(rep.Name, "NoBufferingTest");
+ log.Debug("Message");
+ Assert.AreEqual(1, Log4NetCommand.MostRecentInstance.ExecuteNonQueryCount);
+ }
+
+ [Test]
+ public void WebsiteExample()
+ {
+ XmlDocument log4netConfig = new XmlDocument();
+ #region Load log4netConfig
+ log4netConfig.LoadXml(@"
+ <log4net>
+ <appender name=""AdoNetAppender"" type=""log4net.Appender.AdoNetAppender"">
+ <bufferSize value=""-1"" />
+ <connectionType value=""log4net.Tests.Appender.AdoNet.Log4NetConnection"" />
+ <connectionString value=""data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]"" />
+ <commandText value=""INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"" />
+ <parameter>
+ <parameterName value=""@log_date"" />
+ <dbType value=""DateTime"" />
+ <layout type=""log4net.Layout.RawTimeStampLayout"" />
+ </parameter>
+ <parameter>
+ <parameterName value=""@thread"" />
+ <dbType value=""String"" />
+ <size value=""255"" />
+ <layout type=""log4net.Layout.PatternLayout"">
+ <conversionPattern value=""%thread"" />
+ </layout>
+ </parameter>
+ <parameter>
+ <parameterName value=""@log_level"" />
+ <dbType value=""String"" />
+ <size value=""50"" />
+ <layout type=""log4net.Layout.PatternLayout"">
+ <conversionPattern value=""%level"" />
+ </layout>
+ </parameter>
+ <parameter>
+ <parameterName value=""@logger"" />
+ <dbType value=""String"" />
+ <size value=""255"" />
+ <layout type=""log4net.Layout.PatternLayout"">
+ <conversionPattern value=""%logger"" />
+ </layout>
+ </parameter>
+ <parameter>
+ <parameterName value=""@message"" />
+ <dbType value=""String"" />
+ <size value=""4000"" />
+ <layout type=""log4net.Layout.PatternLayout"">
+ <conversionPattern value=""%message"" />
+ </layout>
+ </parameter>
+ <parameter>
+ <parameterName value=""@exception"" />
+ <dbType value=""String"" />
+ <size value=""2000"" />
+ <layout type=""log4net.Layout.ExceptionLayout"" />
+ </parameter>
+ </appender>
+ <root>
+ <level value=""ALL"" />
+ <appender-ref ref=""AdoNetAppender"" />
+ </root>
+ </log4net>");
+ #endregion
+
+ ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+ XmlConfigurator.Configure(rep, log4netConfig["log4net"]);
+ ILog log = LogManager.GetLogger(rep.Name, "WebsiteExample");
+ log.Debug("Message");
+
+ IDbCommand command = Log4NetCommand.MostRecentInstance;
+
+ Assert.AreEqual(
+ "INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)",
+ command.CommandText);
+
+ Assert.AreEqual(6, command.Parameters.Count);
+
+ IDbDataParameter param = (IDbDataParameter)command.Parameters["@message"];
+ Assert.AreEqual("Message", param.Value);
+
+ param = (IDbDataParameter)command.Parameters["@log_level"];
+ Assert.AreEqual(Level.Debug.ToString(), param.Value);
+
+ param = (IDbDataParameter)command.Parameters["@logger"];
+ Assert.AreEqual("WebsiteExample", param.Value);
+
+ param = (IDbDataParameter)command.Parameters["@exception"];
+ Assert.IsEmpty((string)param.Value);
+ }
+ }
+}
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=607749&r1=607748&r2=607749&view=diff
==============================================================================
--- logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj (original)
+++ logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj Mon Dec 31 08:25:45 2007
@@ -74,6 +74,7 @@
<Reference Include="System">
<Name>System</Name>
</Reference>
+ <Reference Include="System.configuration" />
<Reference Include="System.Data">
<Name>System.Data</Name>
</Reference>
@@ -89,6 +90,12 @@
<Link>AssemblyVersionInfo.cs</Link>
<SubType>Code</SubType>
</Compile>
+ <Compile Include="Appender\AdoNetAppenderTest.cs" />
+ <Compile Include="Appender\AdoNet\Log4NetCommand.cs" />
+ <Compile Include="Appender\AdoNet\Log4NetConnection.cs" />
+ <Compile Include="Appender\AdoNet\Log4NetParameter.cs" />
+ <Compile Include="Appender\AdoNet\Log4NetParameterCollection.cs" />
+ <Compile Include="Appender\AdoNet\Log4NetTransaction.cs" />
<Compile Include="Appender\BufferingAppenderTest.cs">
<SubType>Code</SubType>
</Compile>