public virtual ServerViewGrid ServerWorkspaces(GridConditions gridConditions, ServerViewFilterConditions filterConditions, ServerViewFilterOperands filterOperands)
        {
            var grid = new ServerViewGrid();
            var dt   = this.reportRepository.GetUserExperienceServerDetails(gridConditions, filterConditions, filterOperands);

            if (dt.Count > 1)
            {
                var searchUsers = dt[0];
                grid.Data = (from DataRow d in searchUsers.Rows
                             select new UserExperienceServerWorkspaceInfo
                {
                    Index = d.Field <int>("RowNumber"),
                    ServerId = d.Field <int>("ServerArtifactId"),
                    Server = d.Field <string>("Server"),
                    WorkspaceId = d.Field <int>("CaseArtifactId"),
                    Workspace = d.Field <string>("Workspace"),
                    SummaryDayHour = d.Field <DateTime>("SummaryDayHour"),
                    Score = d.Field <int?>("Score").GetValueOrDefault(0),
                    TotalUsers = d.Field <int?>("TotalUsers").GetValueOrDefault(0),
                    TotalLongRunning = d.Field <int?>("TotalLongRunning").GetValueOrDefault(0),
                    TotalSearchAudits = d.Field <int?>("TotalSearchAudits").GetValueOrDefault(0),
                    TotalNonSearchAudits = d.Field <int?>("TotalNonSearchAudits").GetValueOrDefault(0),
                    TotalAudits = d.Field <int?>("TotalAudits").GetValueOrDefault(0),
                    TotalExecutionTime = d.Field <Int64?>("TotalExecutionTime").GetValueOrDefault(0),
                    IsActiveWeeklySample = d.Field <bool>("IsActiveArrivalRateSample")
                }).AsQueryable();

                var resultInfo = dt[1];
                grid.Count = resultInfo.Rows.Count > 0 ? resultInfo.Rows[0].Field <int?>("FilteredCount").GetValueOrDefault(0) : 0;
            }

            return(grid);
        }
        public virtual HoursViewGrid WorkspaceSearches(GridConditions gridConditions, HoursViewFilterConditions filterConditions, HoursViewFilterOperands filterOperands)
        {
            var grid = new HoursViewGrid();
            var dt   = this.reportRepository.GetUserExperienceHourDetails(gridConditions, filterConditions, filterOperands);

            if (dt.Count > 1)
            {
                var searchUsers = dt[0];
                grid.Data = (from DataRow d in searchUsers.Rows
                             select new UserExperienceWorkspaceHourInfo
                {
                    Index = d.Field <Int64>("RowNumber"),
                    Workspace = d.Field <string>("DatabaseName"),
                    SearchId = d.Field <int>("SearchArtifactId"),
                    Search = d.Field <string>("SearchName"),
                    TotalRunTime = d.Field <int?>("TotalRunTime").GetValueOrDefault(0),
                    AverageRunTime = d.Field <int?>("AverageRunTime").GetValueOrDefault(0),
                    TotalRuns = d.Field <int?>("TotalRuns").GetValueOrDefault(0),
                    IsComplex = d.Field <bool?>("IsComplex").GetValueOrDefault(false),
                    SummaryDayHour = d.Field <DateTime>("SummaryDayHour"),
                    IsActiveWeeklySample = d.Field <bool>("IsActiveArrivalRateSample")
                }).AsQueryable();

                var resultInfo = dt[1];
                grid.Count = resultInfo.Rows.Count > 0 ? resultInfo.Rows[0].Field <int?>("FilteredCount").GetValueOrDefault(0) : 0;
            }

            return(grid);
        }
        public virtual WaitsViewGrid Waits(GridConditions gridConditions, WaitsViewFilterConditions filterConditions, WaitsViewFilterOperands filterOperands)
        {
            var grid = new WaitsViewGrid();
            var dt   = this.reportRepository.GetSystemLoadWaitsDetails(gridConditions, filterConditions, filterOperands);

            if (dt.Count > 1)
            {
                var searchUsers = dt[0];
                grid.Data = (from DataRow d in searchUsers.Rows
                             select new SystemLoadWaitsInfo
                {
                    Index = d.Field <int>("RowNumber"),
                    ServerId = d.Field <int>("ServerArtifactId"),
                    Server = d.Field <string>("Server"),
                    WaitType = d.Field <string>("WaitType"),
                    SummaryDayHour = d.Field <DateTime>("SummaryDayHour"),
                    OverallScore = d.Field <int?>("WaitsScore").GetValueOrDefault(100),
                    SignalWaitsRatio = d.Field <int?>("SignalWaitsRatio").GetValueOrDefault(0),
                    SignalWaitTime = d.Field <long?>("SignalWaitTime").GetValueOrDefault(0),
                    TotalWaitTime = d.Field <long?>("TotalWaitTime").GetValueOrDefault(0),
                    IsPoisonWait = d.Field <bool>("IsPoisonWait"),
                    IsActiveWeeklySample = d.Field <bool>("IsActiveArrivalRateSample"),
                    PercentOfCPUThreshold = d.Field <decimal?>("PercentOfCPUThreshold").GetValueOrDefault(0),
                    DifferentialWaitingTasksCount = d.Field <Int64?>("DifferentialWaitingTasksCount").GetValueOrDefault(0),
                }).AsQueryable();

                var resultInfo = dt[1];
                grid.Count = resultInfo.Rows.Count > 0 ? resultInfo.Rows[0].Field <int?>("FilteredCount").GetValueOrDefault(0) : 0;
            }
            return(grid);
        }
        public virtual UptimeViewGrid UptimeHours(GridConditions gridConditions, UptimeViewFilterConditions filterConditions, UptimeViewFilterOperands filterOperands)
        {
            var grid = new UptimeViewGrid();
            var dt   = this.reportRepository.GetUptimeHours(gridConditions, filterConditions, filterOperands);

            if (dt.Count > 1)
            {
                var searchUsers = dt[0];
                grid.Data = (from DataRow d in searchUsers.Rows
                             select new UptimeReportHourInfo
                {
                    Index = d.Field <int>("RowNumber"),
                    SummaryDayHour = d.Field <DateTime?>("SummaryDayHour").GetValueOrDefault(DateTime.UtcNow),
                    Score = d.Field <int?>("Score").GetValueOrDefault(0),
                    Status = d.Field <string>("Status"),
                    Uptime = (double)d.Field <decimal?>("Uptime").GetValueOrDefault(100),
                    AffectedByMaintenanceWindow = d.Field <bool>("AffectedByMaintenanceWindow")
                }).AsQueryable();

                var resultInfo = dt[1];
                grid.Count = resultInfo.Rows.Count > 0 ? resultInfo.Rows[0].Field <int?>("FilteredCount").GetValueOrDefault(0) : 0;
            }

            return(grid);
        }
        public void GetFileLevelLatencyDetails_WithServerIdFilter(FileLatency.Columns sortColumn)
        {
            //Arrange
            var gridConditions = new GridConditions()
            {
                SortColumn = sortColumn.ToString(), SortDirection = "desc"
            };
            var filterConditions = System.Enum
                                   .GetValues(typeof(FileLatency.Columns))
                                   .Cast <FileLatency.Columns>()
                                   .ToDictionary(k => k, v => (String)null);
            var filterOperands = System.Enum
                                 .GetValues(typeof(FileLatency.Columns))
                                 .Cast <FileLatency.Columns>()
                                 .ToDictionary(k => k, v => FilterOperand.Equals);

            //filterConditions[FileLatency.Columns.DatabaseName] = "ED"; //begin fileter for EDDSXYZ
            filterConditions[FileLatency.Columns.ServerName] = "1015096";             //begin fileter for EDDSXYZ

            //Act
            var result = ecRepo.GetFileLevelLatencyDetails(gridConditions, filterConditions, filterOperands);

            //Assert
            Assert.That(result, Is.Not.Null);
        }
        public virtual SearchViewGrid SearchUsers(GridConditions gridConditions, SearchViewFilterConditions filterConditions, SearchViewFilterOperands filterOperands)
        {
            var grid = new SearchViewGrid();
            var dt   = this.reportRepository.GetUserExperienceSearchDetails(gridConditions, filterConditions, filterOperands);

            if (dt.Count > 1)
            {
                var searchUsers = dt[0];
                grid.Data = (from DataRow d in searchUsers.Rows
                             select new UserExperienceSearchUserInfo
                {
                    Index = d.Field <int>("RowNumber"),
                    CaseArtifactId = d.Field <int>("CaseArtifactID"),
                    AuditId = d.Field <long?>("LastAuditID").GetValueOrDefault(0),
                    SearchArtifactId = d.Field <int>("SearchArtifactId"),
                    Search = d.Field <string>("Search"),
                    UserArtifactId = d.Field <int>("UserArtifactID"),
                    User = d.Field <string>("User"),
                    TotalRunTime = d.Field <Int64?>("TotalRunTime").GetValueOrDefault(0),
                    AverageRunTime = d.Field <int?>("AverageRunTime").GetValueOrDefault(0),
                    TotalRuns = d.Field <int?>("TotalRuns").GetValueOrDefault(0),
                    PercentLongRunning = d.Field <int?>("PercentLongRunning").GetValueOrDefault(0),
                    IsComplex = d.Field <bool?>("IsComplex").GetValueOrDefault(false),
                    SummaryDayHour = d.Field <DateTime>("SummaryDayHour"),
                    QoSHourID = d.Field <Int64?>("QoSHourID").GetValueOrDefault(0),
                    IsActiveWeeklySample = d.Field <bool>("IsActiveArrivalRateSample")
                }).AsQueryable();

                var resultInfo = dt[1];
                grid.Count = resultInfo.Rows.Count > 0 ? resultInfo.Rows[0].Field <int?>("FilteredCount").GetValueOrDefault(0) : 0;
            }

            return(grid);
        }
        public virtual GeneralCheckGrid <FileLatency> FileLatencies(GridConditions gridConditions, Dictionary <FileLatency.Columns, String> filterConditions, Dictionary <FileLatency.Columns, FilterOperand> filterOperands)
        {
            var grid     = new GeneralCheckGrid <FileLatency>();
            var dt       = this.fileLatencyRepository.GetFileLevelLatencyDetails(gridConditions, filterConditions, filterOperands);
            var gridData = (from DataRow d in dt.Rows
                            select new FileLatency
            {
                ServerName = d.GetField <String>("ServerName"),
                DatabaseName = d.GetField <String>("DatabaseName"),
                Score = d.GetField <decimal?>("Score"),
                DataReadLatency = d.GetField <long?>("DataReadLatency"),
                DataWriteLatency = d.GetField <long?>("DataWriteLatency"),
                LogReadLatency = d.GetField <long?>("LogReadLatency"),
                LogWriteLatency = d.GetField <long?>("LogWriteLatency"),
            }).ToList();

            grid.Count = gridData.Count();

            grid.Data = gridData.AsQueryable();

            if (0 < gridConditions.StartRow)
            {
                grid.Data = grid.Data.Skip(gridConditions.StartRow - 1);
            }
            if (0 < gridConditions.EndRow)
            {
                grid.Data = grid.Data.Take(gridConditions.EndRow - gridConditions.StartRow + 1);
            }

            return(grid);
        }
        // Report methods //
        public virtual BackupDbccViewGrid BackupDbccHistory(GridConditions gridConditions, BackupDbccViewFilterConditions filterConditions, BackupDbccViewFilterOperands filterOperands)
        {
            var grid = new BackupDbccViewGrid();
            var dt   = this.reportRepository.GetBackupDbccHistoryDetails(gridConditions, filterConditions, filterOperands);

            if (dt.Count > 1)
            {
                var searchUsers = dt[0];
                grid.Data = (from DataRow d in searchUsers.Rows
                             select new BackupDbccGapInfo
                {
                    Index = d.Field <int>("RowNumber"),
                    ServerId = d.Field <int>("ServerArtifactID"),
                    Server = d.Field <string>("ServerName"),
                    Database = d.Field <string>("DatabaseName"),
                    Workspace = d.Field <string>("WorkspaceName"),
                    IsBackup = d.Field <bool?>("IsBackup").GetValueOrDefault(false),
                    LastActivityDate = d.Field <DateTime?>("LastActivityDate"),
                    GapResolutionDate = d.Field <DateTime?>("ResolutionDate"),
                    GapSize = d.Field <int?>("GapSize").GetValueOrDefault(0)
                }).AsQueryable();

                var resultInfo = dt[1];
                grid.Count = resultInfo.Rows.Count > 0 ? resultInfo.Rows[0].Field <int?>("FilteredCount").GetValueOrDefault(0) : 0;
            }

            return(grid);
        }
        /// <summary>
        /// Retrieves data for the Backup/DBCC History View
        /// </summary>
        /// <param name="gridConditions"></param>
        /// <param name="filterConditions"></param>
        /// <returns></returns>
        public DataTableCollection GetBackupDbccHistoryDetails(GridConditions gridConditions, BackupDbccViewFilterConditions filterConditions, BackupDbccViewFilterOperands filterOperands)
        {
            using (var conn = (SqlConnection)this.connectionFactory.GetEddsPerformanceConnection())
            {
                using (var command = new SqlCommand())
                {
                    var parameters = new SqlParameter[] {
                        //Grid conditions
                        new SqlParameter {
                            ParameterName = "@SortColumn", DbType = DbType.String, Value = gridConditions.SortColumn
                        },
                        new SqlParameter {
                            ParameterName = "@SortDirection", DbType = DbType.String, Value = gridConditions.SortDirection
                        },
                        new SqlParameter {
                            ParameterName = "@TimezoneOffset", DbType = DbType.Int32, Value = gridConditions.TimezoneOffset
                        },
                        new SqlParameter {
                            ParameterName = "@StartRow", DbType = DbType.Int32, Value = gridConditions.StartRow
                        },
                        new SqlParameter {
                            ParameterName = "@EndRow", DbType = DbType.Int32, Value = gridConditions.EndRow
                        },
                        //Filter conditions
                        new SqlParameter {
                            ParameterName = "@Server", DbType = DbType.String, Value = filterConditions.Server
                        },
                        new SqlParameter {
                            ParameterName = "@Database", DbType = DbType.String, Value = filterConditions.Database
                        },
                        new SqlParameter {
                            ParameterName = "@LastActivityDate", DbType = DbType.DateTime, Value = filterConditions.LastActivityDate
                        },
                        new SqlParameter {
                            ParameterName = "@ActivityType", DbType = DbType.Boolean, Value = filterConditions.IsBackup
                        },
                        new SqlParameter {
                            ParameterName = "@ResolutionDate", DbType = DbType.DateTime, Value = filterConditions.ResolutionDate
                        },
                        new SqlParameter {
                            ParameterName = "@GapSize", DbType = DbType.Int32, Value = filterConditions.GapSize
                        },
                        //Filter operands
                        new SqlParameter {
                            ParameterName = "@GapSizeOperand", DbType = DbType.String, Value = filterOperands.GapSize.GetSqlOperation()
                        },
                        //Page-level filters
                        new SqlParameter {
                            ParameterName = "@StartHour", DbType = DbType.DateTime, Value = gridConditions.StartDate
                        },
                        new SqlParameter {
                            ParameterName = "@EndHour", DbType = DbType.DateTime, Value = gridConditions.EndDate
                        }
                    };

                    var data = SqlHelper.ExecuteDataset(conn, CommandType.StoredProcedure, "eddsdbo.QoS_BackupDBCCReport", parameters);
                    return(data.Tables);
                }
            }
        }
