Files
PSMinIO/Simple-Chunked-Test.ps1
T
PSMinIO Developer 2974ead76e Major improvements: MinIO 4.0.7 compatibility, file handle fixes, clean logging, session management
Key Achievements:
- Downgraded to MinIO 4.0.7 for PowerShell compatibility (eliminated async/await issues)
- Fixed file handle leaks in upload operations (using explicit FileStream management)
- Implemented clean logging (timestamps without redundant prefixes)
- Fixed automatic session variable management (Connect-MinIO stores, cmdlets retrieve)
- Removed duplicate certificate parameters (kept only SkipCertificateValidation)
- Fixed all 'Folder' alias conflicts across cmdlets
- Added correct System.Runtime.CompilerServices.Unsafe.dll version (4.5.3)

 Working Features:
- Connection management (automatic + explicit override)
- Bucket operations (list, create, remove)
- File upload/download (with proper handle release)
- Progress tracking and speed reporting
- Clean verbose logging with timestamps

 Known Issue:
- Chunked operations have threading violations (PowerShell cmdlet methods called from background threads)
- Regular operations work perfectly, chunked operations need threading architecture fix

 Test Results:
- 3.71GB Windows install.wim file tested
- Regular upload/download:  Working
- File handles:  No leaks, immediate deletion possible
- Session management:  Automatic connection storage/retrieval
- Chunked operations:  Threading violations need fix
2025-07-10 20:55:14 -04:00

49 lines
1.8 KiB
PowerShell

# Simple chunked upload test
Import-Module ./Module/PSMinIO/PSMinIO.psd1 -Force
Write-Host "=== Simple Chunked Test ===" -ForegroundColor Cyan
# Test file
$testFile = "C:\Users\gsadmin\Downloads\windows_10_enterprise_ltsc_2021_x64\sources\install.wim"
# Check file
if (Test-Path $testFile) {
$fileInfo = Get-Item $testFile
Write-Host "File found: $($fileInfo.Name)" -ForegroundColor Green
Write-Host "Size: $([math]::Round($fileInfo.Length / 1GB, 2)) GB" -ForegroundColor Yellow
} else {
Write-Host "File not found!" -ForegroundColor Red
exit 1
}
# Connect
Write-Host "Connecting..." -ForegroundColor Yellow
$connection = Connect-MinIO -Endpoint "https://api.s3.gracesolution.info" -AccessKey "T34Wg85SAwezUa3sk3m4" -SecretKey "PxEmnbQoQJTJsDocSEV6mSSscDpJMiJCayPv93xe"
# Get bucket
$buckets = Get-MinIOBucket
$testBucket = $buckets[0].Name
Write-Host "Using bucket: $testBucket" -ForegroundColor Yellow
# Test chunked upload with 50MB chunks
Write-Host "Starting chunked upload with 50MB chunks..." -ForegroundColor Yellow
try {
$startTime = Get-Date
$result = New-MinIOObjectChunked -BucketName $testBucket -Files $testFile -ChunkSize 50MB -Verbose
$endTime = Get-Date
$duration = $endTime - $startTime
$speedMBps = [math]::Round(($fileInfo.Length / 1MB) / $duration.TotalSeconds, 2)
Write-Host "SUCCESS!" -ForegroundColor Green
Write-Host "Duration: $($duration.ToString('hh\:mm\:ss'))" -ForegroundColor Gray
Write-Host "Speed: $speedMBps MB/s" -ForegroundColor Gray
$result | Format-Table ObjectName, BucketName, @{Name="SizeGB";Expression={[math]::Round($_.Size/1GB,2)}}
} catch {
Write-Host "FAILED: $($_.Exception.Message)" -ForegroundColor Red
}
Write-Host "Test completed!" -ForegroundColor Cyan