forked from openssl/openssl
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add documentation for running unit tests under Valgrind
Reviewed-by: Tim Hudson <[email protected]> Reviewed-by: Richard Levitte <[email protected]> (Merged from openssl#8867)
- Loading branch information
Showing
2 changed files
with
71 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
|
||
NOTES FOR VALGRIND | ||
================== | ||
|
||
Valgrind is a test harness that includes many tools such as memcheck, | ||
which is commonly used to check for memory leaks, etc. The default tool | ||
run by Valgrind is memcheck. There are other tools available, but this | ||
will focus on memcheck. | ||
|
||
Valgrind runs programs in a virtual machine, this means OpenSSL unit | ||
tests run under Valgrind will take longer than normal. | ||
|
||
Requirements | ||
------------ | ||
|
||
1. Platform supported by Valgrind | ||
See: http://valgrind.org/info/platforms.html | ||
2. Valgrind installed on the platform | ||
See: http://valgrind.org/downloads/current.html | ||
3. OpensSSL compiled | ||
See: INSTALL | ||
|
||
Running Tests | ||
------------- | ||
|
||
Test behavior can be modified by adjusting environment variables. | ||
|
||
EXE_SHELL | ||
|
||
This variable is used to specify the shell used to execute OpenSSL test | ||
programs. The default program (util/shlib_wrap.sh) initializes the | ||
environment to allow programs to find shared libraries. The variable can | ||
be modified to specify a different executable environment. | ||
|
||
EXE_SHELL="`/bin/pwd`/util/shlib_wrap.sh valgrind --error-exitcode=1 --leak-check=full -q" | ||
|
||
This will start up Valgrind with the default checker (memcheck). | ||
The --error-exitcode=1 option specifies that Valgrind should exit with an | ||
error code of 1 when memory leaks occur. | ||
The --leak-check=full option specifies extensive memory checking. | ||
The -q option prints only error messages. | ||
Additional Valgrind options may be added to the EXE_SHELL variable. | ||
|
||
OPENSSL_ia32cap | ||
|
||
This variable controls the processor-specific code on Intel processors. | ||
By default, OpenSSL will attempt to figure out the capabilities of a | ||
processor, and use it to its fullest capability. This variable can be | ||
used to control what capabilities OpenSSL uses. | ||
|
||
As of valgrind-3.15.0 on Linux/x86_64, instructions up to AVX2 are | ||
supported. Setting the following disables instructions beyond AVX2: | ||
|
||
OPENSSL_ia32cap=":0" | ||
|
||
This variable may need to be set to something different based on the | ||
processor and Valgrind version you are running tests on. More information | ||
may be found in docs/man3/OPENSSL_ia32cap.pod. | ||
|
||
Additional variables (i.e. VERBOSE and TESTS) are described in the | ||
INSTALL file in the root of the OpenSSL source tree. | ||
|
||
Example command line: | ||
|
||
make test EXE_SHELL="`/bin/pwd`/util/shlib_wrap.sh valgrind --error-exitcode=1 --leak-check=full -q" OPENSSL_ia32cap=":0" | ||
|
||
If an error occurs, you can then run the specific test via the TESTS | ||
variable with the VERBOSE option to gather additional information. | ||
|
||
make test VERBOSE=1 TESTS=test_test EXE_SHELL="`/bin/pwd`/util/shlib_wrap.sh valgrind --error-exitcode=1 --leak-check=full -q" OPENSSL_ia32cap=":0" |