Пример #1
0
        public void TableCreatedWithCustomNames()
        {
            // arrange
            var options       = new ColumnOptions();
            var standardNames = new List <string> {
                "CustomMessage", "CustomMessageTemplate", "CustomLevel", "CustomTimeStamp", "CustomException", "CustomProperties"
            };

            options.Message.ColumnName         = "CustomMessage";
            options.MessageTemplate.ColumnName = "CustomMessageTemplate";
            options.Level.ColumnName           = "CustomLevel";
            options.TimeStamp.ColumnName       = "CustomTimeStamp";
            options.Exception.ColumnName       = "CustomException";
            options.Properties.ColumnName      = "CustomProperties";

            // act
            var logTableName = $"{DatabaseFixture.LogTableName}Custom";
            var sink         = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, logTableName, 1, TimeSpan.FromSeconds(1), null, true, options);

            // assert
            using (var conn = new SqlConnection(DatabaseFixture.MasterConnectionString))
            {
                conn.Execute($"use {DatabaseFixture.Database}");
                var logEvents  = conn.Query <InfoSchema>($@"SELECT COLUMN_NAME AS ColumnName FROM {DatabaseFixture.Database}.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{logTableName}'");
                var infoSchema = logEvents as InfoSchema[] ?? logEvents.ToArray();

                foreach (var column in standardNames)
                {
                    infoSchema.Should().Contain(columns => columns.ColumnName == column);
                }

                infoSchema.Should().Contain(columns => columns.ColumnName == "Id");
            }
        }
        public void TableCreatedWithCustomNamesSinkOptionsInterface()
        {
            // Arrange
            var columnOptions = new Serilog.Sinks.MSSqlServer.ColumnOptions();
            var standardNames = new List <string> {
                "CustomMessage", "CustomMessageTemplate", "CustomLevel", "CustomTimeStamp", "CustomException", "CustomProperties"
            };

            columnOptions.Message.ColumnName         = "CustomMessage";
            columnOptions.MessageTemplate.ColumnName = "CustomMessageTemplate";
            columnOptions.Level.ColumnName           = "CustomLevel";
            columnOptions.TimeStamp.ColumnName       = "CustomTimeStamp";
            columnOptions.Exception.ColumnName       = "CustomException";
            columnOptions.Properties.ColumnName      = "CustomProperties";

            // Act
            using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString,
                                                  new SinkOptions
            {
                TableName = DatabaseFixture.LogTableName,
                BatchPostingLimit = 1,
                BatchPeriod = TimeSpan.FromSeconds(1),
                AutoCreateSqlTable = true
            },
                                                  null, columnOptions, null))
            { }

            // Assert
            VerifyDatabaseColumnsWereCreated(standardNames);
        }
Пример #3
0
        public void DefaultIdColumn()
        {
            // arrange
            var options = new ColumnOptions();

            // act
            var logTableName = $"{DatabaseFixture.LogTableName}DefaultId";
            var sink         = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, logTableName, 1, TimeSpan.FromSeconds(1), null, true, options);

            // assert
            var idColumnName = "Id";

            using (var conn = new SqlConnection(DatabaseFixture.MasterConnectionString))
            {
                conn.Execute($"use {DatabaseFixture.Database}");
                var logEvents  = conn.Query <InfoSchema>($@"SELECT COLUMN_NAME AS ColumnName FROM {DatabaseFixture.Database}.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{logTableName}'");
                var infoSchema = logEvents as InfoSchema[] ?? logEvents.ToArray();

                infoSchema.Should().Contain(columns => columns.ColumnName == idColumnName);
            }

            // verify Id column has identity property
            using (var conn = new SqlConnection(DatabaseFixture.LogEventsConnectionString))
            {
                var isIdentity = conn.Query <IdentityQuery>($"SELECT COLUMNPROPERTY(object_id('{logTableName}'), '{idColumnName}', 'IsIdentity') AS IsIdentity");
                isIdentity.Should().Contain(i => i.IsIdentity == 1);
            }
        }
        public void DefaultIdColumnLegacyInterface()
        {
            // Arrange
            var options = new Serilog.Sinks.MSSqlServer.ColumnOptions();

            // Act
            using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, DatabaseFixture.LogTableName, 1, TimeSpan.FromSeconds(1), null, true, options, "dbo", null))
            { }

            // Assert
            VerifyIdColumnWasCreatedAndHasIdentity();
        }
        public void TableCreatedWithDefaultNamesLegacyInterface()
        {
            // Arrange
            var options       = new Serilog.Sinks.MSSqlServer.ColumnOptions();
            var standardNames = new List <string> {
                "Message", "MessageTemplate", "Level", "TimeStamp", "Exception", "Properties"
            };

            // Act
            using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, DatabaseFixture.LogTableName, 1, TimeSpan.FromSeconds(1), null, true, options, "dbo", null))
            { }

            // Assert
            VerifyDatabaseColumnsWereCreated(standardNames);
        }
