/* This test outputs TAP syntax: http://testanything.org/ */ int main (int argc, char *argv[]) { long start_tv_sec, start_tv_usec; long end_tv_sec, end_tv_usec; int i; DBusMessage *method; DBusConnection *conn; DBusError error; /* Time each iteration and make sure it doesn't take more than 5 seconds to complete. Outside influences may cause connections to take longer but if it does and we are stuck in a poll call then we know the stuck in poll bug has come back to haunt us */ printf ("# Testing stuck in poll\n"); dbus_error_init (&error); conn = dbus_bus_get (DBUS_BUS_SESSION, &error); /* run 100 times to make sure */ for (i = 0; i < 100; i++) { long delta; _dbus_get_monotonic_time (&start_tv_sec, &start_tv_usec); _run_iteration (conn); _dbus_get_monotonic_time (&end_tv_sec, &end_tv_usec); /* we just care about seconds */ delta = end_tv_sec - start_tv_sec; printf ("ok %d - %lis\n", i + 1, delta); if (delta >= 5) { printf ("Bail out! Looks like we might have been be stuck in poll ***\n"); exit (1); } } method = dbus_message_new_method_call ("org.freedesktop.TestSuiteEchoService", "/org/freedesktop/TestSuite", "org.freedesktop.TestSuite", "Exit"); dbus_connection_send (conn, method, NULL); dbus_message_unref (method); printf ("# Testing completed\n1..%d\n", i); exit (0); }
/* This test outputs TAP syntax: http://testanything.org/ */ int main (int argc, char *argv[]) { long start_tv_sec, start_tv_usec; long end_tv_sec, end_tv_usec; int i; DBusMessage *method; DBusConnection *conn; DBusError error; printf ("# Testing pending call timeouts\n"); dbus_error_init (&error); conn = dbus_bus_get (DBUS_BUS_SESSION, &error); /* run 100 times to make sure */ for (i = 0; i < 100; i++) { long delta; _dbus_get_monotonic_time (&start_tv_sec, &start_tv_usec); _run_iteration (conn); _dbus_get_monotonic_time (&end_tv_sec, &end_tv_usec); /* we just care about seconds */ delta = end_tv_sec - start_tv_sec; printf ("ok %d - %lis\n", i + 1, delta); } method = dbus_message_new_method_call ("org.freedesktop.TestSuiteEchoService", "/org/freedesktop/TestSuite", "org.freedesktop.TestSuite", "Exit"); dbus_connection_send (conn, method, NULL); dbus_message_unref (method); printf ("# Testing completed\n1..%d\n", i); exit (0); }
int main (int argc, char *argv[]) { DBusMessage *method; DBusConnection *conn; DBusError error; DBusMutex *mutex1, *dispatch_mutex1, *io_path_mutex1; DBusCondVar *dispatch_cond1, *io_path_cond1; DBusMutex *mutex2, *dispatch_mutex2, *io_path_mutex2; DBusCondVar *dispatch_cond2, *io_path_cond2; printf ("*** Testing late thread init\n"); dbus_error_init (&error); conn = dbus_bus_get (DBUS_BUS_SESSION, &error); _dbus_connection_test_get_locks (conn, &mutex1, &dispatch_mutex1, &io_path_mutex1, &dispatch_cond1, &io_path_cond1); _run_iteration (conn); _dbus_connection_test_get_locks (conn, &mutex2, &dispatch_mutex2, &io_path_mutex2, &dispatch_cond2, &io_path_cond2); check_mutex_lock (mutex1, mutex2, TRUE); check_mutex_lock (dispatch_mutex1, dispatch_mutex2, TRUE); check_mutex_lock (io_path_mutex1, io_path_mutex2, TRUE); check_condvar_lock (dispatch_cond1, dispatch_cond2, TRUE); check_condvar_lock (io_path_cond1, io_path_cond2, TRUE); dbus_threads_init_default (); _dbus_connection_test_get_locks (conn, &mutex1, &dispatch_mutex1, &io_path_mutex1, &dispatch_cond1, &io_path_cond1); _run_iteration (conn); _dbus_connection_test_get_locks (conn, &mutex2, &dispatch_mutex2, &io_path_mutex2, &dispatch_cond2, &io_path_cond2); check_mutex_lock (mutex1, mutex2, TRUE); check_mutex_lock (dispatch_mutex1, dispatch_mutex2, TRUE); check_mutex_lock (io_path_mutex1, io_path_mutex2, TRUE); check_condvar_lock (dispatch_cond1, dispatch_cond2, TRUE); check_condvar_lock (io_path_cond1, io_path_cond2, TRUE); method = dbus_message_new_method_call ("org.freedesktop.TestSuiteEchoService", "/org/freedesktop/TestSuite", "org.freedesktop.TestSuite", "Exit"); dbus_connection_send (conn, method, NULL); dbus_message_unref (method); printf ("Success ***\n"); exit (0); }