mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 17:32:29 -05:00
This test succeeds on Server 2012 and fails on Server 2016/2019. Investigation on Server 2019 showed that the FSCTL_SET_REPARSE_POINT input buffer length was 23 instead of less than REPARSE_DATA_BUFFER_HEADER_SIZE(==8) like ifstest claims. This suggests that WinFsp is not the problem here, but perhaps some OS changes between Server 2012 and Server 2016. NOTE that we are still using the ifstest from Server 2012 HCK, which may account for the difference.
1127 lines
37 KiB
Batchfile
Executable File
1127 lines
37 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
|
|
rem ReparsePoints.SetPointIoReparseDataInvalidTest:
|
|
rem This test succeeds on Server 2012 and fails on Server 2016/2019.
|
|
rem Investigation on Server 2019 showed that the FSCTL_SET_REPARSE_POINT
|
|
rem input buffer length was 23 instead of less than
|
|
rem REPARSE_DATA_BUFFER_HEADER_SIZE(==8) like ifstest claims. This
|
|
rem suggests that WinFsp is not the problem here, but perhaps some OS
|
|
rem changes between Server 2012 and Server 2016. NOTE that we are still
|
|
rem using the ifstest from Server 2012 HCK, which may account for the
|
|
rem difference.
|
|
call :__ifstest %1 /g ReparsePoints -t SetPointEASNotSupportedTest -t EnumReparsePointsTest -t ChangeNotificationReparseTest -t SetPointIoReparseDataInvalidTest /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
|