예제 #1
0
 public void BindByName()
 {
     var con = new Oracle.ManagedDataAccess.Client.OracleConnection();
     var cmd = con.CreateCommand();
     var wcon = new LoggingConnection(con);
     var wcmd = wcon.CreateCommand();
     Assert.False(cmd.BindByName);
     Assert.True(wcmd.TryCast<Oracle.ManagedDataAccess.Client.OracleCommand>().BindByName);
 }
예제 #2
0
 public LoggingTransaction(DbTransaction transaction, LoggingConnection connection, ILoggingWriter logger)
 {
     _transaction = RealTransaction(transaction) ?? throw new ArgumentNullException(nameof(transaction));
     _connection  = connection ?? throw new ArgumentNullException(nameof(connection));
     _logger      = logger;
 }
예제 #3
0
        public void Transaction()
        {
            var conn = new System.Data.SQLite.SQLiteConnection("Data Source=:memory:");
            using (var wconn = new LoggingConnection(conn))
            {
                wconn.Open();

                Assert.Equal(LogLevel.Trace, logger.Last.Level);
                Assert.StartsWith("コネクションを接続しました。 実行時間:", logger.Last.Message);

                using (var trans = wconn.BeginTransaction())
                {
                    Assert.Equal(LogLevel.Trace, logger.Last.Level);
                    Assert.Equal("トランザクションを開始しました。", logger.Last.Message);

                    trans.Commit();

                    Assert.Equal(LogLevel.Trace, logger.Last.Level);
                    Assert.Matches(@"トランザクションをコミットしました。 実行時間:\d\d:\d\d:\d\d\.\d+", logger.Last.Message);
                }
                Assert.Equal(LogLevel.Trace, logger.Last.Level);
                Assert.Equal("トランザクションが破棄(Dispose)されました。", logger.Last.Message);
                Assert.Null(logger.Last.Exception);

                using (var trans = wconn.BeginTransaction())
                {
                    Assert.Equal(LogLevel.Trace, logger.Last.Level);
                    Assert.Equal("トランザクションを開始しました。", logger.Last.Message);

                    trans.Rollback();

                    Assert.Equal(LogLevel.Trace, logger.Last.Level);
                    Assert.Matches(@"トランザクションをロールバックしました。 実行時間:\d\d:\d\d:\d\d\.\d+", logger.Last.Message);
                }
                Assert.Equal(LogLevel.Trace, logger.Last.Level);
                Assert.Equal("トランザクションが破棄(Dispose)されました。", logger.Last.Message);
                Assert.Null(logger.Last.Exception);

                using (var trans = wconn.BeginTransaction())
                {
                    Assert.Equal(LogLevel.Trace, logger.Last.Level);
                    Assert.Equal("トランザクションを開始しました。", logger.Last.Message);

                }
                Assert.Equal(LogLevel.Error, logger.Last.Level);
                Assert.Equal("コミットもロールバックも実行されずに、トランザクションが破棄(Dispose)されました。", logger.Last.Message);
                Assert.Null(logger.Last.Exception);
            }
            Assert.Equal(LogLevel.Trace, logger.Last.Level);
            Assert.Equal("コネクションが破棄(Dispose)されました。", logger.Last.Message);

            Assert.Equal(10, logger.Items.Count);
        }
예제 #4
0
        public void Connection()
        {
            using (var conn = new LoggingConnection(new System.Data.SQLite.SQLiteConnection("Data Source=:memory:")))
            {
                conn.Open();
                Assert.Equal(LogLevel.Trace, logger.Last.Level);
                Assert.Matches(@"コネクションを接続しました。 実行時間:\d+:\d+:\d+\.\d+", logger.Last.Message);
                Assert.Null(logger.Last.Exception);

                var openException = Assert.Throws<InvalidOperationException>(() => conn.Open());
                Assert.Equal(LogLevel.Error, logger.Last.Level);
                Assert.Equal(string.Format(@"接続に失敗
            --- SQLiteConnection ---
            ConnectionString  = {0}
            ConnectionTimeout = {1}
            Database = main
            State = Open
            ", conn.ConnectionString, conn.ConnectionTimeout), logger.Last.Message);
                Assert.Equal(openException, logger.Last.Exception);

                conn.Close();
                Assert.Equal(LogLevel.Trace, logger.Last.Level);
                Assert.Equal("コネクションを閉じました。", logger.Last.Message);
                Assert.Null(logger.Last.Exception);
            }
            Assert.Equal(LogLevel.Trace, logger.Last.Level);
            Assert.Equal("コネクションが破棄(Dispose)されました。", logger.Last.Message);
            Assert.Null(logger.Last.Exception);
        }