int main (int argc, char *argv[]) { mongoc_init(); repl_1 = ha_replica_set_new("shardtest1"); node_1_1 = ha_replica_set_add_replica(repl_1, "shardtest1_1"); node_1_2 = ha_replica_set_add_replica(repl_1, "shardtest1_2"); node_1_3 = ha_replica_set_add_replica(repl_1, "shardtest1_3"); repl_2 = ha_replica_set_new("shardtest2"); node_2_1 = ha_replica_set_add_replica(repl_2, "shardtest2_1"); node_2_2 = ha_replica_set_add_replica(repl_2, "shardtest2_2"); node_2_3 = ha_replica_set_add_replica(repl_2, "shardtest2_3"); cluster = ha_sharded_cluster_new("cluster1"); ha_sharded_cluster_add_replica_set(cluster, repl_1); ha_sharded_cluster_add_replica_set(cluster, repl_2); ha_sharded_cluster_add_config(cluster, "config1"); ha_sharded_cluster_add_router(cluster, "router1"); ha_sharded_cluster_add_router(cluster, "router2"); ha_sharded_cluster_start(cluster); ha_sharded_cluster_wait_for_healthy(cluster); run_test("/ShardedCluster/basic", test1); ha_sharded_cluster_shutdown(cluster); mongoc_cleanup(); return 0; }
void ha_sharded_cluster_start (ha_sharded_cluster_t *cluster) { bson_string_t *configopt; struct stat st; ha_node_t *iter; char *cmd; int i; bson_return_if_fail(cluster); if (!stat(cluster->name, &st)) { if (S_ISDIR(st.st_mode)) { /* Ayyyeeeeeee */ cmd = bson_strdup_printf("rm -rf \"%s\"", cluster->name); fprintf(stderr, "%s\n", cmd); system(cmd); bson_free(cmd); } } if (!!mkdir(cluster->name, 0750)) { fprintf(stderr, "Failed to create directory \"%s\"\n", cluster->name); abort(); } for (i = 0; i < 12; i++) { if (cluster->replicas[i]) { ha_replica_set_start(cluster->replicas[i]); } } configopt = bson_string_new (NULL); for (iter = cluster->configs; iter; iter = iter->next) { ha_node_setup(iter); ha_node_restart(iter); bson_string_append_printf (configopt, "127.0.0.1:%hu%s", iter->port, iter->next ? "," : ""); } sleep (5); for (iter = cluster->routers; iter; iter = iter->next) { bson_free (iter->configopt); iter->configopt = bson_strdup (configopt->str); ha_node_setup (iter); ha_node_restart (iter); } ha_sharded_cluster_wait_for_healthy (cluster); for (i = 0; i < 12; i++) { if (cluster->replicas[i]) { ha_config_add_shard (cluster->routers, cluster->replicas[i]); } } bson_string_free (configopt, TRUE); }