summaryrefslogtreecommitdiff
path: root/unit
diff options
context:
space:
mode:
authorDaniel Wagner <daniel.wagner@bmw-carit.de>2011-06-07 15:42:22 +0200
committerDaniel Wagner <daniel.wagner@bmw-carit.de>2011-06-07 15:42:57 +0200
commitc9f4b0eff07ec044f31e5ae956738697c8565537 (patch)
treeccd5491ae3c65bef0ffb92cb0ea171c7730eb43b /unit
parentfb05be513ce9d3d146717199b3464e2199b05f94 (diff)
downloadconnman-c9f4b0eff07ec044f31e5ae956738697c8565537.tar.gz
connman-c9f4b0eff07ec044f31e5ae956738697c8565537.tar.bz2
connman-c9f4b0eff07ec044f31e5ae956738697c8565537.zip
unit: Add manager create/destroy tests
Also add util function for creating the test fixture data structure.
Diffstat (limited to 'unit')
-rw-r--r--unit/test-connman.h3
-rw-r--r--unit/test-session.c58
-rw-r--r--unit/utils.c29
3 files changed, 86 insertions, 4 deletions
diff --git a/unit/test-connman.h b/unit/test-connman.h
index 894025f8..17037f97 100644
--- a/unit/test-connman.h
+++ b/unit/test-connman.h
@@ -55,6 +55,9 @@ void util_test_add(const char *test_name, GSourceFunc test_func,
void util_setup(struct test_fix *fix, gconstpointer data);
void util_teardown(struct test_fix *fix, gconstpointer data);
+void util_session_create(struct test_fix *fix, unsigned int max_sessions);
+void util_session_destroy(gpointer fix);
+
typedef void (* notify_cb) (struct test_session *session);
enum connman_session_roaming_policy {
diff --git a/unit/test-session.c b/unit/test-session.c
index d0f232e9..b129326f 100644
--- a/unit/test-session.c
+++ b/unit/test-session.c
@@ -23,15 +23,63 @@
#include <config.h>
#endif
+#include <stdio.h>
+
#include "gdbus/gdbus.h"
#include "test-connman.h"
-static gboolean test_empty(gpointer data)
+static connman_bool_t is_connman_running(DBusConnection *connection)
+{
+ DBusError error;
+ connman_bool_t running;
+
+ dbus_error_init(&error);
+
+ running = dbus_bus_name_has_owner(connection, CONNMAN_SERVICE, &error);
+
+ if (dbus_error_is_set(&error) == TRUE) {
+ fprintf(stderr, "%s\n", error.message);
+ dbus_error_free(&error);
+
+ return FALSE;
+ }
+
+ return running;
+}
+
+static gboolean test_session_create_no_notify(gpointer data)
{
struct test_fix *fix = data;
+ DBusMessage *msg;
- util_idle_call(fix, util_quit_loop, NULL);
+ util_session_create(fix, 1);
+
+ msg = manager_create_session(fix->session->connection,
+ fix->session->info, "/foo");
+ g_assert(msg != NULL);
+ g_assert(dbus_message_get_type(msg) != DBUS_MESSAGE_TYPE_ERROR);
+
+ dbus_message_unref(msg);
+
+ g_assert(is_connman_running(fix->session->connection) == TRUE);
+ util_idle_call(fix, util_quit_loop, util_session_destroy);
+
+ return FALSE;
+}
+
+static gboolean test_session_destroy_no_notify(gpointer data)
+{
+ struct test_fix *fix = data;
+ DBusMessage *msg;
+
+ util_session_create(fix, 1);
+
+ msg = manager_destroy_session(fix->session->connection, "/foo");
+ g_assert(msg == NULL);
+
+ g_assert(is_connman_running(fix->session->connection) == TRUE);
+ util_idle_call(fix, util_quit_loop, util_session_destroy);
return FALSE;
}
@@ -88,8 +136,10 @@ int main(int argc, char *argv[])
{
g_test_init(&argc, &argv, NULL);
- util_test_add("/empty",
- test_empty, setup_cb, teardown_cb);
+ util_test_add("/manager/session create no notify",
+ test_session_create_no_notify, setup_cb, teardown_cb);
+ util_test_add("/manager/session destroy no notify",
+ test_session_destroy_no_notify, setup_cb, teardown_cb);
return g_test_run();
}
diff --git a/unit/utils.c b/unit/utils.c
index bd424392..3c8eaae7 100644
--- a/unit/utils.c
+++ b/unit/utils.c
@@ -107,3 +107,32 @@ void util_test_add(const char *test_name, GSourceFunc test_func,
g_test_add(test_name, struct test_fix, test_func,
setup_cb, util_wrapper, teardown_cb);
}
+
+void util_session_create(struct test_fix *fix, unsigned int max_sessions)
+{
+ unsigned int i;
+
+ fix->max_sessions = max_sessions;
+ fix->session = g_try_new0(struct test_session, max_sessions);
+
+ for (i = 0; i < max_sessions; i++) {
+ fix->session[i].fix = fix;
+ fix->session[i].info = g_try_new0(struct test_session_info, 1);
+ fix->session[i].connection = g_dbus_setup_private(
+ DBUS_BUS_SYSTEM, NULL, NULL);
+ }
+}
+
+void util_session_destroy(gpointer data)
+{
+ struct test_fix *fix = data;
+
+ unsigned int i;
+
+ for (i = 0; i < fix->max_sessions; i++) {
+ dbus_connection_close(fix->session[i].connection);
+ g_free(fix->session[i].info);
+ }
+
+ g_free(fix->session);
+}