static void testcase20(void) { /* weird $BOOTSTATE cases */ gchar* module_name = g_strconcat(dsme_module_path, "state.so", NULL); // do not specify $BOOTSTATE module_t* state = load_module_under_test(module_name); DSM_MSGTYPE_STATE_CHANGE_IND* ind; assert(ind = queued(DSM_MSGTYPE_STATE_CHANGE_IND)); assert(ind->state == DSME_STATE_USER); free(ind); assert(message_queue_is_empty()); assert(!timer_exists()); unload_module_under_test(state); // specify a bad $BOOTSTATE state = load_state_module("DIIBADAABA", DSME_STATE_USER); DSM_MSGTYPE_ENTER_MALF* msg; assert(msg = queued(DSM_MSGTYPE_ENTER_MALF)); free(msg); assert(!timer_exists()); assert(message_queue_is_empty()); unload_module_under_test(state); // specify SHUTDOWN setenv("BOOTSTATE", "SHUTDOWN", true); state = load_module_under_test(module_name); unsetenv("BOOTSTATE"); expect_shutdown(state); unload_module_under_test(state); // specify SHUTDOWN setenv("BOOTSTATE", "SHUTDOWN", true); state = load_module_under_test(module_name); unsetenv("BOOTSTATE"); expect_shutdown(state); unload_module_under_test(state); // specify BOOT setenv("BOOTSTATE", "BOOT", true); state = load_module_under_test(module_name); unsetenv("BOOTSTATE"); expect_reboot(state); unload_module_under_test(state); g_free(module_name); }
static module_t* load_state_module(const char* bootstate, dsme_state_t expected_state) { module_t* module; gchar* module_name = g_strconcat(dsme_module_path, "state.so", NULL); setenv("BOOTSTATE", bootstate, true); module = load_module_under_test(module_name); unsetenv("BOOTSTATE"); g_free(module_name); DSM_MSGTYPE_STATE_CHANGE_IND* ind; assert((ind = queued(DSM_MSGTYPE_STATE_CHANGE_IND))); assert(ind->state == expected_state); free(ind); if (expected_state == DSME_STATE_ACTDEAD) { DSM_MSGTYPE_SAVE_DATA_IND* ind2; assert(ind2 = queued(DSM_MSGTYPE_SAVE_DATA_IND)); free(ind2); } // TODO: this assert is not valid in case we MALF when loading the module // assert(message_queue_is_empty()); return module; }
static void testcase21(void) { /* non-rd_mode cases and cal problems */ // non-rd_mode rd_mode = ""; setenv("BOOTSTATE", "DIIBADAABA", true); module_t* state = load_module_under_test("../modules/libstate.so"); unsetenv("BOOTSTATE"); DSM_MSGTYPE_STATE_CHANGE_IND* ind; assert((ind = queued(DSM_MSGTYPE_STATE_CHANGE_IND))); assert(ind->state == DSME_STATE_MALF); free(ind); assert(message_queue_is_empty()); assert(timer_exists()); trigger_timer(); DSM_MSGTYPE_HWWD_KICK* ind3; assert((ind3 = queued(DSM_MSGTYPE_HWWD_KICK))); free(ind3); DSM_MSGTYPE_SHUTDOWN* msg; assert((msg = queued(DSM_MSGTYPE_SHUTDOWN))); assert(msg->runlevel == 8); free(msg); assert(message_queue_is_empty()); assert(!timer_exists()); unload_module_under_test(state); // cal problem rd_mode = 0; setenv("BOOTSTATE", "DIIBADAABA", true); state = load_module_under_test("../modules/libstate.so"); unsetenv("BOOTSTATE"); assert((ind = queued(DSM_MSGTYPE_STATE_CHANGE_IND))); assert(ind->state == DSME_STATE_MALF); free(ind); assert(message_queue_is_empty()); assert(timer_exists()); trigger_timer(); assert((ind3 = queued(DSM_MSGTYPE_HWWD_KICK))); free(ind3); assert((msg = queued(DSM_MSGTYPE_SHUTDOWN))); assert(msg->runlevel == 8); free(msg); assert(message_queue_is_empty()); assert(!timer_exists()); unload_module_under_test(state); }
static void load_usbtracker(void) { gchar* module_name_tmp = g_strconcat(dsme_module_path, "usbtracker.so", NULL); usbtracker_module = load_module_under_test(module_name_tmp); DSM_MSGTYPE_DBUS_CONNECT msg = TEST_MSG_INIT(DSM_MSGTYPE_DBUS_CONNECT); send_message(usbtracker_module, &msg); g_free(module_name_tmp); }
static void load_emergencycalltracker(void) { gchar* module_name = g_strconcat(dsme_module_path, "emergencycalltracker.so", NULL); emergencycalltracker_module = load_module_under_test(module_name); DSM_MSGTYPE_DBUS_CONNECT msg = TEST_MSG_INIT(DSM_MSGTYPE_DBUS_CONNECT); send_message(emergencycalltracker_module, &msg); g_free(module_name); }
static void load_alarmtracker(long int alarmtime) { set_alarm_queue(alarmtime); gchar* module_name_tmp = g_strconcat(dsme_module_path, "alarmtracker.so", NULL); alarmtracker_module = load_module_under_test(module_name_tmp); DSM_MSGTYPE_DBUS_CONNECT msg = TEST_MSG_INIT(DSM_MSGTYPE_DBUS_CONNECT); send_message(alarmtracker_module, &msg); g_free(module_name_tmp); }
static void testcase21(void) { /* non-rd_mode cases and cal problems */ gchar* module_name = g_strconcat(dsme_module_path, "state.so", NULL); // non-rd_mode rd_mode = ""; unsetenv("DSME_RD_FLAGS_ENV"); setenv("BOOTSTATE", "DIIBADAABA", true); module_t* state = load_module_under_test(module_name); unsetenv("BOOTSTATE"); DSM_MSGTYPE_STATE_CHANGE_IND* ind; assert(ind = queued(DSM_MSGTYPE_STATE_CHANGE_IND)); assert(ind->state == DSME_STATE_USER); free(ind); assert(!message_queue_is_empty()); DSM_MSGTYPE_ENTER_MALF* malfmsg; assert((malfmsg = queued(DSM_MSGTYPE_ENTER_MALF))); //TODO: Should the reason / component be checked? free(malfmsg); assert(message_queue_is_empty()); assert(!timer_exists()); unload_module_under_test(state); // cal problem rd_mode = 0; setenv("BOOTSTATE", "DIIBADAABA", true); state = load_module_under_test(module_name); unsetenv("BOOTSTATE"); assert(ind = queued(DSM_MSGTYPE_STATE_CHANGE_IND)); assert(ind->state == DSME_STATE_USER); free(ind); assert(!message_queue_is_empty()); assert(malfmsg = queued(DSM_MSGTYPE_ENTER_MALF)); //TODO: Should the reason / component be checked? free(malfmsg); assert(message_queue_is_empty()); assert(!timer_exists()); unload_module_under_test(state); g_free(module_name); }
static void testcase20(void) { /* weird $BOOTSTATE cases */ // do not specify $BOOTSTATE module_t* state = load_module_under_test("../modules/libstate.so"); DSM_MSGTYPE_STATE_CHANGE_IND* ind; assert((ind = queued(DSM_MSGTYPE_STATE_CHANGE_IND))); assert(ind->state == DSME_STATE_MALF); free(ind); assert(message_queue_is_empty()); assert(!timer_exists()); unload_module_under_test(state); // specify a bad $BOOTSTATE state = load_state_module("DIIBADAABA", DSME_STATE_MALF); assert(!timer_exists()); assert(message_queue_is_empty()); unload_module_under_test(state); // specify SHUTDOWN setenv("BOOTSTATE", "SHUTDOWN", true); state = load_module_under_test("../modules/libstate.so"); unsetenv("BOOTSTATE"); expect_shutdown(state); unload_module_under_test(state); // specify SHUTDOWN setenv("BOOTSTATE", "SHUTDOWN", true); state = load_module_under_test("../modules/libstate.so"); unsetenv("BOOTSTATE"); expect_shutdown(state); unload_module_under_test(state); // specify BOOT setenv("BOOTSTATE", "BOOT", true); state = load_module_under_test("../modules/libstate.so"); unsetenv("BOOTSTATE"); expect_reboot(state); unload_module_under_test(state); }
static module_t* load_state_module(const char* bootstate, dsme_state_t expected_state) { module_t* module; setenv("BOOTSTATE", bootstate, true); module = load_module_under_test("../modules/libstate.so"); unsetenv("BOOTSTATE"); DSM_MSGTYPE_STATE_CHANGE_IND* ind; assert((ind = queued(DSM_MSGTYPE_STATE_CHANGE_IND))); assert(ind->state == expected_state); free(ind); if (expected_state == DSME_STATE_ACTDEAD) { DSM_MSGTYPE_SAVE_DATA_IND* ind2; assert(ind2 = queued(DSM_MSGTYPE_SAVE_DATA_IND)); free(ind2); } assert(message_queue_is_empty()); return module; }