示例#10
0
        public void GetUserExperienceHourDetails(HoursViewColumns sortColumn)
        {
            //Arrange
            var gridConditions   = new GridConditions();
            var filterConditions = new HoursViewFilterConditions();
            var filterOperands   = new HoursViewFilterOperands();

            //Grid conditions
            gridConditions.SortColumn     = sortColumn.ToString();
            gridConditions.SortDirection  = "ASC";
            gridConditions.TimezoneOffset = 0;
            gridConditions.StartRow       = 1;
            gridConditions.EndRow         = 25;

            //Filter conditions
            filterConditions.Search    = "";
            filterConditions.Workspace = "";

            //Filter operands
            filterOperands.TotalRunTime   = FilterOperand.Equals;
            filterOperands.AverageRunTime = FilterOperand.Equals;
            filterOperands.TotalRuns      = FilterOperand.Equals;

            //Page-level filters
            gridConditions.StartDate = DateTime.Now.AddYears(-1);
            gridConditions.EndDate   = DateTime.Now.AddDays(1);

            //Act
            var result = this.reportRepository.GetUserExperienceHourDetails(gridConditions, filterConditions, filterOperands);

            //Assert
            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.Not.Empty);
        }
        public async Task ThenTheRPOScoreForTheHourShouldBe(int p0)
        {
            // Build up service (api) to get report data
            var kernel = ScenarioContext.Current.Get <IKernel>("Kernel");

            kernel.Bind <IRecoverabilityIntegrityReportReader>().To <LegacyRecoverabilityIntegrityReportRepository>();
            var backupDbccService = kernel.Get <BackupDbccService>();

            // Read test hours
            var mockHourRepository = kernel.Get <HourTestDataRepository>();
            var hours = await mockHourRepository.ReadHoursAsync();

            // Init params
            var startDate      = hours.Min(h => h.HourTimeStamp);
            var gridConditions = new GridConditions {
                StartDate = startDate, EndDate = startDate
            };

            // Get result
            var result = backupDbccService.RecoverabilityIntegritySummary(
                gridConditions,
                new RecoverabilityIntegrityViewFilterConditions(),
                new RecoverabilityIntegrityViewFilterOperands());

            // Should only be one result, unless we're running multiple hours
            var filteredResults = result.Data.Where(d => hours.Any(h => h.HourTimeStamp == d.SummaryDayHour));
            var orderedResults  = filteredResults.OrderByDescending(o => o.Index);
            var firstResult     = orderedResults.First();

            // Assert TODO -- Discuss if assertions should be in the excel sheet in some format, or how they should work.
            Assert.That(firstResult.RPOScore, Is.EqualTo(p0));
        }
        public virtual RecoveryObjectivesViewGrid RecoveryObjectivesSummary(GridConditions gridConditions, RecoveryObjectivesViewFilterConditions filterConditions, RecoveryObjectivesViewFilterOperands filterOperands)
        {
            var grid = new RecoveryObjectivesViewGrid();
            var dt   = this.reportRepository.GetRecoveryObjectivesDetails(gridConditions, filterConditions, filterOperands);

            if (dt.Count > 1)
            {
                var searchUsers = dt[0];
                grid.Data = (from DataRow d in searchUsers.Rows
                             select new RecoveryObjectivesInfo
                {
                    Index = d.Field <int>("RowNumber"),
                    ServerId = d.Field <int?>("ServerId").GetValueOrDefault(0),
                    ServerName = d.Field <string>("ServerName"),
                    DatabaseName = d.Field <string>("DBName"),
                    RPOScore = d.Field <int?>("RPOScore").GetValueOrDefault(100),
                    RTOScore = d.Field <int?>("RTOScore").GetValueOrDefault(100),
                    PotentialDataLossMinutes = d.Field <int?>("PotentialDataLossMinutes").GetValueOrDefault(0),
                    EstimatedTimeToRecoverHours = d.Field <int?>("EstimatedTimeToRecoverHours").GetValueOrDefault(0)
                }).AsQueryable();

                var resultInfo = dt[1];
                grid.Count = resultInfo.Rows.Count > 0 ? resultInfo.Rows[0].Field <int?>("FilteredCount").GetValueOrDefault(0) : 0;
            }

            return(grid);
        }
