diff options
author | Raimo Niskanen <[email protected]> | 2018-12-03 10:29:56 +0100 |
---|---|---|
committer | Raimo Niskanen <[email protected]> | 2018-12-03 10:29:56 +0100 |
commit | 098c8f504c61646a73c5f0e3a4132c15fc6e8219 (patch) | |
tree | e8ff99988bf56ce2366db664a47d60a0384559d0 /lib/crypto | |
parent | a86d641607b7b5ba0be455725b33ded0a5470509 (diff) | |
parent | 0727fa2e5c1ce8633096d4ad7c7f5f40e81d2264 (diff) | |
download | otp-098c8f504c61646a73c5f0e3a4132c15fc6e8219.tar.gz otp-098c8f504c61646a73c5f0e3a4132c15fc6e8219.tar.bz2 otp-098c8f504c61646a73c5f0e3a4132c15fc6e8219.zip |
Merge branch 'raimo/test-cuddling' into maint
* raimo/test-cuddling:
Parallel stress test strong_rand_bytes
Update OS version numbers
Diffstat (limited to 'lib/crypto')
-rw-r--r-- | lib/crypto/test/crypto_SUITE.erl | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/crypto/test/crypto_SUITE.erl b/lib/crypto/test/crypto_SUITE.erl index e1dd3f2ace..6c6188f775 100644 --- a/lib/crypto/test/crypto_SUITE.erl +++ b/lib/crypto/test/crypto_SUITE.erl @@ -38,6 +38,7 @@ all() -> mod_pow, exor, rand_uniform, + rand_threads, rand_plugin, rand_plugin_s ]. @@ -614,6 +615,25 @@ rand_uniform(Config) when is_list(Config) -> 10 = byte_size(crypto:strong_rand_bytes(10)). %%-------------------------------------------------------------------- +rand_threads() -> + [{doc, "strong_rand_bytes in parallel threads"}]. +rand_threads(Config) when is_list(Config) -> + %% This will crash the emulator on at least one version of libcrypto + %% with buggy multithreading in RAND_bytes(). + %% The test needs to run at least a few minutes... + NofThreads = 4, + Fun = fun F() -> crypto:strong_rand_bytes(16), F() end, + PidRefs = [spawn_monitor(Fun) || _ <- lists:seq(1, NofThreads)], +%%% The test case takes too much time to run. +%%% Keep it around for reference by setting it down to just 10 seconds. +%%% receive after 10 * 60 * 1000 -> ok end, % 10 minutes + receive after 10 * 1000 -> ok end, % 10 seconds + spawn_link(fun () -> receive after 5000 -> exit(timeout) end end), + [exit(Pid, stop) || {Pid,_Ref} <- PidRefs], + [receive {'DOWN',Ref,_,_,stop} -> ok end || {_Pid,Ref} <- PidRefs], + ok. + +%%-------------------------------------------------------------------- rand_plugin() -> [{doc, "crypto rand plugin testing (implicit state / process dictionary)"}]. rand_plugin(Config) when is_list(Config) -> |