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 gboolean test_session_create_destroy(gpointer data)
124 struct test_fix *fix = data;
125 struct test_session *session;
127 util_session_create(fix, 1);
128 session = fix->session;
130 session->notify_path = g_strdup("/foo");
132 util_session_init(fix->session);
133 util_session_cleanup(fix->session);
135 g_assert(is_connman_running(session->connection) == TRUE);
136 util_idle_call(fix, util_quit_loop, util_session_destroy);
141 static gboolean test_session_create_already_exists(gpointer data)
143 struct test_fix *fix = data;
144 struct test_session *session0, *session1;
147 util_session_create(fix, 2);
148 session0 = &fix->session[0];
149 session1 = &fix->session[1];
151 session0->notify_path = g_strdup("/foo");
152 session1->notify_path = session0->notify_path;
154 util_session_init(session0);
156 msg = manager_create_session(session1->connection,
158 session1->notify_path);
159 g_assert(msg == NULL);
161 util_session_cleanup(session0);
163 g_assert(is_connman_running(session0->connection) == TRUE);
164 util_idle_call(fix, util_quit_loop, util_session_destroy);
169 static void set_session_mode(struct test_fix *fix,
170 connman_bool_t enable)
174 msg = manager_set_session_mode(fix->main_connection, enable);
175 g_assert(msg != NULL);
176 g_assert(dbus_message_get_type(msg) != DBUS_MESSAGE_TYPE_ERROR);
178 dbus_message_unref(msg);
180 util_idle_call(fix, util_quit_loop, NULL);
183 static gboolean enable_session_mode(gpointer data)
185 struct test_fix *fix = data;
187 set_session_mode(fix, TRUE);
192 static gboolean disable_session_mode(gpointer data)
194 struct test_fix *fix = data;
196 set_session_mode(fix, FALSE);
201 static void setup_cb(struct test_fix *fix, gconstpointer data)
203 util_setup(fix, data);
205 util_call(fix, enable_session_mode, NULL);
206 g_main_loop_run(fix->main_loop);
209 static void teardown_cb(struct test_fix *fix, gconstpointer data)
211 util_call(fix, disable_session_mode, NULL);
212 g_main_loop_run(fix->main_loop);
214 util_teardown(fix, data);
217 int main(int argc, char *argv[])
219 g_test_init(&argc, &argv, NULL);
221 util_test_add("/manager/session create no notify",
222 test_session_create_no_notify, setup_cb, teardown_cb);
223 util_test_add("/manager/session destroy no notify",
224 test_session_destroy_no_notify, setup_cb, teardown_cb);
225 util_test_add("/manager/session create",
226 test_session_create, setup_cb, teardown_cb);
227 util_test_add("/manager/session create destroy",
228 test_session_create_destroy, setup_cb, teardown_cb);
229 util_test_add("/manager/session create already exists",
230 test_session_create_already_exists, setup_cb, teardown_cb);