diff options
Diffstat (limited to 'scripts/test_scripts/block-clone-test-windows.ps1')
| -rw-r--r-- | scripts/test_scripts/block-clone-test-windows.ps1 | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/scripts/test_scripts/block-clone-test-windows.ps1 b/scripts/test_scripts/block-clone-test-windows.ps1 deleted file mode 100644 index df24831a4..000000000 --- a/scripts/test_scripts/block-clone-test-windows.ps1 +++ /dev/null @@ -1,145 +0,0 @@ -# Test block-clone functionality on a temporary ReFS VHD. -# -# Requires: -# - Administrator privileges -# - Windows Server, or Windows 10/11 Pro for Workstations (ReFS support) -# - Hyper-V PowerShell module (for New-VHD), or diskpart fallback -# -# Usage: -# # From an elevated PowerShell prompt: -# .\scripts\test_scripts\block-clone-test-windows.ps1 [-TestBinary <path>] -# -# If -TestBinary is not given, defaults to build\windows\x64\debug\zencore-test.exe -# relative to the repository root. - -param( - [string]$TestBinary = "" -) - -$ErrorActionPreference = "Stop" - -$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition -$RepoRoot = (Resolve-Path "$ScriptDir\..\..").Path - -if (-not $TestBinary) { - $TestBinary = Join-Path $RepoRoot "build\windows\x64\debug\zencore-test.exe" -} - -$ImageSizeMB = 2048 -$TestCases = "TryCloneFile,CopyFile.Clone,SupportsBlockRefCounting,CloneQueryInterface" - -$VhdPath = "" -$MountLetter = "" - -function Cleanup { - $ErrorActionPreference = "SilentlyContinue" - - if ($MountLetter) { - Write-Host "Dismounting VHD ..." - Dismount-VHD -Path $VhdPath -ErrorAction SilentlyContinue - } - if ($VhdPath -and (Test-Path $VhdPath)) { - Remove-Item -Force $VhdPath -ErrorAction SilentlyContinue - } -} - -trap { - Cleanup - throw $_ -} - -# --- Preflight checks --- - -$IsAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole( - [Security.Principal.WindowsBuiltInRole]::Administrator) -if (-not $IsAdmin) { - Write-Error "This script must be run as Administrator (for VHD mount/format)." - exit 1 -} - -if (-not (Test-Path $TestBinary)) { - Write-Error "Test binary not found: $TestBinary`nHint: build with 'xmake config -m debug && xmake build zencore-test'" - exit 1 -} - -# Check that ReFS formatting is available -$RefsAvailable = $true -try { - # A quick check: on non-Server/Workstation SKUs, Format-Volume -FileSystem ReFS will fail - $OsCaption = (Get-CimInstance Win32_OperatingSystem).Caption - if ($OsCaption -notmatch "Server|Workstation|Enterprise") { - Write-Warning "ReFS may not be available on this Windows edition: $OsCaption" - Write-Warning "Continuing anyway — format step will fail if unsupported." - } -} catch { - # Non-fatal, just proceed -} - -# --- Create and mount ReFS VHD --- - -$VhdPath = Join-Path $env:TEMP "refs-clone-test-$([guid]::NewGuid().ToString('N').Substring(0,8)).vhdx" - -Write-Host "Creating ${ImageSizeMB}MB VHDX at $VhdPath ..." - -try { - # Prefer Hyper-V cmdlet if available - New-VHD -Path $VhdPath -SizeBytes ($ImageSizeMB * 1MB) -Fixed | Out-Null -} catch { - # Fallback to diskpart - Write-Host "New-VHD not available, falling back to diskpart ..." - $DiskpartScript = @" -create vdisk file="$VhdPath" maximum=$ImageSizeMB type=fixed -"@ - $DiskpartScript | diskpart | Out-Null -} - -Write-Host "Mounting and initializing VHD ..." - -Mount-VHD -Path $VhdPath -$Disk = Get-VHD -Path $VhdPath | Get-Disk - -# Suppress Explorer's auto-open / "format disk?" prompts for the raw partition -Stop-Service ShellHWDetection -ErrorAction SilentlyContinue - -try { - Initialize-Disk -Number $Disk.Number -PartitionStyle GPT -ErrorAction SilentlyContinue - $Partition = New-Partition -DiskNumber $Disk.Number -UseMaximumSize -AssignDriveLetter - $MountLetter = $Partition.DriveLetter - - Write-Host "Formatting ${MountLetter}: as ReFS with integrity disabled ..." - Format-Volume -DriveLetter $MountLetter -FileSystem ReFS -NewFileSystemLabel "CloneTest" -Confirm:$false | Out-Null - - # Disable integrity streams (required for block cloning to work on ReFS) - Set-FileIntegrity "${MountLetter}:\" -Enable $false -ErrorAction SilentlyContinue -} finally { - Start-Service ShellHWDetection -ErrorAction SilentlyContinue -} - -$MountRoot = "${MountLetter}:\" - -# --- Copy test binary and run --- - -Write-Host "Copying test binary to ReFS volume ..." -Copy-Item $TestBinary "$MountRoot\zencore-test.exe" - -Write-Host "Running block-clone tests ..." -Write-Host "---" - -$proc = Start-Process -FilePath "$MountRoot\zencore-test.exe" ` - -ArgumentList "--test-suite=core.filesystem", "--test-case=$TestCases" ` - -NoNewWindow -Wait -PassThru - -Write-Host "---" - -if ($proc.ExitCode -ne 0) { - Write-Error "Tests failed with exit code $($proc.ExitCode)" - Cleanup - exit $proc.ExitCode -} - -Write-Host "ReFS: all block-clone tests passed." - -# --- Cleanup --- - -Cleanup -Write-Host "Done." |