示例#13
0
        public DataTable GetDatabaseDetails(GridConditions gridConditions, EnvironmentCheckDatabaseFilterConditions filterConditions, EnvironmentCheckDatabaseFilterOperands filterOperands)
        {
            using (var conn = (SqlConnection)this.connectionFactory.GetEddsPerformanceConnection())
            {
                var parameters = new[] {
                    //Grid conditions

                    //Filter conditions
                    new SqlParameter {
                        ParameterName = "@serverNameFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.ServerName)
                    },
                    new SqlParameter {
                        ParameterName = "@sqlVersionFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.SQLVersion)
                    },
                    new SqlParameter {
                        ParameterName = "@adhocWorkloadFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.AdHocWorkload)
                    },
                    new SqlParameter {
                        ParameterName = "@maxServerMemoryFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.MaxServerMemory)
                    },
                    new SqlParameter {
                        ParameterName = "@maxdegreeOfParallelismFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.MaxDegreeOfParallelism)
                    },
                    new SqlParameter {
                        ParameterName = "@tempDBDataFilesFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.tempDBDataFiles)
                    },
                    new SqlParameter {
                        ParameterName = "@lastSQLRestartFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.LastSqlRestart)
                    },
                    //Filter operands
                    new SqlParameter {
                        ParameterName = "@adhocWorkloadOperator", DbType = DbType.Int32, Value = (int)filterOperands.AdHocWorkload
                    },
                    new SqlParameter {
                        ParameterName = "@maxServerMemoryOperator", DbType = DbType.Int32, Value = (int)filterOperands.MaxServerMemory
                    },
                    new SqlParameter {
                        ParameterName = "@maxDegreeOfParallelismOperator", DbType = DbType.Int32, Value = (int)filterOperands.MaxDegreeOfParallelism
                    },
                    new SqlParameter {
                        ParameterName = "@tempDBDataFilesOperator", DbType = DbType.Int32, Value = (int)filterOperands.TempDBDataFiles
                    },
                    new SqlParameter {
                        ParameterName = "@lastSQLRestartOperator", DbType = DbType.Int32, Value = (int)filterOperands.LastSQLRestart
                    },
                    //Page-level filters
                };

                var data = SqlHelper.ExecuteDataset(conn, CommandType.Text, Resources.ReadEnvironmentCheckDatabaseDetails, parameters);

                if (false == String.IsNullOrEmpty(gridConditions.SortColumn) && false == String.IsNullOrEmpty(gridConditions.SortDirection))
                {
                    String sortExpression = $"{gridConditions.SortColumn} {gridConditions.SortDirection}";
                    data.Tables[0].DefaultView.Sort = sortExpression;
                    return(data.Tables[0].DefaultView.ToTable());
                }

                return(data.Tables[0]);
            }
        }
        /// <summary>
        /// Retrieves data for the Recovery Objectives View
        /// </summary>
        /// <param name="gridConditions"></param>
        /// <param name="filterConditions"></param>
        /// <returns></returns>
        public DataTableCollection GetRecoveryObjectivesDetails(GridConditions gridConditions, RecoveryObjectivesViewFilterConditions filterConditions, RecoveryObjectivesViewFilterOperands filterOperands)
        {
            using (var conn = (SqlConnection)this.connectionFactory.GetEddsPerformanceConnection())
            {
                using (var command = new SqlCommand())
                {
                    var parameters = new SqlParameter[] {
                        //Grid conditions
                        new SqlParameter {
                            ParameterName = "@SortColumn", DbType = DbType.String, Value = gridConditions.SortColumn
                        },
                        new SqlParameter {
                            ParameterName = "@SortDirection", DbType = DbType.String, Value = gridConditions.SortDirection
                        },
                        new SqlParameter {
                            ParameterName = "@StartRow", DbType = DbType.Int32, Value = gridConditions.StartRow
                        },
                        new SqlParameter {
                            ParameterName = "@EndRow", DbType = DbType.Int32, Value = gridConditions.EndRow
                        },
                        //Filter conditions
                        new SqlParameter {
                            ParameterName = "@Server", DbType = DbType.String, Value = filterConditions.Server
                        },
                        new SqlParameter {
                            ParameterName = "@DBName", DbType = DbType.String, Value = filterConditions.DatabaseName
                        },
                        new SqlParameter {
                            ParameterName = "@RPOScore", DbType = DbType.Int32, Value = filterConditions.RPOScore
                        },
                        new SqlParameter {
                            ParameterName = "@RTOScore", DbType = DbType.Int32, Value = filterConditions.RTOScore
                        },
                        new SqlParameter {
                            ParameterName = "@PotentialDataLossMinutes", DbType = DbType.Int32, Value = filterConditions.PotentialDataLossMinutes
                        },
                        new SqlParameter {
                            ParameterName = "@EstimatedTimeToRecoverHours", DbType = DbType.Int32, Value = filterConditions.EstimatedTimeToRecoverHours
                        },
                        //Filter operands
                        new SqlParameter {
                            ParameterName = "@RPOScoreOperand", DbType = DbType.String, Value = filterOperands.RPOScore.GetSqlOperation()
                        },
                        new SqlParameter {
                            ParameterName = "@RTOScoreOperand", DbType = DbType.String, Value = filterOperands.RTOScore.GetSqlOperation()
                        },
                        new SqlParameter {
                            ParameterName = "@PotentialDataLossMinutesOperand", DbType = DbType.String, Value = filterOperands.PotentialDataLossMinutes.GetSqlOperation()
                        },
                        new SqlParameter {
                            ParameterName = "@EstimatedTimeToRecoverHoursOperand", DbType = DbType.String, Value = filterOperands.EstimatedTimeToRecoverHours.GetSqlOperation()
                        }
                    };

                    var data = SqlHelper.ExecuteDataset(conn, CommandType.StoredProcedure, "eddsdbo.QoS_RecoveryObjectivesReport", parameters);
                    return(data.Tables);
                }
            }
        }
