--- /dev/null
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <setjmp.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <cmocka.h>
+#include <assert.h>
+#include <gio/gio.h>
+
+#include "file-helper.h"
+#include "notifier.h"
+#include "proc-monitor.h"
+#include "proc-main.h"
+
+void __real_proc_dbus_exclude_signal_handler(GVariant *params);
+
+int __wrap_fread_uint(const char *path, u_int32_t *number)
+{
+ return 0;
+}
+
+int __wrap_fread_int(const char *path, int32_t *number)
+{
+ return 0;
+}
+
+int __wrap_fread_ulong(const char *path, unsigned long *number)
+{
+ return 0;
+}
+
+void __wrap_proc_set_group(pid_t ownerpid, pid_t childpid, char *pkgname)
+{
+ check_expected(ownerpid);
+ check_expected(childpid);
+ check_expected_ptr(pkgname);
+}
+
+static void test_proc_dbus_aul_group(void **state)
+{
+ GVariant *params = g_variant_new("(iis)", 0, 0, NULL);
+ proc_dbus_aul_group(params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(iis)", 1, 2, "appid");
+ expect_value(__wrap_proc_set_group, ownerpid, 1);
+ expect_value(__wrap_proc_set_group, childpid, 2);
+ expect_string(__wrap_proc_set_group, pkgname, "appid");
+
+ proc_dbus_aul_group(params);
+}
+
+GDBusMessage *__wrap_g_dbus_method_invocation_get_message(GDBusMethodInvocation *invocation)
+{
+ check_expected_ptr(invocation);
+ return mock_ptr_type(GDBusMessage*);
+}
+
+GDBusMessage *__wrap_g_dbus_message_new_method_reply(GDBusMessage *method_call_message)
+{
+ check_expected_ptr(method_call_message);
+ return mock_ptr_type(GDBusMessage*);
+}
+
+resourced_ret_c __wrap_d_bus_reply_message(GDBusMessage *msg)
+{
+ check_expected_ptr(msg);
+ return mock_type(resourced_ret_c);
+}
+
+void __wrap_g_object_unref(gpointer object)
+{
+ check_expected(object);
+}
+
+void __wrap_g_dbus_method_invocation_return_value(GDBusMethodInvocation *invocation, GVariant *parameters)
+{
+ check_expected(invocation);
+}
+
+static void test_dbus_get_memory_lists(void **state)
+{
+ GDBusMethodInvocation *inv = (GDBusMethodInvocation*)0x123123;
+ GVariant *params = g_variant_new("(i)", 7); //PROC_TYPE_MAX = 7
+ expect_value(__wrap_g_dbus_method_invocation_get_message, invocation, 0x123123);
+ will_return(__wrap_g_dbus_method_invocation_get_message, (GDBusMessage*)0x123123);
+
+ expect_value(__wrap_g_dbus_message_new_method_reply, method_call_message, 0x123123);
+ will_return(__wrap_g_dbus_message_new_method_reply, (GDBusMessage *)0x123123);
+
+ expect_value(__wrap_d_bus_reply_message, msg, (GDBusMessage *)0x123123);
+ will_return(__wrap_d_bus_reply_message, (GDBusMessage *)0x123123);
+
+ expect_any(__wrap_g_object_unref, object);
+ expect_any(__wrap_g_object_unref, object);
+
+ dbus_get_memory_lists(inv, params);
+ g_variant_unref(params);
+
+
+ inv = NULL;
+ params = g_variant_new("(i)", 7);
+ expect_value(__wrap_g_dbus_method_invocation_get_message, invocation, NULL);
+ will_return(__wrap_g_dbus_method_invocation_get_message, (GDBusMessage*)0x101010);
+
+ expect_value(__wrap_g_dbus_message_new_method_reply, method_call_message, 0x101010);
+ will_return(__wrap_g_dbus_message_new_method_reply, (GDBusMessage *)0x101010);
+
+ expect_value(__wrap_d_bus_reply_message, msg, (GDBusMessage *)0x101010);
+ will_return(__wrap_d_bus_reply_message, (GDBusMessage *)0x101010);
+
+ expect_any(__wrap_g_object_unref, object);
+ expect_any(__wrap_g_object_unref, object);
+
+ dbus_get_memory_lists(inv, params);
+ g_variant_unref(params);
+
+ inv = NULL;
+ params = g_variant_new("(i)", 0);
+ expect_value(__wrap_g_dbus_method_invocation_return_value, invocation, inv);
+ dbus_get_memory_lists(inv, params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(i)", 0);
+ expect_value(__wrap_g_dbus_method_invocation_return_value, invocation, (GDBusMethodInvocation *)0x717171);
+ dbus_get_memory_lists((GDBusMethodInvocation *)0x717171, params);
+ g_variant_unref(params);
+}
+
+struct proc_app_info *__wrap_find_app_info_by_appid(const char *appid)
+{
+ check_expected_ptr(appid);
+ return mock_ptr_type(struct proc_app_info*);
+}
+
+int __wrap_proc_get_mem_usage(pid_t pid, unsigned int *usage)
+{
+ check_expected(pid);
+ return mock_type(int);
+}
+
+static void test_dbus_get_app_memory(void **state)
+{
+ GVariant * params = g_variant_new("(s)", "str");
+
+ expect_string(__wrap_find_app_info_by_appid, appid, "str");
+ struct proc_app_info pai;
+ pai.main_pid = 333;
+ will_return(__wrap_find_app_info_by_appid, &pai);
+
+ expect_value(__wrap_proc_get_mem_usage, pid, 333);
+ will_return(__wrap_proc_get_mem_usage, RESOURCED_ERROR_NONE);
+
+ expect_value(__wrap_g_dbus_method_invocation_return_value, invocation, (GDBusMethodInvocation *)0x424242);
+ dbus_get_app_memory((GDBusMethodInvocation *)0x424242, params);
+}
+
+int __wrap_proc_get_cpu_time(pid_t pid, unsigned long *utime,
+ unsigned long *stime, unsigned long *starttime)
+{
+ check_expected(pid);
+ return mock_type(int);
+}
+
+static void test_dbus_get_app_cpu(void **state)
+{
+ GVariant *params = g_variant_new("(s)", "str");
+
+ expect_string(__wrap_find_app_info_by_appid, appid, "str");
+
+ struct proc_app_info pai;
+ pai.main_pid = 222;
+
+ will_return(__wrap_find_app_info_by_appid, &pai);
+
+ expect_value(__wrap_proc_get_cpu_time, pid, 222);
+ will_return(__wrap_proc_get_cpu_time, RESOURCED_ERROR_NONE);
+
+ expect_value(__wrap_g_dbus_method_invocation_return_value, invocation, (GDBusMethodInvocation *)0x31337);
+
+ dbus_get_app_cpu((GDBusMethodInvocation *)0x31337, params);
+}
+
+int __wrap_resourced_proc_status_change(int status, pid_t pid, char *app_name, char *pkg_name, int apptype)
+{
+ check_expected(status);
+ check_expected(pid);
+ check_expected_ptr(app_name);
+ check_expected_ptr(pkg_name);
+ check_expected(apptype);
+
+ return 0;
+}
+
+static void test_proc_dbus_aul_launch(void **state)
+{
+ GVariant *params = g_variant_new("(isss)", 0, NULL, NULL, NULL);
+ proc_dbus_aul_launch(params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(isss)", 123, "appid", "pkgid", "svc");
+ expect_value(__wrap_resourced_proc_status_change, status, PROC_CGROUP_SET_SERVICE_REQUEST);
+ expect_value(__wrap_resourced_proc_status_change, pid, 123);
+ expect_string(__wrap_resourced_proc_status_change, app_name, "appid");
+ expect_string(__wrap_resourced_proc_status_change, pkg_name, "pkgid");
+ expect_value(__wrap_resourced_proc_status_change, apptype, PROC_TYPE_SERVICE);
+ proc_dbus_aul_launch(params);
+
+ params = g_variant_new("(isss)", 445, "appid", "pkgid", "ui");
+ expect_value(__wrap_resourced_proc_status_change, status, PROC_CGROUP_SET_LAUNCH_REQUEST);
+ expect_value(__wrap_resourced_proc_status_change, pid, 445);
+ expect_string(__wrap_resourced_proc_status_change, app_name, "appid");
+ expect_string(__wrap_resourced_proc_status_change, pkg_name, "pkgid");
+ expect_value(__wrap_resourced_proc_status_change, apptype, PROC_TYPE_GUI);
+ proc_dbus_aul_launch(params);
+
+ params = g_variant_new("(isss)", 789, "appid", "pkgid", "widget");
+ expect_value(__wrap_resourced_proc_status_change, status, PROC_CGROUP_SET_LAUNCH_REQUEST);
+ expect_value(__wrap_resourced_proc_status_change, pid, 789);
+ expect_string(__wrap_resourced_proc_status_change, app_name, "appid");
+ expect_string(__wrap_resourced_proc_status_change, pkg_name, "pkgid");
+ expect_value(__wrap_resourced_proc_status_change, apptype, PROC_TYPE_WIDGET);
+ proc_dbus_aul_launch(params);
+
+ params = g_variant_new("(isss)", 101, "appid", "pkgid", "watch");
+ expect_value(__wrap_resourced_proc_status_change, status, PROC_CGROUP_SET_LAUNCH_REQUEST);
+ expect_value(__wrap_resourced_proc_status_change, pid, 101);
+ expect_string(__wrap_resourced_proc_status_change, app_name, "appid");
+ expect_string(__wrap_resourced_proc_status_change, pkg_name, "pkgid");
+ expect_value(__wrap_resourced_proc_status_change, apptype, PROC_TYPE_WATCH);
+ proc_dbus_aul_launch(params);
+}
+
+void __wrap_resourced_notify(enum notifier_type status, void *data)
+{
+ check_expected(status);
+ check_expected_ptr(data);
+}
+
+resourced_ret_c __wrap_proc_set_runtime_exclude_list(const int pid, int type)
+{
+ check_expected(pid);
+ check_expected(type);
+ return mock_type(resourced_ret_c);
+}
+
+int check_data_in_resourced_notify_wakeup(const LargestIntegralType value,
+ const LargestIntegralType check_value_data)
+{
+ struct proc_status *d = (struct proc_status *)((intptr_t)check_value_data);
+ struct proc_status *v = (struct proc_status *)((intptr_t)value);
+
+ if (v->pai == NULL)
+ return 0;
+
+ return v->pid == d->pid;
+}
+
+int check_data_in_resourced_notify_exclude(const LargestIntegralType value,
+ const LargestIntegralType check_value_data)
+{
+ struct proc_exclude *d = (struct proc_exclude *)((intptr_t)check_value_data);
+ struct proc_exclude *v = (struct proc_exclude *)((intptr_t)value);
+
+ return (v->pid == d->pid) && (v->type == d->type);
+}
+
+static void test_proc_dbus_exclude_appid_signal_handler(void **state)
+{
+ (void) state; /*unused*/
+
+ GVariant *params = g_variant_new("(ss)", "wakeup", "appid");
+ expect_string(__wrap_find_app_info_by_appid, appid, "appid");
+
+ struct proc_app_info pai;
+ pai.main_pid = 130;
+ struct proc_status ps;
+ ps.pai = &pai;
+ ps.pid = ps.pai->main_pid;
+
+ will_return(__wrap_find_app_info_by_appid, &pai);
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_APP_WAKEUP);
+ expect_check(__wrap_resourced_notify, data, check_data_in_resourced_notify_wakeup, &ps);
+ proc_dbus_exclude_appid_signal_handler(params);
+
+ params = g_variant_new("(ss)", "exclude", "appid2");
+ expect_string(__wrap_find_app_info_by_appid, appid, "appid2");
+ will_return(__wrap_find_app_info_by_appid, &pai);
+
+ pai.main_pid = 155;
+ struct proc_exclude pe;
+ pe.pid = pai.main_pid;
+ pe.type = PROC_EXCLUDE;
+
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_CONTROL_EXCLUDE);
+ expect_check(__wrap_resourced_notify, data, check_data_in_resourced_notify_exclude, &pe);
+
+ expect_value(__wrap_proc_set_runtime_exclude_list, pid, pe.pid);
+ expect_value(__wrap_proc_set_runtime_exclude_list, type, pe.type);
+ will_return(__wrap_proc_set_runtime_exclude_list, RESOURCED_ERROR_NONE);
+ proc_dbus_exclude_appid_signal_handler(params);
+
+ params = g_variant_new("(ss)", "include", "appid3");
+ expect_string(__wrap_find_app_info_by_appid, appid, "appid3");
+ will_return(__wrap_find_app_info_by_appid, &pai);
+
+ pai.main_pid = 199;
+ pe.pid = pai.main_pid;
+ pe.type = PROC_INCLUDE;
+
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_CONTROL_EXCLUDE);
+ expect_check(__wrap_resourced_notify, data, check_data_in_resourced_notify_exclude, &pe);
+
+ expect_value(__wrap_proc_set_runtime_exclude_list, pid, pe.pid);
+ expect_value(__wrap_proc_set_runtime_exclude_list, type, pe.type);
+ will_return(__wrap_proc_set_runtime_exclude_list, RESOURCED_ERROR_NONE);
+ proc_dbus_exclude_appid_signal_handler(params);
+
+ params = g_variant_new("(ss)", "include", NULL);
+ expect_any(__wrap_find_app_info_by_appid, appid);
+ will_return(__wrap_find_app_info_by_appid, &pai);
+
+ pai.main_pid = 210;
+ pe.pid = pai.main_pid;
+ pe.type = PROC_INCLUDE;
+
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_CONTROL_EXCLUDE);
+ expect_check(__wrap_resourced_notify, data, check_data_in_resourced_notify_exclude, &pe);
+
+ expect_value(__wrap_proc_set_runtime_exclude_list, pid, pe.pid);
+ expect_value(__wrap_proc_set_runtime_exclude_list, type, pe.type);
+ will_return(__wrap_proc_set_runtime_exclude_list, RESOURCED_ERROR_NONE);
+
+ proc_dbus_exclude_appid_signal_handler(params);
+
+ params = g_variant_new("(ss)", "exclude", NULL);
+ expect_any(__wrap_find_app_info_by_appid, appid);
+ will_return(__wrap_find_app_info_by_appid, &pai);
+
+ pai.main_pid = 305;
+ pe.pid = pai.main_pid;
+ pe.type = PROC_EXCLUDE;
+
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_CONTROL_EXCLUDE);
+ expect_check(__wrap_resourced_notify, data, check_data_in_resourced_notify_exclude, &pe);
+
+ expect_value(__wrap_proc_set_runtime_exclude_list, pid, pe.pid);
+ expect_value(__wrap_proc_set_runtime_exclude_list, type, pe.type);
+ will_return(__wrap_proc_set_runtime_exclude_list, RESOURCED_ERROR_NONE);
+
+ proc_dbus_exclude_appid_signal_handler(params);
+}
+
+struct proc_app_info *__wrap_find_app_info(const pid_t pid)
+{
+ check_expected(pid);
+ return mock_type(struct proc_app_info*);
+}
+
+static void test_proc_dbus_exclude_signal_handler(void **state)
+{
+ (void) state; /*unused*/
+
+ GVariant *params = g_variant_new("(si)", NULL, 0);
+ __real_proc_dbus_exclude_signal_handler(params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(si)", "wakeup", 1286);
+ expect_value(__wrap_find_app_info, pid, 1286);
+ will_return(__wrap_find_app_info, (struct proc_app_info *)0x123456);
+
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_APP_WAKEUP);
+ expect_check(__wrap_resourced_notify, data, check_data_in_resourced_notify_wakeup, &((struct proc_status){.pid = 1286}));
+
+ __real_proc_dbus_exclude_signal_handler(params);
+
+ params = g_variant_new("(si)", "exclude", 1416);
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_CONTROL_EXCLUDE);
+ expect_check(__wrap_resourced_notify, data, check_data_in_resourced_notify_exclude, &((struct proc_exclude){.pid = 1416, .type = PROC_EXCLUDE}));
+
+ expect_value(__wrap_proc_set_runtime_exclude_list, pid, 1416);
+ expect_value(__wrap_proc_set_runtime_exclude_list, type, PROC_EXCLUDE);
+ will_return(__wrap_proc_set_runtime_exclude_list, RESOURCED_ERROR_NONE);
+
+ __real_proc_dbus_exclude_signal_handler(params);
+
+ params = g_variant_new("(si)", "include", 3213);
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_CONTROL_EXCLUDE);
+ expect_memory(__wrap_resourced_notify, data, &((struct proc_exclude){.pid = 3213, .type = PROC_INCLUDE}), sizeof(struct proc_exclude));
+
+ expect_value(__wrap_proc_set_runtime_exclude_list, pid, 3213);
+ expect_value(__wrap_proc_set_runtime_exclude_list, type, PROC_INCLUDE);
+ will_return(__wrap_proc_set_runtime_exclude_list, RESOURCED_ERROR_NONE);
+
+ __real_proc_dbus_exclude_signal_handler(params);
+}
+
+static void test_proc_dbus_active_signal_handler(void **state)
+{
+ (void) state; /*unused*/
+
+ GVariant *params = g_variant_new("(si)", NULL, 0);
+ proc_dbus_active_signal_handler(params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(si)", "active", 1);
+
+ expect_value(__wrap_resourced_proc_status_change, status, PROC_CGROUP_SET_ACTIVE);
+ expect_value(__wrap_resourced_proc_status_change, pid, 1);
+ expect_any(__wrap_resourced_proc_status_change, app_name);
+ expect_any(__wrap_resourced_proc_status_change, pkg_name);
+ expect_value(__wrap_resourced_proc_status_change, apptype, PROC_TYPE_NONE);
+
+ proc_dbus_active_signal_handler(params);
+}
+
+static void test_proc_dbus_aul_changestate(void **state)
+{
+ (void) state; /*unused*/
+
+ GVariant *params = g_variant_new("(issss)", 0, NULL, NULL, NULL, NULL);
+ proc_dbus_aul_changestate(params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(issss)", 1, "appid", "pkgid", "fg", "svc");
+
+ expect_value(__wrap_resourced_proc_status_change, status, PROC_CGROUP_SET_FOREGRD);
+ expect_value(__wrap_resourced_proc_status_change, pid, 1);
+ expect_string(__wrap_resourced_proc_status_change, app_name, "appid");
+ expect_string(__wrap_resourced_proc_status_change, pkg_name, "pkgid");
+ expect_value(__wrap_resourced_proc_status_change, apptype, PROC_TYPE_SERVICE);
+
+ proc_dbus_aul_changestate(params);
+}
+
+static void test_proc_dbus_aul_terminated(void **state)
+{
+ (void) state; /*unused*/
+
+ GVariant *params = g_variant_new("(i)", 0);
+ proc_dbus_aul_terminated(params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(i)", 1);
+
+ expect_value(__wrap_resourced_proc_status_change, status, PROC_CGROUP_SET_TERMINATED);
+ expect_value(__wrap_resourced_proc_status_change, pid, 1);
+ expect_any(__wrap_resourced_proc_status_change, app_name);
+ expect_any(__wrap_resourced_proc_status_change, pkg_name);
+ expect_value(__wrap_resourced_proc_status_change, apptype, PROC_TYPE_NONE);
+
+ proc_dbus_aul_terminated(params);
+}
+
+static void test_proc_dbus_aul_resume(void **state)
+{
+ (void) state; /*unused*/
+
+ GVariant *params = g_variant_new("(isss)", 0, NULL, NULL, NULL);
+ proc_dbus_aul_resume(params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(isss)", 1, "appid", "pkgid", "svc");
+ expect_value(__wrap_resourced_proc_status_change, status, PROC_CGROUP_SET_RESUME_REQUEST);
+ expect_value(__wrap_resourced_proc_status_change, pid, 1);
+ expect_string(__wrap_resourced_proc_status_change, app_name, "appid");
+ expect_string(__wrap_resourced_proc_status_change, pkg_name, "pkgid");
+ expect_value(__wrap_resourced_proc_status_change, apptype, PROC_TYPE_SERVICE);
+
+ proc_dbus_aul_resume(params);
+}
+
+struct proc_app_info *__wrap_proc_create_app_info(const char *appid,
+ const char *pkgid,
+ pid_t pid,
+ int flags,
+ int categories,
+ enum application_type type,
+ enum proc_state state)
+{
+ check_expected_ptr(appid);
+ check_expected_ptr(pkgid);
+ check_expected(pid);
+ check_expected(flags);
+ check_expected(categories);
+ check_expected(type);
+ check_expected(state);
+
+ return mock_type(struct proc_app_info*);
+}
+
+void __wrap_proc_app_list_add_app_info(struct proc_app_info *pai)
+{
+ check_expected(pai);
+}
+
+struct proc_app_info *__wrap_proc_add_app_info(const char *appid,
+ const char *pkgid,
+ pid_t pid,
+ int flags,
+ int categories,
+ enum application_type type,
+ enum proc_state state)
+{
+ check_expected_ptr(appid);
+ check_expected_ptr(pkgid);
+ check_expected(pid);
+ check_expected(flags);
+ check_expected(categories);
+ check_expected(type);
+ check_expected(state);
+
+ return mock_type(struct proc_app_info*);
+}
+
+static void test_proc_dbus_prelaunch_signal_handler(void **state)
+{
+ GVariant *params = g_variant_new("(ssii)", NULL, NULL, -1, -1);
+ proc_dbus_prelaunch_signal_handler(params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(ssii)", "appid", "pkgid", 0, 0);
+
+ expect_string(__wrap_proc_add_app_info, appid, "appid");
+ expect_string(__wrap_proc_add_app_info, pkgid, "pkgid");
+ expect_value(__wrap_proc_add_app_info, pid, 0);
+ expect_value(__wrap_proc_add_app_info, flags, 0);
+ expect_value(__wrap_proc_add_app_info, categories, 0);
+ expect_value(__wrap_proc_add_app_info, type, PROC_TYPE_READY);
+ expect_value(__wrap_proc_add_app_info, state, PROC_STATE_DEFAULT);
+ will_return(__wrap_proc_add_app_info, (struct proc_app_info*)0x12346);
+
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_APP_PRELAUNCH);
+ expect_any(__wrap_resourced_notify, data);
+
+ proc_dbus_prelaunch_signal_handler(params);
+}
+
+static void test_proc_dbus_aul_terminate(void **state)
+{
+ (void) state; /*unused*/
+
+ GVariant *params = g_variant_new("(isss)", NULL, NULL, NULL, NULL);
+ proc_dbus_aul_terminate(params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(isss)", 156562, "appid", "pkgid", PROC_TYPE_NONE);
+
+ expect_value(__wrap_resourced_proc_status_change, status, PROC_CGROUP_SET_TERMINATE_REQUEST);
+ expect_value(__wrap_resourced_proc_status_change, pid, 156562);
+ expect_string(__wrap_resourced_proc_status_change, app_name, "appid");
+ expect_string(__wrap_resourced_proc_status_change, pkg_name, "pkgid");
+ expect_value(__wrap_resourced_proc_status_change, apptype, PROC_TYPE_NONE);
+
+ proc_dbus_aul_terminate(params);
+}
+
+static void test_proc_dbus_lcd_on(void **state)
+{
+ GVariant *params = g_variant_new("(i)", 0);
+
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_LCD_ON);
+ expect_any(__wrap_resourced_notify, data);
+ proc_dbus_lcd_on(params);
+}
+
+static void test_proc_dbus_lcd_off(void **state)
+{
+ GVariant *params = g_variant_new("(i)", 0);
+
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_LCD_OFF);
+ expect_any(__wrap_resourced_notify, data);
+ proc_dbus_lcd_off(params);
+}
+
+static void test_booting_done_signal_handler(void **state)
+{
+ GVariant *params = g_variant_new("(i)", 0);
+
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_BOOTING_DONE);
+ expect_any(__wrap_resourced_notify, data);
+ booting_done_signal_handler(params);
+}
+
+static void test_low_battery_signal_handler(void **state)
+{
+ GVariant *params = g_variant_new("(i)", 0);
+
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_LOW_BATTERY);
+ expect_any(__wrap_resourced_notify, data);
+ low_battery_signal_handler(params);
+}
+
+enum proc_state __wrap_proc_check_suspend_state(struct proc_app_info *pai)
+{
+ check_expected(pai);
+ return mock_type(enum proc_state);
+}
+
+static void test_proc_dbus_suspend_hint(void **state)
+{
+ GVariant *params = g_variant_new("(i)", 0);
+ proc_dbus_suspend_hint(params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(i)", 1589);
+ struct proc_app_info pai;
+ pai.main_pid = 1589;
+
+ expect_value(__wrap_find_app_info, pid, 1589);
+ will_return(__wrap_find_app_info, &pai);
+
+ expect_value(__wrap_proc_check_suspend_state, pai, &pai);
+ will_return(__wrap_proc_check_suspend_state, PROC_STATE_DEFAULT);
+
+ proc_dbus_suspend_hint(params);
+
+ params = g_variant_new("(i)", 2589);
+ pai.main_pid = 2589;
+ expect_value(__wrap_find_app_info, pid, 2589);
+ will_return(__wrap_find_app_info, &pai);
+
+ expect_value(__wrap_proc_check_suspend_state, pai, &pai);
+ will_return(__wrap_proc_check_suspend_state, PROC_STATE_SUSPEND);
+
+ expect_value(__wrap_resourced_notify, status, RESOURCED_NOTIFIER_APP_SUSPEND);
+ expect_any(__wrap_resourced_notify, data);
+
+ proc_dbus_suspend_hint(params);
+}
+
+void __wrap_g_dbus_method_invocation_return_error(GDBusMethodInvocation *invocation, GQuark domain, gint code, const gchar *format)
+{
+ check_expected_ptr(invocation);
+ check_expected(domain);
+ check_expected(code);
+ check_expected_ptr(format);
+}
+
+void __wrap_proc_dbus_exclude_signal_handler(GVariant *params)
+{
+ check_expected_ptr(params);
+}
+
+static void test_proc_dbus_exclude_method_handler(void **state)
+{
+ GVariant *params = g_variant_new("(si)", NULL, 0);
+ GDBusMethodInvocation *inv = (GDBusMethodInvocation*)0x123123;
+
+ expect_value(__wrap_g_dbus_method_invocation_return_error, invocation, inv);
+ expect_value(__wrap_g_dbus_method_invocation_return_error, domain, G_DBUS_ERROR);
+ expect_value(__wrap_g_dbus_method_invocation_return_error, code, G_DBUS_ERROR_INVALID_ARGS);
+ expect_string(__wrap_g_dbus_method_invocation_return_error, format, "invalid arguments");
+
+ proc_dbus_exclude_method_handler(inv, params);
+ g_variant_unref(params);
+
+ params = g_variant_new("(si)", "str", 1);
+ expect_value(__wrap_g_dbus_method_invocation_get_message, invocation, inv);
+ will_return(__wrap_g_dbus_method_invocation_get_message, (GDBusMessage*)0x101010);
+
+ expect_value(__wrap_g_dbus_message_new_method_reply, method_call_message, 0x101010);
+ will_return(__wrap_g_dbus_message_new_method_reply, (GDBusMessage *)0x101010);
+
+ expect_value(__wrap_d_bus_reply_message, msg, (GDBusMessage *)0x101010);
+ will_return(__wrap_d_bus_reply_message, (GDBusMessage *)0x101010);
+
+ expect_any(__wrap_g_object_unref, object);
+ expect_any(__wrap_g_object_unref, object);
+
+ proc_dbus_exclude_method_handler(inv, params);
+ g_variant_unref(params);
+}
+
+int main(int argc, char* argv[])
+{
+ const struct CMUnitTest tests[] = {
+ cmocka_unit_test(test_proc_dbus_aul_group),
+ cmocka_unit_test(test_dbus_get_memory_lists),
+ cmocka_unit_test(test_dbus_get_app_memory),
+ cmocka_unit_test(test_dbus_get_app_cpu),
+ cmocka_unit_test(test_proc_dbus_aul_launch),
+ cmocka_unit_test(test_proc_dbus_exclude_appid_signal_handler),
+ cmocka_unit_test(test_proc_dbus_exclude_signal_handler),
+ cmocka_unit_test(test_proc_dbus_active_signal_handler),
+ cmocka_unit_test(test_proc_dbus_aul_changestate),
+ cmocka_unit_test(test_proc_dbus_aul_terminated),
+ cmocka_unit_test(test_proc_dbus_aul_resume),
+ cmocka_unit_test(test_proc_dbus_prelaunch_signal_handler),
+ cmocka_unit_test(test_proc_dbus_aul_terminate),
+ cmocka_unit_test(test_proc_dbus_lcd_on),
+ cmocka_unit_test(test_proc_dbus_lcd_off),
+ cmocka_unit_test(test_booting_done_signal_handler),
+ cmocka_unit_test(test_low_battery_signal_handler),
+ cmocka_unit_test(test_proc_dbus_suspend_hint),
+ cmocka_unit_test(test_proc_dbus_exclude_method_handler),
+ };
+ return cmocka_run_group_tests(tests, NULL, NULL);
+}