X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Ftools%2Fstreaming%2Funit_tests.c;fp=tests%2Ftools%2Fstreaming%2Funit_tests.c;h=6fea139c30f61415920575cbc0ef8f3aa10fda40;hp=0000000000000000000000000000000000000000;hb=de9a8b415bcb8d81989bab02457fdeda48bb7219;hpb=f4e40ab68a515750cdde6877b53fafb5210ceac6 diff --git a/tests/tools/streaming/unit_tests.c b/tests/tools/streaming/unit_tests.c new file mode 100644 index 000000000..6fea139c3 --- /dev/null +++ b/tests/tools/streaming/unit_tests.c @@ -0,0 +1,204 @@ +/* + * Copyright (C) - 2012 David Goulet + * + * 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 +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#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; +}