5 * Copyright (C) 2011 BWM CarIT GmbH. All rights reserved.
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 #include "gdbus/gdbus.h"
30 #include "test-connman.h"
32 static connman_bool_t is_connman_running(DBusConnection *connection)
35 connman_bool_t running;
37 dbus_error_init(&error);
39 running = dbus_bus_name_has_owner(connection, CONNMAN_SERVICE, &error);
41 if (dbus_error_is_set(&error) == TRUE) {
42 fprintf(stderr, "%s\n", error.message);
43 dbus_error_free(&error);
51 static gboolean test_session_create_no_notify(gpointer data)
53 struct test_fix *fix = data;
56 util_session_create(fix, 1);
58 msg = manager_create_session(fix->session->connection,
59 fix->session->info, "/foo");
60 g_assert(msg != NULL);
61 g_assert(dbus_message_get_type(msg) != DBUS_MESSAGE_TYPE_ERROR);
63 dbus_message_unref(msg);
65 g_assert(is_connman_running(fix->session->connection) == TRUE);
66 util_idle_call(fix, util_quit_loop, util_session_destroy);
71 static gboolean test_session_destroy_no_notify(gpointer data)
73 struct test_fix *fix = data;
76 util_session_create(fix, 1);
78 msg = manager_destroy_session(fix->session->connection, "/foo");
79 g_assert(msg == NULL);
81 g_assert(is_connman_running(fix->session->connection) == TRUE);
82 util_idle_call(fix, util_quit_loop, util_session_destroy);
87 static void test_session_create_notify(struct test_session *session)
89 LOG("session %p", session);
91 g_assert(is_connman_running(session->connection) == TRUE);
92 util_idle_call(session->fix, util_quit_loop, util_session_destroy);
95 static gboolean test_session_create(gpointer data)
97 struct test_fix *fix = data;
98 struct test_session *session;
102 util_session_create(fix, 1);
103 session = fix->session;
105 session->notify_path = "/foo";
106 session->notify = test_session_create_notify;
108 err = session_notify_register(session, session->notify_path);
111 msg = manager_create_session(session->connection,
113 session->notify_path);
114 g_assert(msg != NULL);
115 g_assert(dbus_message_get_type(msg) != DBUS_MESSAGE_TYPE_ERROR);
117 dbus_message_unref(msg);
122 static void set_session_mode(struct test_fix *fix,
123 connman_bool_t enable)
127 msg = manager_set_session_mode(fix->main_connection, enable);
128 g_assert(msg != NULL);
129 g_assert(dbus_message_get_type(msg) != DBUS_MESSAGE_TYPE_ERROR);
131 dbus_message_unref(msg);
133 util_idle_call(fix, util_quit_loop, NULL);
136 static gboolean enable_session_mode(gpointer data)
138 struct test_fix *fix = data;
140 set_session_mode(fix, TRUE);
145 static gboolean disable_session_mode(gpointer data)
147 struct test_fix *fix = data;
149 set_session_mode(fix, FALSE);
154 static void setup_cb(struct test_fix *fix, gconstpointer data)
156 util_setup(fix, data);
158 util_call(fix, enable_session_mode, NULL);
159 g_main_loop_run(fix->main_loop);
162 static void teardown_cb(struct test_fix *fix, gconstpointer data)
164 util_call(fix, disable_session_mode, NULL);
165 g_main_loop_run(fix->main_loop);
167 util_teardown(fix, data);
170 int main(int argc, char *argv[])
172 g_test_init(&argc, &argv, NULL);
174 util_test_add("/manager/session create no notify",
175 test_session_create_no_notify, setup_cb, teardown_cb);
176 util_test_add("/manager/session destroy no notify",
177 test_session_destroy_no_notify, setup_cb, teardown_cb);
178 util_test_add("/manager/session create",
179 test_session_create, setup_cb, teardown_cb);