static void test_create_bad_config(void) { struct election_manager_s *m = NULL; GError *err; struct replication_config_s cfg0 = { NULL, _get_peers, _get_vers, NULL, ELECTION_MODE_NONE}; err = election_manager_create(&cfg0, &m); g_assert_error(err, GQ(), ERRCODE_PARAM); g_clear_error(&err); struct replication_config_s cfg1 = { _get_id, NULL, _get_vers, NULL, ELECTION_MODE_NONE}; err = election_manager_create(&cfg1, &m); g_assert_error(err, GQ(), ERRCODE_PARAM); g_clear_error(&err); struct replication_config_s cfg2 = { _get_id, _get_peers, NULL, NULL, ELECTION_MODE_NONE}; err = election_manager_create(&cfg2, &m); g_assert_error(err, GQ(), ERRCODE_PARAM); g_clear_error(&err); struct replication_config_s cfg3 = { _get_id, _get_peers, _get_vers, NULL, ELECTION_MODE_NONE+3}; err = election_manager_create(&cfg3, &m); g_assert_error(err, GQ(), ERRCODE_PARAM); g_clear_error(&err); }
static void test_election_init(void) { struct replication_config_s cfg = { _get_id, _get_peers, _get_vers, NULL, ELECTION_MODE_NONE}; struct election_manager_s *m = NULL; GError *err = NULL; err = election_manager_create(&cfg, &m); g_assert_no_error(err); for (int i=0; i<8 ;++i) { struct sqlx_name_mutable_s n = { .ns="NS", .base="base", .type="type" }; n.base = g_strdup_printf("base-%"G_GUINT32_FORMAT, g_random_int()); err = election_init(m, sqlx_name_mutable_to_const(&n)); g_assert_no_error(err); err = election_exit(m, sqlx_name_mutable_to_const(&n)); g_assert_no_error(err); g_free (n.base); } election_manager_clean(m); } static void test_create_ok(void) { struct replication_config_s cfg = { _get_id, _get_peers, _get_vers, NULL, ELECTION_MODE_NONE}; for (int i=0; i<8 ;++i) { struct election_manager_s *m = NULL; GError *err = election_manager_create(&cfg, &m); g_assert_no_error(err); election_manager_clean(m); } } int main(int argc, char **argv) { HC_TEST_INIT(argc,argv); g_test_add_func("/sqlx/election/create_bad_config", test_create_bad_config); g_test_add_func("/sqlx/election/create_ok", test_create_ok); g_test_add_func("/sqlx/election/election_init", test_election_init); return g_test_run(); }
static void test_create_ok(void) { struct replication_config_s cfg = { _get_id, _get_peers, _get_vers, NULL, ELECTION_MODE_NONE }; struct election_manager_s *m = NULL; GError *err; err = election_manager_create(&cfg, &m); g_assert_no_error(err); g_assert(&cfg == election_manager_get_config0(m)); election_manager_clean(m); }
static gboolean _configure_replication(struct sqlx_service_s *ss) { GRID_INFO("Got zookeeper URL [%s]", ss->zk_url); replication_config.mode = (ss->flag_replicable && ss->zk_url != NULL) ? ELECTION_MODE_QUORUM : ELECTION_MODE_NONE; replication_config.ctx = ss; replication_config.get_local_url = _get_url; replication_config.get_version = _get_version; replication_config.get_peers = (GError* (*)(gpointer, const struct sqlx_name_s*, gboolean, gchar ***)) ss->service_config->get_peers; GError *err = election_manager_create(&replication_config, &ss->election_manager); if (err != NULL) { GRID_WARN("Replication init failure : (%d) %s", err->code, err->message); g_clear_error(&err); return FALSE; } return TRUE; }