[test suite] better --lib-dir support for non-default LD_LIBRARY_PATH values
This commit allow the test suite to easily use a non-default LD_LIBRARY_PATH in order to test mixed combinations of newly compiled fwknop client/server binaries and previously installed versions of libfko. This allows backwards compatibility (and forwards compatibility) to be verified by the test suite. For example, after compiling the fwknop client and server for the 2.5.2 release, one could use libfko from 2.5.1 to verify compatibility: ./test-fwknop.pl --enable-all --lib-path /home/mbr/install/fwknop-2.0.4/lib See the --fwknop-path and --fwknopd-path args as well in order to support arbitrary client/server/libfko combinations.
This commit is contained in:
parent
28a915c8c8
commit
eeda4e0f10
@ -177,7 +177,6 @@ our $tmp_args_file = "$run_dir/args.save";
|
||||
|
||||
our $fwknopCmd = '../client/.libs/fwknop';
|
||||
our $fwknopdCmd = '../server/.libs/fwknopd';
|
||||
our $libfko_bin = "$lib_dir/libfko.so"; ### this is usually a link
|
||||
|
||||
our $gpg_server_key = '361BBAD4';
|
||||
our $gpg_client_key = '6A3FAD56';
|
||||
@ -312,7 +311,6 @@ my $fuzzing_failure_ctr = 0;
|
||||
my $fuzzing_ctr = 0;
|
||||
my $include_permissions_warnings = 0;
|
||||
my $lib_view_cmd = '';
|
||||
my $lib_view_str = "LD_LIBRARY_PATH=$lib_dir";
|
||||
our $valgrind_path = '';
|
||||
our $sudo_path = '';
|
||||
our $gcov_path = '';
|
||||
@ -362,7 +360,7 @@ exit 1 unless GetOptions(
|
||||
'Anonymize-results' => \$anonymize_results,
|
||||
'fwknop-path=s' => \$fwknopCmd,
|
||||
'fwknopd-path=s' => \$fwknopdCmd,
|
||||
'libfko-path=s' => \$libfko_bin,
|
||||
'lib-dir=s' => \$lib_dir, ### for LD_LIBRARY_PATH
|
||||
'loopback-intf=s' => \$loopback_intf,
|
||||
'test-include=s' => \$test_include,
|
||||
'include=s' => \$test_include, ### synonym
|
||||
@ -401,6 +399,9 @@ exit 1 unless GetOptions(
|
||||
|
||||
&usage() if $help;
|
||||
|
||||
my $lib_view_str = "LD_LIBRARY_PATH=$lib_dir";
|
||||
our $libfko_bin = "$lib_dir/libfko.so"; ### this is usually a link
|
||||
|
||||
if ($enable_all) {
|
||||
$enable_valgrind = 1;
|
||||
$enable_recompilation_warnings_check = 1;
|
||||
@ -575,6 +576,43 @@ my @tests = (
|
||||
}
|
||||
);
|
||||
|
||||
my %test_keys = (
|
||||
'category' => $REQUIRED,
|
||||
'subcategory' => $OPTIONAL,
|
||||
'detail' => $REQUIRED,
|
||||
'function' => $REQUIRED,
|
||||
'binary' => $OPTIONAL,
|
||||
'cmdline' => $OPTIONAL,
|
||||
'fwknopd_cmdline' => $OPTIONAL,
|
||||
'fatal' => $OPTIONAL_NUMERIC,
|
||||
'key_file' => $OPTIONAL,
|
||||
'exec_err' => $OPTIONAL,
|
||||
'server_exec_err' => $OPTIONAL,
|
||||
'fw_rule_created' => $OPTIONAL,
|
||||
'fw_rule_removed' => $OPTIONAL,
|
||||
'server_conf' => $OPTIONAL,
|
||||
'pkt' => $OPTIONAL,
|
||||
'fuzzing_pkt' => $OPTIONAL,
|
||||
'pkt_prefix' => $OPTIONAL,
|
||||
'no_ip_check' => $OPTIONAL,
|
||||
'get_key' => $OPTIONAL,
|
||||
'get_hmac_key' => $OPTIONAL,
|
||||
'set_legacy_iv' => $OPTIONAL,
|
||||
'write_rc_file' => $OPTIONAL,
|
||||
'save_rc_stanza' => $OPTIONAL,
|
||||
'disable_valgrind' => $OPTIONAL,
|
||||
'positive_output_matches' => $OPTIONAL,
|
||||
'negative_output_matches' => $OPTIONAL,
|
||||
'insert_rule_before_exec' => $OPTIONAL,
|
||||
'insert_rule_while_running' => $OPTIONAL,
|
||||
'search_for_rule_after_exit' => $OPTIONAL,
|
||||
'rc_positive_output_matches' => $OPTIONAL,
|
||||
'rc_negative_output_matches' => $OPTIONAL,
|
||||
'mv_and_restore_replay_cache' => $OPTIONAL,
|
||||
'server_positive_output_matches' => $OPTIONAL,
|
||||
'server_negative_output_matches' => $OPTIONAL,
|
||||
);
|
||||
|
||||
&validate_test_hashes();
|
||||
|
||||
### make sure no fwknopd instance is currently running
|
||||
@ -665,7 +703,6 @@ if ($enable_valgrind) {
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
&logr("\n");
|
||||
|
||||
&remove_permissions_warnings() unless $include_permissions_warnings;
|
||||
@ -712,6 +749,8 @@ exit 0;
|
||||
sub run_test() {
|
||||
my $test_hr = shift;
|
||||
|
||||
&validate_test_hash($test_hr);
|
||||
|
||||
### prepare for test run
|
||||
&rm_tmp_files();
|
||||
|
||||
@ -5388,47 +5427,8 @@ sub dots_print() {
|
||||
return;
|
||||
}
|
||||
|
||||
sub validate_test_hashes() {
|
||||
|
||||
my %test_keys = (
|
||||
'category' => $REQUIRED,
|
||||
'subcategory' => $OPTIONAL,
|
||||
'detail' => $REQUIRED,
|
||||
'function' => $REQUIRED,
|
||||
'binary' => $OPTIONAL,
|
||||
'cmdline' => $OPTIONAL,
|
||||
'fwknopd_cmdline' => $OPTIONAL,
|
||||
'fatal' => $OPTIONAL_NUMERIC,
|
||||
'key_file' => $OPTIONAL,
|
||||
'exec_err' => $OPTIONAL,
|
||||
'server_exec_err' => $OPTIONAL,
|
||||
'fw_rule_created' => $OPTIONAL,
|
||||
'fw_rule_removed' => $OPTIONAL,
|
||||
'server_conf' => $OPTIONAL,
|
||||
'pkt' => $OPTIONAL,
|
||||
'fuzzing_pkt' => $OPTIONAL,
|
||||
'pkt_prefix' => $OPTIONAL,
|
||||
'no_ip_check' => $OPTIONAL,
|
||||
'get_key' => $OPTIONAL,
|
||||
'get_hmac_key' => $OPTIONAL,
|
||||
'set_legacy_iv' => $OPTIONAL,
|
||||
'write_rc_file' => $OPTIONAL,
|
||||
'save_rc_stanza' => $OPTIONAL,
|
||||
'disable_valgrind' => $OPTIONAL,
|
||||
'positive_output_matches' => $OPTIONAL,
|
||||
'negative_output_matches' => $OPTIONAL,
|
||||
'insert_rule_before_exec' => $OPTIONAL,
|
||||
'insert_rule_while_running' => $OPTIONAL,
|
||||
'search_for_rule_after_exit' => $OPTIONAL,
|
||||
'rc_positive_output_matches' => $OPTIONAL,
|
||||
'rc_negative_output_matches' => $OPTIONAL,
|
||||
'mv_and_restore_replay_cache' => $OPTIONAL,
|
||||
'server_positive_output_matches' => $OPTIONAL,
|
||||
'server_negative_output_matches' => $OPTIONAL,
|
||||
);
|
||||
|
||||
### validate test hashes
|
||||
for my $test_hr (@tests) {
|
||||
sub validate_test_hash() {
|
||||
my $test_hr = shift;
|
||||
my $msg = &get_msg($test_hr);
|
||||
for my $key (keys %test_keys) {
|
||||
if ($test_keys{$key} == $REQUIRED) {
|
||||
@ -5444,6 +5444,14 @@ sub validate_test_hashes() {
|
||||
die "[*] Unrecognized key '$key' in test hash: '$msg'"
|
||||
unless defined $test_keys{$key};
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
sub validate_test_hashes() {
|
||||
|
||||
### validate test hashes
|
||||
for my $test_hr (@tests) {
|
||||
&validate_test_hash($test_hr);
|
||||
}
|
||||
|
||||
### make sure test message strings are unique across all tests
|
||||
@ -6360,8 +6368,8 @@ sub usage() {
|
||||
$fwknopCmd
|
||||
--fwknopd-path=<path> - Path to fwknopd binary, default is:
|
||||
$fwknopdCmd
|
||||
--libfko-path=<path> - Path to libfko, default is:
|
||||
$libfko_bin
|
||||
--lib-dir=<path> - For LD_LIBRARY_PATH, default is:
|
||||
$lib_dir
|
||||
--valgrind-path=<path> - Specify path to valgrind
|
||||
--valgrind-prev-cov-dir=<path> - Path to previous valgrind-coverage
|
||||
directory (defaults to:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user