Handle negative time and offset from Epoch
[babeltrace.git] / tests / lib / test_ctf_writer.c
index f15ad43784ac3d811bbf966523ebe24e2b1777d6..2929d24e638167ccb43da1af2bff33ec2665be88 100644 (file)
@@ -34,6 +34,7 @@
 #include <stdio.h>
 #include <sys/utsname.h>
 #include <babeltrace/compat/limits.h>
+#include <babeltrace/compat/stdio.h>
 #include <string.h>
 #include <assert.h>
 #include <sys/wait.h>
@@ -42,6 +43,7 @@
 #include "tap/tap.h"
 #include <math.h>
 #include <float.h>
+#include <sys/stat.h>
 
 #define METADATA_LINE_SIZE 512
 #define SEQUENCE_TEST_LENGTH 10
@@ -55,7 +57,9 @@
 #define DEFAULT_CLOCK_IS_ABSOLUTE 0
 #define DEFAULT_CLOCK_TIME 0
 
-static uint64_t current_time = 42;
+#define NR_TESTS 597
+
+static int64_t current_time = 42;
 
 /* Return 1 if uuids match, zero if different. */
 int uuid_match(const unsigned char *uuid_a, const unsigned char *uuid_b)
@@ -159,12 +163,12 @@ result:
                rewind(metadata_fp);
 
                /* Output the metadata and parser output as diagnostic */
