static void test_session_connect_disconnect_notify(struct test_session *session) { enum test_session_state state = get_session_state(session); enum test_session_state next_state = state; DBusMessage *msg; LOG("state %d session %p %s state %d", state, session, session->notify_path, session->info->state); switch (state) { case TEST_SESSION_STATE_0: if (session->info->state == CONNMAN_SESSION_STATE_DISCONNECTED) next_state = TEST_SESSION_STATE_1; if (session->info->state == CONNMAN_SESSION_STATE_CONNECTED) { LOG("state was already connected, continuing"); next_state = TEST_SESSION_STATE_2; } break; case TEST_SESSION_STATE_1: if (session->info->state >= CONNMAN_SESSION_STATE_CONNECTED) next_state = TEST_SESSION_STATE_2; break; case TEST_SESSION_STATE_2: if (session->info->state == CONNMAN_SESSION_STATE_DISCONNECTED) next_state = TEST_SESSION_STATE_3; default: break; } if (state == next_state) return; set_session_state(session, next_state); LOG("next_state %d", next_state); switch (next_state) { case TEST_SESSION_STATE_1: msg = session_connect(session->connection, session); g_assert(msg); dbus_message_unref(msg); return; case TEST_SESSION_STATE_2: msg = session_disconnect(session->connection, session); g_assert(msg); dbus_message_unref(msg); return; case TEST_SESSION_STATE_3: util_session_cleanup(session); util_idle_call(session->fix, util_quit_loop, util_session_destroy); return; default: return; } }
static void test_session_policy_notify(struct test_session *session) { enum test_session_state state = get_session_state(session); enum test_session_state next_state = state; DBusMessage *msg; LOG("state %d session %p %s state %d", state, session, session->notify_path, session->info->state); switch (state) { case TEST_SESSION_STATE_0: if (session->info->state == CONNMAN_SESSION_STATE_DISCONNECTED) next_state = TEST_SESSION_STATE_1; break; case TEST_SESSION_STATE_1: if (session->info->state >= CONNMAN_SESSION_STATE_CONNECTED) next_state = TEST_SESSION_STATE_2; break; case TEST_SESSION_STATE_2: if (session->info->state == CONNMAN_SESSION_STATE_DISCONNECTED) next_state = TEST_SESSION_STATE_3; default: break; } if (state == next_state) return; set_session_state(session, next_state); LOG("next_state %d", next_state); switch (next_state) { case TEST_SESSION_STATE_1: policy_allowed_bearers("ethernet"); msg = session_connect(session->connection, session); g_assert(msg); dbus_message_unref(msg); return; case TEST_SESSION_STATE_2: policy_allowed_bearers(""); return; case TEST_SESSION_STATE_3: policy_remove_file(); util_session_cleanup(session); util_idle_call(session->fix, util_quit_loop, util_session_destroy); return; default: return; } }
static void test_session_connect_disconnect_notify(struct test_session *session) { enum test_session_state state = get_session_state(session); enum test_session_state next_state = state; DBusMessage *msg; LOG("state %d session %p %s online %d", state, session, session->notify_path, session->info->online); switch (state) { case TEST_SESSION_STATE_0: if (session->info->online == FALSE) next_state = TEST_SESSION_STATE_1; break; case TEST_SESSION_STATE_1: if (session->info->online == TRUE) next_state = TEST_SESSION_STATE_2; break; case TEST_SESSION_STATE_2: if (session->info->online == FALSE) next_state = TEST_SESSION_STATE_3; default: break; } if (state == next_state) return; set_session_state(session, next_state); LOG("next_state %d", next_state); switch (next_state) { case TEST_SESSION_STATE_1: msg = session_connect(session->connection, session); g_assert(msg != NULL); dbus_message_unref(msg); return; case TEST_SESSION_STATE_2: msg = session_disconnect(session->connection, session); g_assert(msg != NULL); dbus_message_unref(msg); return; case TEST_SESSION_STATE_3: util_session_cleanup(session); util_idle_call(session->fix, util_quit_loop, util_session_destroy); return; default: return; } }
static void test_session_connect_free_ride_notify(struct test_session *session) { struct test_session *session0 = get_session(session, 0); struct test_session *session1 = get_session(session, 1); enum test_session_state state = get_session_state(session); enum test_session_state next_state = state; DBusMessage *msg; LOG("state %d session %p %s state %d", state, session, session->notify_path, session->info->state); switch (state) { case TEST_SESSION_STATE_0: if (session0->info->state == CONNMAN_SESSION_STATE_DISCONNECTED && session1->info->state == CONNMAN_SESSION_STATE_DISCONNECTED) { next_state = TEST_SESSION_STATE_1; } break; case TEST_SESSION_STATE_1: if (session0->info->state >= CONNMAN_SESSION_STATE_CONNECTED && session1->info->state >= CONNMAN_SESSION_STATE_CONNECTED) { next_state = TEST_SESSION_STATE_2; } break; case TEST_SESSION_STATE_2: if (session0->info->state == CONNMAN_SESSION_STATE_DISCONNECTED && session1->info->state == CONNMAN_SESSION_STATE_DISCONNECTED) { next_state = TEST_SESSION_STATE_3; } break; case TEST_SESSION_STATE_3: return; } if (state == next_state) return; set_session_state(session, next_state); LOG("next_state %d", next_state); switch (next_state) { case TEST_SESSION_STATE_0: return; case TEST_SESSION_STATE_1: msg = session_connect(session0->connection, session0); g_assert(msg != NULL); dbus_message_unref(msg); return; case TEST_SESSION_STATE_2: msg = session_disconnect(session0->connection, session0); g_assert(msg != NULL); dbus_message_unref(msg); return; case TEST_SESSION_STATE_3: util_session_cleanup(session0); util_session_cleanup(session1); util_idle_call(session0->fix, util_quit_loop, util_session_destroy); return; } }
int main(int argc, char* argv[]){ struct qz_config* conf = init_config(); tagger_pid = tagger_init(conf, argv); printf( "tagger_pid = %d\n", tagger_pid); signal( SIGTERM, cleanup ); int j; xmlHashTablePtr ht = xmlHashCreate(NBRTESTS); struct handler_args hargs[NBRTESTS]; struct session* s; const char* kw[] = { "host", "dbname", "user", "password", "application_name", NULL }; const char* vals[] = { "localhost", "info", "qz", "42", "qztest", NULL }; const char* parts[] = { "qz", "one", "two", "three", NULL }; for(j=0; j<NBRTESTS; j++){ fprintf(stderr, "setup_session %d\n", j); hargs[j].log = fopen("testsession.log", "w"); hargs[j].conf = conf; hargs[j].uri_parts = parts; setup_session(&(hargs[j]), ht, conf); hargs[j].uri_parts = NULL; } s = session_from_hargs(&hargs[NBRTESTS-1], ht, conf); s->is_logged_in = true; s->logged_in_time = time(NULL); s = session_from_hargs(&hargs[NBRTESTS-2], ht, conf); s->is_logged_in = true; s->logged_in_time = time(NULL); s->conn = PQconnectdbParams(kw, vals, 0); s = session_from_hargs(&hargs[NBRTESTS-3], ht, conf); s->is_logged_in = false; s->logged_in_time = time(NULL); s->conn = PQconnectdbParams(kw, vals, 0); for(j=0; j<NBRTESTS; j++){ s = session_from_hargs(&hargs[j], ht, conf); printf("session_state[%d]: %s\n", j, state_text( get_session_state(&(hargs[j])) )); //fclose( hargs[j].log ); } printf("sleeping\n"); sleep(5); printf("fin\n"); for(j=0; j<100; j++){ if (s->conn != NULL){ PQfinish(s->conn); s->conn = NULL; } } kill( tagger_pid, 15); int status; waitpid(tagger_pid, &status, 0); fprintf(stderr, "killed tagger pid %d waitpid status = %d\n", tagger_pid, status); return 0; }