diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/gtest/cmake/internal_utils.cmake | 2 | ||||
-rw-r--r-- | tests/performance_tests/main.cpp | 10 | ||||
-rw-r--r-- | tests/performance_tests/rct_mlsag.h | 87 | ||||
-rw-r--r-- | tests/unit_tests/address_from_url.cpp | 3 | ||||
-rw-r--r-- | tests/unit_tests/hardfork.cpp | 2 | ||||
-rw-r--r-- | tests/unit_tests/http.cpp | 22 | ||||
-rw-r--r-- | tests/unit_tests/memwipe.cpp | 2 | ||||
-rw-r--r-- | tests/unit_tests/serialization.cpp | 1 | ||||
-rw-r--r-- | tests/unit_tests/varint.cpp | 1 |
9 files changed, 116 insertions, 14 deletions
diff --git a/tests/gtest/cmake/internal_utils.cmake b/tests/gtest/cmake/internal_utils.cmake index 93e6dbb7c..364db5970 100644 --- a/tests/gtest/cmake/internal_utils.cmake +++ b/tests/gtest/cmake/internal_utils.cmake @@ -87,7 +87,7 @@ macro(config_compiler_and_linker) set(cxx_no_exception_flags "-D_HAS_EXCEPTIONS=0") set(cxx_no_rtti_flags "-GR-") elseif (CMAKE_COMPILER_IS_GNUCXX) - set(cxx_base_flags "-Wall -Wshadow") + set(cxx_base_flags "-Wall -Wshadow -fPIC") set(cxx_exception_flags "-fexceptions") set(cxx_no_exception_flags "-fno-exceptions") # Until version 4.3.2, GCC doesn't define a macro to indicate diff --git a/tests/performance_tests/main.cpp b/tests/performance_tests/main.cpp index 9e21bed94..51061dd6f 100644 --- a/tests/performance_tests/main.cpp +++ b/tests/performance_tests/main.cpp @@ -50,6 +50,7 @@ #include "subaddress_expand.h" #include "sc_reduce32.h" #include "cn_fast_hash.h" +#include "rct_mlsag.h" namespace po = boost::program_options; @@ -159,6 +160,15 @@ int main(int argc, char** argv) TEST_PERFORMANCE1(filter, test_cn_fast_hash, 32); TEST_PERFORMANCE1(filter, test_cn_fast_hash, 16384); + TEST_PERFORMANCE3(test_ringct_mlsag, 1, 3, false); + TEST_PERFORMANCE3(test_ringct_mlsag, 1, 5, false); + TEST_PERFORMANCE3(test_ringct_mlsag, 1, 10, false); + TEST_PERFORMANCE3(test_ringct_mlsag, 1, 100, false); + TEST_PERFORMANCE3(test_ringct_mlsag, 1, 3, true); + TEST_PERFORMANCE3(test_ringct_mlsag, 1, 5, true); + TEST_PERFORMANCE3(test_ringct_mlsag, 1, 10, true); + TEST_PERFORMANCE3(test_ringct_mlsag, 1, 100, true); + std::cout << "Tests finished. Elapsed time: " << timer.elapsed_ms() / 1000 << " sec" << std::endl; return 0; diff --git a/tests/performance_tests/rct_mlsag.h b/tests/performance_tests/rct_mlsag.h new file mode 100644 index 000000000..70fb36aec --- /dev/null +++ b/tests/performance_tests/rct_mlsag.h @@ -0,0 +1,87 @@ +// Copyright (c) 2014-2017, The Monero Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers + +#pragma once + +#include "ringct/rctSigs.h" +#include "cryptonote_basic/cryptonote_basic.h" + +#include "single_tx_test_base.h" + +template<size_t inputs, size_t ring_size, bool ver> +class test_ringct_mlsag : public single_tx_test_base +{ +public: + static const size_t cols = ring_size; + static const size_t rows = inputs; + static const size_t loop_count = 100; + + bool init() + { + if (!single_tx_test_base::init()) + return false; + + rct::keyV xtmp = rct::skvGen(rows); + rct::keyM xm = rct::keyMInit(rows, cols);// = [[None]*N] #just used to generate test public keys + sk = rct::skvGen(rows); + P = rct::keyMInit(rows, cols);// = keyM[[None]*N] #stores the public keys; + ind = 2; + for (size_t j = 0 ; j < rows ; j++) + { + for (size_t i = 0 ; i < cols ; i++) + { + xm[i][j] = rct::skGen(); + P[i][j] = rct::scalarmultBase(xm[i][j]); + } + } + for (size_t j = 0 ; j < rows ; j++) + { + sk[j] = xm[ind][j]; + } + IIccss = MLSAG_Gen(rct::identity(), P, sk, NULL, NULL, ind, rows); + + return true; + } + + bool test() + { + if (ver) + MLSAG_Ver(rct::identity(), P, IIccss, rows); + else + MLSAG_Gen(rct::identity(), P, sk, NULL, NULL, ind, rows); + return true; + } + +private: + rct::keyV sk; + rct::keyM P; + size_t ind; + rct::mgSig IIccss; +}; diff --git a/tests/unit_tests/address_from_url.cpp b/tests/unit_tests/address_from_url.cpp index 3630b59d3..f4ecbc295 100644 --- a/tests/unit_tests/address_from_url.cpp +++ b/tests/unit_tests/address_from_url.cpp @@ -32,6 +32,7 @@ #include "wallet/wallet2.h" #include "common/dns_utils.h" +#include "simplewallet/simplewallet.h" #include <string> TEST(AddressFromTXT, Success) @@ -83,7 +84,7 @@ TEST(AddressFromTXT, Failure) TEST(AddressFromURL, Success) { - const std::string addr = "44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A"; + const std::string addr = MONERO_DONATION_ADDR; bool dnssec_result = false; diff --git a/tests/unit_tests/hardfork.cpp b/tests/unit_tests/hardfork.cpp index c235f49fd..0a472a421 100644 --- a/tests/unit_tests/hardfork.cpp +++ b/tests/unit_tests/hardfork.cpp @@ -118,7 +118,7 @@ public: virtual uint64_t get_txpool_tx_count(bool include_unrelayed_txes = true) const { return 0; } virtual bool txpool_has_tx(const crypto::hash &txid) const { return false; } virtual void remove_txpool_tx(const crypto::hash& txid) {} - virtual txpool_tx_meta_t get_txpool_tx_meta(const crypto::hash& txid) const { return txpool_tx_meta_t(); } + virtual bool get_txpool_tx_meta(const crypto::hash& txid, txpool_tx_meta_t &meta) const { return false; } virtual bool get_txpool_tx_blob(const crypto::hash& txid, cryptonote::blobdata &bd) const { return false; } virtual cryptonote::blobdata get_txpool_tx_blob(const crypto::hash& txid) const { return ""; } virtual bool for_all_txpool_txes(std::function<bool(const crypto::hash&, const txpool_tx_meta_t&, const cryptonote::blobdata*)>, bool include_blob = false, bool include_unrelayed_txes = false) const { return false; } diff --git a/tests/unit_tests/http.cpp b/tests/unit_tests/http.cpp index 5e427f064..0e8f9f747 100644 --- a/tests/unit_tests/http.cpp +++ b/tests/unit_tests/http.cpp @@ -60,12 +60,18 @@ #include "md5_l.h" #include "string_tools.h" +#include "crypto/crypto.h" namespace { namespace http = epee::net_utils::http; using fields = std::unordered_map<std::string, std::string>; using auth_responses = std::vector<fields>; +void rng(size_t len, uint8_t *ptr) +{ + crypto::rand(len, ptr); +} + std::string quoted(std::string str) { str.insert(str.begin(), '"'); @@ -250,13 +256,13 @@ std::string get_nc(std::uint32_t count) TEST(HTTP_Server_Auth, NotRequired) { - http::http_server_auth auth{}; + http::http_server_auth auth{}; // no rng here EXPECT_FALSE(auth.get_response(http::http_request_info{})); } TEST(HTTP_Server_Auth, MissingAuth) { - http::http_server_auth auth{{"foo", "bar"}}; + http::http_server_auth auth{{"foo", "bar"}, rng}; EXPECT_TRUE(bool(auth.get_response(http::http_request_info{}))); { http::http_request_info request{}; @@ -267,7 +273,7 @@ TEST(HTTP_Server_Auth, MissingAuth) TEST(HTTP_Server_Auth, BadSyntax) { - http::http_server_auth auth{{"foo", "bar"}}; + http::http_server_auth auth{{"foo", "bar"}, rng}; EXPECT_TRUE(bool(auth.get_response(make_request({{u8"algorithm", "fo\xFF"}})))); EXPECT_TRUE(bool(auth.get_response(make_request({{u8"cnonce", "\"000\xFF\""}})))); EXPECT_TRUE(bool(auth.get_response(make_request({{u8"cnonce \xFF =", "\"000\xFF\""}})))); @@ -277,7 +283,7 @@ TEST(HTTP_Server_Auth, BadSyntax) TEST(HTTP_Server_Auth, MD5) { http::login user{"foo", "bar"}; - http::http_server_auth auth{user}; + http::http_server_auth auth{user, rng}; const auto response = auth.get_response(make_request(fields{})); ASSERT_TRUE(bool(response)); @@ -326,7 +332,7 @@ TEST(HTTP_Server_Auth, MD5_sess) constexpr const char cnonce[] = "not a good cnonce"; http::login user{"foo", "bar"}; - http::http_server_auth auth{user}; + http::http_server_auth auth{user, rng}; const auto response = auth.get_response(make_request(fields{})); ASSERT_TRUE(bool(response)); @@ -378,7 +384,7 @@ TEST(HTTP_Server_Auth, MD5_auth) constexpr const char qop[] = "auth"; http::login user{"foo", "bar"}; - http::http_server_auth auth{user}; + http::http_server_auth auth{user, rng}; const auto response = auth.get_response(make_request(fields{})); ASSERT_TRUE(bool(response)); @@ -446,7 +452,7 @@ TEST(HTTP_Server_Auth, MD5_sess_auth) constexpr const char qop[] = "auth"; http::login user{"foo", "bar"}; - http::http_server_auth auth{user}; + http::http_server_auth auth{user, rng}; const auto response = auth.get_response(make_request(fields{})); ASSERT_TRUE(bool(response)); @@ -523,7 +529,7 @@ TEST(HTTP_Auth, DogFood) const http::login user{"some_user", "ultimate password"}; - http::http_server_auth server{user}; + http::http_server_auth server{user, rng}; http::http_client_auth client{user}; http::http_request_info request{}; diff --git a/tests/unit_tests/memwipe.cpp b/tests/unit_tests/memwipe.cpp index 2d8980ef7..59f50cef8 100644 --- a/tests/unit_tests/memwipe.cpp +++ b/tests/unit_tests/memwipe.cpp @@ -30,7 +30,7 @@ #include <stdint.h> #include "misc_log_ex.h" -#include "common/memwipe.h" +#include "memwipe.h" // Probably won't catch the optimized out case, but at least we test // it works in the normal case diff --git a/tests/unit_tests/serialization.cpp b/tests/unit_tests/serialization.cpp index 2ef1097da..8a75ac435 100644 --- a/tests/unit_tests/serialization.cpp +++ b/tests/unit_tests/serialization.cpp @@ -38,7 +38,6 @@ #include "cryptonote_basic/cryptonote_basic.h" #include "cryptonote_basic/cryptonote_basic_impl.h" #include "ringct/rctSigs.h" -#include "serialization/serialization.h" #include "serialization/binary_archive.h" #include "serialization/json_archive.h" #include "serialization/debug_archive.h" diff --git a/tests/unit_tests/varint.cpp b/tests/unit_tests/varint.cpp index 2b31cdfdf..577ad4d26 100644 --- a/tests/unit_tests/varint.cpp +++ b/tests/unit_tests/varint.cpp @@ -36,7 +36,6 @@ #include <boost/foreach.hpp> #include "cryptonote_basic/cryptonote_basic.h" #include "cryptonote_basic/cryptonote_basic_impl.h" -#include "serialization/serialization.h" #include "serialization/binary_archive.h" #include "serialization/json_archive.h" #include "serialization/debug_archive.h" |