]> git.proxmox.com Git - mirror_kronosnet.git/commitdiff
[tests] add knet_link_get_status tests
authorFabio M. Di Nitto <fdinitto@redhat.com>
Sun, 21 Aug 2016 09:31:07 +0000 (11:31 +0200)
committerFabio M. Di Nitto <fdinitto@redhat.com>
Sun, 21 Aug 2016 09:31:07 +0000 (11:31 +0200)
Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
libknet/tests/Makefile.am
libknet/tests/api_knet_link_get_status.c [new file with mode: 0644]

index 3ae90d6bc1bc34733d405b1026610dbb208cc7ad..77a3a7e135cf955b8893dc782eef4f6c4628bba3 100644 (file)
@@ -54,6 +54,7 @@ check_PROGRAMS                = \
                          api_knet_link_set_enable_test \
                          api_knet_link_get_enable_test \
                          api_knet_link_get_link_list_test \
+                         api_knet_link_get_status_test \
                          timediff_test
 
 noinst_PROGRAMS                = \
@@ -171,6 +172,10 @@ api_knet_link_get_link_list_test_SOURCES = api_knet_link_get_link_list.c \
                                           ../../common/netutils.c \
                                           test-common.c
 
+api_knet_link_get_status_test_SOURCES = api_knet_link_get_status.c \
+                                       ../../common/netutils.c \
+                                       test-common.c
+
 ping_test_SOURCES      = ping_test.c
 
 pckt_test_SOURCES      = pckt_test.c
diff --git a/libknet/tests/api_knet_link_get_status.c b/libknet/tests/api_knet_link_get_status.c
new file mode 100644 (file)
index 0000000..fc79d31
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2016 Red Hat, Inc.  All rights reserved.
+ *
+ * Authors: Fabio M. Di Nitto <fabbione@kronosnet.org>
+ *
+ * This software licensed under GPL-2.0+, LGPL-2.0+
+ */
+
+#include "config.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "libknet.h"
+
+#include "internals.h"
+#include "link.h"
+#include "netutils.h"
+#include "test-common.h"
+
+static void test(void)
+{
+       knet_handle_t knet_h;
+       int logfds[2];
+       struct sockaddr_storage src, dst;
+       struct knet_link_status status;
+
+       memset(&src, 0, sizeof(struct sockaddr_storage));
+
+       if (strtoaddr("127.0.0.1", "50000", (struct sockaddr *)&src, sizeof(struct sockaddr_storage)) < 0) {
+               printf("Unable to convert src to sockaddr: %s\n", strerror(errno));
+               exit(FAIL);
+       }
+
+       memset(&dst, 0, sizeof(struct sockaddr_storage));
+
+       if (strtoaddr("127.0.0.1", "50001", (struct sockaddr *)&dst, sizeof(struct sockaddr_storage)) < 0) {
+               printf("Unable to convert dst to sockaddr: %s\n", strerror(errno));
+               exit(FAIL);
+       }
+
+       printf("Test knet_link_get_status incorrect knet_h\n");
+
+       memset(&status, 0, sizeof(struct knet_link_status));
+
+       if ((!knet_link_get_status(NULL, 1, 0, &status)) || (errno != EINVAL)) {
+               printf("knet_link_get_status accepted invalid knet_h or returned incorrect error: %s\n", strerror(errno));
+               exit(FAIL);
+       }
+
+       setup_logpipes(logfds);
+
+       knet_h = knet_handle_new(1, logfds[1], KNET_LOG_DEBUG);
+
+       if (!knet_h) {
+               printf("knet_handle_new failed: %s\n", strerror(errno));
+               flush_logs(logfds[0], stdout);
+               close_logpipes(logfds);
+               exit(FAIL);
+       }
+
+       printf("Test knet_link_get_status with unconfigured host_id\n");
+
+       if ((!knet_link_get_status(knet_h, 1, 0, &status)) || (errno != EINVAL)) {
+               printf("knet_link_get_status accepted invalid host_id or returned incorrect error: %s\n", strerror(errno));
+               knet_handle_free(knet_h);
+               flush_logs(logfds[0], stdout);
+               close_logpipes(logfds);
+               exit(FAIL);
+       }
+
+       flush_logs(logfds[0], stdout);
+
+       printf("Test knet_link_get_status with incorrect linkid\n");
+
+       if (knet_host_add(knet_h, 1) < 0) {
+               printf("Unable to add host_id 1: %s\n", strerror(errno));
+               knet_handle_free(knet_h);
+               flush_logs(logfds[0], stdout);
+               close_logpipes(logfds);
+               exit(FAIL);
+       }
+
+       if ((!knet_link_get_status(knet_h, 1, KNET_MAX_LINK, &status)) || (errno != EINVAL)) {
+               printf("knet_link_get_status accepted invalid linkid or returned incorrect error: %s\n", strerror(errno));
+               knet_host_remove(knet_h, 1);
+               knet_handle_free(knet_h);
+               flush_logs(logfds[0], stdout);
+               close_logpipes(logfds);
+               exit(FAIL);
+       }
+
+       flush_logs(logfds[0], stdout);
+
+       printf("Test knet_link_get_status with incorrect status\n");
+
+       if ((!knet_link_get_status(knet_h, 1, 0, NULL)) || (errno != EINVAL)) {
+               printf("knet_link_get_status accepted invalid status or returned incorrect error: %s\n", strerror(errno));
+               knet_host_remove(knet_h, 1);
+               knet_handle_free(knet_h);
+               flush_logs(logfds[0], stdout);
+               close_logpipes(logfds);
+               exit(FAIL);
+       }
+
+       flush_logs(logfds[0], stdout);
+
+       printf("Test knet_link_get_status with unconfigured link\n");
+
+       if ((!knet_link_get_status(knet_h, 1, 0, &status)) || (errno != EINVAL)) {
+               printf("knet_link_get_status accepted unconfigured link or returned incorrect error: %s\n", strerror(errno));
+               knet_host_remove(knet_h, 1);
+               knet_handle_free(knet_h);
+               flush_logs(logfds[0], stdout);
+               close_logpipes(logfds);
+               exit(FAIL);
+       }
+
+       flush_logs(logfds[0], stdout);
+
+       printf("Test knet_link_get_status with correct values\n");
+
+       if (knet_link_set_config(knet_h, 1, 0, &src, &dst) < 0) {
+               printf("Unable to configure link: %s\n", strerror(errno));
+               knet_host_remove(knet_h, 1);
+               knet_handle_free(knet_h);
+               flush_logs(logfds[0], stdout);
+               close_logpipes(logfds);
+               exit(FAIL);
+       }
+
+       if (knet_link_get_status(knet_h, 1, 0, &status) < 0) {
+               printf("knet_link_get_status failed: %s\n", strerror(errno));
+               knet_host_remove(knet_h, 1);
+               knet_handle_free(knet_h);
+               flush_logs(logfds[0], stdout);
+               close_logpipes(logfds);
+               exit(FAIL);
+       }
+
+       flush_logs(logfds[0], stdout);
+
+       knet_host_remove(knet_h, 1);
+       knet_handle_free(knet_h);
+       flush_logs(logfds[0], stdout);
+       close_logpipes(logfds);
+}
+
+int main(int argc, char *argv[])
+{
+       need_root();
+
+       test();
+
+       return PASS;
+}