Commit fbabc0cd authored by Seppo Takalo's avatar Seppo Takalo Committed by Carles Cufi
Browse files

test: lwm2m: Allow longer waits and stop properly

RD-client tests should wait longer for expected events.
Also the stubbed service worker should be stopped properly
after tests.

Signed-off-by: default avatarSeppo Takalo <seppo.takalo@nordicsemi.no>
parent cb42c9b6
Loading
Loading
Loading
Loading
+5 −2
Changes for tests/net/lib/lwm2m/lwm2m_rd_client/src/main.c: 5 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ DEFINE_FFF_GLOBALS;
/* Maximum number of iterations within the state machine of RD Client
 * service that is waited for until a possible event occurs
 */
static const uint8_t RD_CLIENT_MAX_LOOKUP_ITERATIONS = 10;
static const uint8_t RD_CLIENT_MAX_LOOKUP_ITERATIONS = 100;

FAKE_VOID_FUNC(show_lwm2m_event, enum lwm2m_rd_client_event);
FAKE_VOID_FUNC(show_lwm2m_observe, enum lwm2m_observe_event);
@@ -143,7 +143,10 @@ static void my_suite_before(void *data)

	RESET_FAKE(show_lwm2m_event);
	RESET_FAKE(show_lwm2m_observe);
}

static void my_suite_after(void *data)
{
	test_lwm2m_engine_stop_service();
}

@@ -165,7 +168,7 @@ void message_reply_timeout_cb_default(struct lwm2m_message *msg)
	msg->message_timeout_cb(msg);
}

ZTEST_SUITE(lwm2m_rd_client, NULL, NULL, my_suite_before, NULL, NULL);
ZTEST_SUITE(lwm2m_rd_client, NULL, NULL, my_suite_before, my_suite_after, NULL);

ZTEST(lwm2m_rd_client, test_start_registration_ok)
{
+4 −1
Changes for tests/net/lib/lwm2m/lwm2m_rd_client/src/stubs.c: 4 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -94,10 +94,11 @@ int lwm2m_engine_call_at(k_work_handler_t work, int64_t timestamp)
uint16_t counter = RD_CLIENT_MAX_SERVICE_ITERATIONS;
struct lwm2m_message *pending_message;
void *(*pending_message_cb)();
static bool running;

static void service_work_fn(struct k_work *work)
{
	while (true) {
	while (running) {
		if (pending_message != NULL && pending_message_cb != NULL) {
			pending_message_cb(pending_message);
			pending_message = NULL;
@@ -132,6 +133,7 @@ K_WORK_DEFINE(service_work, service_work_fn);

void test_lwm2m_engine_start_service(void)
{
	running = true;
	counter = RD_CLIENT_MAX_SERVICE_ITERATIONS;
	k_work_submit(&service_work);
}
@@ -139,6 +141,7 @@ void test_lwm2m_engine_start_service(void)
void test_lwm2m_engine_stop_service(void)
{
	pending_message_cb = NULL;
	running = false;
	k_work_cancel(&service_work);
}