diff options
Diffstat (limited to 'test/recipes/20-test_speed.t')
-rw-r--r-- | test/recipes/20-test_speed.t | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/test/recipes/20-test_speed.t b/test/recipes/20-test_speed.t new file mode 100644 index 000000000000..3c3c5fab5fcd --- /dev/null +++ b/test/recipes/20-test_speed.t @@ -0,0 +1,145 @@ +#! /usr/bin/env perl +# Copyright 2024 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + + +use strict; +use warnings; + +use File::Spec; +use File::Basename; +use OpenSSL::Test qw/:DEFAULT with srctop_file bldtop_dir/; +use OpenSSL::Test::Utils; + +setup("test_speed"); + +plan tests => 25; + +ok(run(app(['openssl', 'speed', '-testmode'])), + "Simple test of all speed algorithms"); + +#Test various options to speed. In all cases we use the -testmode option to +#ensure we don't spend too long in this test. That option also causes the speed +#app to return an error code if anything unexpectedly goes wrong. + + +SKIP: { + skip "Multi option is not supported by this OpenSSL build", 1 + if $^O =~ /^(VMS|MSWin32)$/; + + ok(run(app(['openssl', 'speed', '-testmode', '-multi', 2])), + "Test the multi option"); +} + +ok(run(app(['openssl', 'speed', '-testmode', '-misalign', 1])), + "Test the misalign option"); + +SKIP: { + skip "Multiblock is not supported by this OpenSSL build", 1 + if disabled("multiblock") + # The AES-128-CBC-HMAC-SHA1 cipher isn't available on all platforms + # We test its availability without the "-mb" option. We only do the + # multiblock test via "-mb" if the cipher seems to exist. + || !run(app(['openssl', 'speed', '-testmode', '-evp', + 'AES-128-CBC-HMAC-SHA1'])); + + ok(run(app(['openssl', 'speed', '-testmode', '-mb', '-evp', + 'AES-128-CBC-HMAC-SHA1'])), + "Test the EVP and mb options"); +} + +ok(run(app(['openssl', 'speed', '-testmode', '-kem-algorithms'])), + "Test the kem-algorithms option"); + +ok(run(app(['openssl', 'speed', '-testmode', '-signature-algorithms'])), + "Test the signature-algorithms option"); + +ok(run(app(['openssl', 'speed', '-testmode', '-primes', 3, 'rsa1024'])), + "Test the primes option"); + +ok(run(app(['openssl', 'speed', '-testmode', '-mr'])), + "Test the mr option"); + +ok(run(app(['openssl', 'speed', '-testmode', '-decrypt', '-evp', 'aes-128-cbc'])), + "Test the decrypt and evp options"); + +ok(run(app(['openssl', 'speed', '-testmode', '-evp', 'sha256'])), + "Test the evp option with a digest"); + +ok(run(app(['openssl', 'speed', '-testmode', '-hmac', 'sha256'])), + "Test the hmac option"); + +SKIP: { + skip "CMAC is not supported by this OpenSSL build", 1 + if disabled("cmac"); + + ok(run(app(['openssl', 'speed', '-testmode', '-cmac', 'aes-128-cbc'])), + "Test the cmac option"); +} + +ok(run(app(['openssl', 'speed', '-testmode', '-aead', '-evp', 'aes-128-gcm'])), + "Test the aead and evp options"); + +SKIP: { + skip "ASYNC/threads not supported by this OpenSSL build", 1 + if disabled("async") || disabled("threads"); + + ok(run(app(['openssl', 'speed', '-testmode', '-async_jobs', '1'])), + "Test the async_jobs option"); +} + +SKIP: { + skip "Mlock option is not supported by this OpenSSL build", 1 + if $^O !~ /^(linux|MSWin32)$/; + + ok(run(app(['openssl', 'speed', '-testmode', '-mlock'])), + "Test the mlock option"); +} + +#We don't expect these options to have an effect in testmode but we at least +#test that the option parsing works ok +ok(run(app(['openssl', 'speed', '-testmode', '-seconds', 1, '-bytes', 16, + '-elapsed'])), + "Test the seconds, bytes and elapsed options"); + +#Test that this won't crash on sparc +ok(run(app(['openssl', 'speed', '-testmode', '-seconds', 1, '-bytes', 1, + 'aes-128-cbc'])), + "Test that bad bytes value doesn't make speed to crash"); + +#No need to -testmode for testing -help. All we're doing is testing the option +#parsing. We don't sanity check the output +ok(run(app(['openssl', 'speed', '-help'])), + "Test the help option"); + +#Now test some invalid options. The speed app should fail +ok(!run(app(['openssl', 'speed', 'blah'])), + "Test an unknwon algorithm"); + +ok(!run(app(['openssl', 'speed', '-evp', 'blah'])), + "Test a unknown evp algorithm"); + +ok(!run(app(['openssl', 'speed', '-hmac', 'blah'])), + "Test a unknown hmac algorithm"); + +ok(!run(app(['openssl', 'speed', '-cmac', 'blah'])), + "Test a unknown cmac algorithm"); + +ok(!run(app(['openssl', 'speed', '-async_jobs', 100000])), + "Test an invalid number of async_jobs"); + +ok(!run(app(['openssl', 'speed', '-misalign', 65])), + "Test an invalid misalign number"); + +SKIP: { + skip "Multiblock is not supported by this OpenSSL build", 1 + if disabled("multiblock"); + + ok(!run(app(['openssl', 'speed', '-testmode', '-mb', '-evp', + 'AES-128-CBC'])), + "Test a non multiblock cipher with -mb"); +} |