示例#15
0
        // Reads ALL servers' FLLD
        public DataTable GetFileLevelLatencyDetails(GridConditions gridConditions, Dictionary <FileLatency.Columns, String> filterConditions, Dictionary <FileLatency.Columns, FilterOperand> filterOperands)
        {
            using (var conn = (SqlConnection)this.connectionFactory.GetEddsPerformanceConnection())
            {
                var parameters = new SqlParameter[] {
                    //Filter conditions
                    new SqlParameter {
                        ParameterName = "@serverNameFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions[FileLatency.Columns.ServerName])
                    },
                    new SqlParameter {
                        ParameterName = "@databaseNameFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions[FileLatency.Columns.DatabaseName])
                    },
                    new SqlParameter {
                        ParameterName = "@scoreFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions[FileLatency.Columns.Score])
                    },
                    new SqlParameter {
                        ParameterName = "@dataReadFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions[FileLatency.Columns.DataReadLatency])
                    },
                    new SqlParameter {
                        ParameterName = "@dataWriteFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions[FileLatency.Columns.DataWriteLatency])
                    },
                    new SqlParameter {
                        ParameterName = "@logReadFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions[FileLatency.Columns.LogReadLatency])
                    },
                    new SqlParameter {
                        ParameterName = "@logWriteFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions[FileLatency.Columns.LogWriteLatency])
                    },

                    //Filter operands
                    new SqlParameter {
                        ParameterName = "@scoreOperator", DbType = DbType.Int32, Value = (int)filterOperands[FileLatency.Columns.Score]
                    },
                    new SqlParameter {
                        ParameterName = "@dataReadOperator", DbType = DbType.Int32, Value = (int)filterOperands[FileLatency.Columns.DataReadLatency]
                    },
                    new SqlParameter {
                        ParameterName = "@dataWriteOperator", DbType = DbType.Int32, Value = (int)filterOperands[FileLatency.Columns.DataWriteLatency]
                    },
                    new SqlParameter {
                        ParameterName = "@logReadOperator", DbType = DbType.Int32, Value = (int)filterOperands[FileLatency.Columns.LogReadLatency]
                    },
                    new SqlParameter {
                        ParameterName = "@logWriteOperator", DbType = DbType.Int32, Value = (int)filterOperands[FileLatency.Columns.LogWriteLatency]
                    },
                };

                var data = SqlHelper.ExecuteDataset(conn, CommandType.Text, Resources.ReadFileLatencyDetails, parameters);

                if (false == String.IsNullOrEmpty(gridConditions.SortColumn) && false == String.IsNullOrEmpty(gridConditions.SortDirection))
                {
                    String sortExpression = $"{gridConditions.SortColumn} {gridConditions.SortDirection}";
                    data.Tables[0].DefaultView.Sort = sortExpression;
                    return(data.Tables[0].DefaultView.ToTable());
                }

                return(data.Tables[0]);
            }
        }
 public FileLatencyViewModel()
 {
     GridConditions   = new GridConditions();
     FilterConditions = System.Enum
                        .GetValues(typeof(FileLatency.Columns))
                        .Cast <FileLatency.Columns>()
                        .ToDictionary(k => k, v => (String)null);
     FilterOperands = System.Enum
                      .GetValues(typeof(FileLatency.Columns))
                      .Cast <FileLatency.Columns>()
                      .ToDictionary(k => k, v => FilterOperand.Equals);
 }
        public EnvironmentCheckViewModel()
        {
            GridConditions = new GridConditions();

            RecommendationFilterConditions = new EnvironmentCheckRecommendationFilterConditions();

            ServerFilterConditions = new EnvironmentCheckServerFilterConditions();
            ServerFilterOperands   = new EnvironmentCheckServerFilterOperands();

            DatabaseFilterConditions = new EnvironmentCheckDatabaseFilterConditions();
            DatabaseFilterOperands   = new EnvironmentCheckDatabaseFilterOperands();
        }
