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();
}
Beispiel #3
0
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);
}
Beispiel #4
0
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;
}