Пример #1
0
        public void Test(ITestContext context)
        {
            var failedChecks = new System.Collections.Concurrent.ConcurrentBag<SqlDeployResult>();
            var databasesCount = this.sqlDeploy.Settings.Databases.Count();
            var processedCount = 0;
            var databases = this.sqlDeploy.Settings.Databases.ToList();
            context.UpdateProgress(0, processedCount, databasesCount);
            Parallel.ForEach(
                databases,
                database =>
                {
                    var csBuilder = new SqlConnectionStringBuilder(database.ConnectionString);
                    var dbName = csBuilder.InitialCatalog;
                    var upToDate = database.Status.IsUpToDate;
                    try
                    {
                        var reconcileResult = this.sqlDeploy.ReconcileDatabase(database.DatabaseName);
                        if (upToDate && reconcileResult.IsSuccessful)
                        {
                            context.WriteLine(EventType.Success, Titles.DbIsUpToDate, dbName);
                        }
                        else
                        {
                            if (!upToDate)
                            {
                                context.WriteLine(
                                    EventType.Error,
                                    Titles.DbCheckFailed,
                                    dbName,
                                    Titles.SchemaNotUpToDate);
                                var result = new SqlDeployResult
                                                 {
                                                     IsSuccessful = false,
                                                     DatabaseName = dbName,
                                                     Exceptions =
                                                         new List<Exception>
                                                             {
                                                                 new Exception(
                                                                     Titles
                                                                     .SchemaNotUpToDate)
                                                             }
                                                 };
                                failedChecks.Add(result);
                            }
                            else
                            {
                                context.WriteLine(EventType.Error, Titles.DbCheckFailed, dbName, Titles.SchemaChanged);
                                failedChecks.Add(reconcileResult);
                            }
                        }
                    }
                    catch (SqlException ex)
                    {
                        context.WriteLine(
                                    EventType.Error,
                                    Titles.DbCheckFailed,
                                    dbName,
                                    ex.Message);
                                var result = new SqlDeployResult
                                                 {
                                                     IsSuccessful = false,
                                                     DatabaseName = dbName,
                                                     Exceptions =
                                                         new List<Exception>
                                                             {
                                                                 new Exception(ex.Message)
                                                             }
                                                 };
                                failedChecks.Add(result);
                    }

                    processedCount++;
                    context.UpdateProgress(0, processedCount, databasesCount);
                });
            
            if (failedChecks.Any())
            {
                var msg = string.Format(Titles.DbsNotUpToDate, string.Join(", ", failedChecks.Select(x => x.DatabaseName).ToArray()));
                Assert.Fails(msg);
            }
        }
Пример #2
0
        public void Test(ITestContext context)
        {
            var failedChecks   = new System.Collections.Concurrent.ConcurrentBag <SqlDeployResult>();
            var databasesCount = this.sqlDeploy.Settings.Databases.Count();
            var processedCount = 0;
            var databases      = this.sqlDeploy.Settings.Databases.ToList();

            context.UpdateProgress(0, processedCount, databasesCount);
            Parallel.ForEach(
                databases,
                database =>
            {
                var csBuilder = new SqlConnectionStringBuilder(database.ConnectionString);
                var dbName    = csBuilder.InitialCatalog;
                var upToDate  = database.Status.IsUpToDate;
                try
                {
                    var reconcileResult = this.sqlDeploy.ReconcileDatabase(database.DatabaseName);
                    if (upToDate && reconcileResult.IsSuccessful)
                    {
                        context.WriteLine(EventType.Success, Titles.DbIsUpToDate, dbName);
                    }
                    else
                    {
                        if (!upToDate)
                        {
                            context.WriteLine(
                                EventType.Error,
                                Titles.DbCheckFailed,
                                dbName,
                                Titles.SchemaNotUpToDate);
                            var result = new SqlDeployResult
                            {
                                IsSuccessful = false,
                                DatabaseName = dbName,
                                Exceptions   =
                                    new List <Exception>
                                {
                                    new Exception(
                                        Titles
                                        .SchemaNotUpToDate)
                                }
                            };
                            failedChecks.Add(result);
                        }
                        else
                        {
                            context.WriteLine(EventType.Error, Titles.DbCheckFailed, dbName, Titles.SchemaChanged);
                            failedChecks.Add(reconcileResult);
                        }
                    }
                }
                catch (SqlException ex)
                {
                    context.WriteLine(
                        EventType.Error,
                        Titles.DbCheckFailed,
                        dbName,
                        ex.Message);
                    var result = new SqlDeployResult
                    {
                        IsSuccessful = false,
                        DatabaseName = dbName,
                        Exceptions   =
                            new List <Exception>
                        {
                            new Exception(ex.Message)
                        }
                    };
                    failedChecks.Add(result);
                }

                processedCount++;
                context.UpdateProgress(0, processedCount, databasesCount);
            });

            if (failedChecks.Any())
            {
                var msg = string.Format(Titles.DbsNotUpToDate, string.Join(", ", failedChecks.Select(x => x.DatabaseName).ToArray()));
                Assert.Fails(msg);
            }
        }