tests/Get-DbaBackupInformation.Tests.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
$CommandName = $MyInvocation.MyCommand.Name.Replace(".Tests.ps1", "") Write-Host -Object "Running $PSCommandpath" -ForegroundColor Cyan . "$PSScriptRoot\constants.ps1" Describe "$commandname Integration Tests" -Tags "IntegrationTests" { BeforeAll { $DestBackupDir = 'C:\Temp\GetBackups' if (-Not(Test-Path $DestBackupDir)) { New-Item -Type Container -Path $DestBackupDir } else { Remove-Item $DestBackupDir\* } $random = Get-Random $dbname = "dbatoolsci_Backuphistory_$random" $null = Get-DbaDatabase -SqlInstance $script:instance1 -Database $dbname | Remove-DbaDatabase -Confirm:$false $null = Restore-DbaDatabase -SqlInstance $script:instance1 -Path $script:appveyorlabrepo\singlerestore\singlerestore.bak -DatabaseName $dbname -DestinationFilePrefix $dbname $db = Get-DbaDatabase -SqlInstance $script:instance1 -Database $dbname $db | Backup-DbaDatabase -Type Full -BackupDirectory $DestBackupDir $db | Backup-DbaDatabase -Type Differential -BackupDirectory $DestBackupDir $db | Backup-DbaDatabase -Type Log -BackupDirectory $DestBackupDir $dbname2 = "dbatoolsci_Backuphistory2_$random" $null = Get-DbaDatabase -SqlInstance $script:instance1 -Database $dbname2 | Remove-DbaDatabase -Confirm:$false $null = Restore-DbaDatabase -SqlInstance $script:instance1 -Path $script:appveyorlabrepo\singlerestore\singlerestore.bak -DatabaseName $dbname2 -DestinationFilePrefix $dbname2 $db2 = Get-DbaDatabase -SqlInstance $script:instance1 -Database $dbname2 $db2 | Backup-DbaDatabase -Type Full -BackupDirectory $DestBackupDir $db2 | Backup-DbaDatabase -Type Differential -BackupDirectory $DestBackupDir $db2 | Backup-DbaDatabase -Type Log -BackupDirectory $DestBackupDir $DestBackupDirOla = 'C:\Temp\GetBackupsOla' if (-Not(Test-Path $DestBackupDirOla)) { New-Item -Type Container -Path $DestBackupDirOla New-Item -Type Container -Path $DestBackupDirOla\FULL New-Item -Type Container -Path $DestBackupDirOla\DIFF New-Item -Type Container -Path $DestBackupDirOla\LOG } else { Remove-Item $DestBackupDirOla\FULL\* Remove-Item $DestBackupDirOla\DIFF\* Remove-Item $DestBackupDirOla\LOG\* } $dbname3 = "dbatoolsci_BackuphistoryOla_$random" $null = Get-DbaDatabase -SqlInstance $script:instance1 -Database $dbname3 | Remove-DbaDatabase -Confirm:$false $null = Restore-DbaDatabase -SqlInstance $script:instance1 -Path $script:appveyorlabrepo\singlerestore\singlerestore.bak -DatabaseName $dbname3 -DestinationFilePrefix $dbname3 $db3 = Get-DbaDatabase -SqlInstance $script:instance1 -Database $dbname3 $db3 | Backup-DbaDatabase -Type Full -BackupDirectory "$DestBackupDirOla\FULL" $db3 | Backup-DbaDatabase -Type Differential -BackupDirectory "$DestBackupDirOla\Diff" $db3 | Backup-DbaDatabase -Type Log -BackupDirectory "$DestBackupDirOla\LOG" } AfterAll { $null = Get-DbaDatabase -SqlInstance $script:instance1 -Database $dbname | Remove-DbaDatabase -Confirm:$false $null = Get-DbaDatabase -SqlInstance $script:instance1 -Database $dbname2 | Remove-DbaDatabase -Confirm:$false } Context "Get history for all database" { $results = Get-DbaBackupInformation -SqlInstance $script:instance1 -Path $DestBackupDir It "Should be 6 backups returned" { $results.count | Should Be 6 } It "Should return 2 full backups" { ($results | Where-Object {$_.Type -eq 'Database'}).count | Should be 2 } It "Should return 2 log backups" { ($results | Where-Object {$_.Type -eq 'Transaction Log'}).count | Should be 2 } } Context "Get history for one database" { $results = Get-DbaBackupInformation -SqlInstance $script:instance1 -Path $DestBackupDir -DatabaseName $dbname2 It "Should be 3 backups returned" { $results.count | Should Be 3 } It "Should Be 1 full backup" { ($results | Where-Object {$_.Type -eq 'Database'}).count | Should be 1 } It "Should be 1 log backups" { ($results | Where-Object {$_.Type -eq 'Transaction Log'}).count | Should be 1 } It "Should only be backups of $dbname2" { ($results | Where-Object {$_.Database -ne $dbname2 }).count | Should Be 0 } } Context "Check the export/import of backup history" { # This one used to cause all sorts of red $results = Get-DbaBackupInformation -SqlInstance $script:instance1 -Path $DestBackupDir -DatabaseName $dbname2 -ExportPath "$DestBackupDir\history.xml" # the command below returns just a warning # Get-DbaBackupInformation -Import -Path "$DestBackupDir\history.xml" | Restore-DbaDatabase -SqlInstance $script:instance1 -DestinationFilePrefix hist -RestoredDatabaseNamePrefix hist -TrustDbBackupHistory It "Should restore cleanly" { ($results | Where-Object {$_.RestoreComplete -eq $false}).count | Should be 0 } } Context "Test Maintenance solution options" { $results = Get-DbaBackupInformation -SqlInstance $script:instance1 -Path $DestBackupDirOla -MaintenanceSolution It "Should be 3 backups returned" { $results.count | Should Be 3 } It "Should Be 1 full backup" { ($results | Where-Object {$_.Type -eq 'Database'}).count | Should be 1 } It "Should be 1 log backups" { ($results | Where-Object {$_.Type -eq 'Transaction Log'}).count | Should be 1 } It "Should only be backups of $dbname3" { ($results | Where-Object {$_.Database -ne $dbname3 }).count | Should Be 0 } $ResultsSanLog = Get-DbaBackupInformation -SqlInstance $script:instance1 -Path $DestBackupDirOla -MaintenanceSolution -IgnoreLogBackup It "Should be 2 backups returned" { $ResultsSanLog.count | Should Be 2 } It "Should Be 1 full backup" { ($ResultsSanLog | Where-Object {$_.Type -eq 'Database'}).count | Should be 1 } It "Should be 0 log backups" { ($resultsSanLog | Where-Object {$_.Type -eq 'Transaction Log'}).count | Should be 0 } $ResultsSanLog = Get-DbaBackupInformation -SqlInstance $script:instance1 -Path $DestBackupDirOla -IgnoreLogBackup -WarningVariable warnvar -WarningAction SilentlyContinue It "Should Warn if IgnoreLogBackup without Maintenance Solution" { ($WarnVar -match "IgnoreLogBackup can only by used with Maintenance Soultion. Will not be used") | Should Be $True } It "Should ignore IgnoreLogBackup and return 3 backups" { $resultsSanLog.count | Should Be 3 } } } |