示例#18
0
        public void GetBackupDbccHistoryDetails(BackupDbccViewColumns sortColumn)
        {
            var gridConditions = new GridConditions {
                SortColumn = sortColumn.ToString()
            };
            var details = this.reportRepository.GetBackupDbccHistoryDetails(
                gridConditions,
                new BackupDbccViewFilterConditions(),
                new BackupDbccViewFilterOperands());

            Assert.That(details, Is.Not.Null);
        }
示例#19
0
        public void GetRecoveryObjectivesDetails(RecoveryObjectivesViewColumns sortColumn)
        {
            var conditions = new GridConditions {
                SortColumn = sortColumn.ToString()
            };
            var details = this.reportRepository.GetRecoveryObjectivesDetails(
                conditions,
                new RecoveryObjectivesViewFilterConditions(),
                new RecoveryObjectivesViewFilterOperands());

            Assert.That(details, Is.Not.Null);
        }
        protected GridConditions PopulateCommonGridConditions(List <KeyValuePair <string, string> > queryParams)
        {
            var conditions = new GridConditions();

            var sEcho            = queryParams.FirstOrDefault(k => k.Key == "sEcho");
            var iDisplayStart    = queryParams.FirstOrDefault(k => k.Key == "iDisplayStart");
            var iDisplayLength   = queryParams.FirstOrDefault(k => k.Key == "iDisplayLength");
            var timezoneOffset   = queryParams.FirstOrDefault(k => k.Key == "TimezoneOffset");
            var startDate        = queryParams.FirstOrDefault(x => x.Key == "StartDate");
            var endDate          = queryParams.FirstOrDefault(x => x.Key == "EndDate");
            var serverArtifactId = queryParams.FirstOrDefault(x => x.Key == "ServerArtifactId");
            var serverSelection  = queryParams.FirstOrDefault(x => x.Key == "ServerSelection");

            conditions.sEcho    = sEcho.Value;
            conditions.StartRow = string.IsNullOrEmpty(iDisplayStart.Value)
                                ? 1
                                : int.Parse(iDisplayStart.Value) + 1;
            conditions.EndRow = string.IsNullOrEmpty(iDisplayLength.Value)
                                ? 25
                                : int.Parse(iDisplayLength.Value) + conditions.StartRow - 1;
            conditions.TimezoneOffset = string.IsNullOrEmpty(timezoneOffset.Value)
                                ? 0
                                : int.Parse(timezoneOffset.Value);

            //Page-level date filters
            DateTime sd, ed;

            if (!DateTime.TryParse(startDate.Value, out sd))
            {
                conditions.StartDate = DateTime.UtcNow.AddDays(-90).AddMinutes(conditions.TimezoneOffset);
            }
            else
            {
                conditions.StartDate = sd.AddMinutes(-1 * conditions.TimezoneOffset);                 //midnight local time this day, converted to UTC
            }
            if (!DateTime.TryParse(endDate.Value, out ed))
            {
                conditions.EndDate = DateTime.UtcNow.AddMinutes(conditions.TimezoneOffset);
            }
            else
            {
                conditions.EndDate = ed.AddDays(1).AddMinutes(-1 * conditions.TimezoneOffset - 1);                 //23:59 local time the following day, converted to UTC
            }
            //Page-level server filters
            if (!int.TryParse(serverArtifactId.Value, out conditions.ServerArtifactId))
            {
                conditions.ServerArtifactId = -1;
            }
            conditions.SelectedServers = serverSelection.Value;

            return(conditions);
        }
