This is an automated email from the ASF dual-hosted git repository. isapego pushed a commit to branch ignite-18583 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit e23756c71a1b5b812ca920111caae4784233f186 Author: Igor Sapego <[email protected]> AuthorDate: Tue Jan 24 13:15:09 2023 +0400 IGNITE-18583 Single node mode --- .../cpp/tests/client-test/ignite_client_test.cpp | 2 +- .../cpp/tests/client-test/ignite_runner_suite.h | 16 +++++++++++++++- modules/platforms/cpp/tests/client-test/main.cpp | 6 ++++++ .../cpp/tests/client-test/record_binary_view_test.cpp | 2 +- modules/platforms/cpp/tests/client-test/sql_test.cpp | 6 +++--- modules/platforms/cpp/tests/client-test/tables_test.cpp | 10 +++++----- .../cpp/tests/client-test/transactions_test.cpp | 2 +- modules/platforms/cpp/tests/test-common/test_utils.cpp | 12 ++++++++++-- modules/platforms/cpp/tests/test-common/test_utils.h | 17 +++++++++++++++++ 9 files changed, 59 insertions(+), 14 deletions(-) diff --git a/modules/platforms/cpp/tests/client-test/ignite_client_test.cpp b/modules/platforms/cpp/tests/client-test/ignite_client_test.cpp index 143476505d..548dff30fa 100644 --- a/modules/platforms/cpp/tests/client-test/ignite_client_test.cpp +++ b/modules/platforms/cpp/tests/client-test/ignite_client_test.cpp @@ -32,7 +32,7 @@ using namespace ignite; class client_test : public ignite_runner_suite {}; TEST_F(client_test, get_configuration) { - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); cfg.set_connection_limit(42); diff --git a/modules/platforms/cpp/tests/client-test/ignite_runner_suite.h b/modules/platforms/cpp/tests/client-test/ignite_runner_suite.h index 0801326e7d..20e152e735 100644 --- a/modules/platforms/cpp/tests/client-test/ignite_runner_suite.h +++ b/modules/platforms/cpp/tests/client-test/ignite_runner_suite.h @@ -21,6 +21,7 @@ #include "ignite/client/ignite_client_configuration.h" #include "gtest_logger.h" +#include "test_utils.h" #include <gtest/gtest.h> @@ -36,12 +37,25 @@ using namespace std::string_view_literals; */ class ignite_runner_suite : public ::testing::Test { protected: + static constexpr std::initializer_list<std::string_view> SINGLE_NODE_ADDR = {"127.0.0.1:10942"sv}; static constexpr std::initializer_list<std::string_view> NODE_ADDRS = {"127.0.0.1:10942"sv, "127.0.0.1:10943"sv}; static constexpr std::string_view TABLE_1 = "tbl1"sv; static constexpr const char *KEY_COLUMN = "key"; static constexpr const char *VAL_COLUMN = "val"; + /** + * Get node addresses to use for tests. + * + * @return Addresses. + */ + static std::initializer_list<std::string_view> get_node_addrs() { + if (single_node_mode()) + return SINGLE_NODE_ADDR; + + return NODE_ADDRS; + } + /** * Get logger. * @@ -72,7 +86,7 @@ protected: * Clear table @c TABLE_1. */ static void clear_table1() { - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); auto client = ignite_client::start(cfg, std::chrono::seconds(30)); diff --git a/modules/platforms/cpp/tests/client-test/main.cpp b/modules/platforms/cpp/tests/client-test/main.cpp index 90cb01ecc1..00a871e5d6 100644 --- a/modules/platforms/cpp/tests/client-test/main.cpp +++ b/modules/platforms/cpp/tests/client-test/main.cpp @@ -16,6 +16,7 @@ */ #include "ignite_runner.h" +#include "test_utils.h" #include <ignite/common/ignite_error.h> @@ -58,6 +59,11 @@ void set_process_abort_handler(std::function<void(int)> handler) { } int main(int argc, char **argv) { + if (ignite::single_node_mode()) + std::cout << "Tests run in a single-node mode." << std::endl; + else + std::cout << "Tests run in a multi-node mode." << std::endl; + ignite::IgniteRunner runner; set_process_abort_handler([&](int signal) { diff --git a/modules/platforms/cpp/tests/client-test/record_binary_view_test.cpp b/modules/platforms/cpp/tests/client-test/record_binary_view_test.cpp index 01fc414f8f..e282a963ab 100644 --- a/modules/platforms/cpp/tests/client-test/record_binary_view_test.cpp +++ b/modules/platforms/cpp/tests/client-test/record_binary_view_test.cpp @@ -33,7 +33,7 @@ using namespace ignite; class record_binary_view_test : public ignite_runner_suite { protected: void SetUp() override { - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); m_client = ignite_client::start(cfg, std::chrono::seconds(30)); diff --git a/modules/platforms/cpp/tests/client-test/sql_test.cpp b/modules/platforms/cpp/tests/client-test/sql_test.cpp index 97c2bbca8f..b1e6ec67d4 100644 --- a/modules/platforms/cpp/tests/client-test/sql_test.cpp +++ b/modules/platforms/cpp/tests/client-test/sql_test.cpp @@ -33,7 +33,7 @@ using namespace ignite; class sql_test : public ignite_runner_suite { protected: static void SetUpTestSuite() { - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); auto client = ignite_client::start(cfg, std::chrono::seconds(30)); @@ -50,7 +50,7 @@ protected: } static void TearDownTestSuite() { - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); auto client = ignite_client::start(cfg, std::chrono::seconds(30)); @@ -59,7 +59,7 @@ protected: } void SetUp() override { - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); m_client = ignite_client::start(cfg, std::chrono::seconds(30)); diff --git a/modules/platforms/cpp/tests/client-test/tables_test.cpp b/modules/platforms/cpp/tests/client-test/tables_test.cpp index 04f6bc49e0..a56d562fa4 100644 --- a/modules/platforms/cpp/tests/client-test/tables_test.cpp +++ b/modules/platforms/cpp/tests/client-test/tables_test.cpp @@ -34,7 +34,7 @@ using namespace ignite; class tables_test : public ignite_runner_suite {}; TEST_F(tables_test, tables_get_table) { - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); auto client = ignite_client::start(cfg, std::chrono::seconds(30)); @@ -49,7 +49,7 @@ TEST_F(tables_test, tables_get_table) { } TEST_F(tables_test, tables_get_table_async_promises) { - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); auto clientPromise = std::make_shared<std::promise<ignite_client>>(); @@ -78,7 +78,7 @@ TEST_F(tables_test, tables_get_table_async_callbacks) { auto operation1 = std::make_shared<std::promise<void>>(); auto operation2 = std::make_shared<std::promise<void>>(); - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); ignite_client client; @@ -130,7 +130,7 @@ TEST_F(tables_test, tables_get_table_async_callbacks) { } TEST_F(tables_test, tables_get_tables) { - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); auto client = ignite_client::start(cfg, std::chrono::seconds(30)); @@ -146,7 +146,7 @@ TEST_F(tables_test, tables_get_tables) { } TEST_F(tables_test, tables_get_tables_async_promises) { - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); auto client = ignite_client::start(cfg, std::chrono::seconds(30)); diff --git a/modules/platforms/cpp/tests/client-test/transactions_test.cpp b/modules/platforms/cpp/tests/client-test/transactions_test.cpp index f9b522476a..744387a95a 100644 --- a/modules/platforms/cpp/tests/client-test/transactions_test.cpp +++ b/modules/platforms/cpp/tests/client-test/transactions_test.cpp @@ -38,7 +38,7 @@ protected: void SetUp() override { clear_table1(); - ignite_client_configuration cfg{NODE_ADDRS}; + ignite_client_configuration cfg{get_node_addrs()}; cfg.set_logger(get_logger()); m_client = ignite_client::start(cfg, std::chrono::seconds(30)); diff --git a/modules/platforms/cpp/tests/test-common/test_utils.cpp b/modules/platforms/cpp/tests/test-common/test_utils.cpp index 977fa2667d..21d43d14e8 100644 --- a/modules/platforms/cpp/tests/test-common/test_utils.cpp +++ b/modules/platforms/cpp/tests/test-common/test_utils.cpp @@ -24,6 +24,14 @@ namespace ignite { +std::optional<std::string> get_env(const std::string& name) { + const char *env = std::getenv(name.c_str()); + if (!env) + return {}; + + return env; +} + /** * Checks if the path looks like binary release home directory. * Internally checks for presence of core library. @@ -64,9 +72,9 @@ std::string resolveIgniteHome(const std::string &path) { if (!error && std::filesystem::is_directory(path)) return home.string(); - const char *env = std::getenv("IGNITE_HOME"); + auto env = get_env("IGNITE_HOME"); if (env) { - home = std::filesystem::canonical(env, error); + home = std::filesystem::canonical(env.value(), error); if (!error && std::filesystem::is_directory(home)) return home.string(); } diff --git a/modules/platforms/cpp/tests/test-common/test_utils.h b/modules/platforms/cpp/tests/test-common/test_utils.h index 81d89be641..84f257e0cf 100644 --- a/modules/platforms/cpp/tests/test-common/test_utils.h +++ b/modules/platforms/cpp/tests/test-common/test_utils.h @@ -27,6 +27,23 @@ namespace ignite { +/** + * Get environment variable. + * + * @param name Variable name. + * @return Variable value if it is set, or @c std::nullopt otherwise. + */ +std::optional<std::string> get_env(const std::string& name); + +/** + * Check whether tests run in single node mode. + * + * @return @c true if tests run in single node mode. + */ +static bool single_node_mode() { + return ignite::get_env("IGNITE_CPP_TESTS_USE_SINGLE_NODE").has_value(); +} + /** * Resolve IGNITE_HOME directory. Resolution is performed in several steps: * 1) Check for path provided as argument.
