mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 08:23:05 -05:00
1118 lines
36 KiB
Batchfile
Executable File
1118 lines
36 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
|
|
launchctl-x64 start memfs-dotnet testdsk "" Q: >nul
|
|
launchctl-x64 start memfs-dotnet testnet \memfs-dotnet\test R: >nul
|
|
rem Cannot use timeout under cygwin/mintty: "Input redirection is not supported"
|
|
waitfor 7BF47D72F6664550B03248ECFE77C7DD /t 5 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)
|
|
cd Q: >nul 2>nul || (echo === Unable to find drive Q: >&2 & goto fail)
|
|
cd R: >nul 2>nul || (echo === Unable to find drive R: >&2 & goto fail)
|
|
|
|
set dfl_tests=^
|
|
winfsp-tests-x64 ^
|
|
winfsp-tests-x64-case-randomize ^
|
|
winfsp-tests-x64-flushpurge ^
|
|
winfsp-tests-x64-legacy-unlink-rename ^
|
|
winfsp-tests-x64-mountpoint-drive ^
|
|
winfsp-tests-x64-mountpoint-dir ^
|
|
winfsp-tests-x64-mountpoint-dir-case-sensitive ^
|
|
winfsp-tests-x64-no-traverse ^
|
|
winfsp-tests-x64-oplock ^
|
|
winfsp-tests-x64-notify ^
|
|
winfsp-tests-x64-external ^
|
|
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-flushpurge ^
|
|
winfsp-tests-x86-legacy-unlink-rename ^
|
|
winfsp-tests-x86-mountpoint-drive ^
|
|
winfsp-tests-x86-mountpoint-dir ^
|
|
winfsp-tests-x86-mountpoint-dir-case-sensitive ^
|
|
winfsp-tests-x86-no-traverse ^
|
|
winfsp-tests-x86-oplock ^
|
|
winfsp-tests-x86-notify ^
|
|
winfsp-tests-x86-external ^
|
|
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 ^
|
|
winfsp-tests-dotnet-external ^
|
|
winfsp-tests-dotnet-external-share ^
|
|
fsx-memfs-dotnet-disk ^
|
|
fsx-memfs-dotnet-net ^
|
|
winfstest-memfs-dotnet-disk ^
|
|
winfstest-memfs-dotnet-net
|
|
set opt_tests=^
|
|
ifstest-memfs-x64-disk ^
|
|
ifstest-memfs-x86-disk ^
|
|
ifstest-memfs-dotnet-disk ^
|
|
sample-memfs-fuse-x64 ^
|
|
sample-fsx-memfs-fuse-x64 ^
|
|
sample-memfs-fuse-x86 ^
|
|
sample-fsx-memfs-fuse-x86 ^
|
|
sample-memfs-fuse3-x64 ^
|
|
sample-fsx-memfs-fuse3-x64 ^
|
|
sample-memfs-fuse3-x86 ^
|
|
sample-fsx-memfs-fuse3-x86 ^
|
|
sample-airfs-x64 ^
|
|
sample-airfs-x86 ^
|
|
sample-passthrough-x64 ^
|
|
sample-passthrough-x86 ^
|
|
sample-passthrough-fuse-x64 ^
|
|
sample-fsx-passthrough-fuse-x64 ^
|
|
sample-passthrough-fuse-x86 ^
|
|
sample-fsx-passthrough-fuse-x86 ^
|
|
sample-passthrough-fuse3-x64 ^
|
|
sample-fsx-passthrough-fuse3-x64 ^
|
|
sample-passthrough-fuse3-x86 ^
|
|
sample-fsx-passthrough-fuse3-x86 ^
|
|
sample-passthrough-dotnet ^
|
|
slowio-fsx-memfs-x64 ^
|
|
slowio-fsx-memfs-x86 ^
|
|
slowio-fsx-memfs-dotnet ^
|
|
compat-v1.2-memfs-x64 ^
|
|
compat-v1.2-memfs-x86 ^
|
|
compat-v1.1-passthrough-fuse-x64 ^
|
|
compat-v1.1-passthrough-fuse-x86 ^
|
|
avast-tests-x64 ^
|
|
avast-tests-x86 ^
|
|
avast-tests-dotnet
|
|
|
|
set tests=
|
|
for %%f in (%dfl_tests%) do (
|
|
if X%2==X (
|
|
set tests=!tests! %%f
|
|
) else (
|
|
set test=%%f
|
|
if not "X!test:%2=!"=="X!test!" set tests=!tests! %%f
|
|
)
|
|
)
|
|
for %%f in (%opt_tests%) do (
|
|
if X%2==X (
|
|
rem
|
|
) else (
|
|
set test=%%f
|
|
if not "X!test:%2=!"=="X!test!" set tests=!tests! %%f
|
|
)
|
|
)
|
|
|
|
set testpass=0
|
|
set testfail=0
|
|
for %%f in (%tests%) do (
|
|
echo === Running %%f
|
|
|
|
if defined APPVEYOR (
|
|
appveyor AddTest "%%f" -FileName None -Framework None -Outcome Running
|
|
)
|
|
|
|
pushd %cd%
|
|
set "begtime=!time: =0!"
|
|
call :%%f
|
|
set ERRORLEVEL_save=!ERRORLEVEL!
|
|
set "endtime=!time: =0!"
|
|
popd
|
|
|
|
REM see https://stackoverflow.com/a/9935540
|
|
set "endtimecalc=!endtime:%time:~8,1%=%%100)*100+1!" & set "begtimecalc=!begtime:%time:~8,1%=%%100)*100+1!"
|
|
set /A "duration=((((10!endtimecalc:%time:~2,1%=%%100)*60+1!%%100)-((((10!begtimecalc:%time:~2,1%=%%100)*60+1!%%100), duration-=(duration>>31)*24*60*60*100"
|
|
set /A "duration=10*duration"
|
|
|
|
if !ERRORLEVEL_save! neq 0 (
|
|
set /a testfail=testfail+1
|
|
|
|
echo === Failed %%f ^(!duration! ms^)
|
|
|
|
if defined APPVEYOR (
|
|
appveyor UpdateTest "%%f" -FileName None -Framework None -Outcome Failed -Duration !duration!
|
|
)
|
|
) else (
|
|
set /a testpass=testpass+1
|
|
|
|
echo === Passed %%f ^(!duration! ms^)
|
|
|
|
if defined APPVEYOR (
|
|
appveyor UpdateTest "%%f" -FileName None -Framework None -Outcome Passed -Duration !duration!
|
|
)
|
|
)
|
|
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
|
|
launchctl-x64 stop memfs-dotnet testdsk >nul
|
|
launchctl-x64 stop memfs-dotnet testnet >nul
|
|
rem Cannot use timeout under cygwin/mintty: "Input redirection is not supported"
|
|
waitfor 7BF47D72F6664550B03248ECFE77C7DD /t 5 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 * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-flushpurge
|
|
winfsp-tests-x64 --flush-and-purge-on-cleanup * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-legacy-unlink-rename
|
|
winfsp-tests-x64 --legacy-unlink-rename * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-mountpoint-drive
|
|
winfsp-tests-x64 --mountpoint=X: --resilient * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-mountpoint-dir
|
|
winfsp-tests-x64 --mountpoint=mymnt --case-insensitive * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-mountpoint-dir-case-sensitive
|
|
winfsp-tests-x64 --mountpoint=mymnt * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-no-traverse
|
|
winfsp-tests-x64 --no-traverse * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-oplock
|
|
winfsp-tests-x64 --oplock=filter --resilient * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-notify
|
|
winfsp-tests-x64 --notify --resilient * +ea*
|
|
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 * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-flushpurge
|
|
winfsp-tests-x86 --flush-and-purge-on-cleanup * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-legacy-unlink-rename
|
|
winfsp-tests-x86 --legacy-unlink-rename * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-mountpoint-drive
|
|
winfsp-tests-x86 --mountpoint=X: --resilient * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-mountpoint-dir
|
|
winfsp-tests-x86 --mountpoint=mymnt --case-insensitive * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-mountpoint-dir-case-sensitive
|
|
winfsp-tests-x86 --mountpoint=mymnt * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-no-traverse
|
|
winfsp-tests-x86 --no-traverse * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-oplock
|
|
winfsp-tests-x86 --oplock=filter --resilient * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-notify
|
|
winfsp-tests-x86 --notify --resilient * +ea*
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-external
|
|
M:
|
|
fltmc instances -v M: | findstr aswSnx >nul
|
|
if !ERRORLEVEL! neq 0 (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x64.exe" --external --resilient +*
|
|
) else (
|
|
REM Avast present
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x64.exe" --external --resilient ^
|
|
-querydir_buffer_overflow_test
|
|
)
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x64-external-share
|
|
M:
|
|
fltmc instances -v M: | findstr aswSnx >nul
|
|
if !ERRORLEVEL! neq 0 (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x64.exe" --external --share=winfsp-tests-share=M:\ --resilient ^
|
|
-reparse_symlink*
|
|
) else (
|
|
REM Avast present
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x64.exe" --external --share=winfsp-tests-share=M:\ --resilient ^
|
|
-reparse_symlink* -querydir_buffer_overflow_test
|
|
)
|
|
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
|
|
O:
|
|
fltmc instances -v O: | findstr aswSnx >nul
|
|
if !ERRORLEVEL! neq 0 (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x86.exe" --external --resilient +*
|
|
) else (
|
|
REM Avast present
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x86.exe" --external --resilient ^
|
|
-querydir_buffer_overflow_test
|
|
)
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-x86-external-share
|
|
O:
|
|
fltmc instances -v O: | findstr aswSnx >nul
|
|
if !ERRORLEVEL! neq 0 (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x86.exe" --external --share=winfsp-tests-share=O:\ --resilient ^
|
|
-reparse_symlink*
|
|
) else (
|
|
REM Avast present
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x86.exe" --external --share=winfsp-tests-share=O:\ --resilient ^
|
|
-reparse_symlink* -querydir_buffer_overflow_test
|
|
)
|
|
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
|
|
|
|
:winfsp-tests-dotnet-external
|
|
Q:
|
|
fltmc instances -v Q: | findstr aswSnx >nul
|
|
if !ERRORLEVEL! neq 0 (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x64.exe" --external --resilient +*
|
|
) else (
|
|
REM Avast present
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x64.exe" --external --resilient ^
|
|
-querydir_buffer_overflow_test
|
|
)
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfsp-tests-dotnet-external-share
|
|
Q:
|
|
fltmc instances -v Q: | findstr aswSnx >nul
|
|
if !ERRORLEVEL! neq 0 (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x64.exe" --external --share=winfsp-tests-share=Q:\ --resilient ^
|
|
-reparse_symlink*
|
|
) else (
|
|
REM Avast present
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-tests-x64.exe" --external --share=winfsp-tests-share=Q:\ --resilient ^
|
|
-reparse_symlink* -querydir_buffer_overflow_test
|
|
)
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:fsx-memfs-dotnet-disk
|
|
Q:
|
|
"%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-dotnet-net
|
|
R:
|
|
"%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
|
|
|
|
:slowio-fsx-memfs-x64
|
|
call :__run_fsx_memfs_slowio_test memfs64-slowio memfs-x64
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:slowio-fsx-memfs-x86
|
|
call :__run_fsx_memfs_slowio_test memfs32-slowio memfs-x86
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:slowio-fsx-memfs-dotnet
|
|
call :__run_fsx_memfs_slowio_test memfs.net-slowio memfs-dotnet-msil
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:__run_fsx_memfs_slowio_test
|
|
set RunSampleTestExit=0
|
|
call "%ProjRoot%\tools\fsreg" %1 "%ProjRoot%\build\VStudio\build\%Configuration%\%2.exe" "-u %%%%1 -m %%%%2 -M 50 -P 10 -R 5" "D:P(A;;RPWPLC;;;WD)"
|
|
echo net use L: "\\%1\share"
|
|
net use L: "\\%1\share"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
echo net use ^| findstr L:
|
|
net use | findstr L:
|
|
pushd >nul
|
|
cd L: >nul 2>nul || (echo Unable to find drive L: >&2 & goto fail)
|
|
L:
|
|
"%ProjRoot%\ext\test\fstools\src\fsx\fsx.exe" -N 5000 test xxxxxx
|
|
if !ERRORLEVEL! neq 0 set RunSampleTestExit=1
|
|
popd
|
|
echo net use L: /delete
|
|
net use L: /delete
|
|
call "%ProjRoot%\tools\fsreg" -u %1
|
|
exit /b !RunSampleTestExit!
|
|
|
|
:winfstest-memfs-dotnet-disk
|
|
Q:
|
|
call "%ProjRoot%\ext\test\winfstest\run-winfstest.bat"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:winfstest-memfs-dotnet-net
|
|
R:
|
|
call "%ProjRoot%\ext\test\winfstest\run-winfstest.bat"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:ifstest-memfs-x64-disk
|
|
call :__ifstest-memfs M: \Device\WinFsp.Disk C:
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:ifstest-memfs-x86-disk
|
|
call :__ifstest-memfs O: \Device\WinFsp.Disk C:
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:ifstest-memfs-dotnet-disk
|
|
call :__ifstest-memfs Q: \Device\WinFsp.Disk C:
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:__ifstest-memfs
|
|
%1
|
|
set IfsTestDirectories=^
|
|
securit^
|
|
opcreatg^
|
|
opcreatp^
|
|
closedel^
|
|
volinfo^
|
|
fileinfo^
|
|
dirinfo^
|
|
filelock^
|
|
oplocks^
|
|
chgnotif^
|
|
readwr^
|
|
seccache^
|
|
reparspt^
|
|
estream
|
|
set IfsTestMemfsExit=0
|
|
call :__ifstest %1 /g Security
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
rem OpenCreateGeneral.FileOpenByIDTest: FILE_OPEN_BY_FILE_ID not implemented
|
|
rem OpenCreateGeneral.OpenVolumeTest: volume handles can be opened/closed but no other support
|
|
call :__ifstest %1 /d %2 /g OpenCreateGeneral -t FileOpenByIDTest -t OpenVolumeTest
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
call :__ifstest %1 /g OpenCreateParameters
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
rem CloseCleanupDelete.UpdateOnCloseTest: WinFsp updates size information in directories immediately
|
|
rem CloseCleanupDelete.TunnelingTest: short names and tunneling not supported
|
|
call :__ifstest %1 /g CloseCleanupDelete -t UpdateOnCloseTest -t TunnelingTest
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
call :__ifstest %1 /g VolumeInformation
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
rem FileInformation.LinkInformationTest: WinFsp does not support hard links
|
|
rem FileInformation.StreamStandardInformationTest: test requires FileLinkInformation support (no hard links)
|
|
call :__ifstest %1 /g FileInformation -t LinkInformationTest -t StreamStandardInformationTest /r %3
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
call :__ifstest %1 /g EaInformation
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
call :__ifstest %1 /g DirectoryInformation
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
call :__ifstest %1 /g FileLocking
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
call :__ifstest %1 /g OpLocks
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
call :__ifstest %1 /g ChangeNotification
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
call :__ifstest %1 /g ReadWrite
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
call :__ifstest %1 /g SectionsCaching
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
rem ReparsePoints.SetPointEASNotSupportedTest: EA's not supported
|
|
rem ReparsePoints.EnumReparsePointsTest: enumeration of reparse points not supported
|
|
rem ReparsePoints.ChangeNotificationReparseTest: change notifications of reparse points not supported
|
|
call :__ifstest %1 /g ReparsePoints -t SetPointEASNotSupportedTest -t EnumReparsePointsTest -t ChangeNotificationReparseTest /c
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
rem IfsTest ReparsePoints seems to have a bug in that it cannot handle STATUS_PENDING for FSCTL_GET_REPARSE_POINT
|
|
rmdir /s/q reparspt
|
|
rem StreamEnhancements.StreamRenameTest: WinFsp does not support stream renaming
|
|
rem StreamEnhancements.StreamNotifyNameTest: WinFsp does not notify when streams are deleted because main file is deleted
|
|
call :__ifstest %1 /g StreamEnhancements -t StreamRenameTest -t StreamNotifyNameTest
|
|
if !ERRORLEVEL! neq 0 set IfsTestMemfsExit=1
|
|
for %%d in (!IfsTestDirectories!) do (
|
|
if exist %%d (echo :ifstest directory %%d still exists & set IfsTestMemfsExit=1)
|
|
)
|
|
exit /b !IfsTestMemfsExit!
|
|
|
|
:__ifstest
|
|
set IfsTestFound=
|
|
set IfsTestName=
|
|
set IfsTestGroup=
|
|
set IfsTestStatus=
|
|
set IfsTestLines=
|
|
set IfsTestExit=0
|
|
(SET LF=^
|
|
%=this line is empty=%
|
|
)
|
|
for /F "delims=" %%l in ('call "%ProjRoot%\tools\ifstest.bat" %* /v ^| findstr /n "^"') do (
|
|
set IfsTestLine=%%l
|
|
set IfsTestLine=!IfsTestLine:*:=!
|
|
|
|
for /F "tokens=1,2,3 delims=:" %%h in ("%%l") do (
|
|
set FieldName=%%i
|
|
set FieldName=!FieldName: =!
|
|
set FieldValue=%%j
|
|
|
|
if not X!IfsTestLine!==X (
|
|
set IfsTestLines=!IfsTestLines!!LF! !IfsTestLine!
|
|
|
|
if X!FieldName!==XTest (
|
|
set IfsTestName=!FieldValue!
|
|
set IfsTestFound=YES
|
|
) else if X!FieldName!==XGroup (
|
|
set IfsTestGroup=!FieldValue!
|
|
) else if X!FieldName!==XStatus (
|
|
set IfsTestStatus=!FieldValue!
|
|
)
|
|
) else (
|
|
set IfsTestPrefix=!IfsTestGroup!.!IfsTestName!..............................................................
|
|
set IfsTestPrefix=!IfsTestPrefix:~0,63!
|
|
if X!IfsTestName!==X (
|
|
rem
|
|
) else if X!IfsTestStatus!==X (
|
|
rem
|
|
) else if not "X!IfsTestStatus:(IFSTEST_SUCCESS)=!"=="X!IfsTestStatus!" (
|
|
echo !IfsTestPrefix! OK
|
|
) else if not "X!IfsTestStatus:(IFSTEST_TEST_NOT_SUPPORTED)=!"=="X!IfsTestStatus!" (
|
|
echo !IfsTestPrefix! SKIP
|
|
) else if not "X!IfsTestStatus:(IFSTEST_SUCCESS_NOT_SUPPORTED)=!"=="X!IfsTestStatus!" (
|
|
echo !IfsTestPrefix! SKIP
|
|
) else if not "X!IfsTestStatus:(IFSTEST_INFO_END_OF_GROUP)=!"=="X!IfsTestStatus!" (
|
|
rem
|
|
) else (
|
|
echo !IfsTestPrefix! KO!IfsTestLines!
|
|
set IfsTestExit=1
|
|
)
|
|
set IfsTestName=
|
|
set IfsTestGroup=
|
|
set IfsTestStatus=
|
|
set IfsTestLines=
|
|
)
|
|
)
|
|
)
|
|
if not X!IfsTestFound!==XYES set IfsTestExit=1
|
|
exit /b !IfsTestExit!
|
|
|
|
:sample-memfs-fuse-x64
|
|
call :__run_sample_fuse_test memfs-fuse x64 memfs-fuse-x64 winfsp-tests-x64 "+*"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-memfs-fuse-x86
|
|
call :__run_sample_fuse_test memfs-fuse x86 memfs-fuse-x86 winfsp-tests-x86 "+*"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-fsx-memfs-fuse-x64
|
|
call :__run_sample_fsx_fuse_test memfs-fuse x64 memfs-fuse-x64 fsx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-fsx-memfs-fuse-x86
|
|
call :__run_sample_fsx_fuse_test memfs-fuse x86 memfs-fuse-x86 fsx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-memfs-fuse3-x64
|
|
call :__run_sample_fuse_test memfs-fuse3 x64 memfs-fuse3-x64 winfsp-tests-x64 ^
|
|
"+* -create_fileattr_test -create_readonlydir_test -setfileinfo_test -delete_access_test"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-memfs-fuse3-x86
|
|
call :__run_sample_fuse_test memfs-fuse3 x86 memfs-fuse3-x86 winfsp-tests-x86 ^
|
|
"+* -create_fileattr_test -create_readonlydir_test -setfileinfo_test -delete_access_test"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-fsx-memfs-fuse3-x64
|
|
call :__run_sample_fsx_fuse_test memfs-fuse3 x64 memfs-fuse3-x64 fsx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-fsx-memfs-fuse3-x86
|
|
call :__run_sample_fsx_fuse_test memfs-fuse3 x86 memfs-fuse3-x86 fsx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-airfs-x64
|
|
call :__run_sample_disk_test airfs x64 airfs-x64 winfsp-tests-x64 NOEXCL
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-airfs-x86
|
|
call :__run_sample_disk_test airfs x86 airfs-x86 winfsp-tests-x86 NOEXCL
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-passthrough-x64
|
|
call :__run_sample_test passthrough x64 passthrough-x64 winfsp-tests-x64
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-passthrough-x86
|
|
call :__run_sample_test passthrough x86 passthrough-x86 winfsp-tests-x86
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-passthrough-cpp-x64
|
|
call :__run_sample_test passthrough-cpp x64 passthrough-cpp-x64 winfsp-tests-x64
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-passthrough-cpp-x86
|
|
call :__run_sample_test passthrough-cpp x86 passthrough-cpp-x86 winfsp-tests-x86
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-passthrough-dotnet
|
|
call :__run_sample_test passthrough-dotnet anycpu passthrough-dotnet winfsp-tests-x64 ^
|
|
"-create_backup_test -create_restore_test -create_namelen_test -getfileattr_test -delete_access_test -querydir_namelen_test"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-passthrough-fuse-x64
|
|
call :__run_sample_fuse_oldtest passthrough-fuse x64 passthrough-fuse-x64 winfsp-tests-x64
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-passthrough-fuse-x86
|
|
call :__run_sample_fuse_oldtest passthrough-fuse x86 passthrough-fuse-x86 winfsp-tests-x86
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-fsx-passthrough-fuse-x64
|
|
call :__run_sample_fsx_fuse_test passthrough-fuse x64 passthrough-fuse-x64 fsx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-fsx-passthrough-fuse-x86
|
|
call :__run_sample_fsx_fuse_test passthrough-fuse x86 passthrough-fuse-x86 fsx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-passthrough-fuse3-x64
|
|
call :__run_sample_fuse_oldtest passthrough-fuse3 x64 passthrough-fuse3-x64 winfsp-tests-x64 ^
|
|
"-create_fileattr_test -create_readonlydir_test -setfileinfo_test"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-passthrough-fuse3-x86
|
|
call :__run_sample_fuse_oldtest passthrough-fuse3 x86 passthrough-fuse3-x86 winfsp-tests-x86 ^
|
|
"-create_fileattr_test -create_readonlydir_test -setfileinfo_test"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-fsx-passthrough-fuse3-x64
|
|
call :__run_sample_fsx_fuse_test passthrough-fuse3 x64 passthrough-fuse3-x64 fsx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:sample-fsx-passthrough-fuse3-x86
|
|
call :__run_sample_fsx_fuse_test passthrough-fuse3 x86 passthrough-fuse3-x86 fsx
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:__run_sample_disk_test
|
|
set RunSampleTestExit=0
|
|
call %ProjRoot%\tools\build-sample %Configuration% %2 %1 "%TMP%\%1"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
mkdir "%TMP%\%1\test"
|
|
call "%ProjRoot%\tools\fsreg" %1 "%TMP%\%1\build\%Configuration%\%3.exe" "-i -u %%%%1 -m %%%%2" "D:P(A;;RPWPLC;;;WD)"
|
|
echo launchctl-x64 start %1 testdsk "" L:
|
|
launchctl-x64 start %1 testdsk "" L: >nul
|
|
waitfor 7BF47D72F6664550B03248ECFE77C7DD /t 3 2>nul
|
|
pushd >nul
|
|
cd L: >nul 2>nul || (echo Unable to find drive L: >&2 & goto fail)
|
|
L:
|
|
if X%5==XNOEXCL (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\%4.exe" ^
|
|
--external --resilient
|
|
) else (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\%4.exe" ^
|
|
--external --resilient --case-insensitive-cmp --share-prefix="\%1\%TMP::=$%\%1\test" ^
|
|
-create_allocation_test -getfileinfo_name_test -rename_flipflop_test -rename_mmap_test -exec_rename_dir_test ^
|
|
-reparse* -stream* %~5
|
|
)
|
|
if !ERRORLEVEL! neq 0 set RunSampleTestExit=1
|
|
popd
|
|
echo launchctl-x64 stop %1 testdsk
|
|
launchctl-x64 stop %1 testdsk >nul
|
|
waitfor 7BF47D72F6664550B03248ECFE77C7DD /t 3 2>nul
|
|
call "%ProjRoot%\tools\fsreg" -u %1
|
|
rmdir /s/q "%TMP%\%1"
|
|
exit /b !RunSampleTestExit!
|
|
|
|
:__run_sample_test
|
|
set RunSampleTestExit=0
|
|
call %ProjRoot%\tools\build-sample %Configuration% %2 %1 "%TMP%\%1"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
mkdir "%TMP%\%1\test"
|
|
call "%ProjRoot%\tools\fsreg" %1 "%TMP%\%1\build\%Configuration%\%3.exe" "-u %%%%1 -m %%%%2" "D:P(A;;RPWPLC;;;WD)"
|
|
echo net use L: "\\%1\%TMP::=$%\%1\test"
|
|
net use L: "\\%1\%TMP::=$%\%1\test"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
echo net use ^| findstr L:
|
|
net use | findstr L:
|
|
pushd >nul
|
|
cd L: >nul 2>nul || (echo Unable to find drive L: >&2 & goto fail)
|
|
L:
|
|
if X%5==XNOEXCL (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\%4.exe" ^
|
|
--external --resilient
|
|
) else (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\%4.exe" ^
|
|
--external --resilient --case-insensitive-cmp --share-prefix="\%1\%TMP::=$%\%1\test" ^
|
|
-create_allocation_test -getfileinfo_name_test -rename_flipflop_test -rename_mmap_test -exec_rename_dir_test ^
|
|
-reparse* -stream* %~5
|
|
)
|
|
if !ERRORLEVEL! neq 0 set RunSampleTestExit=1
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\%4.exe" ^
|
|
--external --resilient --case-insensitive-cmp --share-prefix="\%1\%TMP::=$%\%1\test" ^
|
|
+querydir_single_test
|
|
if !ERRORLEVEL! neq 0 set RunSampleTestExit=1
|
|
popd
|
|
echo net use L: /delete
|
|
net use L: /delete
|
|
call "%ProjRoot%\tools\fsreg" -u %1
|
|
rmdir /s/q "%TMP%\%1"
|
|
exit /b !RunSampleTestExit!
|
|
|
|
:__run_sample_fuse_test
|
|
set RunSampleTestExit=0
|
|
call %ProjRoot%\tools\build-sample %Configuration% %2 %1 "%TMP%\%1"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
mkdir "%TMP%\%1\test"
|
|
call "%ProjRoot%\tools\fsreg" %1 "%TMP%\%1\build\%Configuration%\%3.exe" ^
|
|
"-orellinks,uid=11,gid=65792 --VolumePrefix=%%%%1 %%%%2" "D:P(A;;RPWPLC;;;WD)"
|
|
echo net use L: "\\%1\%TMP::=$%\%1\test"
|
|
net use L: "\\%1\%TMP::=$%\%1\test"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
echo net use ^| findstr L:
|
|
net use | findstr L:
|
|
pushd >nul
|
|
cd L: >nul 2>nul || (echo Unable to find drive L: >&2 & goto fail)
|
|
L:
|
|
REM Exclude reparse_symlink* tests as they do not pass on AppVeyor VS2015. They do pass locally.
|
|
if defined APPVEYOR (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\%4.exe" ^
|
|
--fuse-external --resilient --case-insensitive-cmp --share-prefix="\%1\%TMP::=$%\%1\test" %~5 ^
|
|
-reparse_symlink*
|
|
) else (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\%4.exe" ^
|
|
--fuse-external --resilient --case-insensitive-cmp --share-prefix="\%1\%TMP::=$%\%1\test" %~5
|
|
)
|
|
if !ERRORLEVEL! neq 0 set RunSampleTestExit=1
|
|
popd
|
|
echo net use L: /delete
|
|
net use L: /delete
|
|
call "%ProjRoot%\tools\fsreg" -u %1
|
|
rmdir /s/q "%TMP%\%1"
|
|
exit /b !RunSampleTestExit!
|
|
|
|
:__run_sample_fuse_oldtest
|
|
set RunSampleTestExit=0
|
|
call %ProjRoot%\tools\build-sample %Configuration% %2 %1 "%TMP%\%1"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
mkdir "%TMP%\%1\test"
|
|
call "%ProjRoot%\tools\fsreg" %1 "%TMP%\%1\build\%Configuration%\%3.exe" ^
|
|
"-ouid=11,gid=65792 --VolumePrefix=%%%%1 %%%%2" "D:P(A;;RPWPLC;;;WD)"
|
|
echo net use L: "\\%1\%TMP::=$%\%1\test"
|
|
net use L: "\\%1\%TMP::=$%\%1\test"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
echo net use ^| findstr L:
|
|
net use | findstr L:
|
|
pushd >nul
|
|
cd L: >nul 2>nul || (echo Unable to find drive L: >&2 & goto fail)
|
|
L:
|
|
if X%5==XNOEXCL (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\%4.exe" ^
|
|
--external --resilient
|
|
) else (
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\%4.exe" ^
|
|
--external --resilient --case-insensitive-cmp --share-prefix="\%1\%TMP::=$%\%1\test" ^
|
|
-create_allocation_test -create_notraverse_test -create_backup_test -create_restore_test -create_namelen_test ^
|
|
-getfileattr_test -getfileinfo_name_test -delete_access_test -delete_mmap_test -rename_flipflop_test -rename_mmap_test -setsecurity_test -querydir_namelen_test -exec_rename_dir_test ^
|
|
-reparse* -stream* %~5
|
|
)
|
|
if !ERRORLEVEL! neq 0 set RunSampleTestExit=1
|
|
popd
|
|
echo net use L: /delete
|
|
net use L: /delete
|
|
call "%ProjRoot%\tools\fsreg" -u %1
|
|
rmdir /s/q "%TMP%\%1"
|
|
exit /b !RunSampleTestExit!
|
|
|
|
:__run_sample_fsx_fuse_test
|
|
set RunSampleTestExit=0
|
|
call %ProjRoot%\tools\build-sample %Configuration% %2 %1 "%TMP%\%1"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
mkdir "%TMP%\%1\test"
|
|
call "%ProjRoot%\tools\fsreg" %1 "%TMP%\%1\build\%Configuration%\%3.exe" ^
|
|
"-ouid=11,gid=65792 --VolumePrefix=%%%%1 %%%%2" "D:P(A;;RPWPLC;;;WD)"
|
|
echo net use L: "\\%1\%TMP::=$%\%1\test"
|
|
net use L: "\\%1\%TMP::=$%\%1\test"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
echo net use ^| findstr L:
|
|
net use | findstr L:
|
|
pushd >nul
|
|
cd L: >nul 2>nul || (echo Unable to find drive L: >&2 & goto fail)
|
|
L:
|
|
"%ProjRoot%\ext\test\fstools\src\fsx\%4.exe" -N 5000 test xxxxxx
|
|
if !ERRORLEVEL! neq 0 set RunSampleTestExit=1
|
|
popd
|
|
echo net use L: /delete
|
|
net use L: /delete
|
|
call "%ProjRoot%\tools\fsreg" -u %1
|
|
rmdir /s/q "%TMP%\%1"
|
|
exit /b !RunSampleTestExit!
|
|
|
|
:compat-v1.2-memfs-x64
|
|
copy "%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-*.dll" "%ProjRoot%\tst\compat\v1.2\memfs"
|
|
call :__run_compat_memfs_test compat-memfs v1.2\memfs\memfs-x64 winfsp-tests-x64
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
del "%ProjRoot%\tst\compat\v1.2\memfs\winfsp-*.dll"
|
|
exit /b 0
|
|
|
|
:compat-v1.2-memfs-x86
|
|
copy "%ProjRoot%\build\VStudio\build\%Configuration%\winfsp-*.dll" "%ProjRoot%\tst\compat\v1.2\memfs"
|
|
call :__run_compat_memfs_test compat-memfs v1.2\memfs\memfs-x86 winfsp-tests-x86
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
del "%ProjRoot%\tst\compat\v1.2\memfs\winfsp-*.dll"
|
|
exit /b 0
|
|
|
|
:__run_compat_memfs_test
|
|
set RunSampleTestExit=0
|
|
call "%ProjRoot%\tools\fsreg" %1 "%ProjRoot%\tst\compat\%2.exe" ^
|
|
"-i -F NTFS -n 65536 -s 67108864 -u %%%%1 -m %%%%2" "D:P(A;;RPWPLC;;;WD)"
|
|
echo net use L: "\\%1\share"
|
|
net use L: "\\%1\share"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
echo net use ^| findstr L:
|
|
net use | findstr L:
|
|
pushd >nul
|
|
cd L: >nul 2>nul || (echo Unable to find drive L: >&2 & goto fail)
|
|
L:
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\%3.exe" ^
|
|
--external --resilient --share-prefix="\%1\share"
|
|
if !ERRORLEVEL! neq 0 set RunSampleTestExit=1
|
|
popd
|
|
echo net use L: /delete
|
|
net use L: /delete
|
|
call "%ProjRoot%\tools\fsreg" -u %1
|
|
exit /b !RunSampleTestExit!
|
|
|
|
:compat-v1.1-passthrough-fuse-x64
|
|
call :__run_compat_fuse_test passthrough-fuse v1.1\passthrough-fuse\passthrough-fuse-x64 winfsp-tests-x64
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:compat-v1.1-passthrough-fuse-x86
|
|
call :__run_compat_fuse_test passthrough-fuse v1.1\passthrough-fuse\passthrough-fuse-x86 winfsp-tests-x86
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:__run_compat_fuse_test
|
|
set RunSampleTestExit=0
|
|
mkdir "%TMP%\%1\test"
|
|
call "%ProjRoot%\tools\fsreg" %1 "%ProjRoot%\tst\compat\%2.exe" ^
|
|
"-ouid=11,gid=65792 --VolumePrefix=%%%%1 %%%%2" "D:P(A;;RPWPLC;;;WD)"
|
|
echo net use L: "\\%1\%TMP::=$%\%1\test"
|
|
net use L: "\\%1\%TMP::=$%\%1\test"
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
echo net use ^| findstr L:
|
|
net use | findstr L:
|
|
pushd >nul
|
|
cd L: >nul 2>nul || (echo Unable to find drive L: >&2 & goto fail)
|
|
L:
|
|
"%ProjRoot%\build\VStudio\build\%Configuration%\%3.exe" ^
|
|
--external --resilient --case-insensitive-cmp --share-prefix="\%1\%TMP::=$%\%1\test" ^
|
|
-create_fileattr_test -create_readonlydir_test -create_allocation_test -create_notraverse_test -create_backup_test -create_restore_test -create_namelen_test ^
|
|
-getfileattr_test -getfileinfo_name_test -setfileinfo_test -delete_access_test -delete_mmap_test -rename_flipflop_test -rename_mmap_test -setsecurity_test -querydir_namelen_test -exec_rename_dir_test ^
|
|
-reparse* -stream*
|
|
if !ERRORLEVEL! neq 0 set RunSampleTestExit=1
|
|
popd
|
|
echo net use L: /delete
|
|
net use L: /delete
|
|
call "%ProjRoot%\tools\fsreg" -u %1
|
|
rmdir /s/q "%TMP%\%1"
|
|
exit /b !RunSampleTestExit!
|
|
|
|
:avast-tests-x64
|
|
call :winfsp-tests-x64-external
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
call :winfsp-tests-x64-external-share
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:avast-tests-x86
|
|
call :winfsp-tests-x86-external
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
call :winfsp-tests-x86-external-share
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
exit /b 0
|
|
|
|
:avast-tests-dotnet
|
|
call :winfsp-tests-dotnet-external
|
|
if !ERRORLEVEL! neq 0 goto fail
|
|
call :winfsp-tests-dotnet-external-share
|
|
if !ERRORLEVEL! neq 0 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
|