aboutsummaryrefslogtreecommitdiffstats
path: root/src/vppinfra/test_maplog.c
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2018-03-22 10:54:45 -0400
committerDamjan Marion <dmarion.lists@gmail.com>2018-03-22 22:36:20 +0000
commit6ddede72126a8e5854908b6fcf4c80f55bf450cc (patch)
tree9d99aaa2f6437a7676a656ba9edbc6e0097ea376 /src/vppinfra/test_maplog.c
parentf3639d00aa1ccb37987dc90f974540a5c70187de (diff)
Add circular logging
Change-Id: Ide8bf41e24a427643a3a17b1c9089993790c12a6 Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src/vppinfra/test_maplog.c')
-rw-r--r--src/vppinfra/test_maplog.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/vppinfra/test_maplog.c b/src/vppinfra/test_maplog.c
index edb61bd84d0..7ae70c52f51 100644
--- a/src/vppinfra/test_maplog.c
+++ b/src/vppinfra/test_maplog.c
@@ -23,6 +23,12 @@ typedef struct
u64 junk[7];
} test_entry_t;
+typedef enum
+{
+ TEST_NORMAL,
+ TEST_CIRCULAR,
+} test_type_t;
+
static void
process_maplog_records (clib_maplog_header_t * h,
test_entry_t * e, u64 records_this_file)
@@ -49,7 +55,7 @@ process_maplog_records (clib_maplog_header_t * h,
}
e++;
}
- fformat (stdout, "--------------\n");
+ fformat (stdout, "\n--------------\n");
}
int
@@ -58,12 +64,20 @@ test_maplog_main (unformat_input_t * input)
clib_maplog_main_t *mm = &maplog_main;
clib_maplog_init_args_t _a, *a = &_a;
int rv;
- int i;
+ int i, limit;
test_entry_t *t;
int noclose = 0;
+ test_type_t which = TEST_NORMAL;
- if (unformat (input, "noclose"))
- noclose = 1;
+ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
+ {
+ if (unformat (input, "noclose"))
+ noclose = 1;
+ else if (unformat (input, "circular"))
+ which = TEST_CIRCULAR;
+ else
+ clib_warning ("unknown input '%U'", format_unformat_error, input);
+ }
memset (a, 0, sizeof (*a));
a->mm = mm;
@@ -74,6 +88,7 @@ test_maplog_main (unformat_input_t * input)
a->application_major_version = 1;
a->application_minor_version = 0;
a->application_patch_version = 0;
+ a->maplog_is_circular = (which == TEST_CIRCULAR) ? 1 : 0;
rv = clib_maplog_init (a);
@@ -83,7 +98,9 @@ test_maplog_main (unformat_input_t * input)
exit (1);
}
- for (i = 0; i < 64 * 5; i++)
+ limit = (which == TEST_CIRCULAR) ? (64 + 2) : 64 * 5;
+
+ for (i = 0; i < limit; i++)
{
t = clib_maplog_get_entry (mm);
t->serial_number = i + 1;