From 61ff7f4c7a58e8881f633109ab6523433ee60421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wo=CC=81jcik?= <3044353+pwojcikdev@users.noreply.github.com> Date: Wed, 17 Jan 2024 16:22:21 +0100 Subject: [PATCH] Fix unique directories usage in tests --- nano/core_test/block_store.cpp | 1 + nano/core_test/node.cpp | 2 +- nano/core_test/wallet.cpp | 38 +++++++++++++++++----------------- nano/secure/utility.cpp | 12 +++-------- nano/store/lmdb/lmdb_env.cpp | 2 ++ 5 files changed, 26 insertions(+), 29 deletions(-) diff --git a/nano/core_test/block_store.cpp b/nano/core_test/block_store.cpp index 48808e2f..fa2bd328 100644 --- a/nano/core_test/block_store.cpp +++ b/nano/core_test/block_store.cpp @@ -675,6 +675,7 @@ TEST (mdb_block_store, bad_path) try { auto path = nano::unique_path (); + path /= "data.ldb"; { std::ofstream stream (path.c_str ()); } diff --git a/nano/core_test/node.cpp b/nano/core_test/node.cpp index d7fe9762..c6f8861c 100644 --- a/nano/core_test/node.cpp +++ b/nano/core_test/node.cpp @@ -4310,7 +4310,7 @@ TEST (node_config, node_id_private_key_persistence) // create the directory and the file auto path = nano::unique_path (); - ASSERT_TRUE (std::filesystem::create_directories (path)); + ASSERT_TRUE (std::filesystem::exists (path)); auto priv_key_filename = path / "node_id_private.key"; // check that the key generated is random when the key does not exist diff --git a/nano/core_test/wallet.cpp b/nano/core_test/wallet.cpp index b750538b..c2774952 100644 --- a/nano/core_test/wallet.cpp +++ b/nano/core_test/wallet.cpp @@ -12,7 +12,7 @@ unsigned constexpr nano::wallet_store::version_current; TEST (wallet, no_special_keys_accounts) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -33,7 +33,7 @@ TEST (wallet, no_special_keys_accounts) TEST (wallet, no_key) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -48,7 +48,7 @@ TEST (wallet, no_key) TEST (wallet, fetch_locked) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -70,7 +70,7 @@ TEST (wallet, fetch_locked) TEST (wallet, retrieval) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -92,7 +92,7 @@ TEST (wallet, retrieval) TEST (wallet, empty_iteration) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -106,7 +106,7 @@ TEST (wallet, empty_iteration) TEST (wallet, one_item_iteration) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -128,7 +128,7 @@ TEST (wallet, one_item_iteration) TEST (wallet, two_item_iteration) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); nano::keypair key1; nano::keypair key2; @@ -267,7 +267,7 @@ TEST (wallet, spend_no_previous) TEST (wallet, find_none) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -280,7 +280,7 @@ TEST (wallet, find_none) TEST (wallet, find_existing) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -299,7 +299,7 @@ TEST (wallet, find_existing) TEST (wallet, rekey) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -371,7 +371,7 @@ TEST (account, encode_fail) TEST (wallet, hash_password) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -420,7 +420,7 @@ TEST (fan, change) TEST (wallet, reopen_default_password) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); auto transaction (env.tx_begin_write ()); ASSERT_FALSE (init); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -456,7 +456,7 @@ TEST (wallet, reopen_default_password) TEST (wallet, representative) { auto error (false); - nano::store::lmdb::env env (error, nano::unique_path ()); + nano::store::lmdb::env env (error, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (error); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -477,7 +477,7 @@ TEST (wallet, representative) TEST (wallet, serialize_json_empty) { auto error (false); - nano::store::lmdb::env env (error, nano::unique_path ()); + nano::store::lmdb::env env (error, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (error); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -502,7 +502,7 @@ TEST (wallet, serialize_json_empty) TEST (wallet, serialize_json_one) { auto error (false); - nano::store::lmdb::env env (error, nano::unique_path ()); + nano::store::lmdb::env env (error, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (error); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -531,7 +531,7 @@ TEST (wallet, serialize_json_one) TEST (wallet, serialize_json_password) { auto error (false); - nano::store::lmdb::env env (error, nano::unique_path ()); + nano::store::lmdb::env env (error, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (error); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -564,7 +564,7 @@ TEST (wallet, serialize_json_password) TEST (wallet_store, move) { auto error (false); - nano::store::lmdb::env env (error, nano::unique_path ()); + nano::store::lmdb::env env (error, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (error); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -722,7 +722,7 @@ TEST (wallet, insert_locked) TEST (wallet, deterministic_keys) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; @@ -765,7 +765,7 @@ TEST (wallet, deterministic_keys) TEST (wallet, reseed) { bool init; - nano::store::lmdb::env env (init, nano::unique_path ()); + nano::store::lmdb::env env (init, nano::unique_path () / "wallet.ldb"); ASSERT_FALSE (init); auto transaction (env.tx_begin_write ()); nano::kdf kdf{ nano::dev::network_params.kdf_work }; diff --git a/nano/secure/utility.cpp b/nano/secure/utility.cpp index 19c58362..0ed99eb9 100644 --- a/nano/secure/utility.cpp +++ b/nano/secure/utility.cpp @@ -46,6 +46,9 @@ std::filesystem::path nano::unique_path (nano::networks network) } auto result = working_path (network) / random_string; + + std::filesystem::create_directories (result); + all_unique_paths.push_back (result); return result; } @@ -60,15 +63,6 @@ void nano::remove_temporary_directories () { std::cerr << "Could not remove temporary directory: " << ec.message () << std::endl; } - - // lmdb creates a -lock suffixed file for its MDB_NOSUBDIR databases - auto lockfile = path; - lockfile += "-lock"; - std::filesystem::remove (lockfile, ec); - if (ec) - { - std::cerr << "Could not remove temporary lock file: " << ec.message () << std::endl; - } } } diff --git a/nano/store/lmdb/lmdb_env.cpp b/nano/store/lmdb/lmdb_env.cpp index 9e627c76..e66511da 100644 --- a/nano/store/lmdb/lmdb_env.cpp +++ b/nano/store/lmdb/lmdb_env.cpp @@ -8,6 +8,8 @@ nano::store::lmdb::env::env (bool & error_a, std::filesystem::path const & path_ void nano::store::lmdb::env::init (bool & error_a, std::filesystem::path const & path_a, nano::store::lmdb::env::options options_a) { + debug_assert (path_a.extension () == ".ldb", "invalid filename extension for lmdb database file"); + boost::system::error_code error_mkdir, error_chmod; if (path_a.has_parent_path ()) {