diff options
-rw-r--r-- | src/blockchain_utilities/blockchain_import.cpp | 23 | ||||
-rw-r--r-- | src/cryptonote_core/blockchain_storage.h | 3 | ||||
-rw-r--r-- | src/daemon/command_parser_executor.cpp | 15 | ||||
-rw-r--r-- | src/daemon/rpc_command_executor.cpp | 23 | ||||
-rw-r--r-- | src/daemon/rpc_command_executor.h | 6 | ||||
-rw-r--r-- | src/p2p/connection_basic.cpp | 21 | ||||
-rw-r--r-- | src/p2p/connection_basic.hpp | 2 | ||||
-rw-r--r-- | src/p2p/network_throttle-detail.cpp | 2 | ||||
-rw-r--r-- | src/p2p/network_throttle-detail.hpp | 2 | ||||
-rw-r--r-- | src/p2p/network_throttle.hpp | 2 | ||||
-rw-r--r-- | src/simplewallet/simplewallet.cpp | 8 | ||||
-rw-r--r-- | src/simplewallet/simplewallet.h | 1 | ||||
-rw-r--r-- | tests/functional_tests/transactions_flow_test.cpp | 10 | ||||
-rw-r--r-- | tests/functional_tests/transactions_flow_test.h | 2 |
14 files changed, 97 insertions, 23 deletions
diff --git a/src/blockchain_utilities/blockchain_import.cpp b/src/blockchain_utilities/blockchain_import.cpp index fc00cdcba..aeed2b335 100644 --- a/src/blockchain_utilities/blockchain_import.cpp +++ b/src/blockchain_utilities/blockchain_import.cpp @@ -142,8 +142,12 @@ int pop_blocks(FakeCore& simple_core, int num_blocks) std::vector<transaction> popped_txs; for (int i=0; i < num_blocks; ++i) { +#if defined(BLOCKCHAIN_DB) && (BLOCKCHAIN_DB == DB_MEMORY) + simple_core.m_storage.debug_pop_block_from_blockchain(); +#else // simple_core.m_storage.pop_block_from_blockchain() is private, so call directly through db simple_core.m_storage.get_db().pop_block(popped_block, popped_txs); +#endif quit = 1; } @@ -615,12 +619,12 @@ int main(int argc, char* argv[]) if (! opt_batch && ! vm["batch-size"].defaulted()) { std::cerr << "Error: batch-size set, but batch option not enabled" << ENDL; - exit(1); + return 1; } if (! db_batch_size) { std::cerr << "Error: batch-size must be > 0" << ENDL; - exit(1); + return 1; } if (opt_verify && vm["batch-size"].defaulted()) { @@ -655,7 +659,7 @@ int main(int argc, char* argv[]) { BootstrapFile bootstrap; bootstrap.count_blocks(import_file_path); - exit(0); + return 0; } @@ -666,13 +670,13 @@ int main(int argc, char* argv[]) if (res) { std::cerr << "Error parsing database argument(s)" << ENDL; - exit(1); + return 1; } if (std::find(db_engines.begin(), db_engines.end(), db_engine) == db_engines.end()) { std::cerr << "Invalid database engine: " << db_engine << std::endl; - exit(1); + return 1; } LOG_PRINT_L0("database: " << db_engine); @@ -717,7 +721,7 @@ int main(int argc, char* argv[]) else { std::cerr << "database engine unrecognized" << ENDL; - exit(1); + return 1; } // for multi_db_compile: @@ -725,7 +729,7 @@ int main(int argc, char* argv[]) if (db_engine != default_db_engine) { std::cerr << "Invalid database engine for compiled version: " << db_engine << std::endl; - exit(1); + return 1; } #if BLOCKCHAIN_DB == DB_LMDB fake_core_lmdb simple_core(dirname, opt_testnet, opt_batch, mdb_flags); @@ -739,7 +743,7 @@ int main(int argc, char* argv[]) LOG_PRINT_L0("height: " << simple_core.m_storage.get_current_blockchain_height()); pop_blocks(simple_core, num_blocks); LOG_PRINT_L0("height: " << simple_core.m_storage.get_current_blockchain_height()); - exit(0); + return 0; } import_from_file(simple_core, import_file_path, block_stop); @@ -749,7 +753,7 @@ int main(int argc, char* argv[]) catch (const DB_ERROR& e) { std::cout << std::string("Error loading blockchain db: ") + e.what() + " -- shutting down now" << ENDL; - exit(1); + return 1; } // destructors called at exit: @@ -762,4 +766,5 @@ int main(int argc, char* argv[]) // LMDB fake_core, it calls Blockchain::deinit() on its object, which in turn // calls delete on its BlockchainDB derived class' object, which closes its // files. + return 0; } diff --git a/src/cryptonote_core/blockchain_storage.h b/src/cryptonote_core/blockchain_storage.h index 50a62a428..2c2fb5250 100644 --- a/src/cryptonote_core/blockchain_storage.h +++ b/src/cryptonote_core/blockchain_storage.h @@ -190,6 +190,9 @@ namespace cryptonote difficulty_type get_block_cumulative_difficulty(uint64_t height) const { return m_blocks[height].cumulative_difficulty; } uint64_t get_block_coins_generated(uint64_t height) const { return m_blocks[height].already_generated_coins; } + // use for testing only + bool debug_pop_block_from_blockchain() { return pop_block_from_blockchain(); } + private: typedef std::unordered_map<crypto::hash, size_t> blocks_by_id_index; typedef std::unordered_map<crypto::hash, transaction_chain_entry> transactions_container; diff --git a/src/daemon/command_parser_executor.cpp b/src/daemon/command_parser_executor.cpp index fd7b40be2..1b86ff269 100644 --- a/src/daemon/command_parser_executor.cpp +++ b/src/daemon/command_parser_executor.cpp @@ -251,7 +251,10 @@ bool t_command_parser_executor::print_status(const std::vector<std::string>& arg bool t_command_parser_executor::set_limit(const std::vector<std::string>& args) { - if(args.size()!=1) return false; + if(args.size()>1) return false; + if(args.size()==0) { + return m_executor.get_limit(); + } int limit; try { limit = std::stoi(args[0]); @@ -267,7 +270,10 @@ bool t_command_parser_executor::set_limit(const std::vector<std::string>& args) bool t_command_parser_executor::set_limit_up(const std::vector<std::string>& args) { - if(args.size()!=1) return false; + if(args.size()>1) return false; + if(args.size()==0) { + return m_executor.get_limit_up(); + } int limit; try { limit = std::stoi(args[0]); @@ -283,7 +289,10 @@ bool t_command_parser_executor::set_limit_up(const std::vector<std::string>& arg bool t_command_parser_executor::set_limit_down(const std::vector<std::string>& args) { - if(args.size()!=1) return false; + if(args.size()>1) return false; + if(args.size()==0) { + return m_executor.get_limit_down(); + } int limit; try { limit = std::stoi(args[0]); diff --git a/src/daemon/rpc_command_executor.cpp b/src/daemon/rpc_command_executor.cpp index 8ef91600c..79b52711a 100644 --- a/src/daemon/rpc_command_executor.cpp +++ b/src/daemon/rpc_command_executor.cpp @@ -737,6 +737,15 @@ bool t_rpc_command_executor::print_status() return true; } +bool t_rpc_command_executor::get_limit() +{ + int limit_down = epee::net_utils::connection_basic::get_rate_down_limit( ); + int limit_up = epee::net_utils::connection_basic::get_rate_up_limit( ); + std::cout << "limit-down is " << limit_down/1024 << " kB/s" << std::endl; + std::cout << "limit-up is " << limit_up/1024 << " kB/s" << std::endl; + return true; +} + bool t_rpc_command_executor::set_limit(int limit) { epee::net_utils::connection_basic::set_rate_down_limit( limit ); @@ -746,6 +755,13 @@ bool t_rpc_command_executor::set_limit(int limit) return true; } +bool t_rpc_command_executor::get_limit_up() +{ + int limit_up = epee::net_utils::connection_basic::get_rate_up_limit( ); + std::cout << "limit-up is " << limit_up/1024 << " kB/s" << std::endl; + return true; +} + bool t_rpc_command_executor::set_limit_up(int limit) { epee::net_utils::connection_basic::set_rate_up_limit( limit ); @@ -753,6 +769,13 @@ bool t_rpc_command_executor::set_limit_up(int limit) return true; } +bool t_rpc_command_executor::get_limit_down() +{ + int limit_down = epee::net_utils::connection_basic::get_rate_down_limit( ); + std::cout << "limit-down is " << limit_down/1024 << " kB/s" << std::endl; + return true; +} + bool t_rpc_command_executor::set_limit_down(int limit) { epee::net_utils::connection_basic::set_rate_down_limit( limit ); diff --git a/src/daemon/rpc_command_executor.h b/src/daemon/rpc_command_executor.h index 43b8a9fe0..21229c577 100644 --- a/src/daemon/rpc_command_executor.h +++ b/src/daemon/rpc_command_executor.h @@ -99,6 +99,12 @@ public: bool print_status(); + bool get_limit(); + + bool get_limit_up(); + + bool get_limit_down(); + bool set_limit(int limit); bool set_limit_up(int limit); diff --git a/src/p2p/connection_basic.cpp b/src/p2p/connection_basic.cpp index 0454f30e3..d3f6415c5 100644 --- a/src/p2p/connection_basic.cpp +++ b/src/p2p/connection_basic.cpp @@ -199,6 +199,23 @@ void connection_basic::set_rate_down_limit(uint64_t limit) { save_limit_to_file(limit); } +uint64_t connection_basic::get_rate_up_limit() { + uint64_t limit; + { + CRITICAL_REGION_LOCAL( network_throttle_manager::m_lock_get_global_throttle_out ); + limit = network_throttle_manager::get_global_throttle_out().get_target_speed(); + } + return limit; +} + +uint64_t connection_basic::get_rate_down_limit() { + uint64_t limit; + { + CRITICAL_REGION_LOCAL( network_throttle_manager::m_lock_get_global_throttle_in ); + limit = network_throttle_manager::get_global_throttle_in().get_target_speed(); + } + return limit; +} void connection_basic::save_limit_to_file(int limit) { // saving limit to file @@ -207,12 +224,12 @@ void connection_basic::save_limit_to_file(int limit) { { CRITICAL_REGION_LOCAL( network_throttle_manager::m_lock_get_global_throttle_out ); - epee::net_utils::data_logger::get_instance().add_data("upload_limit", network_throttle_manager::get_global_throttle_out().get_terget_speed() / 1024); + epee::net_utils::data_logger::get_instance().add_data("upload_limit", network_throttle_manager::get_global_throttle_out().get_target_speed() / 1024); } { CRITICAL_REGION_LOCAL( network_throttle_manager::m_lock_get_global_throttle_in ); - epee::net_utils::data_logger::get_instance().add_data("download_limit", network_throttle_manager::get_global_throttle_in().get_terget_speed() / 1024); + epee::net_utils::data_logger::get_instance().add_data("download_limit", network_throttle_manager::get_global_throttle_in().get_target_speed() / 1024); } } diff --git a/src/p2p/connection_basic.hpp b/src/p2p/connection_basic.hpp index d8101afe4..945cd982c 100644 --- a/src/p2p/connection_basic.hpp +++ b/src/p2p/connection_basic.hpp @@ -119,6 +119,8 @@ class connection_basic { // not-templated base class for rapid developmet of som static void set_rate_up_limit(uint64_t limit); static void set_rate_down_limit(uint64_t limit); + static uint64_t get_rate_up_limit(); + static uint64_t get_rate_down_limit(); // config misc static void set_tos_flag(int tos); // ToS / QoS flag diff --git a/src/p2p/network_throttle-detail.cpp b/src/p2p/network_throttle-detail.cpp index 6fa27b62a..6e6989d44 100644 --- a/src/p2p/network_throttle-detail.cpp +++ b/src/p2p/network_throttle-detail.cpp @@ -172,7 +172,7 @@ void network_throttle::set_real_target_speed( network_speed_kbps real_target ) m_real_target_speed = real_target * 1024; } -network_speed_kbps network_throttle::get_terget_speed() +network_speed_kbps network_throttle::get_target_speed() { return m_real_target_speed / 1024; } diff --git a/src/p2p/network_throttle-detail.hpp b/src/p2p/network_throttle-detail.hpp index 063dac850..9f0003332 100644 --- a/src/p2p/network_throttle-detail.hpp +++ b/src/p2p/network_throttle-detail.hpp @@ -81,7 +81,7 @@ class network_throttle : public i_network_throttle { virtual void set_name(const std::string &name); virtual void set_target_speed( network_speed_kbps target ); virtual void set_real_target_speed( network_speed_kbps real_target ); // only for throttle_out - virtual network_speed_kbps get_terget_speed(); + virtual network_speed_kbps get_target_speed(); // add information about events: virtual void handle_trafic_exact(size_t packet_size); ///< count the new traffic/packet; the size is exact considering all network costs diff --git a/src/p2p/network_throttle.hpp b/src/p2p/network_throttle.hpp index add4daa86..b93cfc563 100644 --- a/src/p2p/network_throttle.hpp +++ b/src/p2p/network_throttle.hpp @@ -147,7 +147,7 @@ class i_network_throttle { virtual void set_name(const std::string &name)=0; virtual void set_target_speed( network_speed_kbps target )=0; virtual void set_real_target_speed(network_speed_kbps real_target)=0; - virtual network_speed_kbps get_terget_speed()=0; + virtual network_speed_kbps get_target_speed()=0; virtual void handle_trafic_exact(size_t packet_size) =0; // count the new traffic/packet; the size is exact considering all network costs virtual void handle_trafic_tcp(size_t packet_size) =0; // count the new traffic/packet; the size is as TCP, we will consider MTU etc diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index 9ac80fa9e..2b2488952 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -208,6 +208,13 @@ bool simple_wallet::viewkey(const std::vector<std::string> &args/* = std::vector return true; } +bool simple_wallet::spendkey(const std::vector<std::string> &args/* = std::vector<std::string>()*/) +{ + success_msg_writer() << string_tools::pod_to_hex(m_wallet->get_account().get_keys().m_spend_secret_key) << std::endl; + + return true; +} + bool simple_wallet::seed(const std::vector<std::string> &args/* = std::vector<std::string>()*/) { bool success = false; @@ -288,6 +295,7 @@ simple_wallet::simple_wallet() m_cmd_binder.set_handler("address", boost::bind(&simple_wallet::print_address, this, _1), "Show current wallet public address"); m_cmd_binder.set_handler("save", boost::bind(&simple_wallet::save, this, _1), "Save wallet synchronized data"); m_cmd_binder.set_handler("viewkey", boost::bind(&simple_wallet::viewkey, this, _1), "Get viewkey"); + m_cmd_binder.set_handler("spendkey", boost::bind(&simple_wallet::spendkey, this, _1), "Get spendkey"); m_cmd_binder.set_handler("seed", boost::bind(&simple_wallet::seed, this, _1), "Get deterministic seed"); m_cmd_binder.set_handler("set", boost::bind(&simple_wallet::set_variable, this, _1), "available options: seed language - Set wallet seed langage"); m_cmd_binder.set_handler("help", boost::bind(&simple_wallet::help, this, _1), "Show this help"); diff --git a/src/simplewallet/simplewallet.h b/src/simplewallet/simplewallet.h index a8fe78414..de5b3674e 100644 --- a/src/simplewallet/simplewallet.h +++ b/src/simplewallet/simplewallet.h @@ -80,6 +80,7 @@ namespace cryptonote bool close_wallet(); bool viewkey(const std::vector<std::string> &args = std::vector<std::string>()); + bool spendkey(const std::vector<std::string> &args = std::vector<std::string>()); bool seed(const std::vector<std::string> &args = std::vector<std::string>()); /*! diff --git a/tests/functional_tests/transactions_flow_test.cpp b/tests/functional_tests/transactions_flow_test.cpp index 5d88b65f2..5d276ec2a 100644 --- a/tests/functional_tests/transactions_flow_test.cpp +++ b/tests/functional_tests/transactions_flow_test.cpp @@ -112,7 +112,7 @@ uint64_t get_money_in_first_transfers(const tools::wallet2::transfer_container& bool transactions_flow_test(std::string& working_folder, std::string path_source_wallet, - std::string path_terget_wallet, + std::string path_target_wallet, std::string& daemon_addr_a, std::string& daemon_addr_b, uint64_t amount_to_transfer, size_t mix_in_factor, size_t transactions_count, size_t transactions_per_second) @@ -122,14 +122,14 @@ bool transactions_flow_test(std::string& working_folder, if(path_source_wallet.empty()) path_source_wallet = generate_random_wallet_name(); - if(path_terget_wallet.empty()) - path_terget_wallet = generate_random_wallet_name(); + if(path_target_wallet.empty()) + path_target_wallet = generate_random_wallet_name(); try { w1.generate(working_folder + "/" + path_source_wallet, ""); - w2.generate(working_folder + "/" + path_terget_wallet, ""); + w2.generate(working_folder + "/" + path_target_wallet, ""); } catch (const std::exception& e) { @@ -152,7 +152,7 @@ bool transactions_flow_test(std::string& working_folder, LOG_PRINT_GREEN("Using wallets: " << ENDL << "Source: " << w1.get_account().get_public_address_str(false) << ENDL << "Path: " << working_folder + "/" + path_source_wallet << ENDL - << "Target: " << w2.get_account().get_public_address_str(false) << ENDL << "Path: " << working_folder + "/" + path_terget_wallet, LOG_LEVEL_1); + << "Target: " << w2.get_account().get_public_address_str(false) << ENDL << "Path: " << working_folder + "/" + path_target_wallet, LOG_LEVEL_1); //lets do some money epee::net_utils::http::http_simple_client http_client; diff --git a/tests/functional_tests/transactions_flow_test.h b/tests/functional_tests/transactions_flow_test.h index 0d2f28700..95c8b397e 100644 --- a/tests/functional_tests/transactions_flow_test.h +++ b/tests/functional_tests/transactions_flow_test.h @@ -30,7 +30,7 @@ bool transactions_flow_test(std::string& working_folder, std::string path_source_wallet, - std::string path_terget_wallet, + std::string path_target_wallet, std::string& daemon_addr_a, std::string& daemon_addr_b, uint64_t amount_to_transfer, size_t mix_in_factor, size_t transactions_count, size_t transactions_per_second); |