static void test_enable_at_start(session &sess) { auto unique_hosts = get_unique_hosts(sess); std::vector<uint32_t> backends = { 0, 3 }; // for (auto it = unique_hosts.begin(); it != unique_hosts.end(); ++it) { // std::cout << std::get<0>(*it) << " " << std::get<1>(*it) << " " << std::get<2>(*it) << std::endl; // } BOOST_REQUIRE_EQUAL(unique_hosts.size(), groups_count * nodes_count * backends.size()); for (size_t group_id = 0; group_id < groups_count; ++group_id) { for (size_t i = 0; i < nodes_count; ++i) { for (size_t j = 0; j < backends.size(); ++j) { size_t node_id = group_id * nodes_count + i; server_node &node = global_data->nodes[node_id]; std::string host = node.remote().to_string(); auto tuple = std::make_tuple(host, group_id, backends[j]); BOOST_REQUIRE_MESSAGE(unique_hosts.find(tuple) != unique_hosts.end(), "Host must exist: " + host + ", group: " + std::to_string(static_cast<long long>(group_id)) + ", backend: " + std::to_string(static_cast<long long>(backends[j]))); } } } }
static void test_enable_backend_at_empty_node(session &sess) { server_node &node = global_data->nodes.back(); std::string host = node.remote().to_string(); auto tuple = std::make_tuple(host, groups_count, 1); auto unique_hosts = get_unique_hosts(sess); BOOST_REQUIRE_MESSAGE(unique_hosts.find(tuple) == unique_hosts.end(), "Host must not exist: " + host + ", group: 2, backend: 1"); ELLIPTICS_REQUIRE(enable_result, sess.enable_backend(node.remote(), 1)); // Wait 0.1 secs to ensure that route list was changed usleep(100 * 1000); unique_hosts = get_unique_hosts(sess); BOOST_REQUIRE_MESSAGE(unique_hosts.find(tuple) != unique_hosts.end(), "Host must exist: " + host + ", group: 2, backend: 1"); }
static void test_change_group(session &sess) { server_node &node = global_data->nodes.back(); const uint32_t backend_id = 4; const int old_group_id = 2; const int new_group_id = 10; std::string host = node.remote().to_string(); auto old_tuple = std::make_tuple(host, old_group_id, backend_id); auto new_tuple = std::make_tuple(host, new_group_id, backend_id); auto unique_hosts = get_unique_hosts(sess); BOOST_REQUIRE_MESSAGE(unique_hosts.find(old_tuple) != unique_hosts.end(), "Host must not exist: " + host + ", group: 2, backend: 1"); BOOST_REQUIRE_MESSAGE(unique_hosts.find(new_tuple) == unique_hosts.end(), "Host must not exist: " + host + ", group: 10, backend: 1"); server_config server = node.config(); config_data &backend = server.backends[backend_id]; backend("group", new_group_id); server.write(node.config_path()); ELLIPTICS_REQUIRE(stop_result, sess.disable_backend(node.remote(), backend_id)); ELLIPTICS_REQUIRE(start_result, sess.enable_backend(node.remote(), backend_id)); // Wait 0.1 secs to ensure that route list was changed usleep(100 * 1000); unique_hosts = get_unique_hosts(sess); BOOST_REQUIRE_MESSAGE(unique_hosts.find(old_tuple) == unique_hosts.end(), "Host must not exist: " + host + ", group: 2, backend: 1"); BOOST_REQUIRE_MESSAGE(unique_hosts.find(new_tuple) != unique_hosts.end(), "Host must not exist: " + host + ", group: 10, backend: 1"); }
static void test_enable_backend(session &sess, uint32_t backend_id) { server_node &node = get_setup()->nodes[0]; std::string host = node.remote().to_string(); auto tuple = std::make_tuple(host, 0, backend_id); auto unique_hosts = get_unique_hosts(sess); BOOST_REQUIRE_MESSAGE(unique_hosts.find(tuple) == unique_hosts.end(), "Host must not exist: " + host + ", group: 0, backend: " + std::to_string(static_cast<long long>(backend_id))); ELLIPTICS_REQUIRE(enable_result, sess.enable_backend(node.remote(), backend_id)); // Wait 0.1 secs to ensure that route list was changed usleep(100 * 1000); unique_hosts = get_unique_hosts(sess); BOOST_REQUIRE_MESSAGE(unique_hosts.find(tuple) != unique_hosts.end(), "Host must exist: " + host + ", group: 0, backend: " + std::to_string(static_cast<long long>(backend_id))); }