Skip to content

Commit 6b97bfd

Browse files
committed
sys/log: Update selftests to account for header and trailers
- Earlier these would only account for the entries, now they also account for headers and trailers
1 parent 159a6f0 commit 6b97bfd

11 files changed

+222
-85
lines changed

sys/log/full/selftest/util/include/log_test_util/log_test_util.h

+4
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ extern struct fcb2 log_fcb;
4141
#endif
4242
extern struct log my_log;
4343
extern char *ltu_str_logs[];
44+
extern uint8_t dummy_log_arr[];
4445

4546
struct os_mbuf *ltu_flat_to_fragged_mbuf(const void *flat, int len,
4647
int frag_sz);
@@ -49,6 +50,9 @@ void ltu_setup_2fcbs(struct fcb_log *fcb_log1, struct log *log1,
4950
struct fcb_log *fcb_log2, struct log *log2);
5051
void ltu_setup_cbmem(struct cbmem *cbmem, struct log *log);
5152
void ltu_verify_contents(struct log *log);
53+
uint16_t *ltu_get_ltu_off_arr(void);
54+
uint16_t ltu_init_arr(void);
55+
int ltu_num_strs(void);
5256

5357
TEST_SUITE_DECL(log_test_suite_cbmem_flat);
5458
TEST_CASE_DECL(log_test_case_cbmem_append);

sys/log/full/selftest/util/src/log_test_util.c

+78
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919

2020
#include "log_test_util/log_test_util.h"
21+
#include "log/log.h"
2122

