Skip to content

Commit

Permalink
Allow disable slow tests
Browse files Browse the repository at this point in the history
  • Loading branch information
justsmth committed Dec 19, 2024
1 parent 9a8acb7 commit 63a2f61
Show file tree
Hide file tree
Showing 8 changed files with 88 additions and 20 deletions.
1 change: 1 addition & 0 deletions Cross.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,5 @@ passthrough = [
"AWS_LC_SYS_CC_SRC_COLLECTOR",
"GOPROXY",
"AWS_LC_SYS_CFLAGS",
"AWS_LC_RS_DISABLE_SLOW_TESTS",
]
3 changes: 2 additions & 1 deletion aws-lc-rs/Cross.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ dockerfile = "../docker/linux-cross/Dockerfile"
passthrough = [
"CROSS_CMAKE_SYSTEM_PROCESSOR",
"RUST_BACKTRACE",
"RUST_LOG"
"RUST_LOG",
"AWS_LC_RS_DISABLE_SLOW_TESTS",
]
12 changes: 12 additions & 0 deletions aws-lc-rs/build.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0 OR ISC

use std::env;

fn main() {
let has_mutually_exclusive_features = cfg!(feature = "non-fips") && cfg!(feature = "fips");
assert!(
!has_mutually_exclusive_features,
"`fips` and `non-fips` are mutually exclusive crate features."
);

println!("cargo:rustc-check-cfg=cfg(disable_slow_tests)");
if let Ok(disable) = env::var("AWS_LC_RS_DISABLE_SLOW_TESTS") {
if disable == "1" {
println!("cargo:warning=### Slow tests will be disabled! ###");
println!("cargo:rustc-cfg=disable_slow_tests");
} else {
println!("cargo:warning=### Slow tests are enabled: {disable}! ###");
}
}

// This appears asymmetric, but it reflects the `cfg` statements in lib.rs that
// require `aws-lc-sys` to be present when "fips" is not enabled.
// if `fips` is enabled, then use that
Expand Down
1 change: 1 addition & 0 deletions aws-lc-rs/src/agreement/ephemeral.rs
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ mod tests {
// The spec gives a test vector for 1,000,000 iterations but it takes
// too long to do 1,000,000 iterations by default right now. This
// 10,000 iteration vector is self-computed.
#[cfg(not(disable_slow_tests))]
expect_iterated_x25519(
"2c125a20f639d504a7703d2e223c79a79de48c4ee8c23379aa19a62ecd211815",
1_000..10_000,
Expand Down
16 changes: 15 additions & 1 deletion aws-lc-rs/src/rsa/tests/fips.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,26 +78,40 @@ macro_rules! generate_key {
}

generate_key!(rsa2048_signing_generate_key, KeyPair, KeySize::Rsa2048);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_key!(rsa3072_signing_generate_key, KeyPair, KeySize::Rsa3072);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_key!(rsa4096_signing_generate_key, KeyPair, KeySize::Rsa4096);

// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_key!(rsa8192_signing_generate_key, KeyPair, KeySize::Rsa8192);

generate_key!(
rsa2048_encryption_generate_key,
PrivateDecryptingKey,
KeySize::Rsa2048
);

// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_key!(
rsa3072_encryption_generate_key,
PrivateDecryptingKey,
KeySize::Rsa3072
);

// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_key!(
rsa4096_encryption_signing_generate_key,
PrivateDecryptingKey,
KeySize::Rsa4096
);

// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_key!(
rsa8192_encryption_generate_key,
PrivateDecryptingKey,
Expand Down
2 changes: 1 addition & 1 deletion aws-lc-rs/tests/aead_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ fn test_aead<Seal, Open>(
// test a smaller subset.

let mut more_comprehensive_in_prefix_lengths = vec![0; 4096].into_boxed_slice();
let in_prefix_lengths = if cfg!(debug_assertions) {
let in_prefix_lengths = if cfg!(any(debug_assertions, disable_slow_tests)) {
&MINIMAL_IN_PREFIX_LENS[..]
} else {
#[allow(clippy::needless_range_loop)]
Expand Down
2 changes: 2 additions & 0 deletions aws-lc-rs/tests/digest_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,7 @@ mod digest_shavs {
macro_rules! test_i_u_f {
( $test_name:ident, $alg:expr) => {
#[cfg(not(debug_assertions))]
#[cfg(not(disable_slow_tests))]
// TODO: Get this working on WebAssembly
#[cfg(not(target_arch = "wasm32"))]
#[test]
Expand Down Expand Up @@ -308,6 +309,7 @@ macro_rules! test_large_digest {
( $test_name:ident, $alg:expr, $len:expr, $expected:expr) => {
// TODO: get this working on WebAssembly.
#[cfg(not(debug_assertions))]
#[cfg(not(disable_slow_tests))]
#[cfg(not(target_arch = "wasm32"))]
#[test]
fn $test_name() {
Expand Down
71 changes: 54 additions & 17 deletions aws-lc-rs/tests/rsa_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -302,10 +302,14 @@ macro_rules! generate_encode_decode {
}

generate_encode_decode!(rsa2048_generate_encode_decode, KeySize::Rsa2048);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_encode_decode!(rsa3072_generate_encode_decode, KeySize::Rsa3072);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_encode_decode!(rsa4096_generate_encode_decode, KeySize::Rsa4096);
// RSA8192 tests are not run in dev (debug) builds because it is too slow.
#[cfg(not(debug_assertions))]
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_encode_decode!(rsa8192_generate_encode_decode, KeySize::Rsa8192);

macro_rules! generate_fips_encode_decode {
Expand Down Expand Up @@ -336,10 +340,14 @@ macro_rules! generate_fips_encode_decode {
}

generate_fips_encode_decode!(rsa2048_generate_fips_encode_decode, KeySize::Rsa2048);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_fips_encode_decode!(rsa3072_generate_fips_encode_decode, KeySize::Rsa3072);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_fips_encode_decode!(rsa4096_generate_fips_encode_decode, KeySize::Rsa4096);
// RSA8192 tests are not run in dev (debug) builds because it is too slow.
#[cfg(not(debug_assertions))]
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
generate_fips_encode_decode!(rsa8192_generate_fips_encode_decode, KeySize::Rsa8192);

macro_rules! encryption_generate_encode_decode {
Expand All @@ -365,10 +373,14 @@ macro_rules! encryption_generate_encode_decode {
}

encryption_generate_encode_decode!(rsa2048_encryption_generate_encode_decode, KeySize::Rsa2048);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
encryption_generate_encode_decode!(rsa3072_encryption_generate_encode_decode, KeySize::Rsa3072);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
encryption_generate_encode_decode!(rsa4096_encryption_generate_encode_decode, KeySize::Rsa4096);
// RSA8192 tests are not run in dev (debug) builds because it is too slow.
#[cfg(not(debug_assertions))]
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
encryption_generate_encode_decode!(rsa8192_encryption_generate_encode_decode, KeySize::Rsa8192);

macro_rules! encryption_generate_fips_encode_decode {
Expand Down Expand Up @@ -408,16 +420,20 @@ encryption_generate_fips_encode_decode!(
rsa2048_encryption_generate_fips_encode_decode,
KeySize::Rsa2048
);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
encryption_generate_fips_encode_decode!(
rsa3072_encryption_generate_fips_encode_decode,
KeySize::Rsa3072
);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
encryption_generate_fips_encode_decode!(
rsa4096_encryption_generate_fips_encode_decode,
KeySize::Rsa4096
);
// RSA8192 tests are not run in dev (debug) builds because it is too slow.
#[cfg(not(debug_assertions))]
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
encryption_generate_fips_encode_decode!(
rsa8192_encryption_generate_fips_encode_decode,
KeySize::Rsa8192
Expand Down Expand Up @@ -596,18 +612,22 @@ round_trip_oaep_algorithm!(
&OAEP_SHA1_MGF1SHA1,
KeySize::Rsa2048
);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa3072_oaep_sha1_mgf1sha1,
&OAEP_SHA1_MGF1SHA1,
KeySize::Rsa3072
);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa4096_oaep_sha1_mgf1sha1,
&OAEP_SHA1_MGF1SHA1,
KeySize::Rsa4096
);
// RSA8192 tests are not run in dev (debug) builds because it is too slow.
#[cfg(not(debug_assertions))]
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa8192_oaep_sha1_mgf1sha1,
&OAEP_SHA1_MGF1SHA1,
Expand All @@ -619,18 +639,22 @@ round_trip_oaep_algorithm!(
&OAEP_SHA256_MGF1SHA256,
KeySize::Rsa2048
);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa3072_oaep_sha256_mgf1sha256,
&OAEP_SHA256_MGF1SHA256,
KeySize::Rsa3072
);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa4096_oaep_sha256_mgf1sha256,
&OAEP_SHA256_MGF1SHA256,
KeySize::Rsa4096
);
// RSA8192 tests are not run in dev (debug) builds because it is too slow.
#[cfg(not(debug_assertions))]
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa8192_oaep_sha256_mgf1sha256,
&OAEP_SHA256_MGF1SHA256,
Expand All @@ -642,18 +666,22 @@ round_trip_oaep_algorithm!(
&OAEP_SHA384_MGF1SHA384,
KeySize::Rsa2048
);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa3072_oaep_sha384_mgf1sha384,
&OAEP_SHA384_MGF1SHA384,
KeySize::Rsa3072
);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa4096_oaep_sha384_mgf1sha384,
&OAEP_SHA384_MGF1SHA384,
KeySize::Rsa4096
);
// RSA8192 tests are not run in dev (debug) builds because it is too slow.
#[cfg(not(debug_assertions))]
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa8192_oaep_sha384_mgf1sha384,
&OAEP_SHA384_MGF1SHA384,
Expand All @@ -665,18 +693,22 @@ round_trip_oaep_algorithm!(
&OAEP_SHA512_MGF1SHA512,
KeySize::Rsa2048
);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa3072_oaep_sha512_mgf1sha512,
&OAEP_SHA512_MGF1SHA512,
KeySize::Rsa3072
);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa4096_oaep_sha512_mgf1sha512,
&OAEP_SHA512_MGF1SHA512,
KeySize::Rsa4096
);
// RSA8192 tests are not run in dev (debug) builds because it is too slow.
#[cfg(not(debug_assertions))]
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_oaep_algorithm!(
rsa8192_oaep_sha512_mgf1sha512,
&OAEP_SHA512_MGF1SHA512,
Expand Down Expand Up @@ -972,9 +1004,14 @@ macro_rules! round_trip_pkcs1_encryption {
}

round_trip_pkcs1_encryption!(rsa2048_pkcs1_encryption, KeySize::Rsa2048);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_pkcs1_encryption!(rsa3072_pkcs1_encryption, KeySize::Rsa3072);
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_pkcs1_encryption!(rsa4096_pkcs1_encryption, KeySize::Rsa4096);
#[cfg(not(debug_assertions))]
// Key generation for large RSA keys is very slow
#[cfg(not(disable_slow_tests))]
round_trip_pkcs1_encryption!(rsa8192_pkcs1_encryption, KeySize::Rsa8192);

// Generated by `echo -n "OpenSSL KAT" | openssl pkeyutl -inkey rsa_test_public_key_2048.x509 -pubin -encrypt -pkeyopt rsa_padding_mode:pkcs1 | xxd -i`
Expand Down

0 comments on commit 63a2f61

Please sign in to comment.