void build(const std::string& ip_prefix, int num_nodes) { test_utils::CassClusterPtr cluster(cass_cluster_new()); test_utils::initialize_contact_points(cluster.get(), ip_prefix, num_nodes, 0); cass_cluster_set_load_balance_round_robin(cluster.get()); cass_cluster_set_token_aware_routing(cluster.get(), cass_false); test_utils::CassSessionPtr session(test_utils::create_session(cluster.get())); for (int i = 0; i < num_nodes; ++i) { test_utils::CassStatementPtr statement( cass_statement_new("SELECT tokens, data_center FROM system.local", 0)); test_utils::CassFuturePtr future(cass_session_execute(session.get(), statement.get())); test_utils::wait_and_check_error(future.get()); test_utils::CassResultPtr result(cass_future_get_result(future.get())); const CassRow* row = cass_result_first_row(result.get()); const CassValue* data_center = cass_row_get_column_by_name(row, "data_center"); const CassValue* token_set = cass_row_get_column_by_name(row, "tokens"); CassString str; cass_value_get_string(data_center, &str.data, &str.length); std::string dc(str.data, str.length); std::string ip = cass::get_host_from_future(future.get()); test_utils::CassIteratorPtr iterator(cass_iterator_from_collection(token_set)); while (cass_iterator_next(iterator.get())) { cass_value_get_string(cass_iterator_get_value(iterator.get()), &str.data, &str.length); std::string token(str.data, str.length); tokens[boost::lexical_cast<int64_t>(token)] = Host(ip, dc); } } }
/** * Create a basic schema (system table queries won't always prepare properly) * and initialize prepared query strings. */ PrepareOnUpOrAddHostTests() : SingleSessionTest(1, 0) , keyspace(str(boost::format("ks_%s") % test_utils::generate_unique_str(uuid_gen))) { test_utils::execute_query(session, str(boost::format(test_utils::CREATE_KEYSPACE_SIMPLE_FORMAT) % keyspace % "1")); test_utils::execute_query(session, str(boost::format("USE %s") % keyspace)); for (int i = 1; i <= 3; ++i) { test_utils::execute_query(session, str(boost::format("CREATE TABLE test%d (k text PRIMARY KEY, v text)") % i)); prepared_queries_.push_back(str(boost::format("SELECT * FROM %s.test%d") % keyspace % i)); } // Make sure we equally try all available hosts cass_cluster_set_load_balance_round_robin(cluster); }