From aec96e91382542f6f890b21db0b051eba685110e Mon Sep 17 00:00:00 2001 From: Todd Hartman Date: Thu, 7 Apr 2022 15:22:35 -0500 Subject: [PATCH 1/2] 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/2] 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