mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 08:23:05 -05:00
359 lines
9.7 KiB
Batchfile
Executable File
359 lines
9.7 KiB
Batchfile
Executable File
@echo off
|
|
|
|
setlocal
|
|
setlocal EnableDelayedExpansion
|
|
|
|
set Configuration=Release
|
|
if not X%1==X set Configuration=%1
|
|
|
|
cd %~dp0..
|
|
set ProjRoot=%cd%
|
|
|
|
cd build\VStudio
|
|
if not exist build\%Configuration% echo === No tests found >&2 & goto fail
|
|
cd build\%Configuration%
|
|
|
|
launchctl-x64 start memfs64 testdsk "" M: >nul
|
|
launchctl-x64 start memfs64 testnet \memfs64\test N: >nul
|
|
launchctl-x64 start memfs32 testdsk "" O: >nul
|
|
launchctl-x64 start memfs32 testnet \memfs32\test P: >nul
|
|
rem Cannot use timeout under cygwin/mintty: "Input redirection is not supported"
|
|
waitfor 7BF47D72F6664550B03248ECFE77C7DD /t 3 2>nul
|
|
cd M: >nul 2>nul || (echo === Unable to find drive M: >&2 & goto fail)
|
|
cd N: >nul 2>nul || (echo === Unable to find drive N: >&2 & goto fail)
|
|
cd O: >nul 2>nul || (echo === Unable to find drive O: >&2 & goto fail)
|
|
cd P: >nul 2>nul || (echo === Unable to find drive P: >&2 & goto fail)
|
|
|
|
set testpass=0
|
|
set testfail=0
|
|
for %%f in (^
|
|
:winfsp-tests-x64 ^
|
|
:winfsp-tests-x64-case-randomize ^
|
|
:winfsp-tests-x64-mountpoint-drive ^
|
|
:winfsp-tests-x64-mountpoint-dir ^
|
|
:winfsp-tests-x64-no-traverse ^
|
|
:winfsp-tests-x64-oplock ^
|
|
:winfsp-tests-x64-external-share ^
|
|
:fsx-memfs-x64-disk ^
|
|
:fsx-memfs-x64-net ^
|
|
:standby-memfs-x64-disk ^
|
|
:standby-memfs-x64-net ^
|
|
:net-use-memfs-x64 ^
|
|
:winfstest-memfs-x64-disk ^
|
|
:winfstest-memfs-x64-net ^
|
|
:fscrash-x64 ^
|
|
:winfsp-tests-x86 ^
|
|
:winfsp-tests-x86-case-randomize ^
|
|
:winfsp-tests-x86-mountpoint-drive ^
|
|
:winfsp-tests-x86-mountpoint-dir ^
|
|
:winfsp-tests-x86-no-traverse ^
|
|
:winfsp-tests-x86-oplock ^
|
|
:winfsp-tests-x86-external-share ^
|
|
:fsx-memfs-x86-disk ^
|
|
:fsx-memfs-x86-net ^
|
|
:standby-memfs-x86-disk ^
|
|
:standby-memfs-x86-net ^
|
|
:net-use-memfs-x86 ^
|
|
:winfstest-memfs-x86-disk ^
|
|
:winfstest-memfs-x86-net ^
|
|
:fscrash-x86 ^
|
|
) do (
|
|
echo === Running %%f
|
|
|
|
if defined APPVEYOR (
|
|
appveyor AddTest "%%f" -FileName None -Framework None -Outcome Running
|
|
)
|
|
|
|
pushd %cd%
|
|
call %%f
|
|
popd
|
|
|
|
if !ERRORLEVEL! neq 0 (
|
|
set /a testfail=testfail+1
|
|
|
|
echo === Failed %%f
|
|
|
|
if defined APPVEYOR (
|
|
appveyor UpdateTest "%%f" -FileName None -Framework None -Outcome Failed -Duration 0
|
|
)
|
|
) else (
|
|
set /a testpass=testpass+1
|
|
|
|
echo === Passed %%f
|
|
|
|
if defined APPVEYOR (
|
|
appveyor UpdateTest "%%f" -FileName None -Framework None -Outcome Passed -Duration 0
|
|
)
|
|
)
|
|
echo:
|
|
)
|
|
|
|
launchctl-x64 stop memfs64 testdsk >nul
|
|
launchctl-x64 stop memfs64 testnet >nul
|
|
launchctl-x64 stop memfs32 testdsk >nul
|
|
launchctl-x64 stop memfs32 testnet >nul
|
|
rem Cannot use timeout under cygwin/mintty: "Input redirection is not supported"
|
|
waitfor 7BF47D72F6664550B03248ECFE77C7DD /t 3 2>nul
|
|
|
|
set /a total=testpass+testfail
|
|
echo === Total: %testpass%/%total%
|
|
call :leak-test
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
if not %testfail%==0 goto fail
|
|
|
|
exit /b 0
|
|
|
|
:fail
|
|
exit /b 1
|
|
|
|
:winfsp-tests-x64
|
|
winfsp-tests-x64 +*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-case-randomize
|
|
winfsp-tests-x64 --case-randomize
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-mountpoint-drive
|
|
winfsp-tests-x64 --mountpoint=X:
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-mountpoint-dir
|
|
winfsp-tests-x64 --mountpoint=mymnt --case-insensitive
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-no-traverse
|
|
winfsp-tests-x64 --no-traverse
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-oplock
|
|
winfsp-tests-x64 --oplock=filter --resilient
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86
|
|
winfsp-tests-x86 +*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-case-randomize
|
|
winfsp-tests-x86 --case-randomize
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-mountpoint-drive
|
|
winfsp-tests-x86 --mountpoint=X:
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-mountpoint-dir
|
|
winfsp-tests-x86 --mountpoint=mymnt --case-insensitive
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-no-traverse
|
|
winfsp-tests-x86 --no-traverse
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-oplock
|
|
winfsp-tests-x86 --oplock=filter --resilient
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-external-share
|
|
M:
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x64.exe" --external --share=winfsp-tests-share=M:\ --resilient ^
|
|
-reparse_symlink*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:fsx-memfs-x64-disk
|
|
M:
|
|
"%ProjRoot%\ext\test\fstools\src\fsx\fsx.exe" -N 5000 test xxxxxx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
"%ProjRoot%\ext\test\fstools\src\fsx\fsx.exe" -f foo -N 5000 test xxxxxx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:fsx-memfs-x64-net
|
|
N:
|
|
"%ProjRoot%\ext\test\fstools\src\fsx\fsx.exe" -N 5000 test xxxxxx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
"%ProjRoot%\ext\test\fstools\src\fsx\fsx.exe" -f foo -N 5000 test xxxxxx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:standby-memfs-x64-disk
|
|
M:
|
|
copy "%ProjRoot%\build\VStudio\build\%Configuration%\*"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:standby-memfs-x64-net
|
|
N:
|
|
copy "%ProjRoot%\build\VStudio\build\%Configuration%\*"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:net-use-memfs-x64
|
|
echo net use L: \\memfs64\share
|
|
net use L: \\memfs64\share
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
echo net use ^| findstr L: ^| findstr WinFsp.Np
|
|
net use | findstr L: | findstr WinFsp.Np
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
echo net use L: /delete
|
|
net use L: /delete
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-external-share
|
|
O:
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x86.exe" --external --share=winfsp-tests-share=O:\ --resilient ^
|
|
-reparse_symlink*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:fsx-memfs-x86-disk
|
|
O:
|
|
"%ProjRoot%\ext\test\fstools\src\fsx\fsx.exe" -N 5000 test xxxxxx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
"%ProjRoot%\ext\test\fstools\src\fsx\fsx.exe" -f foo -N 5000 test xxxxxx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:fsx-memfs-x86-net
|
|
P:
|
|
"%ProjRoot%\ext\test\fstools\src\fsx\fsx.exe" -N 5000 test xxxxxx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
"%ProjRoot%\ext\test\fstools\src\fsx\fsx.exe" -f foo -N 5000 test xxxxxx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:standby-memfs-x86-disk
|
|
O:
|
|
copy "%ProjRoot%\build\VStudio\build\%Configuration%\*"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:standby-memfs-x86-net
|
|
P:
|
|
copy "%ProjRoot%\build\VStudio\build\%Configuration%\*"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:net-use-memfs-x86
|
|
echo net use L: \\memfs32\share
|
|
net use L: \\memfs32\share
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
echo net use ^| findstr L: ^| findstr WinFsp.Np
|
|
net use | findstr L: | findstr WinFsp.Np
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
echo net use L: /delete
|
|
net use L: /delete
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfstest-memfs-x64-disk
|
|
M:
|
|
call "%ProjRoot%\ext\test\winfstest\run-winfstest.bat"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfstest-memfs-x64-net
|
|
N:
|
|
call "%ProjRoot%\ext\test\winfstest\run-winfstest.bat"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfstest-memfs-x86-disk
|
|
O:
|
|
call "%ProjRoot%\ext\test\winfstest\run-winfstest.bat"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfstest-memfs-x86-net
|
|
P:
|
|
call "%ProjRoot%\ext\test\winfstest\run-winfstest.bat"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:fscrash-x64
|
|
for %%m in (^
|
|
000002 000004 000008 000010 ^
|
|
000020 000040 000080 000100 ^
|
|
000800 001000 002000 004000 ^
|
|
008000 080000 100000 200000 ^
|
|
) do (
|
|
echo fscrash-x64 --terminate --mask=0x%%m --enter
|
|
fscrash-x64 --terminate --mask=0x%%m --enter >nul 2>&1
|
|
if !ERRORLEVEL! neq -1073741823 goto fail
|
|
echo fscrash-x64 --terminate --mask=0x%%m --leave
|
|
fscrash-x64 --terminate --mask=0x%%m --leave >nul 2>&1
|
|
if !ERRORLEVEL! neq -1073741823 goto fail
|
|
)
|
|
echo fscrash-x64 --huge-alloc-size --cached
|
|
fscrash-x64 --huge-alloc-size --cached >nul 2>&1
|
|
if !ERRORLEVEL! neq 1 goto fail
|
|
exit /b 0
|
|
|
|
:fscrash-x86
|
|
for %%m in (^
|
|
000002 000004 000008 000010 ^
|
|
000020 000040 000080 000100 ^
|
|
000800 001000 002000 004000 ^
|
|
008000 080000 100000 200000 ^
|
|
) do (
|
|
echo fscrash-x86 --terminate --mask=0x%%m --enter
|
|
fscrash-x86 --terminate --mask=0x%%m --enter >nul 2>&1
|
|
if !ERRORLEVEL! neq -1073741823 goto fail
|
|
echo fscrash-x86 --terminate --mask=0x%%m --leave
|
|
fscrash-x86 --terminate --mask=0x%%m --leave >nul 2>&1
|
|
if !ERRORLEVEL! neq -1073741823 goto fail
|
|
)
|
|
echo fscrash-x86 --huge-alloc-size --cached
|
|
fscrash-x86 --huge-alloc-size --cached >nul 2>&1
|
|
if !ERRORLEVEL! neq 1 goto fail
|
|
exit /b 0
|
|
|
|
:leak-test
|
|
for /F "tokens=1,2 delims=:" %%i in ('verifier /query ^| findstr ^
|
|
/c:"Current Pool Allocations:" ^
|
|
/c:"CurrentPagedPoolAllocations:" ^
|
|
/c:"CurrentNonPagedPoolAllocations:"'
|
|
) do (
|
|
|
|
set FieldName=%%i
|
|
set FieldName=!FieldName: =!
|
|
|
|
set FieldValue=%%j
|
|
set FieldValue=!FieldValue: =!
|
|
set FieldValue=!FieldValue:^(=!
|
|
set FieldValue=!FieldValue:^)=!
|
|
|
|
if X!FieldName!==XCurrentPoolAllocations (
|
|
for /F "tokens=1,2 delims=/" %%k in ("!FieldValue!") do (
|
|
set NonPagedAlloc=%%k
|
|
set PagedAlloc=%%l
|
|
)
|
|
) else if X!FieldName!==XCurrentPagedPoolAllocations (
|
|
set PagedAlloc=!FieldValue!
|
|
) else if X!FieldName!==XCurrentNonPagedPoolAllocations (
|
|
set NonPagedAlloc=!FieldValue!
|
|
)
|
|
)
|
|
set /A TotalAlloc=PagedAlloc+NonPagedAlloc
|
|
if !TotalAlloc! equ 0 (
|
|
echo === Leaks: None
|
|
) else (
|
|
echo === Leaks: !NonPagedAlloc! NP / !PagedAlloc! P
|
|
goto fail
|
|
)
|
|
exit /b 0
|