-               while (getline(&line, &len, metadata_fp) > 0) {
+               while (bt_getline(&line, &len, metadata_fp) > 0) {
                        fprintf(stderr, "# %s", line);
                }
 
                rewind(parser_output_fp);
-               while (getline(&line, &len, parser_output_fp) > 0) {
+               while (bt_getline(&line, &len, parser_output_fp) > 0) {
                        fprintf(stderr, "# %s", line);
                }
 
@@ -256,7 +260,7 @@ result:
                        diag("malloc error");
                }
                rewind(babeltrace_output_fp);
-               while (getline(&line, &len, babeltrace_output_fp) > 0) {
+               while (bt_getline(&line, &len, babeltrace_output_fp) > 0) {
                        diag("%s", line);
                }
 
@@ -2654,8 +2658,11 @@ int main(int argc, char **argv)
        const char *returned_clock_name;
        const char *returned_clock_description;
        const uint64_t frequency = 1123456789;
-       const uint64_t offset_s = 1351530929945824323;
-       const uint64_t offset = 1234567;
+       const int64_t offset_s = 1351530929945824323;
+       const int64_t offset = 1234567;
+       int64_t get_offset_s,
+               get_offset,
+               get_time;
        const uint64_t precision = 10;
        const int is_absolute = 0xFF;
        char *metadata_string;
@@ -2687,7 +2694,7 @@ int main(int argc, char **argv)
                return -1;
        }
 
-       plan_no_plan();
+       plan_tests(NR_TESTS);
 
        if (!bt_mkdtemp(trace_path)) {
                perror("# perror");
@@ -2897,18 +2904,26 @@ int main(int argc, char **argv)
        ok(bt_ctf_clock_get_frequency(clock) == frequency,
                "bt_ctf_clock_get_frequency returns the correct frequency once it is set");
 
-       ok(bt_ctf_clock_get_offset_s(clock) == DEFAULT_CLOCK_OFFSET_S,
+       ok(bt_ctf_clock_get_offset_s(clock, &get_offset_s) == 0,
+               "bt_ctf_clock_get_offset_s succeeds");
+       ok(get_offset_s == DEFAULT_CLOCK_OFFSET_S,
                "bt_ctf_clock_get_offset_s returns the correct default offset (in seconds)");
        ok(bt_ctf_clock_set_offset_s(clock, offset_s) == 0,
                "Set clock offset (seconds)");
-       ok(bt_ctf_clock_get_offset_s(clock) == offset_s,
+       ok(bt_ctf_clock_get_offset_s(clock, &get_offset_s) == 0,
+               "bt_ctf_clock_get_offset_s succeeds");
+       ok(get_offset_s == offset_s,
                "bt_ctf_clock_get_offset_s returns the correct default offset (in seconds) once it is set");
 
-       ok(bt_ctf_clock_get_offset(clock) == DEFAULT_CLOCK_OFFSET,
-               "bt_ctf_clock_get_frequency returns the correct default offset (in ticks)");
+       ok(bt_ctf_clock_get_offset(clock, &get_offset) == 0,
+               "bt_ctf_clock_get_offset succeeds");
+       ok(get_offset == DEFAULT_CLOCK_OFFSET,
+               "bt_ctf_clock_get_offset returns the correct default offset (in ticks)");
        ok(bt_ctf_clock_set_offset(clock, offset) == 0, "Set clock offset");
-       ok(bt_ctf_clock_get_offset(clock) == offset,
-               "bt_ctf_clock_get_frequency returns the correct default offset (in ticks) once it is set");
+       ok(bt_ctf_clock_get_offset(clock, &get_offset) == 0,
+               "bt_ctf_clock_get_offset succeeds");
+       ok(get_offset == offset,
+               "bt_ctf_clock_get_offset returns the correct default offset (in ticks) once it is set");
 
        ok(bt_ctf_clock_get_precision(clock) == DEFAULT_CLOCK_PRECISION,
                "bt_ctf_clock_get_precision returns the correct default precision");
@@ -2924,11 +2939,15 @@ int main(int argc, char **argv)
        ok(bt_ctf_clock_get_is_absolute(clock) == !!is_absolute,
                "bt_ctf_clock_get_precision returns the correct is_absolute attribute once it is set");
 
-       ok(bt_ctf_clock_get_time(clock) == DEFAULT_CLOCK_TIME,
+       ok(bt_ctf_clock_get_time(clock, &get_time) == 0,
+               "bt_ctf_clock_get_time succeeds");
+       ok(get_time == DEFAULT_CLOCK_TIME,
                "bt_ctf_clock_get_time returns the correct default time");
        ok(bt_ctf_clock_set_time(clock, current_time) == 0,
                "Set clock time");
-       ok(bt_ctf_clock_get_time(clock) == current_time,
+       ok(bt_ctf_clock_get_time(clock, &get_time) == 0,
+               "bt_ctf_clock_get_time succeeds");
+       ok(get_time == current_time,
                "bt_ctf_clock_get_time returns the correct time once it is set");
 
        ok(bt_ctf_writer_add_clock(writer, clock) == 0,
@@ -2971,14 +2990,20 @@ int main(int argc, char **argv)
                "bt_ctf_clock_get_frequency correctly handles NULL");
        ok(bt_ctf_clock_get_precision(NULL) == -1ULL,
                "bt_ctf_clock_get_precision correctly handles NULL");
-       ok(bt_ctf_clock_get_offset_s(NULL) == -1ULL,
-               "bt_ctf_clock_get_offset_s correctly handles NULL");
-       ok(bt_ctf_clock_get_offset(NULL) == -1ULL,
-               "bt_ctf_clock_get_offset correctly handles NULL");
+       ok(bt_ctf_clock_get_offset_s(NULL, &get_offset_s) < 0,
+               "bt_ctf_clock_get_offset_s correctly handles NULL clock");
+       ok(bt_ctf_clock_get_offset_s(clock, NULL) < 0,
+               "bt_ctf_clock_get_offset_s correctly handles NULL output");
+       ok(bt_ctf_clock_get_offset(NULL, &get_offset) < 0,
+               "bt_ctf_clock_get_offset correctly handles NULL clock");
+       ok(bt_ctf_clock_get_offset(clock, NULL) < 0,
+               "bt_ctf_clock_get_offset correctly handles NULL output");
        ok(bt_ctf_clock_get_is_absolute(NULL) < 0,
                "bt_ctf_clock_get_is_absolute correctly handles NULL");
-       ok(bt_ctf_clock_get_time(NULL) == -1ULL,
-               "bt_ctf_clock_get_time correctly handles NULL");
+       ok(bt_ctf_clock_get_time(NULL, &get_time) < 0,
+               "bt_ctf_clock_get_time correctly handles NULL clock");
+       ok(bt_ctf_clock_get_time(clock, NULL) < 0,
+               "bt_ctf_clock_get_time correctly handles NULL output");
 
        ok(bt_ctf_clock_set_description(NULL, NULL) < 0,
                "bt_ctf_clock_set_description correctly handles NULL clock");
@@ -3283,9 +3308,6 @@ int main(int argc, char **argv)
        bt_put(packet_header_field);
        bt_put(trace);
        free(metadata_string);
-
-       ok(bt_ctf_stream_class_get_trace(stream_class) == NULL,
-               "bt_ctf_stream_class_get_trace returns NULL after its trace has been reclaimed");
        bt_put(stream_class);
 
        /* Remove all trace files and delete temporary trace directory */
@@ -3297,7 +3319,19 @@ int main(int argc, char **argv)
 
        struct dirent *entry;
        while ((entry = readdir(trace_dir))) {
-               if (entry->d_type == DT_REG) {
+               struct stat st;
+               char filename[PATH_MAX];
+
+               if (snprintf(filename, sizeof(filename), "%s/%s",
+                                       trace_path, entry->d_name) <= 0) {
+                       continue;
+               }
+
+               if (stat(entry->d_name, &st)) {
+                       continue;
+               }
+
+               if (S_ISREG(st.st_mode)) {
                        unlinkat(bt_dirfd(trace_dir), entry->d_name, 0);
                }
        }
This page took 0.025811 seconds and 4 git commands to generate.