15
15
16
16
#include "message_channel.h"
17
17
18
- #include "zcbor_decode.h"
19
- #include "conn_info_object_decode.h"
20
-
21
18
DEFINE_FFF_GLOBALS ;
22
19
23
20
FAKE_VALUE_FUNC (int , date_time_now , int64_t * );
@@ -26,12 +23,13 @@ FAKE_VALUE_FUNC(int, task_wdt_add, uint32_t, task_wdt_callback_t, void *);
26
23
FAKE_VALUE_FUNC (int , lte_lc_conn_eval_params_get , struct lte_lc_conn_eval_params * );
27
24
FAKE_VALUE_FUNC (int , conn_mgr_all_if_connect , bool );
28
25
FAKE_VALUE_FUNC (int , conn_mgr_all_if_up , bool );
26
+ FAKE_VALUE_FUNC (int , conn_mgr_all_if_disconnect , bool );
29
27
FAKE_VOID_FUNC (net_mgmt_add_event_callback , struct net_mgmt_event_callback * );
30
28
31
29
LOG_MODULE_REGISTER (network_module_test , 4 );
32
30
33
31
ZBUS_MSG_SUBSCRIBER_DEFINE (test_subscriber );
34
- ZBUS_CHAN_ADD_OBS (PAYLOAD_CHAN , test_subscriber , 0 );
32
+ ZBUS_CHAN_ADD_OBS (NETWORK_CHAN , test_subscriber , 0 );
35
33
36
34
#define FAKE_TIME_MS 1723099642000
37
35
#define FAKE_RSRP_IDX_MAX 97
@@ -56,78 +54,56 @@ static int lte_lc_conn_eval_params_get_custom_fake(struct lte_lc_conn_eval_param
56
54
return 0 ;
57
55
}
58
56
59
- static int lte_lc_conn_eval_params_get_max_custom_fake (struct lte_lc_conn_eval_params * params )
60
- {
61
- params -> energy_estimate = FAKE_ENERGY_ESTIMATE_MAX ;
62
- params -> rsrp = FAKE_RSRP_IDX_MAX ;
63
-
64
- return 0 ;
65
- }
66
-
67
- static int lte_lc_conn_eval_params_get_invalid_custom_fake (struct lte_lc_conn_eval_params * params )
68
- {
69
- params -> energy_estimate = FAKE_ENERGY_ESTIMATE_MAX ;
70
- params -> rsrp = FAKE_RSRP_IDX_INVALID ;
71
-
72
- return 0 ;
73
- }
74
-
75
- static int lte_lc_conn_eval_params_get_min_custom_fake (struct lte_lc_conn_eval_params * params )
76
- {
77
- params -> energy_estimate = FAKE_ENERGY_ESTIMATE_MIN ;
78
- params -> rsrp = FAKE_RSRP_IDX_MIN ;
79
-
80
- return 0 ;
81
- }
82
-
83
- static void send_time_available (void )
57
+ static void send_connected (void )
84
58
{
85
- enum time_status time_type = TIME_AVAILABLE ;
86
- int err = zbus_chan_pub (& TIME_CHAN , & time_type , K_SECONDS (1 ));
59
+ enum network_status network_status = NETWORK_CONNECTED ;
60
+ int err = zbus_chan_pub (& NETWORK_CHAN , & network_status , K_SECONDS (1 ));
87
61
88
62
TEST_ASSERT_EQUAL (0 , err );
89
63
}
90
64
91
65
static void send_trigger (void )
92
66
{
93
- enum trigger_type trigger_type = TRIGGER_DATA_SAMPLE ;
94
- int err = zbus_chan_pub (& TRIGGER_CHAN , & trigger_type , K_SECONDS (1 ));
67
+ enum network_status status = NETWORK_QUALITY_SAMPLE_REQUEST ;
68
+
69
+ int err = zbus_chan_pub (& NETWORK_CHAN , & status , K_SECONDS (1 ));
95
70
96
71
TEST_ASSERT_EQUAL (0 , err );
97
72
}
98
73
99
- static void wait_for_and_decode_payload (struct conn_info_object * conn_info_obj )
74
+ static void wait_for_and_decode_payload (enum network_status * output )
100
75
{
101
76
const struct zbus_channel * chan ;
102
- static struct payload payload ;
103
77
int err ;
104
78
105
- /* Allow the test thread to sleep so that the DUT's thread is allowed to run. */
106
- k_sleep (K_MSEC (100 ));
107
-
108
- err = zbus_sub_wait_msg (& test_subscriber , & chan , & payload , K_MSEC (1000 ));
109
- if (err == - ENOMSG ) {
110
- LOG_ERR ("No payload message received" );
111
- TEST_FAIL ();
112
- } else if (err ) {
113
- LOG_ERR ("zbus_sub_wait, error: %d" , err );
114
- SEND_FATAL_ERROR ();
115
-
116
- return ;
117
- }
118
-
119
- /* check if chan is payload channel */
120
- if (chan != & PAYLOAD_CHAN ) {
121
- LOG_ERR ("Received message from wrong channel" );
122
- TEST_FAIL ();
79
+ /* Give the test 500 ms to complete */
80
+ uint64_t end_time = k_uptime_get () + 1500 ;
81
+
82
+ while (k_uptime_get () < end_time ) {
83
+ err = zbus_sub_wait_msg (& test_subscriber , & chan , output , K_MSEC (1000 ));
84
+ if (err == - ENOMSG ) {
85
+ LOG_ERR ("No payload message received" );
86
+ TEST_FAIL ();
87
+ } else if (err ) {
88
+ LOG_ERR ("zbus_sub_wait, error: %d" , err );
89
+ SEND_FATAL_ERROR ();
90
+
91
+ return ;
92
+ }
93
+
94
+ /* check if chan is payload channel */
95
+ if (chan != & NETWORK_CHAN ) {
96
+ LOG_ERR ("Received message from wrong channel" );
97
+ TEST_FAIL ();
98
+ }
99
+
100
+ if (* output == NETWORK_QUALITY_SAMPLE_RESPONSE ) {
101
+ return ;
102
+ }
123
103
}
124
104
125
- /* decode payload */
126
- cbor_decode_conn_info_object (payload .buffer , payload .buffer_len , conn_info_obj , NULL );
127
- if (err != ZCBOR_SUCCESS ) {
128
- LOG_ERR ("Failed to decode payload" );
129
- TEST_FAIL ();
130
- }
105
+ LOG_ERR ("Timeout waiting for payload message" );
106
+ TEST_FAIL ();
131
107
}
132
108
133
109
void setUp (void )
@@ -140,26 +116,22 @@ void setUp(void)
140
116
RESET_FAKE (conn_mgr_all_if_up );
141
117
142
118
date_time_now_fake .custom_fake = date_time_now_custom_fake ;
143
- send_time_available ();
119
+ send_connected ();
144
120
}
145
121
146
122
void tearDown (void )
147
123
{
148
124
const struct zbus_channel * chan ;
149
- static struct payload received_payload ;
150
- int err ;
125
+ static enum network_status status ;
151
126
152
- err = zbus_sub_wait_msg (& test_subscriber , & chan , & received_payload , K_MSEC (1000 ));
153
- if (err == 0 ) {
154
- LOG_ERR ("Unhandled message in payload channel" );
155
- TEST_FAIL ();
127
+ while (zbus_sub_wait_msg (& test_subscriber , & chan , & status , K_MSEC (1000 )) == 0 ) {
128
+ LOG_INF ("Unhandled message in payload channel: %d" , status );
156
129
}
157
130
}
158
131
159
-
160
132
void test_energy_estimate (void )
161
133
{
162
- static struct conn_info_object conn_info_obj = { 0 } ;
134
+ static enum network_status status ;
163
135
164
136
/* Given */
165
137
lte_lc_conn_eval_params_get_fake .custom_fake = lte_lc_conn_eval_params_get_custom_fake ;
@@ -168,65 +140,8 @@ void test_energy_estimate(void)
168
140
send_trigger ();
169
141
170
142
/* Then */
171
- wait_for_and_decode_payload (& conn_info_obj );
172
- TEST_ASSERT_EQUAL (FAKE_TIME_MS / 1000 , conn_info_obj .base_attributes_m .bt );
173
- TEST_ASSERT_EQUAL (FAKE_ENERGY_ESTIMATE , conn_info_obj .energy_estimate_m .vi );
174
- TEST_ASSERT_EQUAL (RSRP_IDX_TO_DBM (FAKE_RSRP_IDX ), conn_info_obj .rsrp_m .vi .vi );
175
- }
176
-
177
- void test_conn_info_max_values (void )
178
- {
179
- static struct conn_info_object conn_info_obj = {0 };
180
-
181
- /* Given */
182
- lte_lc_conn_eval_params_get_fake .custom_fake = lte_lc_conn_eval_params_get_max_custom_fake ;
183
-
184
- /* When */
185
- send_trigger ();
186
-
187
- /* Then */
188
- wait_for_and_decode_payload (& conn_info_obj );
189
- TEST_ASSERT_EQUAL (FAKE_TIME_MS / 1000 , conn_info_obj .base_attributes_m .bt );
190
- TEST_ASSERT_EQUAL (FAKE_ENERGY_ESTIMATE_MAX , conn_info_obj .energy_estimate_m .vi );
191
- TEST_ASSERT_EQUAL (RSRP_IDX_TO_DBM (FAKE_RSRP_IDX_MAX ), conn_info_obj .rsrp_m .vi .vi );
192
- }
193
-
194
- void test_conn_info_invalid_values (void )
195
- {
196
- static struct conn_info_object conn_info_obj = {0 };
197
-
198
- /* Given */
199
- lte_lc_conn_eval_params_get_fake .custom_fake =
200
- lte_lc_conn_eval_params_get_invalid_custom_fake ;
201
-
202
- /* When */
203
- send_trigger ();
204
-
205
- /* Then */
206
- wait_for_and_decode_payload (& conn_info_obj );
207
- TEST_ASSERT_EQUAL (FAKE_TIME_MS / 1000 , conn_info_obj .base_attributes_m .bt );
208
- TEST_ASSERT_EQUAL (FAKE_ENERGY_ESTIMATE_MAX , conn_info_obj .energy_estimate_m .vi );
209
-
210
- if (conn_info_obj .rsrp_m .vi_present ) {
211
- TEST_FAIL ();
212
- }
213
- }
214
-
215
- void test_conn_info_min_values (void )
216
- {
217
- static struct conn_info_object conn_info_obj = {0 };
218
-
219
- /* Given */
220
- lte_lc_conn_eval_params_get_fake .custom_fake = lte_lc_conn_eval_params_get_min_custom_fake ;
221
-
222
- /* When */
223
- send_trigger ();
224
-
225
- /* Then */
226
- wait_for_and_decode_payload (& conn_info_obj );
227
- TEST_ASSERT_EQUAL (FAKE_TIME_MS / 1000 , conn_info_obj .base_attributes_m .bt );
228
- TEST_ASSERT_EQUAL (FAKE_ENERGY_ESTIMATE_MIN , conn_info_obj .energy_estimate_m .vi );
229
- TEST_ASSERT_EQUAL (RSRP_IDX_TO_DBM (FAKE_RSRP_IDX_MIN ), conn_info_obj .rsrp_m .vi .vi );
143
+ wait_for_and_decode_payload (& status );
144
+ TEST_ASSERT_EQUAL (NETWORK_QUALITY_SAMPLE_RESPONSE , status );
230
145
}
231
146
232
147
void test_no_events_on_zbus_until_watchdog_timeout (void )
0 commit comments