diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-07-17 15:14:14 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-07-17 15:14:14 +0100 |
| commit | eaac013b4e68dea48fb2c3070b7c7ca59dfd1b96 (patch) | |
| tree | 782b6af4e27104273afb7713c66c9e1d1dbd2fb4 | |
| parent | aa1ea57fbbfe775168dacceb707a1dc80dc02dae (diff) | |
Hack asdcplib to make its RNG repeatable when we are testing.
| -rwxr-xr-x | asdcplib/src/KM_prng.cpp | 10 | ||||
| -rwxr-xr-x | asdcplib/src/KM_prng.h | 1 | ||||
| -rwxr-xr-x | run-tests.sh | 4 | ||||
| -rw-r--r-- | src/util.cc | 17 | ||||
| -rw-r--r-- | src/util.h | 1 | ||||
| -rw-r--r-- | test/tests.cc | 5 |
6 files changed, 17 insertions, 21 deletions
diff --git a/asdcplib/src/KM_prng.cpp b/asdcplib/src/KM_prng.cpp index 5212595f..3c64bdcc 100755 --- a/asdcplib/src/KM_prng.cpp +++ b/asdcplib/src/KM_prng.cpp @@ -48,6 +48,7 @@ using namespace Kumu; const char* DEV_URANDOM = "/dev/urandom"; #endif // KM_WIN32 +bool Kumu::libdcp_test = false; const ui32_t RNG_KEY_SIZE = 512UL; const ui32_t RNG_KEY_SIZE_BITS = 256UL; @@ -64,6 +65,7 @@ public: AES_KEY m_Context; byte_t m_ctr_buf[RNG_BLOCK_SIZE]; Mutex m_Lock; + unsigned int m_libdcp_test_rng_state; h__RNG() { @@ -97,6 +99,8 @@ public: } // end AutoMutex context set_key(rng_key); + + m_libdcp_test_rng_state = 1; } // @@ -138,6 +142,12 @@ public: AES_encrypt(m_ctr_buf, tmp, &m_Context); memcpy(buf + gen_count, tmp, len - gen_count); } + + if (libdcp_test) + { + for (unsigned int i = 0; i < len; ++i) + buf[i] = rand_r(&m_libdcp_test_rng_state); + } } }; diff --git a/asdcplib/src/KM_prng.h b/asdcplib/src/KM_prng.h index 2a909d6f..a1f23288 100755 --- a/asdcplib/src/KM_prng.h +++ b/asdcplib/src/KM_prng.h @@ -51,6 +51,7 @@ namespace Kumu // key_len must be <= 64 (larger values will be truncated) void Gen_FIPS_186_Value(const byte_t* key_in, ui32_t key_len, byte_t* buf, ui32_t buf_len); + extern bool libdcp_test; } // namespace Kumu diff --git a/run-tests.sh b/run-tests.sh index 08db5a85..a44ccea0 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -1,6 +1,6 @@ #!/bin/sh -LD_LIBRARY_PATH=build/src +LD_LIBRARY_PATH=build/src:build/asdcplib/src build/test/tests -diff -ur build/test/foo test/ref/DCP +#diff -ur build/test/foo test/ref/DCP
\ No newline at end of file diff --git a/src/util.cc b/src/util.cc index aab2e184..e805f3eb 100644 --- a/src/util.cc +++ b/src/util.cc @@ -28,8 +28,6 @@ using namespace std; -bool libdcp::libdcp_test = false; - /** Create a UUID. * @return UUID. */ @@ -38,20 +36,7 @@ libdcp::make_uuid () { char buffer[64]; Kumu::UUID id; - - if (libdcp_test) { - static int N = 0; - byte_t t[16]; - for (int i = 0; i < 16; ++i) { - t[i] = N; - } - ++N; - - id = Kumu::UUID (t); - } else { - Kumu::GenRandomValue (id); - } - + Kumu::GenRandomValue (id); id.EncodeHex (buffer, 64); return string (buffer); } @@ -23,6 +23,5 @@ namespace libdcp { extern std::string make_uuid (); extern std::string make_digest (std::string); -extern bool libdcp_test; } diff --git a/test/tests.cc b/test/tests.cc index dd9ed07d..ec7cc688 100644 --- a/test/tests.cc +++ b/test/tests.cc @@ -18,6 +18,7 @@ */ #include <boost/filesystem.hpp> +#include "KM_prng.h" #include "dcp.h" #include "util.h" #include "tags.h" @@ -31,8 +32,8 @@ using namespace boost; BOOST_AUTO_TEST_CASE (dcp_test) { - libdcp::libdcp_test = true; - + Kumu::libdcp_test = true; + libdcp::Tags* t = libdcp::Tags::instance (); t->issuer = "OpenDCP 0.0.25"; t->creator = "OpenDCP 0.0.25"; |
