diff --git a/src/ripple/basics/impl/CheckLibraryVersions.cpp b/src/ripple/basics/impl/CheckLibraryVersions.cpp index 00dc64230..76f6fb56d 100644 --- a/src/ripple/basics/impl/CheckLibraryVersions.cpp +++ b/src/ripple/basics/impl/CheckLibraryVersions.cpp @@ -25,21 +25,17 @@ #include #include -#include +#include namespace ripple { namespace version { -/** Both Boost and OpenSSL have integral version numbers. */ typedef unsigned long long VersionNumber; -/** Minimal required boost version. */ -static const char boostMinimal[] = "1.55.0"; +const char boostMinimal[] = "1.55.0"; +const char openSSLMinimal[] = "1.0.1-g"; -/** Minimal required OpenSSL version. */ -static const char openSSLMinimal[] = "1.0.1-g"; - -std::string boostVersion(VersionNumber boostVersion = BOOST_VERSION) +std::string boostVersion(VersionNumber boostVersion) { std::stringstream ss; ss << (boostVersion / 100000) << "." @@ -48,7 +44,7 @@ std::string boostVersion(VersionNumber boostVersion = BOOST_VERSION) return ss.str(); } -std::string openSSLVersion(VersionNumber openSSLVersion = OPENSSL_VERSION_NUMBER) +std::string openSSLVersion(VersionNumber openSSLVersion) { std::stringstream ss; ss << (openSSLVersion / 0x10000000L) << "." @@ -79,12 +75,12 @@ void checkVersion(std::string name, std::string required, std::string actual) } } -void checkBoost(std::string version = boostVersion()) +void checkBoost(std::string version) { checkVersion("Boost", boostMinimal, version); } -void checkOpenSSL(std::string version = openSSLVersion()) +void checkOpenSSL(std::string version) { checkVersion("OpenSSL", openSSLMinimal, version); } @@ -95,57 +91,5 @@ void checkLibraryVersions() checkOpenSSL(); } -struct CheckLibraryVersions_test : beast::unit_test::suite -{ - void print_message() - { - log << "ssl minimal: " << openSSLMinimal << "\n" - << "ssl actual: " << openSSLVersion() << "\n" - << "boost minimal: " << boostMinimal << "\n" - << "boost actual: " << boostVersion() << "\n" - << std::flush; - } - - void test_bad_ssl() - { - std::string error; - try { - checkOpenSSL(openSSLVersion(0x0090819fL)); - } catch (std::runtime_error& e) { - error = e.what(); - } - auto expectedError = "Your OpenSSL library is out of date.\n" - "Your version: 0.9.8-o\n" - "Required version: "; - unexpected(error.find(expectedError) != 0, error); - } - - void test_bad_boost() - { - std::string error; - try { - checkBoost(boostVersion(105400)); - } catch (std::runtime_error& e) { - error = e.what(); - } - auto expectedError = "Your Boost library is out of date.\n" - "Your version: 1.54.0\n" - "Required version: "; - unexpected(error.find(expectedError) != 0, error); - } - - - void run() - { - print_message(); - checkLibraryVersions(); - - test_bad_ssl(); - test_bad_boost(); - } -}; - -BEAST_DEFINE_TESTSUITE(CheckLibraryVersions, ripple_basics, ripple); - } // namespace version } // namespace ripple diff --git a/src/ripple/basics/impl/CheckLibraryVersionsImpl.h b/src/ripple/basics/impl/CheckLibraryVersionsImpl.h new file mode 100644 index 000000000..b6aa8b2be --- /dev/null +++ b/src/ripple/basics/impl/CheckLibraryVersionsImpl.h @@ -0,0 +1,48 @@ +//------------------------------------------------------------------------------ +/* + This file is part of rippled: https://github.com/ripple/rippled + Copyright (c) 2012, 2013 Ripple Labs Inc. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ +//============================================================================== + +#ifndef RIPPLE_BASICS_CHECKLIBRARYVERSIONS_IMPL_H_INCLUDED +#define RIPPLE_BASICS_CHECKLIBRARYVERSIONS_IMPL_H_INCLUDED + +#include + +namespace ripple { +namespace version { + +/** Both Boost and OpenSSL have integral version numbers. */ +typedef unsigned long long VersionNumber; + +/** Minimal required boost version. */ +extern const char boostMinimal[]; + +/** Minimal required OpenSSL version. */ +extern const char openSSLMinimal[]; + +std::string boostVersion(VersionNumber boostVersion = BOOST_VERSION); +std::string openSSLVersion( + VersionNumber openSSLVersion = OPENSSL_VERSION_NUMBER); + +void checkVersion(std::string name, std::string required, std::string actual); +void checkBoost(std::string version = boostVersion()); +void checkOpenSSL(std::string version = openSSLVersion()); + +} // namespace version +} // namespace ripple + +#endif diff --git a/src/ripple/basics/tests/CheckLibraryVersions.test.cpp b/src/ripple/basics/tests/CheckLibraryVersions.test.cpp new file mode 100644 index 000000000..2f8b48cf5 --- /dev/null +++ b/src/ripple/basics/tests/CheckLibraryVersions.test.cpp @@ -0,0 +1,80 @@ +//------------------------------------------------------------------------------ +/* + This file is part of rippled: https://github.com/ripple/rippled + Copyright (c) 2012, 2013 Ripple Labs Inc. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ +//============================================================================== + +#include +#include +#include + +namespace ripple { +namespace version { + +struct CheckLibraryVersions_test : beast::unit_test::suite +{ + void print_message() + { + log << "ssl minimal: " << openSSLMinimal << "\n" + << "ssl actual: " << openSSLVersion() << "\n" + << "boost minimal: " << boostMinimal << "\n" + << "boost actual: " << boostVersion() << "\n" + << std::flush; + } + + void test_bad_ssl() + { + std::string error; + try { + checkOpenSSL(openSSLVersion(0x0090819fL)); + } catch (std::runtime_error& e) { + error = e.what(); + } + auto expectedError = "Your OpenSSL library is out of date.\n" + "Your version: 0.9.8-o\n" + "Required version: "; + unexpected(error.find(expectedError) != 0, error); + } + + void test_bad_boost() + { + std::string error; + try { + checkBoost(boostVersion(105400)); + } catch (std::runtime_error& e) { + error = e.what(); + } + auto expectedError = "Your Boost library is out of date.\n" + "Your version: 1.54.0\n" + "Required version: "; + unexpected(error.find(expectedError) != 0, error); + } + + + void run() + { + print_message(); + checkLibraryVersions(); + + test_bad_ssl(); + test_bad_boost(); + } +}; + +BEAST_DEFINE_TESTSUITE(CheckLibraryVersions, ripple_basics, ripple); + +} // namespace version +} // namespace ripple diff --git a/src/ripple/unity/basics.cpp b/src/ripple/unity/basics.cpp index 86002fe06..594a8420c 100644 --- a/src/ripple/unity/basics.cpp +++ b/src/ripple/unity/basics.cpp @@ -39,3 +39,4 @@ #include #include #include +#include