示例#21
0
        public void GetRecoverabilityIntegrityDetails_Default(RecoverabilityIntegrityViewColumns sortColumn)
        {
            var conditions = new GridConditions {
                SortColumn = sortColumn.ToString()
            };
            var otherConditions = new RecoverabilityIntegrityViewFilterConditions();

            var details = this.reportRepository.GetRecoverabilityIntegrityDetails(
                conditions,
                otherConditions,
                new RecoverabilityIntegrityViewFilterOperands());

            Assert.That(details, Is.Not.Null);
        }
示例#22
0
        public void GetRecomendations(EnvironmentCheckRecommendationColumns sortColumn)
        {
            //Arrange
            var gridCond = new GridConditions {
                SortColumn = sortColumn.ToString(), SortDirection = "asc",
            };
            var filterConds = new EnvironmentCheckRecommendationFilterConditions {
            };

            //Act
            var result = ecRepo.GetRecomendations(gridCond, filterConds);

            //Assert
            Assert.That(result, Is.Not.Null);
        }
示例#23
0
        public void GetDatabaseDetails(EnvironmentCheckDatabaseColumns sortColumn)
        {
            //Arrange
            var gridCond = new GridConditions {
                SortColumn = sortColumn.ToString(), SortDirection = "asc",
            };
            var filterConds = new EnvironmentCheckDatabaseFilterConditions {
            };
            var filterOps   = new EnvironmentCheckDatabaseFilterOperands {
            };

            //Act
            var result = ecRepo.GetDatabaseDetails(gridCond, filterConds, filterOps);

            //Assert
            Assert.That(result, Is.Not.Null);
        }
