Change in libosmocore[master]: tests: Split SCTP tests to its own file and run them conditionally

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Tue Aug 25 12:59:42 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/19815 )

Change subject: tests: Split SCTP tests to its own file and run them conditionally
......................................................................

tests: Split SCTP tests to its own file and run them conditionally

Some systmes (like the ones available in OBS) don't support creating
SCTP sockets, so we need to skip those tests there.

Change-Id: I1d16280674625877ec22cc60cbc5deb67868a656
---
M configure.ac
M debian/rules
M tests/Makefile.am
A tests/socket/socket_sctp_test.c
A tests/socket/socket_sctp_test.err
A tests/socket/socket_sctp_test.ok
M tests/socket/socket_test.c
M tests/socket/socket_test.err
M tests/socket/socket_test.ok
M tests/testsuite.at
10 files changed, 287 insertions(+), 208 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/configure.ac b/configure.ac
index fbdcb57..b07a3bd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -197,6 +197,10 @@
 	LIBS=$old_LIBS
 ])
 
+AC_ARG_ENABLE([sctp-tests], [AS_HELP_STRING([--disable-sctp-tests], [Do not run socket tests requiring system SCTP support])],
+	[ENABLE_SCTP_TESTS=$enableval], [ENABLE_SCTP_TESTS="yes"])
+AM_CONDITIONAL(ENABLE_SCTP_TESTS, test x"$ENABLE_SCTP_TESTS" = x"yes")
+
 AC_ARG_ENABLE(plugin,
 	[AS_HELP_STRING(
 		[--disable-plugin],
diff --git a/debian/rules b/debian/rules
index a9d961c..afff17f 100755
--- a/debian/rules
+++ b/debian/rules
@@ -26,7 +26,7 @@
 	dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false)
 
 override_dh_auto_configure:
-	dh_auto_configure -- --enable-static
+	dh_auto_configure -- --enable-static --disable-sctp-tests
 
 override_dh_clean:
 	dh_clean
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 2a364d5..56d0ac5 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -358,6 +358,14 @@
 	     i460_mux/i460_mux_test.ok \
 	     $(NULL)
 
+if ENABLE_LIBSCTP
+if ENABLE_SCTP_TESTS
+EXTRA_DIST += socket/socket_sctp_test.ok socket/socket_sctp_test.err
+check_PROGRAMS += socket/socket_sctp_test
+socket_socket_sctp_test_SOURCES = socket/socket_sctp_test.c
+endif
+endif
+
 DISTCLEANFILES = atconfig atlocal conv/gsm0503_test_vectors.c
 BUILT_SOURCES = conv/gsm0503_test_vectors.c
 noinst_HEADERS = conv/conv.h
diff --git a/tests/socket/socket_sctp_test.c b/tests/socket/socket_sctp_test.c
new file mode 100644
index 0000000..e70b8be
--- /dev/null
+++ b/tests/socket/socket_sctp_test.c
@@ -0,0 +1,233 @@
+/*
+ * (C) 2017 by Harald Welte <laforge at gnumonks.org>
+ * All Rights Reserved
+ *
+ * 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <fcntl.h>
+#include <inttypes.h>
+
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <netinet/in.h>
+
+#include <osmocom/core/application.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/core/socket.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/core/bits.h>
+
+#include "../config.h"
+
+void *ctx = NULL;
+
+#ifdef HAVE_LIBSCTP
+static uint16_t sock_get_local_port(int fd, bool is_v6) {
+	struct sockaddr_storage sa;
+	struct sockaddr_in *sin = (struct sockaddr_in *)&sa;
+	struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&sa;
+	socklen_t len = sizeof(sa);
+	int local_port;
+
+	OSMO_ASSERT(getsockname(fd, (struct sockaddr*)&sa, &len) == 0);
+	if(!is_v6)
+		local_port = osmo_load16be(&sin->sin_port);
+	else
+		local_port = osmo_load16be(&sin6->sin6_port);
+	//printf("Checking osmo_sock_init2_multiaddr() port: %" PRIu16 "\n", listen_port_v4);
+	return local_port;
+}
+
+/* Test API osmo_sock_init2_multiaddr with 1 local/remote address */
+static int test_sockinit2_multiaddr(const char **addrv4_loc, const char **addrv6_loc,
+				    const char **addrv4_rem, const char **addrv6_rem,
+				    size_t addrv4_size, size_t addrv6_size)
+{
+	int fd, rc;
+	int listen_fd_v4, listen_fd_v6;
+	int listen_port_v4, listen_port_v6;
+
+	printf("Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv4 port\n");
+
+	listen_fd_v4 = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, IPPROTO_SCTP,
+				       addrv4_loc, addrv4_size, 0,
+				       NULL, 0, 0, OSMO_SOCK_F_BIND);
+	OSMO_ASSERT(listen_fd_v4 >= 0);
+	/* expect it to be blocking */
+	rc = fcntl(listen_fd_v4, F_GETFL);
+	OSMO_ASSERT(!(rc & O_NONBLOCK));
+
+	listen_port_v4 = sock_get_local_port(listen_fd_v4, false);
+
+	printf("Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv6 port\n");
+
+	listen_fd_v6 = osmo_sock_init2_multiaddr(AF_INET6, SOCK_STREAM, IPPROTO_SCTP,
+				       addrv6_loc, addrv6_size, 0,
+				       NULL, 0, 0, OSMO_SOCK_F_BIND);
+	OSMO_ASSERT(listen_fd_v6 >= 0);
+	/* expect it to be blocking */
+	rc = fcntl(listen_fd_v6, F_GETFL);
+	OSMO_ASSERT(!(rc & O_NONBLOCK));
+
+	listen_port_v6 = sock_get_local_port(listen_fd_v6, true);
+
+	printf("Checking osmo_sock_init2_multiaddr() for OSMO_SOCK_F_NONBLOCK\n");
+	fd = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, IPPROTO_SCTP,
+				       addrv4_loc, addrv4_size, 0,
+				       NULL, 0, 0, OSMO_SOCK_F_BIND|OSMO_SOCK_F_NONBLOCK);
+	OSMO_ASSERT(fd >= 0);
+	/* expect it to be blocking */
+	rc = fcntl(fd, F_GETFL);
+	OSMO_ASSERT(rc & O_NONBLOCK);
+	close(fd);
+
+	printf("Checking osmo_sock_init2_multiaddr() for invalid flags\n");
+	fd = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, IPPROTO_SCTP,
+				       addrv4_loc, addrv4_size, 0,
+				       NULL, 0, 0, 0);
+	OSMO_ASSERT(fd < 0);
+
+	printf("Checking osmo_sock_init2_multiaddr() for combined BIND + CONNECT\n");
+	fd = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, IPPROTO_SCTP,
+				       addrv4_rem, addrv4_size, 0,
+				       addrv4_rem, addrv4_size, listen_port_v4,
+				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
+	OSMO_ASSERT(fd >= 0);
+
+	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv4 & IPv6\n");
+	fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
+				       addrv4_rem, addrv4_size, 0,
+				       addrv6_rem, addrv6_size, listen_port_v6,
+				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
+	OSMO_ASSERT(fd < 0);
+
+	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv6 & IPv4\n");
+	fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
+				       addrv6_rem, addrv6_size, 0,
+				       addrv4_rem, addrv4_size, listen_port_v4,
+				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
+	OSMO_ASSERT(fd < 0);
+
+	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv4\n");
+	fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
+				       addrv4_rem, addrv4_size, 0,
+				       addrv4_rem, addrv4_size, listen_port_v4,
+				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
+	OSMO_ASSERT(fd >= 0);
+
+	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv6\n");
+	fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
+				       addrv6_rem, addrv6_size, 0,
+				       addrv6_rem, addrv6_size, listen_port_v6,
+				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
+	OSMO_ASSERT(fd >= 0);
+
+	close(listen_fd_v4);
+	close(listen_fd_v6);
+	printf("Done\n");
+	return 0;
+}
+
+/* Test API osmo_sock_init2_multiaddr with 1 local/remote address */
+static int test_sockinit2_multiaddr_simple(void)
+{
+	const char *addrv4_loc[] = { "0.0.0.0" };
+	const char *addrv6_loc[] = { "::" };
+	const char *addrv4_rem[] = { "127.0.0.1" };
+	const char *addrv6_rem[] = { "::1" };
+
+	return test_sockinit2_multiaddr(addrv4_loc, addrv6_loc,
+					addrv4_rem, addrv6_rem, 1, 1);
+}
+
+/* Test API osmo_sock_init2_multiaddr with several local/remote address */
+static int test_sockinit2_multiaddr_several(void)
+{
+	const char *addrv4_localhost[] = { "127.0.0.1", "127.0.0.2" };
+	const char *addrv6_localhost[] = { "::1" };
+
+	return test_sockinit2_multiaddr(addrv4_localhost, addrv6_localhost,
+					addrv4_localhost, addrv6_localhost, 2, 1);
+}
+
+/* Test API osmo_sock_init2_multiaddr with several local/remote address, using both ipv4+v6 */
+static int test_sockinit2_multiaddr_mixed(void)
+{
+	const char *addr_localhost[] = { "127.0.0.1", "127.0.0.2", "::1" };
+	size_t addr_size = ARRAY_SIZE(addr_localhost);
+
+	int listen_fd, listen_port, fd;
+
+	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_INET IPv4+v6 fails\n");
+	listen_fd = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, IPPROTO_SCTP,
+				       addr_localhost, addr_size, 0,
+				       NULL, 0, 0, OSMO_SOCK_F_BIND);
+	OSMO_ASSERT(listen_fd < 0);
+
+	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_INET6 IPv4+v6 fails\n");
+	listen_fd = osmo_sock_init2_multiaddr(AF_INET6, SOCK_STREAM, IPPROTO_SCTP,
+				       addr_localhost, addr_size, 0,
+				       NULL, 0, 0, OSMO_SOCK_F_BIND);
+	OSMO_ASSERT(listen_fd < 0);
+
+	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_UNSPEC IPv4+v6 succeeds\n");
+	listen_fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
+				       addr_localhost, addr_size, 0,
+				       NULL, 0, 0, OSMO_SOCK_F_BIND);
+	OSMO_ASSERT(listen_fd >= 0);
+
+	listen_port = sock_get_local_port(listen_fd, true);
+
+	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv4\n");
+	fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
+				       addr_localhost, addr_size, 0,
+				       addr_localhost, addr_size, listen_port,
+				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
+	OSMO_ASSERT(fd >= 0);
+	close(fd);
+
+	close(listen_fd);
+	return 0;
+}
+#endif /* ifdef HAVE_LIBSCTP */
+
+const struct log_info_cat default_categories[] = {
+};
+
+static struct log_info info = {
+	.cat = default_categories,
+	.num_cat = ARRAY_SIZE(default_categories),
+};
+
+int main(int argc, char *argv[])
+{
+	ctx = talloc_named_const(NULL, 0, "socket_test_sctp");
+	osmo_init_logging2(ctx, &info);
+	log_set_use_color(osmo_stderr_target, 0);
+	log_set_print_filename(osmo_stderr_target, 0);
+#ifdef HAVE_LIBSCTP
+	test_sockinit2_multiaddr_simple();
+	test_sockinit2_multiaddr_several();
+	test_sockinit2_multiaddr_mixed();
+#endif /* ifdef HAVE_LIBSCTP */
+
+	return EXIT_SUCCESS;
+}
diff --git a/tests/socket/socket_sctp_test.err b/tests/socket/socket_sctp_test.err
new file mode 100644
index 0000000..996d092
--- /dev/null
+++ b/tests/socket/socket_sctp_test.err
@@ -0,0 +1,8 @@
+invalid: you have to specify either BIND or CONNECT flags
+Invalid v4 vs v6 in local vs remote addresses
+Invalid v4 vs v6 in local vs remote addresses
+invalid: you have to specify either BIND or CONNECT flags
+Invalid v4 vs v6 in local vs remote addresses
+Invalid v4 vs v6 in local vs remote addresses
+getaddrinfo(::1, 0) failed: Address family for hostname not supported
+getaddrinfo(127.0.0.1, 0) failed: Address family for hostname not supported
diff --git a/tests/socket/socket_sctp_test.ok b/tests/socket/socket_sctp_test.ok
new file mode 100644
index 0000000..7608e88
--- /dev/null
+++ b/tests/socket/socket_sctp_test.ok
@@ -0,0 +1,24 @@
+Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv4 port
+Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv6 port
+Checking osmo_sock_init2_multiaddr() for OSMO_SOCK_F_NONBLOCK
+Checking osmo_sock_init2_multiaddr() for invalid flags
+Checking osmo_sock_init2_multiaddr() for combined BIND + CONNECT
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv4 & IPv6
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv6 & IPv4
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv4
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv6
+Done
+Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv4 port
+Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv6 port
+Checking osmo_sock_init2_multiaddr() for OSMO_SOCK_F_NONBLOCK
+Checking osmo_sock_init2_multiaddr() for invalid flags
+Checking osmo_sock_init2_multiaddr() for combined BIND + CONNECT
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv4 & IPv6
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv6 & IPv4
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv4
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv6
+Done
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_INET IPv4+v6 fails
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_INET6 IPv4+v6 fails
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_UNSPEC IPv4+v6 succeeds
+Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv4
diff --git a/tests/socket/socket_test.c b/tests/socket/socket_test.c
index 1d4253c..a2e103c 100644
--- a/tests/socket/socket_test.c
+++ b/tests/socket/socket_test.c
@@ -148,176 +148,6 @@
 	return 0;
 }
 
