From: Yannick Brosseau Date: Sat, 17 Nov 2012 16:22:01 +0000 (-0500) Subject: Adding a test which do a sequence of seek BEGIN, LAST, BEGIN, LAST X-Git-Tag: v1.0.1~6 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=52105e87f4f93d97f413c40820471637a8070a4a Adding a test which do a sequence of seek BEGIN, LAST, BEGIN, LAST Signed-off-by: Yannick Brosseau Signed-off-by: Mathieu Desnoyers --- diff --git a/tests/lib/test-seeks.c b/tests/lib/test-seeks.c index c6abf2c1..47bb42e2 100644 --- a/tests/lib/test-seeks.c +++ b/tests/lib/test-seeks.c @@ -32,7 +32,7 @@ #include "common.h" #include "tap.h" -#define NR_TESTS 11 +#define NR_TESTS 23 void run_seek_begin(char *path, uint64_t expected_begin) { @@ -134,6 +134,87 @@ void run_seek_last(char *path, uint64_t expected_last) bt_context_put(ctx); } +void run_seek_cycles(char *path, + uint64_t expected_begin, + uint64_t expected_last) +{ + struct bt_context *ctx; + struct bt_ctf_iter *iter; + struct bt_ctf_event *event; + struct bt_iter_pos newpos; + int ret; + uint64_t timestamp; + + /* Open the trace */ + ctx = create_context_with_path(path); + if (!ctx) { + plan_skip_all("Cannot create valid context"); + } + + /* Create iterator with null last and end */ + iter = bt_ctf_iter_create(ctx, NULL, NULL); + if (!iter) { + plan_skip_all("Cannot create valid iterator"); + } + + event = bt_ctf_iter_read_event(iter); + + ok(event, "Event valid at beginning"); + + /* Seek to last */ + newpos.type = BT_SEEK_LAST; + ret = bt_iter_set_pos(bt_ctf_get_iter(iter), &newpos); + + ok(ret == 0, "Seek last retval %d", ret); + + event = bt_ctf_iter_read_event(iter); + + ok(event, "Event valid at last position"); + + timestamp = bt_ctf_get_timestamp(event); + + ok1(timestamp == expected_last); + + /* Try to read next event */ + ret = bt_iter_next(bt_ctf_get_iter(iter)); + + ok(ret == 0, "iter next should return an error"); + + event = bt_ctf_iter_read_event(iter); + + ok(event == 0, "Event after last should be invalid"); + + /* Seek to BEGIN */ + newpos.type = BT_SEEK_BEGIN; + ret = bt_iter_set_pos(bt_ctf_get_iter(iter), &newpos); + + ok(ret == 0, "Seek begin retval %d", ret); + + event = bt_ctf_iter_read_event(iter); + + ok(event, "Event valid at first position"); + + timestamp = bt_ctf_get_timestamp(event); + + ok1(timestamp == expected_begin); + + /* Seek last again */ + newpos.type = BT_SEEK_LAST; + ret = bt_iter_set_pos(bt_ctf_get_iter(iter), &newpos); + + ok(ret == 0, "Seek last retval %d", ret); + + event = bt_ctf_iter_read_event(iter); + + ok(event, "Event valid at last position"); + + timestamp = bt_ctf_get_timestamp(event); + + ok1(timestamp == expected_last); + + bt_context_put(ctx); +} + int main(int argc, char **argv) { char *path; @@ -162,6 +243,7 @@ int main(int argc, char **argv) run_seek_begin(path, expected_begin); run_seek_last(path, expected_last); + run_seek_cycles(path, expected_begin, expected_last); return exit_status(); }