示例#24
0
        /// <summary>
        /// Retrieves data for environment check system recommendations
        /// </summary>
        /// <param name="gridConditions"></param>
        /// <param name="filterConditions"></param>
        /// <returns></returns>
        public DataTable GetRecomendations(GridConditions gridConditions, EnvironmentCheckRecommendationFilterConditions filterConditions)
        {
            var sortColumn = gridConditions.SortColumn.ToLower() == "status" ? "Severity" : gridConditions.SortColumn;

            using (var conn = (SqlConnection)this.connectionFactory.GetEddsPerformanceConnection())
            {
                var parameters = new[] {
                    //Filter conditions
                    new SqlParameter {
                        ParameterName = "@scopeFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.Scope)
                    },
                    new SqlParameter {
                        ParameterName = "@nameFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.Name)
                    },
                    new SqlParameter {
                        ParameterName = "@descriptionFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.Description)
                    },
                    new SqlParameter {
                        ParameterName = "@statusFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.Status)
                    },
                    new SqlParameter {
                        ParameterName = "@recommendationFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.Recommendation)
                    },
                    new SqlParameter {
                        ParameterName = "@valueFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.Value)
                    },
                    new SqlParameter {
                        ParameterName = "@sectionFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.Section)
                    },
                };

                var data = SqlHelper.ExecuteDataset(conn, CommandType.Text, Properties.Resources.ReadEnvironmentCheckRecommendation, parameters);

                if (false == String.IsNullOrEmpty(sortColumn) && false == String.IsNullOrEmpty(gridConditions.SortDirection))
                {
                    String sortExpression = String.Format("{0} {1}", sortColumn, gridConditions.SortDirection);
                    data.Tables[0].DefaultView.Sort = sortExpression;
                    return(data.Tables[0].DefaultView.ToTable());
                }

                return(data.Tables[0]);
            }
        }
示例#25
0
        public DataTable GetServerDetails(GridConditions gridConditions, EnvironmentCheckServerFilterConditions filterConditions, EnvironmentCheckServerFilterOperands filterOperands)
        {
            using (var conn = (SqlConnection)this.connectionFactory.GetEddsPerformanceConnection())
            {
                var parameters = new[] {
                    //Grid conditions

                    //Filter conditions
                    new SqlParameter {
                        ParameterName = "@serverNameFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.ServerName)
                    },
                    new SqlParameter {
                        ParameterName = "@osnameFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.OSName)
                    },
                    new SqlParameter {
                        ParameterName = "@osversionFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.OSVersion)
                    },
                    new SqlParameter {
                        ParameterName = "@logicalProcessorsFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.LogicalProcessors)
                    },
                    new SqlParameter {
                        ParameterName = "@hypterthreadedFilter", DbType = DbType.String, Value = GetNullableDBValue(filterConditions.Hyperthreaded)
                    },
                    //Filter operands
                    new SqlParameter {
                        ParameterName = "@logicalProcessorsOperator", DbType = DbType.Int32, Value = (int)filterOperands.LogicalProcessors
                    },
                    //Page-level filters
                };

                var data = SqlHelper.ExecuteDataset(conn, CommandType.Text, Properties.Resources.ReadEnvironmentCheckServerDetails, parameters);

                if (false == String.IsNullOrEmpty(gridConditions.SortColumn) && false == String.IsNullOrEmpty(gridConditions.SortDirection))
                {
                    String sortExpression = String.Format("{0} {1}", gridConditions.SortColumn, gridConditions.SortDirection);
                    data.Tables[0].DefaultView.Sort = sortExpression;
                    return(data.Tables[0].DefaultView.ToTable());
                }

                return(data.Tables[0]);
            }
        }
示例#26
0
        public void GetUptimeHours(UptimeViewColumns sortColumn)
        {
            // Arrange
            var gridConditions   = new GridConditions();
            var filterConditions = new UptimeViewFilterConditions();
            var filterOperands   = new UptimeViewFilterOperands();

            //Grid conditions
            gridConditions.SortColumn     = sortColumn.ToString();
            gridConditions.SortDirection  = "ASC";
            gridConditions.TimezoneOffset = 0;
            gridConditions.StartRow       = 1;
            gridConditions.EndRow         = 25;

            // Act
            var result = this.reportRepository.GetUptimeHours(gridConditions, filterConditions, filterOperands);

            // Assert
            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.Not.Empty);
        }
