1 | #! /usr/bin/env perl
|
---|
2 | # Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved.
|
---|
3 | #
|
---|
4 | # Licensed under the Apache License 2.0 (the "License"). You may not use
|
---|
5 | # this file except in compliance with the License. You can obtain a copy
|
---|
6 | # in the file LICENSE in the source distribution or at
|
---|
7 | # https://www.openssl.org/source/license.html
|
---|
8 |
|
---|
9 |
|
---|
10 | use OpenSSL::Test::Simple;
|
---|
11 | use OpenSSL::Test qw/:DEFAULT srctop_file srctop_dir bldtop_dir bldtop_file data_dir/;
|
---|
12 | use OpenSSL::Test::Utils;
|
---|
13 | use Cwd qw(abs_path);
|
---|
14 |
|
---|
15 | BEGIN {
|
---|
16 | setup("test_threads");
|
---|
17 | }
|
---|
18 |
|
---|
19 | use lib srctop_dir('Configurations');
|
---|
20 | use lib bldtop_dir('.');
|
---|
21 |
|
---|
22 | my $no_fips = disabled('fips') || ($ENV{NO_FIPS} // 0);
|
---|
23 | my $config_path = abs_path(srctop_file("test", $no_fips ? "default.cnf"
|
---|
24 | : "default-and-fips.cnf"));
|
---|
25 |
|
---|
26 | plan tests => 2;
|
---|
27 |
|
---|
28 | if ($no_fips) {
|
---|
29 | ok(run(test(["threadstest", "-config", $config_path, data_dir()])),
|
---|
30 | "running test_threads");
|
---|
31 | } else {
|
---|
32 | ok(run(test(["threadstest", "-fips", "-config", $config_path, data_dir()])),
|
---|
33 | "running test_threads with FIPS");
|
---|
34 | }
|
---|
35 |
|
---|
36 | # Merge the configuration files into one filtering the contents so the failure
|
---|
37 | # condition is reproducible. A working FIPS configuration without the install
|
---|
38 | # status is required.
|
---|
39 |
|
---|
40 | open CFGBASE, '<', $config_path;
|
---|
41 | open CFGINC, '<', bldtop_file('/test/fipsmodule.cnf');
|
---|
42 | open CFGOUT, '>', 'thread.cnf';
|
---|
43 |
|
---|
44 | while (<CFGBASE>) {
|
---|
45 | print CFGOUT unless m/^[.]include/;
|
---|
46 | }
|
---|
47 | close CFGBASE;
|
---|
48 | print CFGOUT "\n\n";
|
---|
49 | while (<CFGINC>) {
|
---|
50 | print CFGOUT unless m/^install-status/;
|
---|
51 | }
|
---|
52 | close CFGINC;
|
---|
53 | close CFGOUT;
|
---|
54 |
|
---|
55 | $ENV{OPENSSL_CONF} = 'thread.cnf';
|
---|
56 | ok(run(test(["threadstest_fips"])), "running test_threads_fips");
|
---|