-#ifdef HAVE_LIBSCTP
-static uint16_t sock_get_local_port(int fd, bool is_v6) {
-	struct sockaddr_storage sa;
-	struct sockaddr_in *sin = (struct sockaddr_in *)&sa;
-	struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&sa;
-	socklen_t len = sizeof(sa);
-	int local_port;
-
-	OSMO_ASSERT(getsockname(fd, (struct sockaddr*)&sa, &len) == 0);
-	if(!is_v6)
-		local_port = osmo_load16be(&sin->sin_port);
-	else
-		local_port = osmo_load16be(&sin6->sin6_port);
-	//printf("Checking osmo_sock_init2_multiaddr() port: %" PRIu16 "\n", listen_port_v4);
-	return local_port;
-}
-
-/* Test API osmo_sock_init2_multiaddr with 1 local/remote address */
-static int test_sockinit2_multiaddr(const char **addrv4_loc, const char **addrv6_loc,
-				    const char **addrv4_rem, const char **addrv6_rem,
-				    size_t addrv4_size, size_t addrv6_size)
-{
-	int fd, rc;
-	int listen_fd_v4, listen_fd_v6;
-	int listen_port_v4, listen_port_v6;
-
-	printf("Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv4 port\n");
-
-	listen_fd_v4 = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, IPPROTO_SCTP,
-				       addrv4_loc, addrv4_size, 0,
-				       NULL, 0, 0, OSMO_SOCK_F_BIND);
-	OSMO_ASSERT(listen_fd_v4 >= 0);
-	/* expect it to be blocking */
-	rc = fcntl(listen_fd_v4, F_GETFL);
-	OSMO_ASSERT(!(rc & O_NONBLOCK));
-
-	listen_port_v4 = sock_get_local_port(listen_fd_v4, false);
-
-	printf("Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv6 port\n");
-
-	listen_fd_v6 = osmo_sock_init2_multiaddr(AF_INET6, SOCK_STREAM, IPPROTO_SCTP,
-				       addrv6_loc, addrv6_size, 0,
-				       NULL, 0, 0, OSMO_SOCK_F_BIND);
-	OSMO_ASSERT(listen_fd_v6 >= 0);
-	/* expect it to be blocking */
-	rc = fcntl(listen_fd_v6, F_GETFL);
-	OSMO_ASSERT(!(rc & O_NONBLOCK));
-
-	listen_port_v6 = sock_get_local_port(listen_fd_v6, true);
-
-	printf("Checking osmo_sock_init2_multiaddr() for OSMO_SOCK_F_NONBLOCK\n");
-	fd = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, IPPROTO_SCTP,
-				       addrv4_loc, addrv4_size, 0,
-				       NULL, 0, 0, OSMO_SOCK_F_BIND|OSMO_SOCK_F_NONBLOCK);
-	OSMO_ASSERT(fd >= 0);
-	/* expect it to be blocking */
-	rc = fcntl(fd, F_GETFL);
-	OSMO_ASSERT(rc & O_NONBLOCK);
-	close(fd);
-
-	printf("Checking osmo_sock_init2_multiaddr() for invalid flags\n");
-	fd = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, IPPROTO_SCTP,
-				       addrv4_loc, addrv4_size, 0,
-				       NULL, 0, 0, 0);
-	OSMO_ASSERT(fd < 0);
-
-	printf("Checking osmo_sock_init2_multiaddr() for combined BIND + CONNECT\n");
-	fd = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, IPPROTO_SCTP,
-				       addrv4_rem, addrv4_size, 0,
-				       addrv4_rem, addrv4_size, listen_port_v4,
-				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
-	OSMO_ASSERT(fd >= 0);
-
-	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv4 & IPv6\n");
-	fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
-				       addrv4_rem, addrv4_size, 0,
-				       addrv6_rem, addrv6_size, listen_port_v6,
-				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
-	OSMO_ASSERT(fd < 0);
-
-	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv6 & IPv4\n");
-	fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
-				       addrv6_rem, addrv6_size, 0,
-				       addrv4_rem, addrv4_size, listen_port_v4,
-				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
-	OSMO_ASSERT(fd < 0);
-
-	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv4\n");
-	fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
-				       addrv4_rem, addrv4_size, 0,
-				       addrv4_rem, addrv4_size, listen_port_v4,
-				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
-	OSMO_ASSERT(fd >= 0);
-
-	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv6\n");
-	fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
-				       addrv6_rem, addrv6_size, 0,
-				       addrv6_rem, addrv6_size, listen_port_v6,
-				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
-	OSMO_ASSERT(fd >= 0);
-
-	close(listen_fd_v4);
-	close(listen_fd_v6);
-	printf("Done\n");
-	return 0;
-}
-
-/* Test API osmo_sock_init2_multiaddr with 1 local/remote address */
-static int test_sockinit2_multiaddr_simple(void)
-{
-	const char *addrv4_loc[] = { "0.0.0.0" };
-	const char *addrv6_loc[] = { "::" };
-	const char *addrv4_rem[] = { "127.0.0.1" };
-	const char *addrv6_rem[] = { "::1" };
-
-	return test_sockinit2_multiaddr(addrv4_loc, addrv6_loc,
-					addrv4_rem, addrv6_rem, 1, 1);
-}
-
-/* Test API osmo_sock_init2_multiaddr with several local/remote address */
-static int test_sockinit2_multiaddr_several(void)
-{
-	const char *addrv4_localhost[] = { "127.0.0.1", "127.0.0.2" };
-	const char *addrv6_localhost[] = { "::1" };
-
-	return test_sockinit2_multiaddr(addrv4_localhost, addrv6_localhost,
-					addrv4_localhost, addrv6_localhost, 2, 1);
-}
-
-/* Test API osmo_sock_init2_multiaddr with several local/remote address, using both ipv4+v6 */
-static int test_sockinit2_multiaddr_mixed(void)
-{
-	const char *addr_localhost[] = { "127.0.0.1", "127.0.0.2", "::1" };
-	size_t addr_size = ARRAY_SIZE(addr_localhost);
-
-	int listen_fd, listen_port, fd;
-
-	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_INET IPv4+v6 fails\n");
-	listen_fd = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, IPPROTO_SCTP,
-				       addr_localhost, addr_size, 0,
-				       NULL, 0, 0, OSMO_SOCK_F_BIND);
-	OSMO_ASSERT(listen_fd < 0);
-
-	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_INET6 IPv4+v6 fails\n");
-	listen_fd = osmo_sock_init2_multiaddr(AF_INET6, SOCK_STREAM, IPPROTO_SCTP,
-				       addr_localhost, addr_size, 0,
-				       NULL, 0, 0, OSMO_SOCK_F_BIND);
-	OSMO_ASSERT(listen_fd < 0);
-
-	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_UNSPEC IPv4+v6 succeeds\n");
-	listen_fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
-				       addr_localhost, addr_size, 0,
-				       NULL, 0, 0, OSMO_SOCK_F_BIND);
-	OSMO_ASSERT(listen_fd >= 0);
-
-	listen_port = sock_get_local_port(listen_fd, true);
-
-	printf("Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv4\n");
-	fd = osmo_sock_init2_multiaddr(AF_UNSPEC, SOCK_STREAM, IPPROTO_SCTP,
-				       addr_localhost, addr_size, 0,
-				       addr_localhost, addr_size, listen_port,
-				       OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
-	OSMO_ASSERT(fd >= 0);
-	close(fd);
-
-	close(listen_fd);
-	return 0;
-}
-#endif /* ifdef HAVE_LIBSCTP */
-
 const struct log_info_cat default_categories[] = {
 };
 