示例#27
0
        public void GetSystemLoadServerDetails(LoadViewColumns sortColumn)
        {
            //Arrange
            var gridConditions   = new GridConditions();
            var filterConditions = new LoadViewFilterConditions();
            var filterOperands   = new LoadViewFilterOperands();

            //Grid conditions
            gridConditions.SortColumn     = sortColumn.ToString();
            gridConditions.SortDirection  = "ASC";
            gridConditions.TimezoneOffset = 0;
            gridConditions.StartRow       = 1;
            gridConditions.EndRow         = 25;

            //Filter conditions
            filterConditions.Server     = "";
            filterConditions.ServerType = "";

            //Filter operands
            filterOperands.OverallScore         = FilterOperand.Equals;
            filterOperands.CPUUtilizationScore  = FilterOperand.Equals;
            filterOperands.RAMUtilizationScore  = FilterOperand.Equals;
            filterOperands.MemorySignalScore    = FilterOperand.Equals;
            filterOperands.WaitsScore           = FilterOperand.Equals;
            filterOperands.VirtualLogFilesScore = FilterOperand.Equals;
            filterOperands.LatencyScore         = FilterOperand.Equals;

            //Page-level filters
            gridConditions.StartDate = DateTime.Now.AddYears(-1);
            gridConditions.EndDate   = DateTime.Now.AddDays(1);

            //Act
            var result = this.reportRepository.GetSystemLoadServerDetails(gridConditions, filterConditions, filterOperands);

            //Assert
            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.Not.Empty);
        }
        public virtual LoadViewGrid ServerHours(GridConditions gridConditions, LoadViewFilterConditions filterConditions, LoadViewFilterOperands filterOperands)
        {
            var grid = new LoadViewGrid();
            var dt   = this.reportRepository.GetSystemLoadServerDetails(gridConditions, filterConditions, filterOperands);

            if (dt.Count > 1)
            {
                var searchUsers = dt[0];
                grid.Data = (from DataRow d in searchUsers.Rows
                             select new SystemLoadServerHourInfo
                {
                    Index = d.Field <int>("RowNumber"),
                    ServerId = d.Field <int>("ServerArtifactId"),
                    Server = d.Field <string>("Server"),
                    ServerType = d.Field <string>("ServerType"),
                    SummaryDayHour = d.Field <DateTime>("SummaryDayHour"),
                    OverallScore = d.Field <int?>("Score").GetValueOrDefault(100),
                    CPUScore = d.Field <int?>("CPUScore").GetValueOrDefault(100),
                    RAMScore = d.Field <int?>("RAMScore").GetValueOrDefault(100),
                    MemorySignalStateScore = d.Field <int?>("MemorySignalStateScore").GetValueOrDefault(100),
                    MemorySignalStateRatio = d.Field <int?>("MemorySignalStateRatio").GetValueOrDefault(0),
                    Pageouts = d.Field <int?>("Pageouts").GetValueOrDefault(0),
                    WaitsScore = d.Field <int?>("WaitsScore").GetValueOrDefault(100),
                    VirtualLogFilesScore = d.Field <int?>("VirtualLogFilesScore").GetValueOrDefault(100),
                    MaxVirtualLogFiles = d.Field <int?>("MaxVirtualLogFiles").GetValueOrDefault(0),
                    LatencyScore = d.Field <int?>("LatencyScore").GetValueOrDefault(100),
                    HighestLatencyDatabase = d.Field <string>("HighestLatencyDatabase"),
                    ReadLatencyMs = d.Field <int?>("ReadLatencyMs").GetValueOrDefault(0),
                    WriteLatencyMs = d.Field <int?>("WriteLatencyMs").GetValueOrDefault(0),
                    IsDataFile = d.Field <bool?>("IsDataFile").GetValueOrDefault(false),
                    IsActiveWeeklySample = d.Field <bool>("IsActiveArrivalRateSample")
                }).AsQueryable();

                var resultInfo = dt[1];
                grid.Count = resultInfo.Rows.Count > 0 ? resultInfo.Rows[0].Field <int?>("FilteredCount").GetValueOrDefault(0) : 0;
            }
            return(grid);
        }
示例#29
0
        public void GetSystemLoadWaitsDetails(WaitsViewColumns sortColumn)
        {
            //Arrange
            var gridConditions   = new GridConditions();
            var filterConditions = new WaitsViewFilterConditions();
            var filterOperands   = new WaitsViewFilterOperands();

            //Grid conditions
            gridConditions.SortColumn     = sortColumn.ToString();
            gridConditions.SortDirection  = "ASC";
            gridConditions.TimezoneOffset = 0;
            gridConditions.StartRow       = 1;
            gridConditions.EndRow         = 25;

            //Filter conditions
            filterConditions.Server   = "";
            filterConditions.WaitType = "";

            //Filter operands
            filterOperands.OverallScore                  = FilterOperand.Equals;
            filterOperands.SignalWaitsRatio              = FilterOperand.Equals;
            filterOperands.SignalWaitTime                = FilterOperand.Equals;
            filterOperands.TotalWaitTime                 = FilterOperand.Equals;
            filterOperands.PercentOfCPUThreshold         = FilterOperand.Equals;
            filterOperands.DifferentialWaitingTasksCount = FilterOperand.Equals;

            //Page-level filters
            gridConditions.StartDate = DateTime.Now.AddYears(-1);
            gridConditions.EndDate   = DateTime.Now.AddDays(1);

            //Act
            var result = this.reportRepository.GetSystemLoadWaitsDetails(gridConditions, filterConditions, filterOperands);

            //Assert
            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.Not.Empty);
        }
示例#30
0
        public void GetRecoverabilityIntegrityDetails(RecoverabilityIntegrityViewColumns sortColumn)
        {
            //Arrange
            var gridConditions   = new GridConditions();
            var filterConditions = new RecoverabilityIntegrityViewFilterConditions();
            var filterOperands   = new RecoverabilityIntegrityViewFilterOperands();

            //Grid conditions
            gridConditions.SortColumn     = sortColumn.ToString();
            gridConditions.SortDirection  = "ASC";
            gridConditions.TimezoneOffset = 0;
            gridConditions.StartRow       = 1;
            gridConditions.EndRow         = 25;

            //Filter conditions

            //Filter operands
            filterOperands.RecoverabilityIntegrityScore = FilterOperand.Equals;
            filterOperands.BackupFrequencyScore         = FilterOperand.Equals;
            filterOperands.BackupCoverageScore          = FilterOperand.Equals;
            filterOperands.DbccFrequencyScore           = FilterOperand.Equals;
            filterOperands.DbccCoverageScore            = FilterOperand.Equals;
            filterOperands.RPOScore = FilterOperand.Equals;
            filterOperands.RTOScore = FilterOperand.Equals;

            //Page-level filters
            gridConditions.StartDate = DateTime.Now.AddYears(-1);
            gridConditions.EndDate   = DateTime.Now.AddDays(1);

            //Act
            var result = this.reportRepository.GetRecoverabilityIntegrityDetails(gridConditions, filterConditions, filterOperands);

            //Assert
            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.Not.Empty);
        }