コード例 #1
0
 public async Task UpdateAsync(ServerCleanup serverCleanup)
 {
     using (var connection = this.connectionFactory.GetEddsPerformanceConnection())
     {
         await connection.ExecuteAsync(Resources.ServerCleanup_Update, serverCleanup);
     }
 }
コード例 #2
0
 public async Task <ServerCleanup> CreateAsync(ServerCleanup serverCleanup)
 {
     using (var connection = this.connectionFactory.GetEddsPerformanceConnection())
     {
         return(await connection.QueryFirstOrDefaultAsync <ServerCleanup>(Resources.ServerCleanup_Create, serverCleanup));
     }
 }
コード例 #3
0
        public async Task SetUp()
        {
            this.serverCleanupRepository =
                new ServerCleanupRepository(TestUtilities.GetIntegrationConnectionFactory());

            this.testServerCleanup = new ServerCleanup
            {
                HourId   = 0,
                ServerId = 0,
                Success  = true
            };
            this.testServerCleanupResult = await this.serverCleanupRepository.CreateAsync(testServerCleanup);
        }
コード例 #4
0
        public async Task UpdateAsync()
        {
            // Arrange
            var testServerCleanupUpdateResult = new ServerCleanup
            {
                Id       = testServerCleanupResult.Id,
                HourId   = testServerCleanupResult.HourId,
                ServerId = testServerCleanupResult.ServerId,
                Success  = !testServerCleanupResult.Success
            };

            // Act
            await this.serverCleanupRepository.UpdateAsync(testServerCleanupUpdateResult);

            // Assert
            var result = await this.serverCleanupRepository.ReadAsync(testServerCleanupUpdateResult.Id);

            Assert.That(result, Is.Not.Null);
            Assert.That(result.HourId, Is.EqualTo(testServerCleanupUpdateResult.HourId));
            Assert.That(result.ServerId, Is.EqualTo(testServerCleanupUpdateResult.ServerId));
            Assert.That(result.Success, Is.EqualTo(testServerCleanupUpdateResult.Success));
        }
コード例 #5
0
        public async Task CleanupForHour()
        {
            // Arrange
            var hourId = 3;
            var hour   = new Hour {
                Id = hourId, HourTimeStamp = DateTime.UtcNow
            };

            this.hourRepositoryMock.Setup(m => m.ReadAsync(hourId)).ReturnsAsync(hour);

            var primaryServer = new Server
            {
                ServerId   = 1,
                ArtifactId = 123,
                ServerName = "SomeServerName",
                ServerType = ServerType.Database
            };
            var otherServer = new Server
            {
                ServerId   = 2,
                ArtifactId = 1234,
                ServerName = "OtherServer",
                ServerType = ServerType.Database
            };
            var sqlServers = new List <Server> {
                primaryServer, otherServer
            };

            this.serverRepositoryMock.Setup(m => m.ReadAllActiveAsync()).ReturnsAsync(sqlServers);

            // Performance tables cleanup
            this.cleanupTablesRepositoryMock.Setup(m => m.CleanupQoSGlassRunLog(
                                                       It.Is <DateTime>(dt => dt == hour.HourTimeStamp.AddDays(DatabaseConstants.GlassRunLogDeleteThresholdDays)),
                                                       Defaults.Database.DeleteBatchSize,
                                                       true
                                                       )).Returns(Task.Delay(5));

            this.cleanupTablesRepositoryMock.Setup(m => m.CleanupPerformanceTable(
                                                       $"{Names.Database.EddsdboSchema}.{Names.Database.VarscatOutputCumulativeTable}",
                                                       Names.Database.SummaryDayHourColumn,
                                                       It.Is <DateTime>(dt => dt == hour.HourTimeStamp.AddDays(DatabaseConstants.PastQuarterThreshold)),
                                                       Defaults.Database.DeleteBatchSize,
                                                       true
                                                       )).Returns(Task.Delay(5));

            this.cleanupTablesRepositoryMock.Setup(m => m.CleanupPerformanceTable(
                                                       $"{Names.Database.EddsdboSchema}.{Names.Database.VarscatOutputDetailCumulativeTable}",
                                                       Names.Database.SummaryDayHourColumn,
                                                       It.Is <DateTime>(dt => dt == hour.HourTimeStamp.AddDays(DatabaseConstants.PastQuarterThreshold)),
                                                       Defaults.Database.DeleteBatchSize,
                                                       true
                                                       )).Returns(Task.Delay(5));

            this.cleanupTablesRepositoryMock.Setup(m => m.CleanupDecommissionedServers(
                                                       hour.HourTimeStamp,
                                                       Defaults.Database.DeleteBatchSize,
                                                       true
                                                       )).Returns(Task.Delay(5));

            this.dataIntegrityRepositoryMock.Setup(m => m.DropAllTriggersInCurrentDatabase()).Returns(Task.Delay(5));

            // Queuing QoS tasks
            var serverCleanupPrimary = new ServerCleanup
            {
                HourId   = hourId,
                ServerId = primaryServer.ServerId,
                Success  = false
            };
            var serverCleanupPrimaryResult = new ServerCleanup
            {
                Id       = 1,
                HourId   = serverCleanupPrimary.HourId,
                ServerId = serverCleanupPrimary.ServerId,
                Success  = serverCleanupPrimary.Success
            };

            this.serverCleanupRepositoryMock.Setup(m => m.CreateAsync(It.Is <ServerCleanup>(s =>
                                                                                            s.ServerId == serverCleanupPrimary.ServerId &&
                                                                                            s.HourId == serverCleanupPrimary.HourId &&
                                                                                            s.Success == serverCleanupPrimary.Success
                                                                                            ))).ReturnsAsync(serverCleanupPrimaryResult);

            var serverCleanupOther = new ServerCleanup
            {
                HourId   = hourId,
                ServerId = otherServer.ServerId,
                Success  = false
            };
            var serverCleanupOtherResult = new ServerCleanup
            {
                Id       = 2,
                HourId   = serverCleanupOther.HourId,
                ServerId = serverCleanupOther.ServerId,
                Success  = serverCleanupOther.Success
            };

            this.serverCleanupRepositoryMock.Setup(m => m.CreateAsync(It.Is <ServerCleanup>(s =>
                                                                                            s.ServerId == serverCleanupOther.ServerId &&
                                                                                            s.HourId == serverCleanupOther.HourId &&
                                                                                            s.Success == serverCleanupOther.Success
                                                                                            ))).ReturnsAsync(serverCleanupOtherResult);

            // Act
            await this.hourCleanupLogic.CleanupForHour(hourId);

            // Assert
            this.cleanupTablesRepositoryMock.VerifyAll();
            this.serverRepositoryMock.VerifyAll();
            this.hourRepositoryMock.VerifyAll();
            this.dataIntegrityRepositoryMock.VerifyAll();
            this.serverCleanupRepositoryMock.VerifyAll();
        }
