Files
PSMinIO/Test-ChunkedModule.ps1
T
PSMinIO Developer 6c6db4fec0 Add chunked transfer demonstration and test framework
- Create Demo-ChunkedTransfer.ps1 for showcasing implementation
- Add PSMinIO-TestFunctions.psm1 with test functions
- Add Test-ChunkedModule.ps1 and Quick-Test.ps1 for validation
- Update Build.ps1 to output to Artifacts directory
- Remove unnecessary progress parameters (use standard ProgressAction)
- Add missing using statements for compilation
- Create test manifest PSMinIO-Test.psd1
- Ready for C# compilation and integration testing
2025-07-10 13:06:44 -04:00

187 lines
7.1 KiB
PowerShell

# Test script for PSMinIO chunked operations
# This script tests if the module can be imported and basic functionality works
param(
[string]$ModulePath = "Artifacts\PSMinIO\PSMinIO.psd1"
)
Write-Host "=== PSMinIO Chunked Module Test ===" -ForegroundColor Cyan
try {
# Test 1: Import Module
Write-Host "`n--- Test 1: Module Import ---" -ForegroundColor Yellow
if (!(Test-Path $ModulePath)) {
throw "Module manifest not found: $ModulePath"
}
# Remove any existing module
Get-Module PSMinIO | Remove-Module -Force -ErrorAction SilentlyContinue
# Import the module
Import-Module $ModulePath -Force -ErrorAction Stop
Write-Host "✓ Module imported successfully" -ForegroundColor Green
# Test 2: Check Available Cmdlets
Write-Host "`n--- Test 2: Available Cmdlets ---" -ForegroundColor Yellow
$expectedCmdlets = @(
'Connect-MinIO',
'Get-MinIOBucket',
'New-MinIOBucket',
'Remove-MinIOBucket',
'Test-MinIOBucketExists',
'Get-MinIOObject',
'New-MinIOObject',
'New-MinIOObjectChunked',
'New-MinIOFolder',
'Get-MinIOObjectContent',
'Get-MinIOObjectContentChunked',
'Remove-MinIOObject',
'Get-MinIOBucketPolicy',
'Set-MinIOBucketPolicy',
'Get-MinIOStats'
)
$availableCmdlets = Get-Command -Module PSMinIO | Select-Object -ExpandProperty Name
foreach ($cmdlet in $expectedCmdlets) {
if ($cmdlet -in $availableCmdlets) {
Write-Host "$cmdlet" -ForegroundColor Green
} else {
Write-Host "$cmdlet (MISSING)" -ForegroundColor Red
}
}
Write-Host "`nTotal cmdlets available: $($availableCmdlets.Count)" -ForegroundColor Cyan
# Test 3: Check Chunked Cmdlets Specifically
Write-Host "`n--- Test 3: Chunked Cmdlets ---" -ForegroundColor Yellow
$chunkedCmdlets = @('New-MinIOObjectChunked', 'Get-MinIOObjectContentChunked')
foreach ($cmdlet in $chunkedCmdlets) {
try {
$cmdletInfo = Get-Command $cmdlet -ErrorAction Stop
Write-Host "$cmdlet" -ForegroundColor Green
# Check parameters
$parameters = $cmdletInfo.Parameters.Keys | Where-Object { $_ -notin @('Verbose', 'Debug', 'ErrorAction', 'WarningAction', 'InformationAction', 'ErrorVariable', 'WarningVariable', 'InformationVariable', 'OutVariable', 'OutBuffer', 'PipelineVariable', 'ProgressAction') }
Write-Host " Parameters: $($parameters.Count)" -ForegroundColor Gray
# Check for chunked-specific parameters
$chunkedParams = @('ChunkSize', 'Resume', 'MaxRetries')
foreach ($param in $chunkedParams) {
if ($param -in $parameters) {
Write-Host "$param" -ForegroundColor Green
} else {
Write-Host "$param (MISSING)" -ForegroundColor Red
}
}
}
catch {
Write-Host "$cmdlet (ERROR: $($_.Exception.Message))" -ForegroundColor Red
}
}
# Test 4: Check Help Documentation
Write-Host "`n--- Test 4: Help Documentation ---" -ForegroundColor Yellow
foreach ($cmdlet in $chunkedCmdlets) {
try {
$help = Get-Help $cmdlet -ErrorAction Stop
if ($help.Synopsis -and $help.Synopsis -ne $cmdlet) {
Write-Host "$cmdlet has help documentation" -ForegroundColor Green
} else {
Write-Host "$cmdlet has minimal help" -ForegroundColor Yellow
}
}
catch {
Write-Host "$cmdlet help error: $($_.Exception.Message)" -ForegroundColor Red
}
}
# Test 5: Parameter Validation
Write-Host "`n--- Test 5: Parameter Validation ---" -ForegroundColor Yellow
try {
# Test New-MinIOObjectChunked parameter validation
$cmd = Get-Command New-MinIOObjectChunked
# Check ChunkSize validation
$chunkSizeParam = $cmd.Parameters['ChunkSize']
if ($chunkSizeParam.Attributes | Where-Object { $_.TypeId.Name -eq 'ValidateRangeAttribute' }) {
Write-Host "✓ ChunkSize has range validation" -ForegroundColor Green
} else {
Write-Host "⚠ ChunkSize missing range validation" -ForegroundColor Yellow
}
# Check MaxRetries validation
$maxRetriesParam = $cmd.Parameters['MaxRetries']
if ($maxRetriesParam.Attributes | Where-Object { $_.TypeId.Name -eq 'ValidateRangeAttribute' }) {
Write-Host "✓ MaxRetries has range validation" -ForegroundColor Green
} else {
Write-Host "⚠ MaxRetries missing range validation" -ForegroundColor Yellow
}
}
catch {
Write-Host "✗ Parameter validation check failed: $($_.Exception.Message)" -ForegroundColor Red
}
# Test 6: Type Definitions
Write-Host "`n--- Test 6: Type Definitions ---" -ForegroundColor Yellow
$expectedTypes = @(
'PSMinIO.Models.ChunkedTransferState',
'PSMinIO.Models.ChunkInfo'
)
foreach ($typeName in $expectedTypes) {
try {
$type = [Type]::GetType($typeName)
if ($type) {
Write-Host "$typeName" -ForegroundColor Green
} else {
Write-Host "$typeName (not loaded)" -ForegroundColor Yellow
}
}
catch {
Write-Host "$typeName (error: $($_.Exception.Message))" -ForegroundColor Red
}
}
Write-Host "`n=== Test Summary ===" -ForegroundColor Green
Write-Host "Module Path: $ModulePath" -ForegroundColor Gray
Write-Host "Available Cmdlets: $($availableCmdlets.Count)" -ForegroundColor Gray
Write-Host "Chunked Cmdlets: $($chunkedCmdlets.Count)" -ForegroundColor Gray
Write-Host "`n✓ Basic module tests completed successfully!" -ForegroundColor Green
Write-Host "`nNext steps:" -ForegroundColor Cyan
Write-Host "1. Set up MinIO server for integration testing" -ForegroundColor White
Write-Host "2. Run: .\tests\ChunkedOperationsTests.ps1" -ForegroundColor White
Write-Host "3. Check examples: .\examples\ChunkedOperationsExamples.ps1" -ForegroundColor White
}
catch {
Write-Host "`n=== Test Failed ===" -ForegroundColor Red
Write-Host "Error: $($_.Exception.Message)" -ForegroundColor Red
Write-Host "Stack Trace:" -ForegroundColor Red
Write-Host $_.ScriptStackTrace -ForegroundColor Red
# Show module import errors if any
if ($_.Exception.Message -like "*Import-Module*") {
Write-Host "`nTroubleshooting:" -ForegroundColor Yellow
Write-Host "1. Check if all required assemblies are present" -ForegroundColor White
Write-Host "2. Verify .NET dependencies are installed" -ForegroundColor White
Write-Host "3. Check PowerShell execution policy" -ForegroundColor White
Write-Host "4. Try running as Administrator" -ForegroundColor White
}
exit 1
}
finally {
# Clean up
Write-Host "`nCleaning up..." -ForegroundColor Gray
}