mirror of git://git.sysmocom.de/ofono
stktest: Add stk_add_timed_test
This commit is contained in:
parent
d9dfa32269
commit
329158cdc2
|
@ -89,12 +89,15 @@ struct test {
|
||||||
void *agent_func;
|
void *agent_func;
|
||||||
terminal_response_func tr_func;
|
terminal_response_func tr_func;
|
||||||
enum test_result result;
|
enum test_result result;
|
||||||
|
gdouble min_time;
|
||||||
|
gdouble max_time;
|
||||||
};
|
};
|
||||||
|
|
||||||
static GMainLoop *main_loop = NULL;
|
static GMainLoop *main_loop = NULL;
|
||||||
static volatile sig_atomic_t __terminated = 0;
|
static volatile sig_atomic_t __terminated = 0;
|
||||||
static GList *tests = NULL;
|
static GList *tests = NULL;
|
||||||
static GList *cur_test = NULL;
|
static GList *cur_test = NULL;
|
||||||
|
static GTimer *timer = NULL;
|
||||||
|
|
||||||
/* DBus related */
|
/* DBus related */
|
||||||
static DBusConnection *conn;
|
static DBusConnection *conn;
|
||||||
|
@ -853,6 +856,9 @@ static void register_agent_reply(DBusPendingCall *call, void *user_data)
|
||||||
state = TEST_STATE_RUNNING;
|
state = TEST_STATE_RUNNING;
|
||||||
test = cur_test->data;
|
test = cur_test->data;
|
||||||
send_proactive_command(test->req_pdu, test->req_len);
|
send_proactive_command(test->req_pdu, test->req_len);
|
||||||
|
|
||||||
|
if (test->min_time != 0.0 || test->max_time != 0.0)
|
||||||
|
g_timer_start(timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void register_agent()
|
static void register_agent()
|
||||||
|
@ -1132,6 +1138,26 @@ static void expect_response_and_finish(const unsigned char *pdu,
|
||||||
|
|
||||||
STKTEST_RESPONSE_ASSERT(test->rsp_pdu, test->rsp_len, pdu, len);
|
STKTEST_RESPONSE_ASSERT(test->rsp_pdu, test->rsp_len, pdu, len);
|
||||||
|
|
||||||
|
if (test->min_time != 0.0 || test->max_time != 0.0) {
|
||||||
|
gdouble elapsed = g_timer_elapsed(timer, NULL);
|
||||||
|
|
||||||
|
if (elapsed < test->min_time) {
|
||||||
|
g_printerr("Response received too soon, elapsed:%.2f,"
|
||||||
|
" expected: %.2f\n", elapsed,
|
||||||
|
test->min_time);
|
||||||
|
__stktest_test_finish(FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (elapsed > test->max_time) {
|
||||||
|
g_printerr("Response received too late, elapsed: %.2f,"
|
||||||
|
" expected: %.2f\n", elapsed,
|
||||||
|
test->max_time);
|
||||||
|
__stktest_test_finish(FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
g_idle_add(end_session_and_finish, NULL);
|
g_idle_add(end_session_and_finish, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2994,6 +3020,29 @@ static void stktest_add_test(const char *name, const char *method,
|
||||||
tests = g_list_append(tests, test);
|
tests = g_list_append(tests, test);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void stktest_add_timed_test(const char *name, const char *method,
|
||||||
|
const unsigned char *req,
|
||||||
|
unsigned int req_len,
|
||||||
|
const unsigned char *rsp,
|
||||||
|
unsigned int rsp_len,
|
||||||
|
void *agent_func,
|
||||||
|
terminal_response_func tr_func,
|
||||||
|
gdouble expected_min_time,
|
||||||
|
gdouble expected_max_time)
|
||||||
|
{
|
||||||
|
GList *last;
|
||||||
|
struct test *test;
|
||||||
|
|
||||||
|
stktest_add_test(name, method, req, req_len, rsp, rsp_len, agent_func,
|
||||||
|
tr_func);
|
||||||
|
|
||||||
|
last = g_list_last(tests);
|
||||||
|
test = last->data;
|
||||||
|
|
||||||
|
test->min_time = expected_min_time;
|
||||||
|
test->max_time = expected_max_time;
|
||||||
|
}
|
||||||
|
|
||||||
static void __stktest_test_init(void)
|
static void __stktest_test_init(void)
|
||||||
{
|
{
|
||||||
stktest_add_test("Display Text 1.1", "DisplayText",
|
stktest_add_test("Display Text 1.1", "DisplayText",
|
||||||
|
@ -3744,8 +3793,12 @@ int main(int argc, char **argv)
|
||||||
watch = g_dbus_add_service_watch(conn, OFONO_SERVICE,
|
watch = g_dbus_add_service_watch(conn, OFONO_SERVICE,
|
||||||
ofono_connect, ofono_disconnect, NULL, NULL);
|
ofono_connect, ofono_disconnect, NULL, NULL);
|
||||||
|
|
||||||
|
timer = g_timer_new();
|
||||||
|
|
||||||
g_main_loop_run(main_loop);
|
g_main_loop_run(main_loop);
|
||||||
|
|
||||||
|
g_timer_destroy(timer);
|
||||||
|
|
||||||
g_dbus_remove_watch(conn, watch);
|
g_dbus_remove_watch(conn, watch);
|
||||||
|
|
||||||
if (ofono_running == TRUE)
|
if (ofono_running == TRUE)
|
||||||
|
|
Loading…
Reference in New Issue