Esempio n. 1
0
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])));
			}
		}
	}
}
Esempio n. 2
0
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");
}
Esempio n. 3
0
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");
}
Esempio n. 4
0
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)));
}