From aec96e91382542f6f890b21db0b051eba685110e Mon Sep 17 00:00:00 2001 From: Todd Hartman Date: Thu, 7 Apr 2022 15:22:35 -0500 Subject: [PATCH 1/5] added tests for minidump and samplerate command line parameters --- scripts/clear_config.cmd | 2 + scripts/get_config.cmd | 13 ++++ scripts/get_stat.cmd | 27 +++++++ scripts/set_config_dword.cmd | 11 +++ scripts/test_minidump.cmd | 12 +++ tests/cmdline/.gitignore | 2 + tests/cmdline/ReadMe.md | 9 +++ tests/cmdline/build.bat | 16 ++++ tests/cmdline/program.c | 13 ++++ tests/cmdline/program32.exe | Bin 0 -> 22528 bytes tests/cmdline/program64.exe | Bin 0 -> 33280 bytes tests/cmdline/test.bat | 24 ++++++ tests/cmdline/test_cmdline_minidump.cmd | 30 ++++++++ tests/cmdline/test_cmdline_samplerate.cmd | 85 ++++++++++++++++++++++ 14 files changed, 244 insertions(+) create mode 100644 scripts/clear_config.cmd create mode 100644 scripts/get_config.cmd create mode 100644 scripts/get_stat.cmd create mode 100644 scripts/set_config_dword.cmd create mode 100644 scripts/test_minidump.cmd create mode 100644 tests/cmdline/.gitignore create mode 100644 tests/cmdline/ReadMe.md create mode 100644 tests/cmdline/build.bat create mode 100644 tests/cmdline/program.c create mode 100644 tests/cmdline/program32.exe create mode 100644 tests/cmdline/program64.exe create mode 100644 tests/cmdline/test.bat create mode 100644 tests/cmdline/test_cmdline_minidump.cmd create mode 100644 tests/cmdline/test_cmdline_samplerate.cmd diff --git a/scripts/clear_config.cmd b/scripts/clear_config.cmd new file mode 100644 index 0000000..abcf9ad --- /dev/null +++ b/scripts/clear_config.cmd @@ -0,0 +1,2 @@ +REM Clear the saved config options (in the registry) +REG DELETE "HKCU\SOFTWARE\codersnotes.com\Very Sleepy" /F diff --git a/scripts/get_config.cmd b/scripts/get_config.cmd new file mode 100644 index 0000000..baf61b5 --- /dev/null +++ b/scripts/get_config.cmd @@ -0,0 +1,13 @@ +@SETLOCAL ENABLEDELAYEDEXPANSION +@ECHO OFF + +REM Retrieve a config value from the registry and store it in the specified environment variable. +REM Usage: get_config.cmd + +SET "VALUE_NAME=%~1" +SET "VAR_NAME=%~2" + +FOR /F "usebackq tokens=*" %%v IN (`PowerShell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-ItemPropertyValue -Path 'Registry::HKEY_CURRENT_USER\SOFTWARE\codersnotes.com\Very Sleepy' -Name '!VALUE_NAME!' -ErrorAction:SilentlyContinue" ^ +rem Get from Stats.txt and save its value in + +set "SLEEPY_BASE=%~1" +set "STAT_DESCR=%~2" +set "TARGET_ENVVAR=%~3" + +if exist "!SLEEPY_BASE!" rmdir /S /Q "!SLEEPY_BASE!" +call %~dp0\unpack_to "!SLEEPY_BASE!.sleepy" "!SLEEPY_BASE!" > nul +if errorlevel 1 exit 1 + +set FOUND=0 +set STAT_VALUE=_NOT_FOUND_ +if exist "!SLEEPY_BASE!\Stats.txt" ( + for /f "tokens=1,2* delims=: " %%a in (!SLEEPY_BASE!\Stats.txt) do ( + if "%%~a"=="!STAT_DESCR!" ( + set FOUND=1 + set "STAT_VALUE=%%~b" + ) + ) +) +if %FOUND% == 0 exit /b 1 + +ENDLOCAL & set "%TARGET_ENVVAR%=%STAT_VALUE%" diff --git a/scripts/set_config_dword.cmd b/scripts/set_config_dword.cmd new file mode 100644 index 0000000..cf51ed3 --- /dev/null +++ b/scripts/set_config_dword.cmd @@ -0,0 +1,11 @@ +@setlocal enabledelayedexpansion +@echo off + +rem Set a config value (that's a DWORD) in the registry. +rem Usage: set_config_dword.cmd + +set "VALUE_NAME=%~1" +set "VALUE_DATA=%~2" + +reg add "HKCU\SOFTWARE\codersnotes.com\Very Sleepy" /v "!VALUE_NAME!" /t REG_DWORD /d !VALUE_DATA! /f + diff --git a/scripts/test_minidump.cmd b/scripts/test_minidump.cmd new file mode 100644 index 0000000..cb2436c --- /dev/null +++ b/scripts/test_minidump.cmd @@ -0,0 +1,12 @@ +@echo off + +rem usage: test_minidump.cmd + +if exist %1 rmdir /S /Q %1 +call %~dp0\unpack_to %1.sleepy %1 > nul +if errorlevel 1 exit 1 + +set FOUND=0 +if exist "%~1\minidump.dmp" set FOUND=1 + +if %FOUND% == 0 exit /b 1 diff --git a/tests/cmdline/.gitignore b/tests/cmdline/.gitignore new file mode 100644 index 0000000..c448a74 --- /dev/null +++ b/tests/cmdline/.gitignore @@ -0,0 +1,2 @@ +*.ilk +*.pdb diff --git a/tests/cmdline/ReadMe.md b/tests/cmdline/ReadMe.md new file mode 100644 index 0000000..864ea5d --- /dev/null +++ b/tests/cmdline/ReadMe.md @@ -0,0 +1,9 @@ +# Command Line Parameter Testing + +These command line parameters are tested + + * minidump + * samplerate + +The tests are not so much tests of functionality related to the parameters, but rather tests that the parameters are correctly honored when specified on the command line. + diff --git a/tests/cmdline/build.bat b/tests/cmdline/build.bat new file mode 100644 index 0000000..c2f30ee --- /dev/null +++ b/tests/cmdline/build.bat @@ -0,0 +1,16 @@ +@setlocal +@echo off +cd /d "%~dp0" +call ..\..\scripts\clear_env.cmd + +rem https://github.com/VerySleepy/verysleepy/issues/28 + +SETLOCAL +call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 +cl /MD /Z7 program.c /Fe:program32.exe /link /DEBUG:FASTLINK +ENDLOCAL + +SETLOCAL +call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 +cl /MD /Z7 program.c /Fe:program64.exe /link /DEBUG:FASTLINK +ENDLOCAL diff --git a/tests/cmdline/program.c b/tests/cmdline/program.c new file mode 100644 index 0000000..f47b28e --- /dev/null +++ b/tests/cmdline/program.c @@ -0,0 +1,13 @@ +int vs_test_fun() +{ + unsigned int i, n = 17; + // This is 4x longer than the other ones because we need more time to gather samples. + for (i=0; i<4000000000u; i++) + n = n * 17 + i; + return n; +} + +int main() +{ + return vs_test_fun(); +} diff --git a/tests/cmdline/program32.exe b/tests/cmdline/program32.exe new file mode 100644 index 0000000000000000000000000000000000000000..c9146129b75cf576b6ca29da30ccd4004283d2b8 GIT binary patch literal 22528 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 E1Ce!mc>n+a literal 0 HcmV?d00001 diff --git a/tests/cmdline/program64.exe b/tests/cmdline/program64.exe new file mode 100644 index 0000000000000000000000000000000000000000..45f3cf09effca8fc08d4f0260bb0232e942c8145 GIT binary patch literal 33280 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 Ow#mGSn0|eI5%_OnkM7z4 literal 0 HcmV?d00001 diff --git a/tests/cmdline/test.bat b/tests/cmdline/test.bat new file mode 100644 index 0000000..ec7ffe4 --- /dev/null +++ b/tests/cmdline/test.bat @@ -0,0 +1,24 @@ +@echo off +setlocal enabledelayedexpansion +if not exist program32.exe call build +if not exist program64.exe call build + +rem https://github.com/VerySleepy/verysleepy/issues/28 + +rem Verify that command-line options are honored and do not override saved configuration settings. + +set SLEEPY_SILENT_CRASH=1 + +for %%b in (32 64) do ( + echo Testing %%b + + FOR %%o in (minidump samplerate) do ( + rem Discard any saved config options. + call ..\..\scripts\clear_config + + call test_cmdline_%%o.cmd %%b + if !ERRORLEVEL! neq 0 exit /b 1 + ) +) + +echo %~dp0 OK diff --git a/tests/cmdline/test_cmdline_minidump.cmd b/tests/cmdline/test_cmdline_minidump.cmd new file mode 100644 index 0000000..58317c0 --- /dev/null +++ b/tests/cmdline/test_cmdline_minidump.cmd @@ -0,0 +1,30 @@ +@echo off +setlocal enabledelayedexpansion + +set "PGMARCH=%~1" + +call ..\..\scripts\get_config SaveMinidump START_MINIDUMP_VALUE +IF NOT "!START_MINIDUMP_VALUE!"=="" (IF "START_MINIDUMP_VALUE"=="429496729" (SET /A START_MINIDUMP_VALUE=-1) ELSE (SET /A START_MINIDUMP_VALUE=START_MINIDUMP_VALUE)) + +SET TEST_MINIDUMP_VALUE=2 + +IF "!START_MINIDUMP_VALUE!"=="!TEST_MINIDUMP_VALUE!" (SET /A TEST_MINIDUMP_VALUE=TEST_MINIDUMP_VALUE+1) +@echo Test MiniDump value: !TEST_MINIDUMP_VALUE! + +if exist program-!PGMARCH!.sleepy del program-!PGMARCH!.sleepy +rem Ensure that we profile a matching-architecture executable so that the "mismatch" warning doesn't halt the test. +call ..\..\scripts\sleepy!pgmarch! /r:program!pgmarch!.exe /o:program-!pgmarch!.sleepy /minidump:!TEST_MINIDUMP_VALUE! +if !ERRORLEVEL! neq 0 exit /b 1 + +rem Verify the capture has a dump. +call ..\..\scripts\test_minidump program-!pgmarch! +if !ERRORLEVEL! neq 0 echo Minidump not taken & exit /b 1 + +rem Verify that the config value didn't change to what we specified. +rem It will change if it wasn't set, but not to what we specified. +call ..\..\scripts\get_config SaveMinidump FINAL_MINIDUMP_VALUE + +IF "!FINAL_MINIDUMP_VALUE!"=="!TEST_MINIDUMP_VALUE!" ( + echo ERROR: SaveMinidump value was changed to the cmdline override value. + exit /b 1 +) diff --git a/tests/cmdline/test_cmdline_samplerate.cmd b/tests/cmdline/test_cmdline_samplerate.cmd new file mode 100644 index 0000000..75e46f9 --- /dev/null +++ b/tests/cmdline/test_cmdline_samplerate.cmd @@ -0,0 +1,85 @@ +@echo off +setlocal enabledelayedexpansion + +rem Testing Parameter: samplerate (speed throttle) +rem The test for this involves counting the number of samples taken during captures whose durations are identical. +rem Test with a number different sample rates, and verify that the number of samples decreases when the sample rate decreases. +rem Because sample rate is only a fudge-y way of reducing induced load due to sampling, choose +rem values for sample rate that _should_ clearly indicate that the rate was higher. +rem I have also observed that sample rates above 60 or so will not always effect taking more samples. + + +set "PGMARCH=%~1" +set CONFIG_PARAM=SpeedThrottle + +set PREVIOUS_SAMPLES= +for /L %%r in (1, 40, 100) DO ( + @echo Testing Sample Rate: %%r + call :TEST_SAMPLE_RATE %%r OBSERVED_SAMPLE_COUNT + if ERRORLEVEL 1 exit /b 1 + @echo Observed samples: !OBSERVED_SAMPLE_COUNT! + if not "!PREVIOUS_SAMPLES!"=="" ( + if !PREVIOUS_SAMPLES! gtr !OBSERVED_SAMPLE_COUNT! ( + @echo ERROR: Sample count did not decrease as the sample rate increased. + exit /b 1 + ) + ) + set /a PREVIOUS_SAMPLES = OBSERVED_SAMPLE_COUNT +) + +exit /b + + + + +:TEST_SAMPLE_RATE +setlocal enabledelayedexpansion + +rem Set the parameter to a different value than what's being tested with. +rem Perform the profiling capture. +rem Expand the archive. +rem Get the number of samples taken from Stats.txt. +rem Assign that value to the passed-in environment variable name. + +SET "TEST_SAMPLERATE_VALUE=%~1" +SET "OUTPUT_VAR=%~2" + + +set /a START_SAMPLERATE_VALUE=101-!TEST_SAMPLERATE_VALUE! +call ..\..\scripts\set_config_dword "!CONFIG_PARAM!" !START_SAMPLERATE_VALUE! +call ..\..\scripts\get_config "!CONFIG_PARAM!" CHECK_START_SAMPLERATE_VALUE +if not "!CHECK_START_SAMPLERATE_VALUE!"=="!START_SAMPLERATE_VALUE!" ( + @echo PRECONDITION ERROR: failed to set the saved config value for !CONFIG_PARAM! + exit /b 1 +) + +@echo Test SampleRate value: !TEST_SAMPLERATE_VALUE! + +if exist "program-!PGMARCH!.sleepy" del "program-!PGMARCH!.sleepy" +if exist "program-!PGMARCH!" rmdir /s /q "program-!PGMARCH!" + +call ..\..\scripts\sleepy!pgmarch! /r:program!pgmarch!.exe /o:program-!pgmarch!.sleepy /samplerate:!TEST_SAMPLERATE_VALUE! +if !ERRORLEVEL! neq 0 ( + @echo ERROR: Very Sleepy reports failure: !ERRORLEVEL! + exit /b 1 +) + +rem Get the number of samples. +call ..\..\scripts\get_stat "program-!pgmarch!" Samples OBSERVED_SAMPLES +if !ERRORLEVEL! neq 0 exit /b 1 +if "!OBSERVED_SAMPLES!"=="" ( + @echo Unable to find sample count in profile stats. + exit /b 1 +) + +rem Verify that the config value didn't change to what we specified. +rem It will change if it wasn't set, but not to what we specified. +call ..\..\scripts\get_config "!CONFIG_PARAM!" FINAL_SAMPLERATE_VALUE + +IF "!FINAL_SAMPLERATE_VALUE!"=="!TEST_SAMPLERATE_VALUE!" ( + echo ERROR: !CONFIG_PARAM! value was changed to the cmdline override value. + exit /b 1 +) + +endlocal & set /a %OUTPUT_VAR% = %OBSERVED_SAMPLES% +exit /b From 133e6f1e88440251357f0f2fb72d72692fcd46f9 Mon Sep 17 00:00:00 2001 From: Todd Hartman Date: Thu, 7 Apr 2022 15:24:33 -0500 Subject: [PATCH 2/5] script cleanup: clear saved config to ensure that default prefs are used (and known) --- tests/cmdline/.gitignore | 3 +++ tests/dmd-32mscoff/test.bat | 4 ++++ tests/dmd-64/test.bat | 4 ++++ tests/gcc43-wine/test.bat | 4 ++++ tests/gcc49-32/test.bat | 4 ++++ tests/gcc49-64/test.bat | 4 ++++ tests/msvc14/test.bat | 4 ++++ 7 files changed, 27 insertions(+) diff --git a/tests/cmdline/.gitignore b/tests/cmdline/.gitignore index c448a74..68d3006 100644 --- a/tests/cmdline/.gitignore +++ b/tests/cmdline/.gitignore @@ -1,2 +1,5 @@ *.ilk *.pdb + +# custom script to build (outside of appveyor environment) +build.local.bat diff --git a/tests/dmd-32mscoff/test.bat b/tests/dmd-32mscoff/test.bat index 95b2d4d..2b68620 100644 --- a/tests/dmd-32mscoff/test.bat +++ b/tests/dmd-32mscoff/test.bat @@ -6,6 +6,10 @@ set SLEEPY_SILENT_CRASH=1 for %%b in (32 64) do ( echo Testing %%b + + rem Discard any saved config options. + call ..\..\scripts\clear_config + if exist program-%%b.sleepy del program-%%b.sleepy call ..\..\scripts\sleepy%%b /r:program.exe /o:program-%%b.sleepy if !ERRORLEVEL! neq 0 exit /b 1 diff --git a/tests/dmd-64/test.bat b/tests/dmd-64/test.bat index 43f379d..16dace7 100644 --- a/tests/dmd-64/test.bat +++ b/tests/dmd-64/test.bat @@ -6,6 +6,10 @@ set SLEEPY_SILENT_CRASH=1 for %%b in (64) do ( echo Testing %%b + + rem Discard any saved config options. + call ..\..\scripts\clear_config + if exist program-%%b.sleepy del program-%%b.sleepy call ..\..\scripts\sleepy%%b /r:program.exe /o:program-%%b.sleepy if !ERRORLEVEL! neq 0 exit /b 1 diff --git a/tests/gcc43-wine/test.bat b/tests/gcc43-wine/test.bat index 74c673f..ecaa201 100644 --- a/tests/gcc43-wine/test.bat +++ b/tests/gcc43-wine/test.bat @@ -9,6 +9,10 @@ set SLEEPY_SILENT_CRASH=1 for %%b in (32 64) do for %%d in (wine mingw) do ( echo Testing %%b-%%d + + rem Discard any saved config options. + call ..\..\scripts\clear_config + if exist program-%%b-%%d.sleepy del program-%%b-%%d.sleepy call ..\..\scripts\sleepy%%b --%%d /r:program.exe /o:program-%%b-%%d.sleepy if !ERRORLEVEL! neq 0 exit /b 1 diff --git a/tests/gcc49-32/test.bat b/tests/gcc49-32/test.bat index b75b9a4..80300cf 100644 --- a/tests/gcc49-32/test.bat +++ b/tests/gcc49-32/test.bat @@ -10,6 +10,10 @@ set SLEEPY_SILENT_CRASH=1 for %%b in (32 64) do for %%d in (mingw) do ( echo Testing %%b-%%d + + rem Discard any saved config options. + call ..\..\scripts\clear_config + if exist program-%%b-%%d.sleepy del program-%%b-%%d.sleepy call ..\..\scripts\sleepy%%b --%%d /r:program.exe /o:program-%%b-%%d.sleepy if !ERRORLEVEL! neq 0 exit /b 1 diff --git a/tests/gcc49-64/test.bat b/tests/gcc49-64/test.bat index 7d9517b..ce08891 100644 --- a/tests/gcc49-64/test.bat +++ b/tests/gcc49-64/test.bat @@ -10,6 +10,10 @@ set SLEEPY_SILENT_CRASH=1 for %%b in (64) do for %%d in (mingw) do ( echo Testing %%b-%%d + + rem Discard any saved config options. + call ..\..\scripts\clear_config + if exist program-%%b-%%d.sleepy del program-%%b-%%d.sleepy call ..\..\scripts\sleepy%%b --%%d /r:program.exe /o:program-%%b-%%d.sleepy if !ERRORLEVEL! neq 0 exit /b 1 diff --git a/tests/msvc14/test.bat b/tests/msvc14/test.bat index 7239b59..a5c0b2e 100644 --- a/tests/msvc14/test.bat +++ b/tests/msvc14/test.bat @@ -8,6 +8,10 @@ set SLEEPY_SILENT_CRASH=1 for %%b in (32 64) do ( echo Testing %%b + + rem Discard any saved config options. + call ..\..\scripts\clear_config + if exist program-%%b.sleepy del program-%%b.sleepy call ..\..\scripts\sleepy%%b /r:program.exe /o:program-%%b.sleepy if !ERRORLEVEL! neq 0 exit /b 1 From e8a115099feae567b6899f08b92a365d94fdcf04 Mon Sep 17 00:00:00 2001 From: Todd Hartman Date: Thu, 7 Apr 2022 21:04:48 -0500 Subject: [PATCH 3/5] tests for symsearchpath and symcachedir --- scripts/clear_env.cmd | 6 + scripts/set_config.cmd | 11 ++ scripts/test_minidump.cmd | 2 +- scripts/test_symbol.cmd | 2 +- tests/cmdline/.gitignore | 1 - tests/cmdline/build.bat | 7 +- .../program32.pdb | Bin 0 -> 479232 bytes .../refs.ptr | 1 + .../program64.pdb | Bin 0 -> 438272 bytes .../refs.ptr | 1 + tests/cmdline/symdir32/program32.pdb | Bin 0 -> 479232 bytes tests/cmdline/symdir64/program64.pdb | Bin 0 -> 438272 bytes tests/cmdline/test.bat | 2 +- tests/cmdline/test_cmdline_symopts.cmd | 140 ++++++++++++++++++ 14 files changed, 168 insertions(+), 5 deletions(-) create mode 100644 scripts/set_config.cmd create mode 100644 tests/cmdline/symcache32/program32.pdb/9100AD1E7D7F41A595C3D1A186DA1D773/program32.pdb create mode 100644 tests/cmdline/symcache32/program32.pdb/9100AD1E7D7F41A595C3D1A186DA1D773/refs.ptr create mode 100644 tests/cmdline/symcache64/program64.pdb/EAD8BF2DA1C44033B73F323250735FE03/program64.pdb create mode 100644 tests/cmdline/symcache64/program64.pdb/EAD8BF2DA1C44033B73F323250735FE03/refs.ptr create mode 100644 tests/cmdline/symdir32/program32.pdb create mode 100644 tests/cmdline/symdir64/program64.pdb create mode 100644 tests/cmdline/test_cmdline_symopts.cmd diff --git a/scripts/clear_env.cmd b/scripts/clear_env.cmd index e855472..6b82ea5 100644 --- a/scripts/clear_env.cmd +++ b/scripts/clear_env.cmd @@ -13,3 +13,9 @@ set VC= set VS_YEAR= set CC= set MAKE= + +rem Ensure these don't interfere with tests. +rem https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/general-environment-variables +set _NT_SYMBOL_PATH= +set _NT_ALT_SYMBOL_PATH= +set _NT_SYMBOL_PROXY= diff --git a/scripts/set_config.cmd b/scripts/set_config.cmd new file mode 100644 index 0000000..8312a64 --- /dev/null +++ b/scripts/set_config.cmd @@ -0,0 +1,11 @@ +@setlocal enabledelayedexpansion +@echo off + +rem Set a config value (that's a string/REG_SZ) in the registry. +rem Usage: set_config.cmd + +set "VALUE_NAME=%~1" +set "VALUE_DATA=%~2" + +reg add "HKCU\SOFTWARE\codersnotes.com\Very Sleepy" /v "!VALUE_NAME!" /t REG_SZ /d "!VALUE_DATA!" /f + diff --git a/scripts/test_minidump.cmd b/scripts/test_minidump.cmd index cb2436c..7a000dd 100644 --- a/scripts/test_minidump.cmd +++ b/scripts/test_minidump.cmd @@ -4,7 +4,7 @@ rem usage: test_minidump.cmd if exist %1 rmdir /S /Q %1 call %~dp0\unpack_to %1.sleepy %1 > nul -if errorlevel 1 exit 1 +if errorlevel 1 exit /b 1 set FOUND=0 if exist "%~1\minidump.dmp" set FOUND=1 diff --git a/scripts/test_symbol.cmd b/scripts/test_symbol.cmd index 7b09dd4..5e3d8d0 100644 --- a/scripts/test_symbol.cmd +++ b/scripts/test_symbol.cmd @@ -2,7 +2,7 @@ if exist %1 rmdir /S /Q %1 call %~dp0\unpack_to %1.sleepy %1 > nul -if errorlevel 1 exit 1 +if errorlevel 1 exit /b 1 set FOUND=0 for /F "tokens=3" %%a in (%1\Symbols.txt) do if "%%~a" == "%~2" set FOUND=1 diff --git a/tests/cmdline/.gitignore b/tests/cmdline/.gitignore index 68d3006..e028ef4 100644 --- a/tests/cmdline/.gitignore +++ b/tests/cmdline/.gitignore @@ -1,5 +1,4 @@ *.ilk -*.pdb # custom script to build (outside of appveyor environment) build.local.bat diff --git a/tests/cmdline/build.bat b/tests/cmdline/build.bat index c2f30ee..9cab99a 100644 --- a/tests/cmdline/build.bat +++ b/tests/cmdline/build.bat @@ -3,14 +3,19 @@ cd /d "%~dp0" call ..\..\scripts\clear_env.cmd -rem https://github.com/VerySleepy/verysleepy/issues/28 +rem Build executables for two different architectures. +rem Ensure that the .pdb is _not_ in the same dir as the executable. SETLOCAL call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 cl /MD /Z7 program.c /Fe:program32.exe /link /DEBUG:FASTLINK +if not exist "%~dp0symdir32" mkdir "%~dp0symdir32" +move /y program32.pdb "%~dp0symdir32" ENDLOCAL SETLOCAL call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 cl /MD /Z7 program.c /Fe:program64.exe /link /DEBUG:FASTLINK +if not exist "%~dp0symdir64" mkdir "%~dp0symdir64" +move /y program64.pdb "%~dp0symdir64" ENDLOCAL diff --git a/tests/cmdline/symcache32/program32.pdb/9100AD1E7D7F41A595C3D1A186DA1D773/program32.pdb b/tests/cmdline/symcache32/program32.pdb/9100AD1E7D7F41A595C3D1A186DA1D773/program32.pdb new file mode 100644 index 0000000000000000000000000000000000000000..28cab66f4edfda560095f97875a02a97ba6ac720 GIT binary patch literal 479232 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 literal 0 HcmV?d00001 diff --git a/tests/cmdline/symcache32/program32.pdb/9100AD1E7D7F41A595C3D1A186DA1D773/refs.ptr b/tests/cmdline/symcache32/program32.pdb/9100AD1E7D7F41A595C3D1A186DA1D773/refs.ptr new file mode 100644 index 0000000..66cde1e --- /dev/null +++ b/tests/cmdline/symcache32/program32.pdb/9100AD1E7D7F41A595C3D1A186DA1D773/refs.ptr @@ -0,0 +1 @@ +0000000001,file,"c:\data\src\work\VerySleepy\verysleepy-mojomojomojo\tests\tests\cmdline\symdir32\program32.pdb",pri,,N,, \ No newline at end of file diff --git a/tests/cmdline/symcache64/program64.pdb/EAD8BF2DA1C44033B73F323250735FE03/program64.pdb b/tests/cmdline/symcache64/program64.pdb/EAD8BF2DA1C44033B73F323250735FE03/program64.pdb new file mode 100644 index 0000000000000000000000000000000000000000..0f9e5372ac43257fda2d58e84971ee1d5602df19 GIT binary patch literal 438272 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%0D7i$SRn=)YG3W@~+44PP-ra_9qtN!~( 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 JpcxPh{Qtnx>JtC} literal 0 HcmV?d00001 diff --git a/tests/cmdline/symcache64/program64.pdb/EAD8BF2DA1C44033B73F323250735FE03/refs.ptr b/tests/cmdline/symcache64/program64.pdb/EAD8BF2DA1C44033B73F323250735FE03/refs.ptr new file mode 100644 index 0000000..84397d4 --- /dev/null +++ b/tests/cmdline/symcache64/program64.pdb/EAD8BF2DA1C44033B73F323250735FE03/refs.ptr @@ -0,0 +1 @@ +0000000001,file,"c:\data\src\work\VerySleepy\verysleepy-mojomojomojo\tests\tests\cmdline\symdir64\program64.pdb",pri,,N,, \ No newline at end of file diff --git a/tests/cmdline/symdir32/program32.pdb b/tests/cmdline/symdir32/program32.pdb new file mode 100644 index 0000000000000000000000000000000000000000..28cab66f4edfda560095f97875a02a97ba6ac720 GIT binary patch literal 479232 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 literal 0 HcmV?d00001 diff --git a/tests/cmdline/symdir64/program64.pdb b/tests/cmdline/symdir64/program64.pdb new file mode 100644 index 0000000000000000000000000000000000000000..0f9e5372ac43257fda2d58e84971ee1d5602df19 GIT binary patch literal 438272 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%0D7i$SRn=)YG3W@~+44PP-ra_9qtN!~( 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 JpcxPh{Qtnx>JtC} literal 0 HcmV?d00001 diff --git a/tests/cmdline/test.bat b/tests/cmdline/test.bat index ec7ffe4..35b4c69 100644 --- a/tests/cmdline/test.bat +++ b/tests/cmdline/test.bat @@ -12,7 +12,7 @@ set SLEEPY_SILENT_CRASH=1 for %%b in (32 64) do ( echo Testing %%b - FOR %%o in (minidump samplerate) do ( + FOR %%o in (minidump samplerate symopts) do ( rem Discard any saved config options. call ..\..\scripts\clear_config diff --git a/tests/cmdline/test_cmdline_symopts.cmd b/tests/cmdline/test_cmdline_symopts.cmd new file mode 100644 index 0000000..f3d4ef3 --- /dev/null +++ b/tests/cmdline/test_cmdline_symopts.cmd @@ -0,0 +1,140 @@ +@echo off +setlocal enabledelayedexpansion + + +rem Testing Parameter Behavior: `symsearchpath` +rem To test for this, we will profile a run of program!ARCH!.exe and verify that the expected symbol was/wasn't found. +rem 1. Run without any search path. Ensure that the target symbol is NOT found. (verify search path is meaningful) +rem 2. Run with a search path. Ensure that the target symbol IS found. (verify search path) +rem 3. Run with an empty symbol cache. Ensure that the target symbol is NOT found. (verify cache is meaningful) +rem 4. Run with a search path and a symbol cache. Ensure that the symbol IS found. (build search cache) +rem 5. Run WITHOUT a search path and WITH a symbol cache. Ensure that the symbol IS found. (search cache only) +rem Testing Parameter Ephemerality +rem 6. Run with a search path that doesn't contain the symbols. The saved search path does contain them. +rem 6. Run with a cache that doesn't contain the symbols. The saved search path does contain them. + +set "PGMARCH=%~1" +set CONFIG_SYMPATH=SymbolSearchPath +set CONFIG_SYMCACHE=SymbolCache + +set "EMPTY_SYMDIR=%~dp0empty_symdir" +set "EMPTY_SYMCACHE=%~dp0empty_symcache" + +set "SYMDIR=%~dp0symdir!PGMARCH!" +set "SYMCACHE=%~dp0symcache!PGMARCH!" + +rem 1. run without any options: not found +@echo. +@echo scenario 1: symbol not found +call ..\..\scripts\clear_config +call :RUN_PROFILER "" +if !SYMBOL_FOUND! neq 0 (echo ERROR: failed scenario 1) & exit /b 1 + +rem 2. run with search path: found +@echo. +@echo scenario 2: symbol found +call ..\..\scripts\clear_config +call :RUN_PROFILER "/symsearchpath:!SYMDIR!" +if !SYMBOL_FOUND! neq 1 (echo ERROR: failed scenario 2) & exit /b 1 + +rem 3. Run with an empty symbol cache: not found +@echo. +@echo scenario 3: symbol not found +call ..\..\scripts\clear_config +call :CLEAR_DIR "!EMPTY_SYMCACHE!" +call :RUN_PROFILER "/symcachedir:!EMPTY_SYMCACHE!" +if !SYMBOL_FOUND! neq 0 (echo ERROR: failed scenario 3) & exit /b 1 + +rem 4. run with a search path and a symbol cache: found +@echo. +@echo scenario 4: symbol found +call ..\..\scripts\clear_config +call :RUN_PROFILER "/symsearchpath:!SYMDIR! /symcachedir:!SYMCACHE!" +if !SYMBOL_FOUND! neq 1 (echo ERROR: failed scenario 4) & exit /b 1 + +rem 5. run WITHOUT a search path and WITH a symbol cache: found +@echo. +@echo scenario 5: symbol found +call ..\..\scripts\clear_config +call :RUN_PROFILER "/symcachedir:!SYMCACHE!" +if !SYMBOL_FOUND! neq 1 (echo ERROR: failed scenario 5) & exit /b 1 + + +rem 6. run with a search path that doesn't contain the symbols, overriding one that contain them: not found +rem Test the config value. +@echo. +@echo scenario 6a: symbol found +call ..\..\scripts\clear_config +call ..\..\scripts\set_config %CONFIG_SYMPATH% "!SYMDIR!" +call :RUN_PROFILER +if !SYMBOL_FOUND! neq 1 (echo ERROR: failed scenario 6a) & exit /b 1 +rem Test the override +@echo scenario 6b: symbol not found +call :CLEAR_DIR "!EMPTY_SYMDIR!" +call ..\..\scripts\get_config %CONFIG_SYMPATH% PRE_RUN_SYMPATH +call :RUN_PROFILER "/symsearchpath:!EMPTY_SYMDIR!" +call ..\..\scripts\get_config %CONFIG_SYMPATH% POST_RUN_SYMPATH +if !SYMBOL_FOUND! neq 0 (echo ERROR: failed scenario 6b) & exit /b 1 +if not "!PRE_RUN_SYMPATH!"=="!POST_RUN_SYMPATH!" ( + echo ERROR: symbol path value was incorrectly changed to the cmdline override value. + exit /b 1 +) + + +rem 7. run with a cache that doesn't contain the symbols, overriding one that contain them: not found +rem Test the config value. +@echo. +@echo scenario 7a: symbol found +call ..\..\scripts\clear_config +call ..\..\scripts\set_config %CONFIG_SYMCACHE% "!SYMCACHE!" +call :RUN_PROFILER +if !SYMBOL_FOUND! neq 1 (echo ERROR: failed scenario 7a) & exit /b 1 +rem Test the override +@echo scenario 7b: symbol not found +call :CLEAR_DIR "!EMPTY_SYMCACHE!" +call ..\..\scripts\get_config %CONFIG_SYMCACHE% PRE_RUN_SYMCACHE +call :RUN_PROFILER "/symcachedir:!EMPTY_SYMCACHE!" +call ..\..\scripts\get_config %CONFIG_SYMCACHE% POST_RUN_SYMCACHE +if !SYMBOL_FOUND! neq 0 (echo ERROR: failed scenario 7b) & exit /b 1 +if not "!PRE_RUN_SYMCACHE!"=="!POST_RUN_SYMCACHE!" ( + echo ERROR: symbol cache was incorrectly changed to the cmdline override value. + exit /b 1 +) + + + +exit /b + +:SAVE_CONFIG +call ..\..\scripts\get_config CONFIG_SYMPATH PRE_RUN_SYMPATH +call ..\..\scripts\get_config CONFIG_SYMCACHE PRE_RUN_SYMCACHE + + + +:CLEAR_DIR +if exist "%SYMCACHEDIR%" rmdir /s /q "%SYMCACHEDIR%" +mkdir "%SYMCACHEDIR%" +exit /B + + + +:RUN_PROFILER +SET SYMBOL_FOUND= +setlocal enabledelayedexpansion + +rem Callers should ensure that this parameter does not have/need embedded quotes. They will be lost. +set "ADDL_ARGS=%~1" + +if exist program-!PGMARCH!.sleepy del program-!PGMARCH!.sleepy +rem Ensure that we profile a matching-architecture executable so that the "mismatch" warning doesn't halt the test. +call ..\..\scripts\sleepy!pgmarch! /r:program!pgmarch!.exe /o:program-!pgmarch!.sleepy !ADDL_ARGS! +if !ERRORLEVEL! neq 0 exit /b 1 + +rem Check for the target symbol. +call ..\..\scripts\test_symbol program-!pgmarch! vs_test_fun +@ECHO !ERRORLEVEL! +set /A IS_SYMBOL_FOUND = 1 - !ERRORLEVEL! +@echo Found Symbol: !IS_SYMBOL_FOUND! + +endlocal & set SYMBOL_FOUND=%IS_SYMBOL_FOUND% +exit /b From e2f75ecbc37940c7f871385c2a8d66cb609abf2b Mon Sep 17 00:00:00 2001 From: Todd Hartman Date: Mon, 6 Jun 2022 09:14:56 -0500 Subject: [PATCH 4/5] cleanup scripts; attempt to suppress needless output from reg commands --- scripts/clear_config.cmd | 12 +++++++++++- scripts/get_stat.cmd | 16 ++++++++-------- scripts/set_config.cmd | 12 ++++++++++-- scripts/set_config_dword.cmd | 10 +++++++++- 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/scripts/clear_config.cmd b/scripts/clear_config.cmd index abcf9ad..b8d57d0 100644 --- a/scripts/clear_config.cmd +++ b/scripts/clear_config.cmd @@ -1,2 +1,12 @@ REM Clear the saved config options (in the registry) -REG DELETE "HKCU\SOFTWARE\codersnotes.com\Very Sleepy" /F +SET "TMPOUT=%TEMP%\set_config.out" + +REG DELETE "HKCU\SOFTWARE\codersnotes.com\Very Sleepy" /F >"%TMPOUT%" 2>&1 +if ERRORLEVEL 1 ( + rem reg.exe outputs "The operation completed successfully." on success. + rem This is nice, but is undesirable for our tests. + rem Only emit the output if something fails. + @echo %~n0: failure + @type "%TMPOUT%" + exit /b !ERRORLEVEL! +) diff --git a/scripts/get_stat.cmd b/scripts/get_stat.cmd index f034a4a..a14745b 100644 --- a/scripts/get_stat.cmd +++ b/scripts/get_stat.cmd @@ -1,8 +1,8 @@ @setlocal enabledelayedexpansion @echo off -rem usage: test_stat.cmd -rem Get from Stats.txt and save its value in +rem usage: get_stat.cmd sleepy_file_basename stat_descr target_envvar +rem Get `stat_descr` from Stats.txt and save its value in `target_envvar` set "SLEEPY_BASE=%~1" set "STAT_DESCR=%~2" @@ -15,12 +15,12 @@ if errorlevel 1 exit 1 set FOUND=0 set STAT_VALUE=_NOT_FOUND_ if exist "!SLEEPY_BASE!\Stats.txt" ( - for /f "tokens=1,2* delims=: " %%a in (!SLEEPY_BASE!\Stats.txt) do ( - if "%%~a"=="!STAT_DESCR!" ( - set FOUND=1 - set "STAT_VALUE=%%~b" - ) - ) + for /f "tokens=1,2* delims=: " %%a in (!SLEEPY_BASE!\Stats.txt) do ( + if "%%~a"=="!STAT_DESCR!" ( + set FOUND=1 + set "STAT_VALUE=%%~b" + ) + ) ) if %FOUND% == 0 exit /b 1 diff --git a/scripts/set_config.cmd b/scripts/set_config.cmd index 8312a64..fcea5a9 100644 --- a/scripts/set_config.cmd +++ b/scripts/set_config.cmd @@ -2,10 +2,18 @@ @echo off rem Set a config value (that's a string/REG_SZ) in the registry. -rem Usage: set_config.cmd +rem Usage: set_config.cmd option_name new_value set "VALUE_NAME=%~1" set "VALUE_DATA=%~2" -reg add "HKCU\SOFTWARE\codersnotes.com\Very Sleepy" /v "!VALUE_NAME!" /t REG_SZ /d "!VALUE_DATA!" /f +SET "TMPOUT=%TEMP%\set_config.out" +reg add "HKCU\SOFTWARE\codersnotes.com\Very Sleepy" /v "!VALUE_NAME!" /t REG_SZ /d "!VALUE_DATA!" /f >"%TMPOUT%" 2>&1 +if ERRORLEVEL 1 ( + rem reg.exe outputs "The operation completed successfully." on success. + rem This is nice, but is undesirable for our tests. + rem Only emit the output if something fails. + @type "%TMPOUT%" + exit /b !ERRORLEVEL! +) diff --git a/scripts/set_config_dword.cmd b/scripts/set_config_dword.cmd index cf51ed3..a7498e4 100644 --- a/scripts/set_config_dword.cmd +++ b/scripts/set_config_dword.cmd @@ -7,5 +7,13 @@ rem Usage: set_config_dword.cmd set "VALUE_NAME=%~1" set "VALUE_DATA=%~2" -reg add "HKCU\SOFTWARE\codersnotes.com\Very Sleepy" /v "!VALUE_NAME!" /t REG_DWORD /d !VALUE_DATA! /f +SET "TMPOUT=%TEMP%\set_config.out" +reg add "HKCU\SOFTWARE\codersnotes.com\Very Sleepy" /v "!VALUE_NAME!" /t REG_DWORD /d !VALUE_DATA! /f >"%TMPOUT%" 2>&1 +if ERRORLEVEL 1 ( + rem reg.exe outputs "The operation completed successfully." on success. + rem This is nice, but is undesirable for our tests. + rem Only emit the output if something fails. + @type "%TMPOUT%" + exit /b !ERRORLEVEL! +) From 5501ae76344180396f1a52b2ee29e25cf751df4b Mon Sep 17 00:00:00 2001 From: Todd Hartman Date: Mon, 6 Jun 2022 09:23:04 -0500 Subject: [PATCH 5/5] script cleanup: reduce redundancy, improve output --- tests/cmdline/ReadMe.md | 21 ++++++ tests/cmdline/test.bat | 10 ++- tests/cmdline/test_cmdline_minidump.cmd | 60 ++++++++++++---- tests/cmdline/test_cmdline_samplerate.cmd | 18 ++--- tests/cmdline/test_cmdline_symopts.cmd | 83 +++++++++++++---------- 5 files changed, 134 insertions(+), 58 deletions(-) diff --git a/tests/cmdline/ReadMe.md b/tests/cmdline/ReadMe.md index 864ea5d..79ec54d 100644 --- a/tests/cmdline/ReadMe.md +++ b/tests/cmdline/ReadMe.md @@ -4,6 +4,27 @@ These command line parameters are tested * minidump * samplerate + * symopts The tests are not so much tests of functionality related to the parameters, but rather tests that the parameters are correctly honored when specified on the command line. + + +## Overridable Options + +Some command line parameters will override what is saved in the application config. + +When you specify one of those parameters on the command line, for that instance: the application should not permit you to change the value, nor should it change the value in the saved config. + +These parameters exhibit this behavior + + * `/minidump` + * `/samplerate` + * `/symsearchpath` + * `/symcachedir` + * `/usesymserver` (specify `/usesymserver-` to turn it off) + * `/symserver` + +You can verify the behavior by specifying one or more of the parameters on the command line, then going into Tools / Options, and verify that the corresponding setting shows the override value and cannot be changed. + +You can also verify that the saved config data for that setting does not get updated with the value specified on the command line. diff --git a/tests/cmdline/test.bat b/tests/cmdline/test.bat index 35b4c69..55c0f8d 100644 --- a/tests/cmdline/test.bat +++ b/tests/cmdline/test.bat @@ -10,15 +10,19 @@ rem Verify that command-line options are honored and do not override saved confi set SLEEPY_SILENT_CRASH=1 for %%b in (32 64) do ( + echo. + echo ============================================================ echo Testing %%b + echo. + echo. - FOR %%o in (minidump samplerate symopts) do ( + FOR %%o in (minidump samplerate symopts) do ( rem Discard any saved config options. call ..\..\scripts\clear_config - call test_cmdline_%%o.cmd %%b + call test_cmdline_%%o.cmd %%b if !ERRORLEVEL! neq 0 exit /b 1 ) ) -echo %~dp0 OK +echo %~f0: OK diff --git a/tests/cmdline/test_cmdline_minidump.cmd b/tests/cmdline/test_cmdline_minidump.cmd index 58317c0..7e087c7 100644 --- a/tests/cmdline/test_cmdline_minidump.cmd +++ b/tests/cmdline/test_cmdline_minidump.cmd @@ -3,28 +3,64 @@ setlocal enabledelayedexpansion set "PGMARCH=%~1" -call ..\..\scripts\get_config SaveMinidump START_MINIDUMP_VALUE -IF NOT "!START_MINIDUMP_VALUE!"=="" (IF "START_MINIDUMP_VALUE"=="429496729" (SET /A START_MINIDUMP_VALUE=-1) ELSE (SET /A START_MINIDUMP_VALUE=START_MINIDUMP_VALUE)) +set "SCRIPTS_DIR=%~dps0..\..\scripts" -SET TEST_MINIDUMP_VALUE=2 +call %SCRIPTS_DIR%\get_config SaveMinidump START_MINIDUMP_VALUE +IF NOT "!START_MINIDUMP_VALUE!"=="" (IF "START_MINIDUMP_VALUE"=="429496729" (set /a START_MINIDUMP_VALUE=-1) ELSE (set /a START_MINIDUMP_VALUE=START_MINIDUMP_VALUE)) -IF "!START_MINIDUMP_VALUE!"=="!TEST_MINIDUMP_VALUE!" (SET /A TEST_MINIDUMP_VALUE=TEST_MINIDUMP_VALUE+1) -@echo Test MiniDump value: !TEST_MINIDUMP_VALUE! +rem +rem Test with the behavior turned OFF. +rem + +set TEST_MINIDUMP_VALUE=2 + +if "!START_MINIDUMP_VALUE!"=="!TEST_MINIDUMP_VALUE!" (set /a TEST_MINIDUMP_VALUE=TEST_MINIDUMP_VALUE+1) +@echo Test MiniDump value: !TEST_MINIDUMP_VALUE! if exist program-!PGMARCH!.sleepy del program-!PGMARCH!.sleepy rem Ensure that we profile a matching-architecture executable so that the "mismatch" warning doesn't halt the test. -call ..\..\scripts\sleepy!pgmarch! /r:program!pgmarch!.exe /o:program-!pgmarch!.sleepy /minidump:!TEST_MINIDUMP_VALUE! +call %SCRIPTS_DIR%\sleepy!pgmarch! /r:program!pgmarch!.exe /o:program-!pgmarch!.sleepy /minidump:!TEST_MINIDUMP_VALUE! if !ERRORLEVEL! neq 0 exit /b 1 rem Verify the capture has a dump. -call ..\..\scripts\test_minidump program-!pgmarch! -if !ERRORLEVEL! neq 0 echo Minidump not taken & exit /b 1 +call %SCRIPTS_DIR%\test_minidump program-!pgmarch! +if !ERRORLEVEL! neq 0 ( @echo Minidump not taken & exit /b 1 ) else ( @echo Minidump taken ) + +rem Verify that the config value didn't change to what we specified. +rem It will change if it wasn't set, but not to what we specified. +call %SCRIPTS_DIR%\get_config SaveMinidump FINAL_MINIDUMP_VALUE + +if "!FINAL_MINIDUMP_VALUE!"=="!TEST_MINIDUMP_VALUE!" ( + @echo ERROR: SaveMinidump value was changed to the cmdline override value. + exit /b 1 +) + + +rem +rem Test with the behavior turned OFF. +rem + +rem Anything less than 0 means "no minidump" +rem We want to use something different than what's in the saved config (often, -1). +set TEST_MINIDUMP_VALUE=-2 + +if "!START_MINIDUMP_VALUE!"=="!TEST_MINIDUMP_VALUE!" (set /a TEST_MINIDUMP_VALUE=TEST_MINIDUMP_VALUE+1) +@echo Test MiniDump value: !TEST_MINIDUMP_VALUE! + +if exist program-!PGMARCH!.sleepy del program-!PGMARCH!.sleepy +rem Ensure that we profile a matching-architecture executable so that the "mismatch" warning doesn't halt the test. +call %SCRIPTS_DIR%\sleepy!pgmarch! /r:program!pgmarch!.exe /o:program-!pgmarch!.sleepy /minidump:!TEST_MINIDUMP_VALUE! +if !ERRORLEVEL! neq 0 exit /b 1 + +rem Verify the capture does not dave a dump. +call %SCRIPTS_DIR%\test_minidump program-!pgmarch! +if !ERRORLEVEL! neq 1 ( @echo Minidump taken but should not have been & exit /b 1 ) else ( @echo Minidump not taken ) rem Verify that the config value didn't change to what we specified. rem It will change if it wasn't set, but not to what we specified. -call ..\..\scripts\get_config SaveMinidump FINAL_MINIDUMP_VALUE +call %SCRIPTS_DIR%\get_config SaveMinidump FINAL_MINIDUMP_VALUE -IF "!FINAL_MINIDUMP_VALUE!"=="!TEST_MINIDUMP_VALUE!" ( - echo ERROR: SaveMinidump value was changed to the cmdline override value. - exit /b 1 +if "!FINAL_MINIDUMP_VALUE!"=="!TEST_MINIDUMP_VALUE!" ( + @echo ERROR: SaveMinidump value was changed to the cmdline override value. + exit /b 1 ) diff --git a/tests/cmdline/test_cmdline_samplerate.cmd b/tests/cmdline/test_cmdline_samplerate.cmd index 75e46f9..23ea305 100644 --- a/tests/cmdline/test_cmdline_samplerate.cmd +++ b/tests/cmdline/test_cmdline_samplerate.cmd @@ -12,12 +12,14 @@ rem I have also observed that sample rates above 60 or so will not always e set "PGMARCH=%~1" set CONFIG_PARAM=SpeedThrottle +set "SCRIPTS_DIR=%~dps0..\..\scripts" + set PREVIOUS_SAMPLES= for /L %%r in (1, 40, 100) DO ( @echo Testing Sample Rate: %%r call :TEST_SAMPLE_RATE %%r OBSERVED_SAMPLE_COUNT if ERRORLEVEL 1 exit /b 1 - @echo Observed samples: !OBSERVED_SAMPLE_COUNT! + @echo Observed samples: !OBSERVED_SAMPLE_COUNT! if not "!PREVIOUS_SAMPLES!"=="" ( if !PREVIOUS_SAMPLES! gtr !OBSERVED_SAMPLE_COUNT! ( @echo ERROR: Sample count did not decrease as the sample rate increased. @@ -46,26 +48,26 @@ SET "OUTPUT_VAR=%~2" set /a START_SAMPLERATE_VALUE=101-!TEST_SAMPLERATE_VALUE! -call ..\..\scripts\set_config_dword "!CONFIG_PARAM!" !START_SAMPLERATE_VALUE! -call ..\..\scripts\get_config "!CONFIG_PARAM!" CHECK_START_SAMPLERATE_VALUE +call %SCRIPTS_DIR%\set_config_dword "!CONFIG_PARAM!" !START_SAMPLERATE_VALUE! +call %SCRIPTS_DIR%\get_config "!CONFIG_PARAM!" CHECK_START_SAMPLERATE_VALUE if not "!CHECK_START_SAMPLERATE_VALUE!"=="!START_SAMPLERATE_VALUE!" ( @echo PRECONDITION ERROR: failed to set the saved config value for !CONFIG_PARAM! exit /b 1 ) -@echo Test SampleRate value: !TEST_SAMPLERATE_VALUE! +@echo Test SampleRate value: !TEST_SAMPLERATE_VALUE! if exist "program-!PGMARCH!.sleepy" del "program-!PGMARCH!.sleepy" if exist "program-!PGMARCH!" rmdir /s /q "program-!PGMARCH!" -call ..\..\scripts\sleepy!pgmarch! /r:program!pgmarch!.exe /o:program-!pgmarch!.sleepy /samplerate:!TEST_SAMPLERATE_VALUE! +call %SCRIPTS_DIR%\sleepy!pgmarch! /r:program!pgmarch!.exe /o:program-!pgmarch!.sleepy /samplerate:!TEST_SAMPLERATE_VALUE! if !ERRORLEVEL! neq 0 ( @echo ERROR: Very Sleepy reports failure: !ERRORLEVEL! exit /b 1 ) rem Get the number of samples. -call ..\..\scripts\get_stat "program-!pgmarch!" Samples OBSERVED_SAMPLES +call %SCRIPTS_DIR%\get_stat "program-!pgmarch!" Samples OBSERVED_SAMPLES if !ERRORLEVEL! neq 0 exit /b 1 if "!OBSERVED_SAMPLES!"=="" ( @echo Unable to find sample count in profile stats. @@ -74,10 +76,10 @@ if "!OBSERVED_SAMPLES!"=="" ( rem Verify that the config value didn't change to what we specified. rem It will change if it wasn't set, but not to what we specified. -call ..\..\scripts\get_config "!CONFIG_PARAM!" FINAL_SAMPLERATE_VALUE +call %SCRIPTS_DIR%\get_config "!CONFIG_PARAM!" FINAL_SAMPLERATE_VALUE IF "!FINAL_SAMPLERATE_VALUE!"=="!TEST_SAMPLERATE_VALUE!" ( - echo ERROR: !CONFIG_PARAM! value was changed to the cmdline override value. + @echo ERROR: !CONFIG_PARAM! value was changed to the cmdline override value. exit /b 1 ) diff --git a/tests/cmdline/test_cmdline_symopts.cmd b/tests/cmdline/test_cmdline_symopts.cmd index f3d4ef3..f75f635 100644 --- a/tests/cmdline/test_cmdline_symopts.cmd +++ b/tests/cmdline/test_cmdline_symopts.cmd @@ -17,88 +17,102 @@ set "PGMARCH=%~1" set CONFIG_SYMPATH=SymbolSearchPath set CONFIG_SYMCACHE=SymbolCache +set "SCRIPTS_DIR=%~dps0..\..\scripts" + set "EMPTY_SYMDIR=%~dp0empty_symdir" set "EMPTY_SYMCACHE=%~dp0empty_symcache" set "SYMDIR=%~dp0symdir!PGMARCH!" set "SYMCACHE=%~dp0symcache!PGMARCH!" + +:SCENARIO_1 rem 1. run without any options: not found @echo. @echo scenario 1: symbol not found -call ..\..\scripts\clear_config +call %SCRIPTS_DIR%\clear_config call :RUN_PROFILER "" -if !SYMBOL_FOUND! neq 0 (echo ERROR: failed scenario 1) & exit /b 1 +if !SYMBOL_FOUND! neq 0 (@echo ERROR: failed scenario 1) & exit /b 1 +:SCENARIO_2 rem 2. run with search path: found @echo. @echo scenario 2: symbol found -call ..\..\scripts\clear_config +call %SCRIPTS_DIR%\clear_config call :RUN_PROFILER "/symsearchpath:!SYMDIR!" -if !SYMBOL_FOUND! neq 1 (echo ERROR: failed scenario 2) & exit /b 1 +if !SYMBOL_FOUND! neq 1 (@echo ERROR: failed scenario 2) & exit /b 1 +:SCENARIO_3 rem 3. Run with an empty symbol cache: not found @echo. @echo scenario 3: symbol not found -call ..\..\scripts\clear_config +call %SCRIPTS_DIR%\clear_config call :CLEAR_DIR "!EMPTY_SYMCACHE!" call :RUN_PROFILER "/symcachedir:!EMPTY_SYMCACHE!" -if !SYMBOL_FOUND! neq 0 (echo ERROR: failed scenario 3) & exit /b 1 +if !SYMBOL_FOUND! neq 0 (@echo ERROR: failed scenario 3) & exit /b 1 +:SCENARIO_4 rem 4. run with a search path and a symbol cache: found @echo. @echo scenario 4: symbol found -call ..\..\scripts\clear_config +call %SCRIPTS_DIR%\clear_config call :RUN_PROFILER "/symsearchpath:!SYMDIR! /symcachedir:!SYMCACHE!" -if !SYMBOL_FOUND! neq 1 (echo ERROR: failed scenario 4) & exit /b 1 +if !SYMBOL_FOUND! neq 1 (@echo ERROR: failed scenario 4) & exit /b 1 +:SCENARIO_5 rem 5. run WITHOUT a search path and WITH a symbol cache: found @echo. @echo scenario 5: symbol found -call ..\..\scripts\clear_config +call %SCRIPTS_DIR%\clear_config call :RUN_PROFILER "/symcachedir:!SYMCACHE!" -if !SYMBOL_FOUND! neq 1 (echo ERROR: failed scenario 5) & exit /b 1 +if !SYMBOL_FOUND! neq 1 (@echo ERROR: failed scenario 5) & exit /b 1 rem 6. run with a search path that doesn't contain the symbols, overriding one that contain them: not found rem Test the config value. +:SCENARIO_6a @echo. @echo scenario 6a: symbol found -call ..\..\scripts\clear_config -call ..\..\scripts\set_config %CONFIG_SYMPATH% "!SYMDIR!" +call %SCRIPTS_DIR%\clear_config +call %SCRIPTS_DIR%\set_config %CONFIG_SYMPATH% "!SYMDIR!" call :RUN_PROFILER -if !SYMBOL_FOUND! neq 1 (echo ERROR: failed scenario 6a) & exit /b 1 +if !SYMBOL_FOUND! neq 1 (@echo ERROR: failed scenario 6a) & exit /b 1 +:SCENARIO_6b rem Test the override +@echo. @echo scenario 6b: symbol not found call :CLEAR_DIR "!EMPTY_SYMDIR!" -call ..\..\scripts\get_config %CONFIG_SYMPATH% PRE_RUN_SYMPATH +call %SCRIPTS_DIR%\get_config %CONFIG_SYMPATH% PRE_RUN_SYMPATH call :RUN_PROFILER "/symsearchpath:!EMPTY_SYMDIR!" -call ..\..\scripts\get_config %CONFIG_SYMPATH% POST_RUN_SYMPATH -if !SYMBOL_FOUND! neq 0 (echo ERROR: failed scenario 6b) & exit /b 1 +call %SCRIPTS_DIR%\get_config %CONFIG_SYMPATH% POST_RUN_SYMPATH +if !SYMBOL_FOUND! neq 0 (@echo ERROR: failed scenario 6b) & exit /b 1 if not "!PRE_RUN_SYMPATH!"=="!POST_RUN_SYMPATH!" ( - echo ERROR: symbol path value was incorrectly changed to the cmdline override value. - exit /b 1 + @echo ERROR: symbol path value was incorrectly changed to the cmdline override value. + exit /b 1 ) rem 7. run with a cache that doesn't contain the symbols, overriding one that contain them: not found rem Test the config value. +:SCENARIO_7a @echo. @echo scenario 7a: symbol found -call ..\..\scripts\clear_config -call ..\..\scripts\set_config %CONFIG_SYMCACHE% "!SYMCACHE!" +call %SCRIPTS_DIR%\clear_config +call %SCRIPTS_DIR%\set_config %CONFIG_SYMCACHE% "!SYMCACHE!" call :RUN_PROFILER -if !SYMBOL_FOUND! neq 1 (echo ERROR: failed scenario 7a) & exit /b 1 +if !SYMBOL_FOUND! neq 1 (@echo ERROR: failed scenario 7a) & exit /b 1 rem Test the override +:SCENARIO_7b +@echo. @echo scenario 7b: symbol not found call :CLEAR_DIR "!EMPTY_SYMCACHE!" -call ..\..\scripts\get_config %CONFIG_SYMCACHE% PRE_RUN_SYMCACHE +call %SCRIPTS_DIR%\get_config %CONFIG_SYMCACHE% PRE_RUN_SYMCACHE call :RUN_PROFILER "/symcachedir:!EMPTY_SYMCACHE!" -call ..\..\scripts\get_config %CONFIG_SYMCACHE% POST_RUN_SYMCACHE -if !SYMBOL_FOUND! neq 0 (echo ERROR: failed scenario 7b) & exit /b 1 +call %SCRIPTS_DIR%\get_config %CONFIG_SYMCACHE% POST_RUN_SYMCACHE +if !SYMBOL_FOUND! neq 0 (@echo ERROR: failed scenario 7b) & exit /b 1 if not "!PRE_RUN_SYMCACHE!"=="!POST_RUN_SYMCACHE!" ( - echo ERROR: symbol cache was incorrectly changed to the cmdline override value. - exit /b 1 + @echo ERROR: symbol cache was incorrectly changed to the cmdline override value. + exit /b 1 ) @@ -106,14 +120,14 @@ if not "!PRE_RUN_SYMCACHE!"=="!POST_RUN_SYMCACHE!" ( exit /b :SAVE_CONFIG -call ..\..\scripts\get_config CONFIG_SYMPATH PRE_RUN_SYMPATH -call ..\..\scripts\get_config CONFIG_SYMCACHE PRE_RUN_SYMCACHE +call %SCRIPTS_DIR%\get_config CONFIG_SYMPATH PRE_RUN_SYMPATH +call %SCRIPTS_DIR%\get_config CONFIG_SYMCACHE PRE_RUN_SYMCACHE :CLEAR_DIR -if exist "%SYMCACHEDIR%" rmdir /s /q "%SYMCACHEDIR%" -mkdir "%SYMCACHEDIR%" +if exist "%~1" rmdir /s /q "%~1" +mkdir "%~1" exit /B @@ -127,14 +141,13 @@ set "ADDL_ARGS=%~1" if exist program-!PGMARCH!.sleepy del program-!PGMARCH!.sleepy rem Ensure that we profile a matching-architecture executable so that the "mismatch" warning doesn't halt the test. -call ..\..\scripts\sleepy!pgmarch! /r:program!pgmarch!.exe /o:program-!pgmarch!.sleepy !ADDL_ARGS! +call %SCRIPTS_DIR%\sleepy!pgmarch! /r:program!pgmarch!.exe /o:program-!pgmarch!.sleepy !ADDL_ARGS! if !ERRORLEVEL! neq 0 exit /b 1 rem Check for the target symbol. -call ..\..\scripts\test_symbol program-!pgmarch! vs_test_fun -@ECHO !ERRORLEVEL! -set /A IS_SYMBOL_FOUND = 1 - !ERRORLEVEL! -@echo Found Symbol: !IS_SYMBOL_FOUND! +call %SCRIPTS_DIR%\test_symbol program-!pgmarch! vs_test_fun +set /a IS_SYMBOL_FOUND = 1 - !ERRORLEVEL! +@echo Found Symbol: !IS_SYMBOL_FOUND! endlocal & set SYMBOL_FOUND=%IS_SYMBOL_FOUND% exit /b