Add unit tests for URIs
authorDavid Goulet <dgoulet@efficios.com>
Wed, 25 Jul 2012 14:21:09 +0000 (10:21 -0400)
committerDavid Goulet <dgoulet@efficios.com>
Wed, 25 Jul 2012 14:43:49 +0000 (10:43 -0400)
Tests uri_parse() using multiple URI strings where some are bad and some
are well formed.

Signed-off-by: David Goulet <dgoulet@efficios.com>
.gitignore
tests/tools/Makefile.am
tests/tools/runall.sh
tests/tools/streaming/Makefile.am
tests/tools/streaming/run [deleted file]
tests/tools/streaming/runall [new file with mode: 0755]
tests/tools/streaming/unit_tests.c [new file with mode: 0644]

index b1295d4be3f931acb9cbf159232b30745f9cb5c8..6d04272c4c962d43f10ce3ff7d959dfd8b27a810 100644 (file)
@@ -54,5 +54,6 @@ gen-nevents
 gen-events-time
 gen-events
 gen-ust-events
+unit_tests
 
 benchmark/
index 8bd7830c322f1ad2d31e208fff7ac841d658136b..555d8239e782e06d732eefe2e30fde9e78a3d852 100644 (file)
@@ -1,4 +1,4 @@
-SUBDIR = . streaming
+SUBDIRS = streaming
 
 AM_CFLAGS = -g -Wall -I../
 AM_LDFLAGS = -lurcu -lurcu-cds
index b90e424893ed787bc1a5b799b6d1a4f659eb8767..7630a1321a99802f5ac15792030ea48666154eba 100755 (executable)
@@ -3,7 +3,7 @@
 DIR=$(dirname $0)
 
 tests=( $DIR/test_kernel_data_trace $DIR/test_sessions $DIR/test_ust_data_trace \
-               $DIR/streaming/run )
+               $DIR/streaming/runall )
 exit_code=0
 
 function start_tests ()
index 251a378f8a347bdca397fe940e141796b75a7851..27ef18b03a3d2aa3cb9bf1f9335ab8db9424b966 100644 (file)
@@ -1,4 +1,4 @@
-AM_CFLAGS = -I. -O2
+AM_CFLAGS = -I. -O2 -g -I../../
 AM_LDFLAGS =
 
 if LTTNG_TOOLS_BUILD_WITH_LIBDL
@@ -8,11 +8,20 @@ if LTTNG_TOOLS_BUILD_WITH_LIBC_DL
 AM_LDFLAGS += -lc
 endif
 
+#UTILS=../../utils.h
+UTILS=
+LIBSESSIOND_COMM=$(top_builddir)/src/common/sessiond-comm/libsessiond-comm.la
+LIBCOMMON=$(top_builddir)/src/common/libcommon.la
+
+noinst_PROGRAMS = unit_tests
+unit_tests_SOURCES = unit_tests.c $(UTILS)
+unit_tests_LDADD = $(LIBCOMMON)
+
 if HAVE_LIBLTTNG_UST_CTL
-noinst_PROGRAMS = gen-ust-events
+noinst_PROGRAMS += gen-ust-events
 gen_ust_events_SOURCES = gen-ust-events.c tp.c tp.h
 gen_ust_events_LDADD = -llttng-ust
 endif
 