Пример #6
0
        public void CustomIdColumnLegacyInterface()
        {
            // Arrange
            var options      = new ColumnOptions();
            var customIdName = "CustomIdName";

            options.Id.ColumnName = customIdName;

            // Act
            using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, DatabaseFixture.LogTableName, 1, TimeSpan.FromSeconds(1), null, true, options, "dbo", null))
            { }

            // Assert
            VerifyIdColumnWasCreatedAndHasIdentity(customIdName);
        }
        public void DefaultIdColumnSinkOptionsInterface()
        {
            // Arrange
            var columnOptions = new Serilog.Sinks.MSSqlServer.ColumnOptions();

            // Act
            using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString,
                                                  new SinkOptions
            {
                TableName = DatabaseFixture.LogTableName,
                BatchPostingLimit = 1,
                BatchPeriod = TimeSpan.FromSeconds(1),
                AutoCreateSqlTable = true
            },
                                                  null, columnOptions, null))
            { }

            // Assert
            VerifyIdColumnWasCreatedAndHasIdentity();
        }
Пример #8
0
        public void TableCreatedWithCustomNamesLegacyInterface()
        {
            // Arrange
            var options       = new ColumnOptions();
            var standardNames = new List <string> {
                "CustomMessage", "CustomMessageTemplate", "CustomLevel", "CustomTimeStamp", "CustomException", "CustomProperties"
            };

            options.Message.ColumnName         = "CustomMessage";
            options.MessageTemplate.ColumnName = "CustomMessageTemplate";
            options.Level.ColumnName           = "CustomLevel";
            options.TimeStamp.ColumnName       = "CustomTimeStamp";
            options.Exception.ColumnName       = "CustomException";
            options.Properties.ColumnName      = "CustomProperties";

            // Act
            using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, DatabaseFixture.LogTableName, 1, TimeSpan.FromSeconds(1), null, true, options, "dbo", null))
            { }

            // Assert
            VerifyDatabaseColumnsWereCreated(standardNames);
        }
Пример #9
0
        public void TableCreatedWithDefaultNamesSinkOptionsInterface()
        {
            // Arrange
            var columnOptions = new ColumnOptions();
            var standardNames = new List <string> {
                "Message", "MessageTemplate", "Level", "TimeStamp", "Exception", "Properties"
            };

            // Act
            using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString,
                                                  new SinkOptions
            {
                TableName = DatabaseFixture.LogTableName,
                BatchPostingLimit = 1,
                BatchPeriod = TimeSpan.FromSeconds(1),
                AutoCreateSqlTable = true
            },
                                                  null, columnOptions, null))
            { }

            // Assert
            VerifyDatabaseColumnsWereCreated(standardNames);
        }
 private void SetupSut(bool autoCreateSqlTable = false)
 {
     _sinkOptions.AutoCreateSqlTable = autoCreateSqlTable;
     _sut = new MSSqlServerSink(_sinkOptions, _sinkDependencies);
 }