END_TEST START_TEST (test_kvpair_storage) { char* args[] = {"arg1", "arg2", NULL}; kvpair_t *pair = mk_kvpair("some_key", args); fail_if(pair == NULL, "Didn't create a pair."); fail_unless(strcmp(pair->key, "some_key") == 0, "Key is broken."); fail_unless(strcmp(pair->values[0], "arg1") == 0, "First value is broken."); fail_unless(strcmp(pair->values[1], "arg2") == 0, "Second value is broken."); fail_unless(pair->used_values == 2, "Wrong number of used values."); fail_unless(pair->allocated_values >= pair->used_values, "Allocated values can't be smaller than used values."); fail_unless(pair->next == NULL, "Next pointer is non-null."); fail_unless(save_kvpairs(handle, pair, db_loc), "Failed to save kv pairs."); kvpair_t *dbpair = load_kvpairs(handle, db_loc); check_pair_equality(pair, dbpair); free_kvpair(pair); free_kvpair(dbpair); }
void* run_conflate(void *arg) { conflate_handle_t* handle = (conflate_handle_t*)arg; /* Before connecting and all that, load the stored config */ kvpair_t* conf = load_kvpairs(handle, handle->conf->save_path); if (conf) { handle->conf->new_config(handle->conf->userdata, conf); free_kvpair(conf); } xmpp_log_t strophe_logger = { &conflate_strophe_logger, handle }; /* Run forever */ for (;;) { handle->ctx = xmpp_ctx_new(NULL, &strophe_logger); assert(handle->ctx); handle->conn = xmpp_conn_new(handle->ctx); assert(handle->conn); /* Use the stored jid if there is one */ char *db_jid = conflate_get_private(handle, STORED_JID_KEY, handle->conf->save_path); if (db_jid) { CONFLATE_LOG(handle, LOG_LVL_DEBUG, "Using jid from db: %s", db_jid); xmpp_conn_set_jid(handle->conn, db_jid); free(db_jid); } else { CONFLATE_LOG(handle, LOG_LVL_DEBUG, "Using provided jid: %s", handle->conf->jid); xmpp_conn_set_jid(handle->conn, handle->conf->jid); } xmpp_conn_set_pass(handle->conn, handle->conf->pass); xmpp_connect_client(handle->conn, handle->conf->host, 0, conn_handler, handle); xmpp_run(handle->ctx); CONFLATE_LOG(handle, LOG_LVL_INFO, "xmpp_run exited"); xmpp_conn_release(handle->conn); xmpp_ctx_free(handle->ctx); sleep(5); CONFLATE_LOG(handle, LOG_LVL_INFO, "reconnecting"); } CONFLATE_LOG(handle, LOG_LVL_FATAL, "Exited an infinite loop."); return NULL; }