Skip to content

Commit

Permalink
fix session buffer test
Browse files Browse the repository at this point in the history
  • Loading branch information
potatoqualitee committed Nov 4, 2024
1 parent 57ea382 commit b1c84b4
Showing 1 changed file with 28 additions and 54 deletions.
82 changes: 28 additions & 54 deletions tests/Get-DbaDbccSessionBuffer.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}
}
}

0 comments on commit b1c84b4

Please sign in to comment.