From: Ammar Faizi <ammarfaizi2@xxxxxxxxxxx> Don't use a static port number. It might already be in use, resulting in a test failure. Use an ephemeral port to make this test reliable. Cc: Dylan Yudaken <dylany@xxxxxx> Cc: Facebook Kernel Team <kernel-team@xxxxxx> Cc: Pavel Begunkov <asml.silence@xxxxxxxxx> Reviewed-by: Alviro Iskandar Setiawan <alviro.iskandar@xxxxxxxxxxx> Tested-by: Alviro Iskandar Setiawan <alviro.iskandar@xxxxxxxxxxx> Signed-off-by: Ammar Faizi <ammarfaizi2@xxxxxxxxxxx> --- test/shutdown.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/shutdown.c b/test/shutdown.c index 14c7407..064ee36 100644 --- a/test/shutdown.c +++ b/test/shutdown.c @@ -15,44 +15,43 @@ #include <sys/socket.h> #include <sys/un.h> #include <netinet/tcp.h> #include <netinet/in.h> #include <arpa/inet.h> #include "liburing.h" +#include "helpers.h" static void sig_pipe(int sig) { } int main(int argc, char *argv[]) { int p_fd[2], ret; int32_t recv_s0; int32_t val = 1; - struct sockaddr_in addr; + struct sockaddr_in addr = { }; if (argc > 1) return 0; srand(getpid()); recv_s0 = socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); ret = setsockopt(recv_s0, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val)); assert(ret != -1); ret = setsockopt(recv_s0, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); assert(ret != -1); addr.sin_family = AF_INET; - addr.sin_port = htons((rand() % 61440) + 4096); addr.sin_addr.s_addr = inet_addr("127.0.0.1"); - ret = bind(recv_s0, (struct sockaddr*)&addr, sizeof(addr)); - assert(ret != -1); + assert(!t_bind_ephemeral_port(recv_s0, &addr)); ret = listen(recv_s0, 128); assert(ret != -1); p_fd[1] = socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); val = 1; ret = setsockopt(p_fd[1], IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)); -- Ammar Faizi