diff tests/read_big_file.c @ 0:6ce4443e7545

Add the draft of an API to collect statistics on LXC
author Louis Opter <kalessin@kalessin.fr>
date Wed, 29 Dec 2010 23:28:14 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/read_big_file.c	Wed Dec 29 23:28:14 2010 +0100
@@ -0,0 +1,47 @@
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "lxcstats.h"
+#include "_lxcstats.h"
+
+int
+main(void)
+{
+    char        *reference;
+    struct stat sb;
+    char        *trial;
+    size_t      size;
+    int         fd;
+
+    fd = open("/etc/services", O_RDONLY);
+    if (fd == -1)
+        err(EXIT_FAILURE, "can't open /etc/services");
+
+    size = _lxcst_read_file("/etc/services", &trial);
+    if (!trial)
+        err(EXIT_FAILURE, "can't read /etc/services");
+
+    if (fstat(fd, &sb) != 0)
+        err(EXIT_FAILURE, "can't stat /etc/services");
+
+    reference = mmap(0, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
+    if (!reference)
+        err(EXIT_FAILURE, "can't map /etc/services");
+
+    if ((size_t)sb.st_size != size)
+        errx(EXIT_FAILURE, "sizes are different");
+
+    if (memcmp(reference, trial, size))
+        errx(EXIT_FAILURE, "buffers are different");
+
+    free(trial);
+
+    return (EXIT_SUCCESS);
+}