-noinst_SCRIPTS = run
-EXTRA_DIST = run
+noinst_SCRIPTS = runall run-ust run-kernel
+EXTRA_DIST = runall run-ust run-kernel
diff --git a/tests/tools/streaming/run b/tests/tools/streaming/run
deleted file mode 100755 (executable)
index d7ca754..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-
-DIR=$(dirname $0)
-
-tests=( $DIR/run-kernel $DIR/run-ust )
-exit_code=0
-
-function start_tests ()
-{
-    for bin in ${tests[@]};
-    do
-               if [ ! -e $bin ]; then
-                       echo -e "$bin not found, passing"
-                       continue
-               fi
-
-        ./$bin
-        # Test must return 0 to pass.
-        if [ $? -ne 0 ]; then
-            exit_code=1
-            break
-        fi
-    done
-}
-
-start_tests
-
-exit $exit_code
diff --git a/tests/tools/streaming/runall b/tests/tools/streaming/runall
new file mode 100755 (executable)
index 0000000..dbf5228
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+DIR=$(dirname $0)
+
+tests=( $DIR/unit_tests $DIR/run-kernel $DIR/run-ust )
+exit_code=0
+
+function start_tests ()
+{
+    for bin in ${tests[@]};
+    do
+               if [ ! -e $bin ]; then
+                       echo -e "$bin not found, passing"
+                       continue
+               fi
+
+        ./$bin
+        # Test must return 0 to pass.
+        if [ $? -ne 0 ]; then
+            exit_code=1
+            break
+        fi
+    done
+}
+
+start_tests
+
+exit $exit_code
diff --git a/tests/tools/streaming/unit_tests.c b/tests/tools/streaming/unit_tests.c
new file mode 100644 (file)
index 0000000..6fea139
--- /dev/null
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) - 2012 David Goulet <dgoulet@efficios.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by as
+ * published by the Free Software Foundation; only version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#define _GNU_SOURCE
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <time.h>
+#include <sys/types.h>
+
+#include <common/sessiond-comm/sessiond-comm.h>
+#include <common/uri.h>
+
+#include "utils.h"
+
+/* This path will NEVER be created in this test */
+#define PATH1 "tmp/.test-junk-lttng"
+
+#define RANDOM_STRING_LEN 16
+
+/* For lttngerr.h */
+int lttng_opt_quiet = 1;
+int lttng_opt_verbose = 0;
+
+/*
+ * Test string URI and if uri_parse works well.
+ */
+int test_uri(void)
+{
+       ssize_t size;
+       const char *s_uri1;
+       struct lttng_uri *uri;
+
+       fprintf(stdout, "Testing URIs...\n");
+
+       s_uri1 = "net://localhost";
+       fprintf(stdout, " [+] URI set to %s ", s_uri1);
+       size = uri_parse(s_uri1, &uri);
+       assert(size == 2);
+       assert(uri[0].dtype == LTTNG_DST_IPV4);
+       assert(uri[0].utype == LTTNG_URI_DST);
+       assert(uri[0].stype == 0);
+       assert(uri[0].port == 0);
+       assert(strlen(uri[0].subdir) == 0);
+       assert(strcmp(uri[0].dst.ipv4, "127.0.0.1") == 0);
+
+       assert(uri[1].dtype == LTTNG_DST_IPV4);
+       assert(uri[1].utype == LTTNG_URI_DST);
+       assert(uri[1].stype == 0);
+       assert(uri[1].port == 0);
+       assert(strlen(uri[1].subdir) == 0);
+       assert(strcmp(uri[1].dst.ipv4, "127.0.0.1") == 0);
+       PRINT_OK();
+
+       s_uri1 = "net://localhost:8989:4242/my/test/path";
+       fprintf(stdout, " [+] URI set to %s ", s_uri1);
+       size = uri_parse(s_uri1, &uri);
+       assert(size == 2);
+       assert(uri[0].dtype == LTTNG_DST_IPV4);
+       assert(uri[0].utype == LTTNG_URI_DST);
+       assert(uri[0].stype == 0);
+       assert(uri[0].port == 8989);
+       assert(strcmp(uri[0].subdir, "my/test/path") == 0);
+       assert(strcmp(uri[0].dst.ipv4, "127.0.0.1") == 0);
+
+       assert(uri[1].dtype == LTTNG_DST_IPV4);
+       assert(uri[1].utype == LTTNG_URI_DST);
+       assert(uri[1].stype == 0);
+       assert(uri[1].port == 4242);
+       assert(strcmp(uri[0].subdir, "my/test/path") == 0);
+       assert(strcmp(uri[1].dst.ipv4, "127.0.0.1") == 0);
+       PRINT_OK();
+
+       s_uri1 = "net://localhost:8989:4242";
+       fprintf(stdout, " [+] URI set to %s ", s_uri1);
+       size = uri_parse(s_uri1, &uri);
+       assert(size == 2);
+       assert(uri[0].dtype == LTTNG_DST_IPV4);
+       assert(uri[0].utype == LTTNG_URI_DST);
+       assert(uri[0].stype == 0);
+       assert(uri[0].port == 8989);
+       assert(strlen(uri[1].subdir) == 0);
+       assert(strcmp(uri[0].dst.ipv4, "127.0.0.1") == 0);
+
+       assert(uri[1].dtype == LTTNG_DST_IPV4);
+       assert(uri[1].utype == LTTNG_URI_DST);
+       assert(uri[1].stype == 0);
+       assert(uri[1].port == 4242);
+       assert(strlen(uri[1].subdir) == 0);
+       assert(strcmp(uri[1].dst.ipv4, "127.0.0.1") == 0);
+       PRINT_OK();
+
+       s_uri1 = "net6://localhost:8989";
+       fprintf(stdout, " [+] URI set to %s ", s_uri1);
+       size = uri_parse(s_uri1, &uri);
+       assert(size == 2);
+       assert(uri[0].dtype == LTTNG_DST_IPV6);
+       assert(uri[0].utype == LTTNG_URI_DST);
+       assert(uri[0].stype == 0);
+       assert(uri[0].port == 8989);
+       assert(strlen(uri[1].subdir) == 0);
+       assert(strcmp(uri[0].dst.ipv6, "::1") == 0);
+
+       assert(uri[1].dtype == LTTNG_DST_IPV6);
+       assert(uri[1].utype == LTTNG_URI_DST);
+       assert(uri[1].stype == 0);
+       assert(uri[1].port == 0);
+       assert(strlen(uri[1].subdir) == 0);
+       assert(strcmp(uri[0].dst.ipv6, "::1") == 0);
+       PRINT_OK();
+
+       s_uri1 = "tcp://42.42.42.42/my/test/path";
+       fprintf(stdout, " [+] URI set to %s ", s_uri1);
+       size = uri_parse(s_uri1, &uri);
+       assert(size == 1);
+       assert(uri[0].dtype == LTTNG_DST_IPV4);
+       assert(uri[0].utype == LTTNG_URI_DST);
+       assert(uri[0].stype == 0);
+       assert(uri[0].port == 0);
+       assert(strcmp(uri[0].subdir, "my/test/path") == 0);
+       assert(strcmp(uri[0].dst.ipv4, "42.42.42.42") == 0);
+       PRINT_OK();
+
+       s_uri1 = "tcp6://fe80::f66d:4ff:fe53:d220/my/test/path";
+       fprintf(stdout, " [+] URI set to %s ", s_uri1);
+       size = uri_parse(s_uri1, &uri);
+       assert(size == 1);
+       assert(uri[0].dtype == LTTNG_DST_IPV6);
+       assert(uri[0].utype == LTTNG_URI_DST);
+       assert(uri[0].stype == 0);
+       assert(uri[0].port == 0);
+       assert(strcmp(uri[0].subdir, "my/test/path") == 0);
+       assert(strcmp(uri[0].dst.ipv6, "fe80::f66d:4ff:fe53:d220") == 0);
+       PRINT_OK();
+
+       s_uri1 = "file:///my/test/path";
+       fprintf(stdout, " [+] URI set to %s ", s_uri1);
+       size = uri_parse(s_uri1, &uri);
+       assert(size == 1);
+       assert(uri[0].dtype == LTTNG_DST_PATH);
+       assert(uri[0].utype == LTTNG_URI_DST);
+       assert(uri[0].stype == 0);
+       assert(uri[0].port == 0);
+       assert(strlen(uri[1].subdir) == 0);
+       assert(strcmp(uri[0].dst.path, "/my/test/path") == 0);
+       PRINT_OK();
+
+       s_uri1 = "file/my/test/path";
+       fprintf(stdout, " [+] Bad URI set to %s ", s_uri1);
+       size = uri_parse(s_uri1, &uri);
+       assert(size == -1);
+       PRINT_OK();
+
+       s_uri1 = "net://:8999";
+       fprintf(stdout, " [+] Bad URI set to %s ", s_uri1);
+       size = uri_parse(s_uri1, &uri);
+       assert(size == -1);
+       PRINT_OK();
+
+       s_uri1 = "net://localhost/";
+       fprintf(stdout, " [+] Bad URI set to %s ", s_uri1);
+       size = uri_parse(s_uri1, &uri);
+       assert(size == -1);
+       PRINT_OK();
+
+       return 0;
+}
+
+int main(int argc, char **argv)
+{
+       int ret;
+
+       srand(time(NULL));
+
+       printf("\nStreaming unit tests\n-----------\n");
+
+       ret = test_uri();
+       if (ret < 0) {
+               goto error;
+       }
+
+       /* Success */
+       return 0;
+
+error:
+       return -1;
+}
This page took 0.045199 seconds and 5 git commands to generate.