Skip to content

Commit bf93d85

Browse files
authored
Merge pull request #16111 from miri64/congure_test/enh/shorter-shell-cmd
congure_test: make shell commands shorter
2 parents 2cfade2 + f19c8ba commit bf93d85

File tree

5 files changed

+277
-217
lines changed

5 files changed

+277
-217
lines changed

sys/congure/test/congure_test.c

Lines changed: 80 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,15 @@
1818
#include <string.h>
1919
#include <stdlib.h>
2020

21+
#include "clist.h"
2122
#include "fmt.h"
2223

2324
#include "congure/test.h"
2425

26+
static congure_snd_msg_t _msgs_pool[CONFIG_CONGURE_TEST_LOST_MSG_POOL_SIZE];
27+
static unsigned _msgs_pool_idx;
28+
static clist_node_t _msgs;
29+
2530
static bool _scn_u32_dec_with_zero(const char *str, size_t n, uint32_t *res)
2631
{
2732
if ((n == 1) && str[0] == '0') {
@@ -35,10 +40,8 @@ static bool _scn_u32_dec_with_zero(const char *str, size_t n, uint32_t *res)
3540

3641
int congure_test_clear_state(int argc, char **argv)
3742
{
38-
(void)argc;
39-
(void)argv;
4043
memset(congure_test_get_state(), 0, sizeof(congure_test_snd_t));
41-
print_str("{\"success\":null}\n");
44+
congure_test_msgs_reset(argc, argv);
4245
return 0;
4346
}
4447

@@ -126,6 +129,56 @@ int congure_test_call_inter_msg_interval(int argc, char **argv)
126129
return 0;
127130
}
128131

132+
int congure_test_add_msg(int argc, char **argv)
133+
{
134+
uint32_t tmp;
135+
136+
if (argc < 4) {
137+
print_str("{\"error\":\"At least 3 arguments `msg_send_time`, "
138+
"`msg_size`, `msg_resends` expected\"}\n");
139+
return 1;
140+
}
141+
if (_msgs_pool_idx >= ARRAY_SIZE(_msgs_pool)) {
142+
print_str("{\"error\":\"List element pool depleted\"}\n");
143+
return 1;
144+
}
145+
_msgs_pool[_msgs_pool_idx].super.next = NULL;
146+
147+
if (!_scn_u32_dec_with_zero(argv[1], strlen(argv[1]), &tmp)) {
148+
print_str("{\"error\":\"`msg_send_time` expected to be "
149+
"integer\"}\n");
150+
return 1;
151+
}
152+
_msgs_pool[_msgs_pool_idx].send_time = tmp;
153+
154+
if (!_scn_u32_dec_with_zero(argv[2], strlen(argv[2]), &tmp)) {
155+
print_str("{\"error\":\"`msg_size` expected to be integer\"}\n");
156+
return 1;
157+
}
158+
_msgs_pool[_msgs_pool_idx].size = tmp;
159+
160+
if (!_scn_u32_dec_with_zero(argv[3], strlen(argv[3]), &tmp)) {
161+
print_str("{\"error\":\"`msg_resends` expected to be "
162+
"integer\"}\n");
163+
return 1;
164+
}
165+
_msgs_pool[_msgs_pool_idx].resends = tmp;
166+
167+
clist_rpush(&_msgs, &_msgs_pool[_msgs_pool_idx++].super);
168+
print_str("{\"success\":null}\n");
169+
return 0;
170+
}
171+
172+
int congure_test_msgs_reset(int argc, char **argv)
173+
{
174+
(void)argc;
175+
(void)argv;
176+
_msgs.next = NULL;
177+
_msgs_pool_idx = 0;
178+
print_str("{\"success\":null}\n");
179+
return 0;
180+
}
181+
129182
static int _call_report_msg_sent(int argc, char **argv)
130183
{
131184
congure_test_snd_t *c = congure_test_get_state();
@@ -163,56 +216,15 @@ static int _call_report_msg_discarded(int argc, char **argv)
163216
}
164217

165218
static int _call_report_msgs_timeout_lost(void (*method)(congure_snd_t *,
166-
congure_snd_msg_t *),
167-
int argc, char **argv)
219+
congure_snd_msg_t *))
168220
{
169-
static congure_snd_msg_t list_pool[CONFIG_CONGURE_TEST_LOST_MSG_POOL_SIZE];
170-
clist_node_t msgs = { .next = NULL };
171221
congure_test_snd_t *c = congure_test_get_state();
172222

173-
if (argc < 4) {
174-
print_str("{\"error\":\"At least 3 arguments `msg_send_time`, "
175-
"`msg_size`, `msg_resends` expected\"}\n");
223+
if (_msgs.next == NULL) {
224+
print_str("{\"error\":\"Message not initialized\"}\n");
176225
return 1;
177226
}
178-
if ((argc - 1) % 3) {
179-
print_str("{\"error\":\"Number of arguments must be divisible "
180-
"by 3\"}\n");
181-
return 1;
182-
}
183-
if ((unsigned)((argc - 1) / 3) >= ARRAY_SIZE(list_pool)) {
184-
print_str("{\"error\":\"List element pool depleted\"}");
185-
return 1;
186-
}
187-
for (int i = 1; i < argc; i += 3) {
188-
uint32_t tmp;
189-
unsigned pool_idx = ((i - 1) / 3);
190-
191-
list_pool[pool_idx].super.next = NULL;
192-
193-
if (!_scn_u32_dec_with_zero(argv[i], strlen(argv[i]), &tmp)) {
194-
print_str("{\"error\":\"`msg_send_time` expected to be "
195-
"integer\"}\n");
196-
return 1;
197-
}
198-
list_pool[pool_idx].send_time = tmp;
199-
200-
if (!_scn_u32_dec_with_zero(argv[i + 1], strlen(argv[i + 1]), &tmp)) {
201-
print_str("{\"error\":\"`msg_size` expected to be integer\"}\n");
202-
return 1;
203-
}
204-
list_pool[pool_idx].size = tmp;
205-
206-
if (!_scn_u32_dec_with_zero(argv[i + 2], strlen(argv[i + 2]), &tmp)) {
207-
print_str("{\"error\":\"`msg_resends` expected to be "
208-
"integer\"}\n");
209-
return 1;
210-
}
211-
list_pool[pool_idx].resends = tmp;
212-
213-
clist_rpush(&msgs, &list_pool[pool_idx].super);
214-
}
215-
method(&c->super, (congure_snd_msg_t *)msgs.next);
227+
method(&c->super, (congure_snd_msg_t *)_msgs.next);
216228
print_str("{\"success\":null}\n");
217229
return 0;
218230
}
@@ -221,76 +233,61 @@ static int _call_report_msgs_timeout(int argc, char **argv)
221233
{
222234
congure_test_snd_t *c = congure_test_get_state();
223235

224-
return _call_report_msgs_timeout_lost(c->super.driver->report_msgs_timeout,
225-
argc, argv);
236+
(void)argc;
237+
(void)argv;
238+
return _call_report_msgs_timeout_lost(c->super.driver->report_msgs_timeout);
226239
}
227240

228241
static int _call_report_msgs_lost(int argc, char **argv)
229242
{
230243
congure_test_snd_t *c = congure_test_get_state();
231244

232-
return _call_report_msgs_timeout_lost(c->super.driver->report_msgs_lost,
233-
argc, argv);
245+
(void)argc;
246+
(void)argv;
247+
return _call_report_msgs_timeout_lost(c->super.driver->report_msgs_lost);
234248
}
235249

236250
static int _call_report_msg_acked(int argc, char **argv)
237251
{
238-
static congure_snd_msg_t msg = { .size = 0 };
239252
static congure_snd_ack_t ack = { .size = 0 };
240253
congure_test_snd_t *c = congure_test_get_state();
241254
uint32_t tmp;
242255

243-
if (argc < 10) {
244-
print_str("{\"error\":\"At least 9 arguments `msg_send_time`, "
245-
"`msg_size`, `msg_resends`, `ack_recv_time`, `ack_id`, "
246-
"`ack_size`, `ack_clean`, `ack_wnd`, `ack_delay` "
247-
"expected\"}\n");
248-
return 1;
249-
}
250-
if (!_scn_u32_dec_with_zero(argv[1], strlen(argv[1]), &tmp)) {
251-
print_str("{\"error\":\"`msg_send_time` expected to be "
252-
"integer\"}\n");
253-
return 1;
254-
}
255-
msg.send_time = tmp;
256-
257-
if (!_scn_u32_dec_with_zero(argv[2], strlen(argv[2]), &tmp)) {
258-
print_str("{\"error\":\"`msg_size` expected to be integer\"}\n");
256+
if (_msgs.next == NULL) {
257+
print_str("{\"error\":\"Message not initialized\"}\n");
259258
return 1;
260259
}
261-
msg.size = tmp;
262-
263-
if (!_scn_u32_dec_with_zero(argv[3], strlen(argv[3]), &tmp)) {
264-
print_str("{\"error\":\"`msg_resends` expected to be integer\"}\n");
260+
if (argc < 7) {
261+
print_str("{\"error\":\"At least 6 arguments `ack_recv_time`, "
262+
"`ack_id`, `ack_size`, `ack_clean`, `ack_wnd`, `ack_delay` "
263+
"expected\"}\n");
265264
return 1;
266265
}
267-
msg.resends = tmp;
268-
269-
if (!_scn_u32_dec_with_zero(argv[4], strlen(argv[4]), &tmp)) {
266+
if (!_scn_u32_dec_with_zero(argv[1], strlen(argv[1]), &tmp)) {
270267
print_str("{\"error\":\"`ack_recv_time` expected to be integer\"}\n");
271268
return 1;
272269
}
273270
ack.recv_time = tmp;
274271

275-
if (!_scn_u32_dec_with_zero(argv[5], strlen(argv[5]), &tmp)) {
272+
if (!_scn_u32_dec_with_zero(argv[2], strlen(argv[2]), &tmp)) {
276273
print_str("{\"error\":\"`ack_id` expected to be integer\"}\n");
277274
return 1;
278275
}
279276
ack.id = tmp;
280277

281-
if (!_scn_u32_dec_with_zero(argv[6], strlen(argv[6]), &tmp)) {
278+
if (!_scn_u32_dec_with_zero(argv[3], strlen(argv[3]), &tmp)) {
282279
print_str("{\"error\":\"`ack_size` expected to be integer\"}\n");
283280
return 1;
284281
}
285282
ack.size = tmp;
286283

287-
if (!_scn_u32_dec_with_zero(argv[7], strlen(argv[7]), &tmp)) {
284+
if (!_scn_u32_dec_with_zero(argv[4], strlen(argv[4]), &tmp)) {
288285
print_str("{\"error\":\"`ack_clean` expected to be integer\"}\n");
289286
return 1;
290287
}
291288
ack.clean = (bool)tmp;
292289

293-
if (!_scn_u32_dec_with_zero(argv[8], strlen(argv[8]), &tmp)) {
290+
if (!_scn_u32_dec_with_zero(argv[5], strlen(argv[5]), &tmp)) {
294291
print_str("{\"error\":\"`ack_wnd` expected to be integer\"}\n");
295292
return 1;
296293
}
@@ -300,7 +297,7 @@ static int _call_report_msg_acked(int argc, char **argv)
300297
}
301298
ack.wnd = (uint16_t)tmp;
302299

303-
if (!_scn_u32_dec_with_zero(argv[9], strlen(argv[9]), &tmp)) {
300+
if (!_scn_u32_dec_with_zero(argv[6], strlen(argv[6]), &tmp)) {
304301
print_str("{\"error\":\"`ack_delay` expected to be integer\"}\n");
305302
return 1;
306303
}
@@ -310,7 +307,8 @@ static int _call_report_msg_acked(int argc, char **argv)
310307
}
311308
ack.delay = (uint16_t)tmp;
312309

313-
c->super.driver->report_msg_acked(&c->super, &msg, &ack);
310+
c->super.driver->report_msg_acked(&c->super,
311+
(congure_snd_msg_t *)_msgs.next, &ack);
314312
print_str("{\"success\":null}\n");
315313
return 0;
316314
}

0 commit comments

Comments
 (0)