From b1c84b4401ea7e87c4e3c011ef8d293c94881e47 Mon Sep 17 00:00:00 2001 From: Chrissy LeMaire Date: Mon, 4 Nov 2024 12:11:34 +0100 Subject: [PATCH] fix session buffer test --- tests/Get-DbaDbccSessionBuffer.Tests.ps1 | 82 ++++++++---------------- 1 file changed, 28 insertions(+), 54 deletions(-) diff --git a/tests/Get-DbaDbccSessionBuffer.Tests.ps1 b/tests/Get-DbaDbccSessionBuffer.Tests.ps1 index d1f6077739..61928ebecb 100644 --- a/tests/Get-DbaDbccSessionBuffer.Tests.ps1 +++ b/tests/Get-DbaDbccSessionBuffer.Tests.ps1 @@ -34,79 +34,53 @@ Describe "Get-DbaDbccSessionBuffer" -Tag "UnitTests" { Describe "Get-DbaDbccSessionBuffer" -Tag "IntegrationTests" { BeforeAll { $db = Get-DbaDatabase -SqlInstance $TestConfig.instance1 -Database tempdb - # Create a query that will generate buffer data - $query = @" - DECLARE @i INT = 0; - WHILE @i < 10 BEGIN - SELECT TOP 100 * FROM sys.objects; - SET @i = @i + 1; - WAITFOR DELAY '00:00:01'; - END; -"@ - # Start the query in a background runspace to ensure it's running during our tests - $script:runspace = [powershell]::Create().AddScript({ - param($instance, $query) - Import-Module dbatools - $db = Get-DbaDatabase -SqlInstance $instance -Database tempdb - $db.Query($query) - }).AddArgument($TestConfig.instance1).AddArgument($query) - - $script:runspaceHandle = $script:runspace.BeginInvoke() - Start-Sleep -Seconds 2 # Give the query time to start - + # Run a query that will definitely create a session $queryResult = $db.Query('SELECT top 10 object_id, @@Spid as MySpid FROM sys.objects') + # Add a small delay to ensure the session is captured + Start-Sleep -Seconds 1 } - AfterAll { - if ($script:runspace) { - if (-not $script:runspaceHandle.IsCompleted) { - $script:runspace.Stop() - } - $script:runspace.Dispose() + Context "Validate standard output for all databases" { + BeforeAll { + $inputBufferProps = 'ComputerName', 'InstanceName', 'SqlInstance', 'SessionId', 'EventType', 'Parameters', 'EventInfo' + $outputBufferProps = 'ComputerName', 'InstanceName', 'SqlInstance', 'SessionId', 'Buffer', 'HexBuffer' + + # Get results using the SPID we know exists + $spid = $queryResult[0].MySpid + $inputBufferResult = Get-DbaDbccSessionBuffer -SqlInstance $TestConfig.instance1 -Operation InputBuffer -SessionId $spid + $outputBufferResult = Get-DbaDbccSessionBuffer -SqlInstance $TestConfig.instance1 -Operation OutputBuffer -SessionId $spid } - } - Context "When getting session buffers for all databases" { - BeforeAll { - $inputProps = @( - 'ComputerName', - 'InstanceName', - 'SqlInstance', - 'SessionId', - 'EventType', - 'Parameters', - 'EventInfo' - ) - $resultInput = Get-DbaDbccSessionBuffer -SqlInstance $TestConfig.instance1 -Operation InputBuffer -All - $resultOutput = Get-DbaDbccSessionBuffer -SqlInstance $TestConfig.instance1 -Operation OutputBuffer -All + It "returns results for InputBuffer" { + $inputBufferResult | Should -Not -BeNullOrEmpty } - It "Returns results for InputBuffer" { - $resultInput.Count | Should -BeGreaterThan 0 + It "returns results for OutputBuffer" { + $outputBufferResult | Should -Not -BeNullOrEmpty } - It "Has property <_> for InputBuffer" -ForEach $inputProps { - $resultInput[0].PSObject.Properties[$PSItem].Name | Should -Be $PSItem + It "Should return property <_> for InputBuffer" -ForEach $inputBufferProps { + $inputBufferResult[0].PSObject.Properties[$_].Name | Should -Be $_ } - It "Returns results for OutputBuffer" { - $resultOutput.Count | Should -BeGreaterThan 0 + It "Should return property <_> for OutputBuffer" -ForEach $outputBufferProps { + $outputBufferResult[0].PSObject.Properties[$_].Name | Should -Be $_ } } - Context "When getting session buffers for specific SessionId" { + Context "Validate returns results for SessionId" { BeforeAll { $spid = $queryResult[0].MySpid - $resultInput = Get-DbaDbccSessionBuffer -SqlInstance $TestConfig.instance1 -Operation InputBuffer -SessionId $spid - $resultOutput = Get-DbaDbccSessionBuffer -SqlInstance $TestConfig.instance1 -Operation OutputBuffer -SessionId $spid + $inputBufferResult = Get-DbaDbccSessionBuffer -SqlInstance $TestConfig.instance1 -Operation InputBuffer -SessionId $spid + $outputBufferResult = Get-DbaDbccSessionBuffer -SqlInstance $TestConfig.instance1 -Operation OutputBuffer -SessionId $spid } - It "Returns correct SessionId for InputBuffer" { - $resultInput.SessionId | Should -Be $spid + It "returns results for InputBuffer" { + $inputBufferResult.SessionId | Should -Be $spid } - It "Returns correct SessionId for OutputBuffer" { - $resultOutput.SessionId | Should -Be $spid + It "returns results for OutputBuffer" { + $outputBufferResult.SessionId | Should -Be $spid } } -} +} \ No newline at end of file