2223
#if MYNEWT_VAL(LOG_FCB)
2324
static struct flash_area fcb_areas[] = {
@@ -46,6 +47,37 @@ static struct flash_sector_range fcb_range = {
4647
static int ltu_str_idx = 0;
4748
static int ltu_str_max_idx = 0;
4849

50+
struct dummy_log {
51+
struct log_entry_hdr hdr;
52+
struct log_tlv tlv;
53+
uint32_t num_entries;
54+
};
55+
56+
struct dummy_log dummy_log = {
57+
.hdr = {
58+
.ue_ts = 1,
59+
.ue_module = 2,
60+
.ue_etype = 3,
61+
.ue_flags = 0
62+
#if MYNEWT_VAL(LOG_FLAGS_IMAGE_HASH)
63+
| LOG_FLAGS_IMG_HASH
64+
#endif
65+
#if MYNEWT_VAL(LOG_FLAGS_TLV_SUPPORT)
66+
| LOG_FLAGS_TLV_SUPPORT
67+
#endif
68+
,
69+
.ue_etype = 4,
70+
.ue_imghash = {1, 2, 3, 4},
71+
.ue_level = 3,
72+
.ue_num_entries = 5
73+
},
74+
.tlv = {
75+
.tag = LOG_TLV_NUM_ENTRIES,
76+
.len = LOG_NUM_ENTRIES_SIZE
77+
},
78+
.num_entries = 0,
79+
};
80+
4981
char *ltu_str_logs[] = {
5082
"testdata",
5183
"1testdata2",
@@ -54,6 +86,10 @@ char *ltu_str_logs[] = {
5486
NULL
5587
};
5688

89+
uint16_t ltu_off_arr[5];
90+
91+
uint8_t dummy_log_arr[sizeof(ltu_str_logs) + sizeof(struct dummy_log)*4];
92+
5793
static uint8_t ltu_cbmem_buf[2048];
5894

5995
int
@@ -66,6 +102,40 @@ ltu_num_strs(void)
66102
return i;
67103
}
68104

105+
uint16_t *
106+
ltu_get_ltu_off_arr(void)
107+
{
108+
return ltu_off_arr;
109+
}
110+
111+
uint16_t
112+
ltu_init_arr(void)
113+
{
114+
int i;
115+
uint16_t offset = 0;
116+
117+
for (i = 0; i < ltu_num_strs(); i++) {
118+
ltu_off_arr[i] = offset;
119+
memcpy(dummy_log_arr + offset, &dummy_log.hdr, LOG_BASE_ENTRY_HDR_SIZE);
120+
offset += LOG_BASE_ENTRY_HDR_SIZE;
121+
#if MYNEWT_VAL(LOG_FLAGS_IMAGE_HASH)
122+
memcpy(dummy_log_arr + offset,
123+
dummy_log.hdr.ue_imghash, LOG_IMG_HASHLEN);
124+
offset += LOG_IMG_HASHLEN;
125+
#endif
126+
memcpy(dummy_log_arr + offset, ltu_str_logs[i], strlen(ltu_str_logs[i]));
127+
offset += strlen(ltu_str_logs[i]);
128+
#if MYNEWT_VAL(LOG_FLAGS_TLV_SUPPORT) && MYNEWT_VAL(LOG_TLV_NUM_ENTRIES)
129+
memcpy(dummy_log_arr + offset, &dummy_log.tlv, sizeof(struct log_tlv));
130+
offset += sizeof(struct log_tlv);
131+
memcpy(dummy_log_arr + offset, &dummy_log.num_entries, LOG_NUM_ENTRIES_SIZE);
132+
offset += LOG_NUM_ENTRIES_SIZE;
133+
#endif
134+
}
135+
ltu_off_arr[i] = offset;
136+
return offset;
137+
}
138+
69139
struct os_mbuf *
70140
ltu_flat_to_fragged_mbuf(const void *flat, int len, int frag_sz)
71141
{
@@ -191,13 +261,21 @@ ltu_walk_verify(struct log *log, struct log_offset *log_offset,
191261
int dlen;
192262
uint16_t hdr_len;
193263
uint16_t trailer_len;
264+
uint16_t offset = 0;
194265

195266
TEST_ASSERT(ltu_str_idx < ltu_str_max_idx);
196267

197268
/*** Verify contents using single read. */
198269

199270
rc = log_read(log, dptr, &ueh, 0, LOG_BASE_ENTRY_HDR_SIZE);
200271
TEST_ASSERT(rc == LOG_BASE_ENTRY_HDR_SIZE);
272+
offset = LOG_BASE_ENTRY_HDR_SIZE;
273+
274+
if (ueh.ue_flags & LOG_FLAGS_IMG_HASH) {
275+
rc = log_read(log, dptr, data, offset, LOG_IMG_HASHLEN);
276+
TEST_ASSERT(rc == LOG_IMG_HASHLEN);
277+
offset += LOG_IMG_HASHLEN;
278+
}
201279

202280
hdr_len = log_hdr_len(&ueh);
203281
trailer_len = log_trailer_len(&ueh);

sys/log/full/selftest/util/src/testcases/log_test_case_cbmem_append.c

+14-11
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,26 @@ TEST_CASE_SELF(log_test_case_cbmem_append)
2323
{
2424
struct cbmem cbmem;
2525
struct log log;
26-
uint8_t buf[256];
27-
char *str;
28-
int body_len;
26+
uint16_t len = 0;
27+
uint16_t *off_arr;
2928
int i;
3029
int rc;
30+
int num_strs = ltu_num_strs();
31+
struct log_entry_hdr *hdr;
3132

3233
ltu_setup_cbmem(&cbmem, &log);
34+
len = ltu_init_arr();
35+
TEST_ASSERT_FATAL(len != 0);
3336

34-
for (i = 0; ; i++) {
35-
str = ltu_str_logs[i];
36-
if (!str) {
37-
break;
38-
}
37+
off_arr = ltu_get_ltu_off_arr();
38+
TEST_ASSERT_FATAL(off_arr != NULL);
3939

40-
body_len = strlen(str);
41-
memcpy(buf + LOG_HDR_SIZE, str, body_len);
42-
rc = log_append_typed(&log, 0, 0, LOG_ETYPE_STRING, buf, body_len);
40+
for (i = 0; i < num_strs; i++) {
41+
hdr = (struct log_entry_hdr *)(dummy_log_arr + off_arr[i]);
42+
len = off_arr[i+1] - off_arr[i] - log_hdr_len(hdr) - log_trailer_len(hdr);
43+
rc = log_append_typed(&log, 2, 3, LOG_ETYPE_STRING,
44+
dummy_log_arr + off_arr[i],
45+
len);
4346
TEST_ASSERT_FATAL(rc == 0);
4447
}
4548

sys/log/full/selftest/util/src/testcases/log_test_case_cbmem_append_body.c

+17-7
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,28 @@ TEST_CASE_SELF(log_test_case_cbmem_append_body)
2323
{
2424
struct cbmem cbmem;
2525
struct log log;
26-
char *str;
26+
uint16_t len = 0;
27+
uint16_t *off_arr;
2728
int i;
29+
int rc;
30+
struct log_entry_hdr *hdr;
31+
int num_strs = ltu_num_strs();
2832

2933
ltu_setup_cbmem(&cbmem, &log);
34+
len = ltu_init_arr();
35+
TEST_ASSERT_FATAL(len != 0);
3036

31-
for (i = 0; ; i++) {
32-
str = ltu_str_logs[i];
33-
if (!str) {
34-
break;
35-
}
37+
off_arr = ltu_get_ltu_off_arr();
38+
TEST_ASSERT_FATAL(off_arr != NULL);
3639

37-
log_append_body(&log, 0, 0, LOG_ETYPE_STRING, str, strlen(str));
40+
for (i = 0; i < num_strs; i++) {
41+
hdr = (struct log_entry_hdr *)(dummy_log_arr + off_arr[i]);
42+
len = off_arr[i + 1] - off_arr[i] -
43+
log_hdr_len(hdr) - log_trailer_len(hdr);
44+
rc = log_append_body(&log, 2, 3, LOG_ETYPE_STRING,
45+
dummy_log_arr + off_arr[i] + log_hdr_len(hdr),
46+
len);
47+
TEST_ASSERT_FATAL(rc == 0);
3848
}
3949

4050
ltu_verify_contents(&log);

sys/log/full/selftest/util/src/testcases/log_test_case_cbmem_append_mbuf.c

+14-14
Original file line numberDiff line numberDiff line change
@@ -22,28 +22,28 @@
2222
TEST_CASE_SELF(log_test_case_cbmem_append_mbuf)
2323
{
2424
struct cbmem cbmem;
25-
struct os_mbuf *om;
2625
struct log log;
27-
char *str;
28-
int rc;
26+
struct os_mbuf *om;
27+
uint16_t len = 0;
28+
uint16_t *off_arr;
2929
int i;
30+
int rc;
31+
int num_strs = ltu_num_strs();
3032

3133
ltu_setup_cbmem(&cbmem, &log);
34+
len = ltu_init_arr();
35+
TEST_ASSERT_FATAL(len != 0);
3236

33-
for (i = 0; ; i++) {
34-
str = ltu_str_logs[i];
35-
if (!str) {
36-
break;
37-
}
37+
off_arr = ltu_get_ltu_off_arr();
38+
TEST_ASSERT_FATAL(off_arr != NULL);
3839

40+
for (i = 0; i < num_strs; i++) {
41+
len = off_arr[i+1] - off_arr[i];
3942
/* Split chain into several mbufs. */
40-
om = ltu_flat_to_fragged_mbuf(str, strlen(str), 2);
41-
42-
/* Prepend space for the entry header. */
43-
om = os_mbuf_prepend(om, LOG_HDR_SIZE);
44-
TEST_ASSERT(om != NULL);
43+
om = ltu_flat_to_fragged_mbuf(dummy_log_arr + off_arr[i],
44+
len, 2);
4545

46-
rc = log_append_mbuf_typed(&log, 0, 0, LOG_ETYPE_STRING, om);
46+
rc = log_append_mbuf_typed(&log, 2, 3, LOG_ETYPE_STRING, om);
4747
TEST_ASSERT_FATAL(rc == 0);
4848
}
4949

sys/log/full/selftest/util/src/testcases/log_test_case_cbmem_append_mbuf_body.c

+16-8
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,30 @@ TEST_CASE_SELF(log_test_case_cbmem_append_mbuf_body)
2424
struct cbmem cbmem;
2525
struct os_mbuf *om;
2626
struct log log;
27-
char *str;
2827
int rc;
2928
int i;
29+
uint16_t len;
30+
int num_strs = ltu_num_strs();
31+
struct log_entry_hdr *hdr;
32+
uint16_t *off_arr;
3033

3134
ltu_setup_cbmem(&cbmem, &log);
35+
len = ltu_init_arr();
36+
TEST_ASSERT_FATAL(len != 0);
3237

33-
for (i = 0; ; i++) {
34-
str = ltu_str_logs[i];
35-
if (!str) {
36-
break;
37-
}
38+
off_arr = ltu_get_ltu_off_arr();
39+
TEST_ASSERT_FATAL(off_arr != NULL);
40+
41+
for (i = 0; i < num_strs; i++) {
42+
hdr = (struct log_entry_hdr *)(dummy_log_arr + off_arr[i]);
43+
len = off_arr[i + 1] - off_arr[i] -
44+
log_hdr_len(hdr) - log_trailer_len(hdr);
3845

3946
/* Split chain into several mbufs. */
40-
om = ltu_flat_to_fragged_mbuf(str, strlen(str), 2);
47+
om = ltu_flat_to_fragged_mbuf(dummy_log_arr + off_arr[i] + log_hdr_len(hdr),
48+
len, 2);
4149

42-
rc = log_append_mbuf_body(&log, 0, 0, LOG_ETYPE_STRING, om);
50+
rc = log_append_mbuf_body(&log, 2, 3, LOG_ETYPE_STRING, om);
4351
TEST_ASSERT_FATAL(rc == 0);
4452
}
4553

sys/log/full/selftest/util/src/testcases/log_test_case_cbmem_printf.c

+16-7
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,27 @@ TEST_CASE_SELF(log_test_case_cbmem_printf)
2323
{
2424
struct cbmem cbmem;
2525
struct log log;
26-
char *str;
2726
int i;
27+
uint16_t len = 0;
28+
int num_strs = ltu_num_strs();
29+
uint16_t *off_arr;
30+
struct log_entry_hdr *hdr;
31+
char data[256];
2832

2933
ltu_setup_cbmem(&cbmem, &log);
34+
len = ltu_init_arr();
35+
TEST_ASSERT_FATAL(len != 0);
3036

31-
for (i = 0; ; i++) {
32-
str = ltu_str_logs[i];
33-
if (!str) {
34-
break;
35-
}
37+
off_arr = ltu_get_ltu_off_arr();
38+
TEST_ASSERT_FATAL(off_arr != NULL);
3639

37-
log_printf(&log, 0, 0, str, strlen(str));
40+
for (i = 0; i < num_strs; i++) {
41+
hdr = (struct log_entry_hdr *)(dummy_log_arr + off_arr[i]);
42+
len = off_arr[i+1] - off_arr[i] - log_hdr_len(hdr) - log_trailer_len(hdr);
43+
memcpy(data, dummy_log_arr + off_arr[i] + log_hdr_len(hdr),
44+
len);
45+
data[len] = '\0';
46+
log_printf(&log, 0, 0, data, len);
3847
}
3948

4049
ltu_verify_contents(&log);

sys/log/full/selftest/util/src/testcases/log_test_case_fcb_append.c

+16-11
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,27 @@ TEST_CASE_SELF(log_test_case_fcb_append)
2323
{
2424
struct fcb_log fcb_log;
2525
struct log log;
26-
uint8_t buf[256];
27-
char *str;
28-
int body_len;
26+
uint16_t len = 0;
27+
uint16_t *off_arr;
2928
int i;
29+
int rc;
30+
int num_strs = ltu_num_strs();
31+
struct log_entry_hdr *hdr;
3032

3133
ltu_setup_fcb(&fcb_log, &log);
34+
len = ltu_init_arr();
35+
TEST_ASSERT_FATAL(len != 0);
3236

33-
for (i = 0; ; i++) {
34-
str = ltu_str_logs[i];
35-
if (!str) {
36-
break;
37-
}
37+
off_arr = ltu_get_ltu_off_arr();
38+
TEST_ASSERT_FATAL(off_arr != NULL);
3839

39-
body_len = strlen(str);
40-
memcpy(buf + LOG_HDR_SIZE, str, body_len);
41-
log_append_typed(&log, 0, 0, LOG_ETYPE_STRING, buf, body_len);
40+
for (i = 0;i < num_strs; i++) {
41+
hdr = (struct log_entry_hdr *)(dummy_log_arr + off_arr[i]);
42+
len = off_arr[i+1] - off_arr[i] - log_hdr_len(hdr) - log_trailer_len(hdr);
43+
rc = log_append_typed(&log, 2, 3, LOG_ETYPE_STRING,
44+
dummy_log_arr + off_arr[i],
45+
len);
46+
TEST_ASSERT_FATAL(rc == 0);
4247
}
4348

4449
ltu_verify_contents(&log);

0 commit comments

Comments
 (0)