[RFC mptcp-next 08/10] selftests: mptcp: connect: skip TLS in disconnect tests

Geliang Tang posted 10 patches 1 week, 2 days ago
There is a newer version of this series
[RFC mptcp-next 08/10] selftests: mptcp: connect: skip TLS in disconnect tests
Posted by Geliang Tang 1 week, 2 days ago
From: Geliang Tang <tanggeliang@kylinos.cn>

Modify disconnect test scenarios to bypass TLS socket configuration
since TLS setup can interfere with connection teardown validation.
Add cfg_disconnect flag to control this behavior.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 tools/testing/selftests/net/mptcp/mptcp_connect.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.c b/tools/testing/selftests/net/mptcp/mptcp_connect.c
index deafcff7a2c8..e43874610297 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.c
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.c
@@ -79,6 +79,7 @@ static char *cfg_input;
 static int cfg_repeat = 1;
 static int cfg_truncate;
 static int cfg_rcv_trunc;
+static int cfg_disconnect = 0;
 
 struct cfg_cmsg_types {
 	unsigned int cmsg_enabled:1;
@@ -434,7 +435,7 @@ static int sock_connect_mptcp(const char * const remoteaddr,
 	}
 
 	freeaddrinfo(addr);
-	if (sock != -1)
+	if (sock != -1 && cfg_disconnect == 0)
 		SOCK_TEST_TCPULP(sock, proto, is_mptcp(sock));
 	return sock;
 }
@@ -1381,7 +1382,9 @@ int main_loop(void)
 again:
 	check_getpeername_connect(fd);
 
-	SOCK_TEST_TCPULP(fd, cfg_sock_proto, -1);
+	/* Don't let TLS break disconnect tests */
+	if (cfg_disconnect == 0)
+		SOCK_TEST_TCPULP(fd, cfg_sock_proto, -1);
 
 	if (cfg_rcvbuf)
 		set_rcvbuf(fd, cfg_rcvbuf);
@@ -1540,6 +1543,7 @@ static void parse_opts(int argc, char **argv)
 			break;
 		case 'I':
 			cfg_repeat = atoi(optarg);
+			cfg_disconnect = 1;
 			break;
 		case 'l':
 			listen_mode = true;
-- 
2.51.0
Re: [RFC mptcp-next 08/10] selftests: mptcp: connect: skip TLS in disconnect tests
Posted by Geliang Tang 1 week, 2 days ago
On Tue, 2025-11-18 at 12:01 +0800, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
> 
> Modify disconnect test scenarios to bypass TLS socket configuration
> since TLS setup can interfere with connection teardown validation.
> Add cfg_disconnect flag to control this behavior.

tls_disconnect() returning EOPNOTSUPP caused the MPTCP connect's
disconnect tests to fail:

static int tls_disconnect(struct sock *sk, int flags)
{
        return -EOPNOTSUPP;
}

This patch can be dropped now that MPTCP support has been added to
tls_disconnect() like this:

static int tls_disconnect(struct sock *sk, int flags)
{
        if (sk->sk_protocol == IPPROTO_MPTCP)
                return mptcp_disconnect(sk, flags);
        return -EOPNOTSUPP;
}

Thanks,
-Geliang

> 
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> ---
>  tools/testing/selftests/net/mptcp/mptcp_connect.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.c
> b/tools/testing/selftests/net/mptcp/mptcp_connect.c
> index deafcff7a2c8..e43874610297 100644
> --- a/tools/testing/selftests/net/mptcp/mptcp_connect.c
> +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.c
> @@ -79,6 +79,7 @@ static char *cfg_input;
>  static int cfg_repeat = 1;
>  static int cfg_truncate;
>  static int cfg_rcv_trunc;
> +static int cfg_disconnect = 0;
>  
>  struct cfg_cmsg_types {
>  	unsigned int cmsg_enabled:1;
> @@ -434,7 +435,7 @@ static int sock_connect_mptcp(const char * const
> remoteaddr,
>  	}
>  
>  	freeaddrinfo(addr);
> -	if (sock != -1)
> +	if (sock != -1 && cfg_disconnect == 0)
>  		SOCK_TEST_TCPULP(sock, proto, is_mptcp(sock));
>  	return sock;
>  }
> @@ -1381,7 +1382,9 @@ int main_loop(void)
>  again:
>  	check_getpeername_connect(fd);
>  
> -	SOCK_TEST_TCPULP(fd, cfg_sock_proto, -1);
> +	/* Don't let TLS break disconnect tests */
> +	if (cfg_disconnect == 0)
> +		SOCK_TEST_TCPULP(fd, cfg_sock_proto, -1);
>  
>  	if (cfg_rcvbuf)
>  		set_rcvbuf(fd, cfg_rcvbuf);
> @@ -1540,6 +1543,7 @@ static void parse_opts(int argc, char **argv)
>  			break;
>  		case 'I':
>  			cfg_repeat = atoi(optarg);
> +			cfg_disconnect = 1;
>  			break;
>  		case 'l':
>  			listen_mode = true;