Skip to content

Commit 05458a4

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 05458a4

9 files changed

+179
-76
lines changed

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

+75
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,37 @@ static struct flash_sector_range fcb_range = {
4646
static int ltu_str_idx = 0;
4747
static int ltu_str_max_idx = 0;
4848

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

88+
struct uint16_t ltu_off_arr[5];
89+
90+
uint8_t dummy_log_arr[sizeof(ltu_str_logs) + sizeof(struct dummy_log)*4];
91+
5792
static uint8_t ltu_cbmem_buf[2048];
5893

5994
int
@@ -66,6 +101,39 @@ ltu_num_strs(void)
66101
return i;
67102
}
68103

104+
uint16_t *ltu_get_ltu_off_arr(void)
105+
{
106+
return ltu_off_arr;
107+
}
108+
109+
uint16_t
110+
ltu_init_arr(void)
111+
{
112+
uint16_t offset = 0;
113+
114+
for (i = 0; i < ltu_num_strs(); i++) {
115+
ltu_off_arr[i] = offset;
116+
memcpy(dummy_log_arr + offset, &dummy_log.hdr, LOG_BASE_ENTRY_HDR_SIZE);
117+
offset = LOG_BASE_ENTRY_HDR_SIZE;
118+
#if MYNEWT_VAL(LOG_FLAGS_IMAGE_HASH)
119+
memcpy(dummy_log_arr + offset,
120+
&dummy_log.hdr.ue_imghash, LOG_IMG_HASHLEN);
121+
offset += LOG_IMG_HASHLEN;
122+
#endif
123+
memcpy(dummy_log_arr + offset, ltu_str_logs[i], sizeof(ltu_str_logs[i]));
124+
offset += sizeof(ltu_str_logs[i]);
125+
#if MYNEWT_VAL(LOG_FLAGS_TLV_SUPPORT) && MYNEWT_VAL(LOG_TLV_NUM_ENTRIES)
126+
memcpy(dummy_log_arr + offset, &dummy_log.tlv, sizeof(struct log_tlv));
127+
offset += sizeof(struct log_tlv);
128+
memcpy(dummy_log_arr + offset, &dummy_log.num_entries, LOG_NUM_ENTRIES_SIZE);
129+
#endif
130+
offset += LOG_NUM_ENTRIES_SIZE;
131+
}
132+
ltu_off_arr[i] = offset;
133+
TEST_ASSERT_FATAL(offset <= sizeof(ltu_cbmem_buf));
134+
return offset;
135+
}
136+
69137
struct os_mbuf *
70138
ltu_flat_to_fragged_mbuf(const void *flat, int len, int frag_sz)
71139
{
@@ -191,6 +259,7 @@ ltu_walk_verify(struct log *log, struct log_offset *log_offset,
191259
int dlen;
192260
uint16_t hdr_len;
193261
uint16_t trailer_len;
262+
uint16_t offset = 0;
194263

195264
TEST_ASSERT(ltu_str_idx < ltu_str_max_idx);
196265

@@ -199,6 +268,12 @@ ltu_walk_verify(struct log *log, struct log_offset *log_offset,
199268
rc = log_read(log, dptr, &ueh, 0, LOG_BASE_ENTRY_HDR_SIZE);
200269
TEST_ASSERT(rc == LOG_BASE_ENTRY_HDR_SIZE);
201270

271+
if (ueh.ue_flags & LOG_FLAGS_IMG_HASH) {
272+
offset = LOG_BASE_ENTRY_HDR_SIZE;
273+
rc = log_read(log, dptr, data, offset, LOG_IMG_HASHLEN);
274+
TEST_ASSERT(rc == LOG_IMG_HASHLEN);
275+
}
276+
202277
hdr_len = log_hdr_len(&ueh);
203278
trailer_len = log_trailer_len(&ueh);
204279
dlen = len - hdr_len - trailer_len;

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

+11-11
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,23 @@ 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;
3130

3231
ltu_setup_cbmem(&cbmem, &log);
32+
len = ltu_init_arr();
33+
TEST_ASSERT_FATAL(len != 0);
3334

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

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);
38+
for (i = 0; i < num_strs; i++) {
39+
len = off_arr[i+1] - off_arr[i];
40+
rc = log_append_typed(&log, 2, 3, LOG_ETYPE_STRING,
41+
dummy_log_arr + off_arr[i],
42+
len);
4343
TEST_ASSERT_FATAL(rc == 0);
4444
}
4545

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

+16-7
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,27 @@ 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(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 = 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+
log_append_body(&log, 2, 3, LOG_ETYPE_STRING,
45+
dummy_log_arr + off_arr[i] + log_hdr_len(hdr),
46+
len);
3847
}
3948

4049
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(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

+11-8
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,25 @@ 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+
int num_strs = ltu_num_strs();
3030

3131
ltu_setup_cbmem(&cbmem, &log);
32+
len = ltu_init_arr();
33+
TEST_ASSERT_FATAL(len != 0);
3234

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

3941
/* Split chain into several mbufs. */
40-
om = ltu_flat_to_fragged_mbuf(str, strlen(str), 2);
42+
om = ltu_flat_to_fragged_mbuf(dummy_log_arr + off_arr[i],
43+
len, 2);
4144

42-
rc = log_append_mbuf_body(&log, 0, 0, LOG_ETYPE_STRING, om);
45+
rc = log_append_mbuf_body(&log, 2, 3, LOG_ETYPE_STRING, om);
4346
TEST_ASSERT_FATAL(rc == 0);
4447
}
4548

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

+11-7
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,22 @@ TEST_CASE_SELF(log_test_case_cbmem_printf)
2323
{
2424
struct cbmem cbmem;
2525
struct log log;
26-
char *str;
2726
int i;
27+
int rc;
28+
uint16_t len = 0;
29+
int num_strs = ltu_num_strs();
2830

2931
ltu_setup_cbmem(&cbmem, &log);
32+
len = ltu_init_arr();
33+
TEST_ASSERT_FATAL(len != 0);
3034

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

37-
log_printf(&log, 0, 0, str, strlen(str));
38+
for (i = 0; i < num_strs; i++) {
39+
len = off_arr[i+1] - off_arr[i];
40+
log_printf(&log, 0, 0, dummy_log_arr + off_arr[i],
41+
len);
3842
}
3943

4044
ltu_verify_contents(&log);

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

+13-10
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,25 @@ 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;
26+
uint16_t len = 0;
27+
uint16_t *off_arr;
2828
int body_len;
2929
int i;
30+
int rc;
3031

3132
ltu_setup_fcb(&fcb_log, &log);
33+
len = ltu_init_arr();
34+
TEST_ASSERT_FATAL(len != 0);
3235

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

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);
39+
for (i = 0; num_strs; i++) {
40+
len = off_arr[i+1] - off_arr[i];
41+
rc = log_append_typed(&log, 2, 3, LOG_ETYPE_STRING,
42+
dummy_log_arr + off_arr[i],
43+
len);
44+
TEST_ASSERT_FATAL(rc == 0);
4245
}
4346

4447
ltu_verify_contents(&log);

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

+18-8
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,28 @@ TEST_CASE_SELF(log_test_case_fcb_append_body)
2323
{
2424
struct fcb_log fcb_log;
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_fcb(&fcb_log, &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-
}
36-
log_append_body(&log, 0, 0, LOG_ETYPE_STRING, str, strlen(str));
37-
}
37+
off_arr = ltu_get_ltu_off_arr();
38+
TEST_ASSERT_FATAL(arr != NULL);
3839

40+
for (i = 0; i < num_strs; i++) {
41+
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+
log_append_body(&log, 2, 3, LOG_ETYPE_STRING,
45+
dummy_log_arr + off_arr[i] + log_hdr_len(hdr),
46+
len);
47+
}
3948
ltu_verify_contents(&log);
49+
4050
}

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

+10-11
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,22 @@ TEST_CASE_SELF(log_test_case_fcb_append_mbuf)
2727
char *str;
2828
int rc;
2929
int i;
30+
int num_strs = ltu_num_strs();
3031

3132
ltu_setup_fcb(&fcb_log, &log);
33+
len = ltu_init_arr();
34+
TEST_ASSERT_FATAL(len != 0);
3235

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

39+
for (i = 0; i < num_strs; i++) {
40+
len = off_arr[i+1] - off_arr[i];
3941
/* Split chain into several mbufs. */
40-
om = ltu_flat_to_fragged_mbuf(str, strlen(str), 2);
42+
om = ltu_flat_to_fragged_mbuf(dummy_log_arr + off_arr[i],
43+
len, 2);
4144

42-
/* Prepend space for the entry header. */
43-
om = os_mbuf_prepend(om, LOG_HDR_SIZE);
44-
TEST_ASSERT(om != NULL);
45-
46-
rc = log_append_mbuf_typed(&log, 0, 0, LOG_ETYPE_STRING, om);
45+
rc = log_append_mbuf_typed(&log, 2, 3, LOG_ETYPE_STRING, om);
4746
TEST_ASSERT_FATAL(rc == 0);
4847
}
4948

0 commit comments

Comments
 (0)