@@ -335,11 +165,6 @@
 
 	test_sockinit();
 	test_sockinit2();
-#ifdef HAVE_LIBSCTP
-	test_sockinit2_multiaddr_simple();
-	test_sockinit2_multiaddr_several();
-	test_sockinit2_multiaddr_mixed();
-#endif /* ifdef HAVE_LIBSCTP */
 
 	return EXIT_SUCCESS;
 }
diff --git a/tests/socket/socket_test.err b/tests/socket/socket_test.err
index e3d3903..0f0f8da 100644
--- a/tests/socket/socket_test.err
+++ b/tests/socket/socket_test.err
@@ -2,11 +2,3 @@
 invalid: you have to specify either BIND or CONNECT flags
 Unable to find a common protocol (IPv4 or IPv6) for local host: 127.0.0.1 and remote host: ::1.
 Unable to find a common protocol (IPv4 or IPv6) for local host: ::1 and remote host: 127.0.0.1.
-invalid: you have to specify either BIND or CONNECT flags
-Invalid v4 vs v6 in local vs remote addresses
-Invalid v4 vs v6 in local vs remote addresses
-invalid: you have to specify either BIND or CONNECT flags
-Invalid v4 vs v6 in local vs remote addresses
-Invalid v4 vs v6 in local vs remote addresses
-getaddrinfo(::1, 0) failed: Address family for hostname not supported
-getaddrinfo(127.0.0.1, 0) failed: Address family for hostname not supported
diff --git a/tests/socket/socket_test.ok b/tests/socket/socket_test.ok
index 959fa84..4265be8 100644
--- a/tests/socket/socket_test.ok
+++ b/tests/socket/socket_test.ok
@@ -9,27 +9,3 @@
 Checking osmo_sock_init2(AF_UNSPEC) must fail on mixed IPv6 & IPv4
 Checking osmo_sock_init2(AF_UNSPEC) BIND + CONNECT on IPv4
 Checking osmo_sock_init2(AF_UNSPEC) BIND + CONNECT on IPv6
-Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv4 port
-Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv6 port
-Checking osmo_sock_init2_multiaddr() for OSMO_SOCK_F_NONBLOCK
-Checking osmo_sock_init2_multiaddr() for invalid flags
-Checking osmo_sock_init2_multiaddr() for combined BIND + CONNECT
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv4 & IPv6
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv6 & IPv4
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv4
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv6
-Done
-Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv4 port
-Checking osmo_sock_init2_multiaddr() with bind to a random local SCTP IPv6 port
-Checking osmo_sock_init2_multiaddr() for OSMO_SOCK_F_NONBLOCK
-Checking osmo_sock_init2_multiaddr() for invalid flags
-Checking osmo_sock_init2_multiaddr() for combined BIND + CONNECT
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv4 & IPv6
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) must fail on mixed IPv6 & IPv4
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv4
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv6
-Done
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_INET IPv4+v6 fails
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_INET6 IPv4+v6 fails
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND on AF_UNSPEC IPv4+v6 succeeds
-Checking osmo_sock_init2_multiaddr(AF_UNSPEC) BIND + CONNECT on IPv4
diff --git a/tests/testsuite.at b/tests/testsuite.at
index a4c28f9..1955800 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -313,6 +313,15 @@
 AT_CHECK([$abs_top_builddir/tests/socket/socket_test], [0], [expout], [experr])
 AT_CLEANUP
 
+AT_SETUP([socket_sctp])
+AT_KEYWORDS([socket_sctp])
+AT_SKIP_IF([! test -e $abs_top_builddir/tests/socket/socket_sctp_test])
+cat $abs_srcdir/socket/socket_sctp_test.ok > expout
+cat $abs_srcdir/socket/socket_sctp_test.err > experr
+touch experr
+AT_CHECK([$abs_top_builddir/tests/socket/socket_sctp_test], [0], [expout], [experr])
+AT_CLEANUP
+
 AT_SETUP([osmo-auc-gen])
 AT_KEYWORDS([osmo-auc-gen])
 cat $abs_srcdir/osmo-auc-gen/osmo-auc-gen_test.ok > expout

-- 
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/19815
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I1d16280674625877ec22cc60cbc5deb67868a656
Gerrit-Change-Number: 19815
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200825/92fe0840/attachment.htm>


More information about the gerrit-log mailing list