コード例 #6
0
        public async Task CleanupQosTables()
        {
            // Arrange
            var serverCleanupId = 3;
            var hourId          = 3;
            var serverId        = 2;
            var serverCleanup   = new ServerCleanup
            {
                Id       = serverCleanupId,
                HourId   = hourId,
                ServerId = serverId
            };

            this.serverCleanupRepositoryMock.Setup(m => m.ReadAsync(serverCleanupId)).ReturnsAsync(serverCleanup);
            var hour = new Hour
            {
                Id            = hourId,
                HourTimeStamp = DateTime.UtcNow
            };

            this.hourRepositoryMock.Setup(m => m.ReadAsync(hourId)).ReturnsAsync(hour);
            var serverName = "TestServer";
            var server     = new Server
            {
                ServerId   = serverId,
                ServerName = serverName
            };

            this.serverRepositoryMock.Setup(m => m.ReadAsync(serverId)).ReturnsAsync(server);


            this.dataIntegrityRepositoryMock.Setup(m => m.DropAllTriggersInCurrentDatabase(server)).Returns(Task.Delay(5));
            this.cleanupTablesRepositoryMock.Setup(m => m.CleanupQosTable(
                                                       server.ServerName,
                                                       $"{Names.Database.EddsdboSchema}.{Names.Database.VarscatOutputTable}",
                                                       Names.Database.SummaryDayHourColumn,
                                                       It.Is <DateTime>(dt => dt == hour.HourTimeStamp.AddDays(DatabaseConstants.PastWeekThreshold)),
                                                       Defaults.Database.DeleteBatchSize,
                                                       true
                                                       )).Returns(Task.Delay(5));

            this.cleanupTablesRepositoryMock.Setup(m => m.CleanupQosTable(
                                                       server.ServerName,
                                                       $"{Names.Database.EddsdboSchema}.{Names.Database.VarscatOutputDetailTable}",
                                                       Names.Database.TimestampColumn,
                                                       hour.HourTimeStamp.AddDays(DatabaseConstants.PastWeekThreshold),
                                                       Defaults.Database.DeleteBatchSize,
                                                       true
                                                       )).Returns(Task.Delay(5));

            this.serverCleanupRepositoryMock.Setup(m => m.UpdateAsync(
                                                       It.Is <ServerCleanup>(sc => sc.Id == serverCleanup.Id &&
                                                                             sc.ServerId == serverCleanup.ServerId &&
                                                                             sc.HourId == serverCleanup.HourId &&
                                                                             sc.Success == true))).Returns(Task.Delay(5));

            // Act
            await this.hourCleanupLogic.CleanupQosTables(serverCleanupId);

            // Assert
            this.hourRepositoryMock.VerifyAll();
            this.serverCleanupRepositoryMock.VerifyAll();
            this.serverRepositoryMock.VerifyAll();
            this.dataIntegrityRepositoryMock.VerifyAll();
            this.cleanupTablesRepositoryMock.VerifyAll();
        }