From nobody Wed Feb 11 02:08:39 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1529425785415761.7910262690107; Tue, 19 Jun 2018 09:29:45 -0700 (PDT) Received: from localhost ([::1]:43635 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fVJVo-0001MX-JM for importer@patchew.org; Tue, 19 Jun 2018 12:29:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46033) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fVJ4z-0004dr-8n for qemu-devel@nongnu.org; Tue, 19 Jun 2018 12:02:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fVJ4v-0007dm-3u for qemu-devel@nongnu.org; Tue, 19 Jun 2018 12:02:01 -0400 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:53463) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fVJ4u-0007dO-Pf for qemu-devel@nongnu.org; Tue, 19 Jun 2018 12:01:57 -0400 Received: by mail-wm0-x242.google.com with SMTP id x6-v6so1257002wmc.3 for ; Tue, 19 Jun 2018 09:01:56 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id v13-v6sm40256wrq.43.2018.06.19.09.01.48 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Jun 2018 09:01:49 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 7948A3E0A51; Tue, 19 Jun 2018 16:44:36 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wMR4o6UA5ueo9j52GN2061/BJYxJY8qHO0RuFBTKZTs=; b=Mv72R5Z0JZQ2Pf7AfQavlywU4Zsgs/QMG+o7e6hAm+jb3k2Q7cVnshYfSVah1ZVCqE yA5H5BJIjdr6V/WwpjhWVonYUd8W5EdoUhnrF7sXs/w7TGsUzypq3oLVFJUyTeYbBoRU ZpNQVTA+Z4CjYtEAsOR8ogFZ7KTxzuG+9Zjkg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wMR4o6UA5ueo9j52GN2061/BJYxJY8qHO0RuFBTKZTs=; b=omPis3PRlr3pvvZLFuhWue3H9Ae1abTVoCaQ+HtLlJ9hl1ASthcqIr8+1n/uDZBV1e xKfTU6oEEtoK3eLYRk5RkLUwlHWW+Df++9lsgmFyygRL8+32cFyLAlihvfQGQYTsJ72P EEiVoK+UZkptca7EWpZTnhNVkEx1ZibW7oDQ2D9a/iJtaxoxgPr2GkwMyuvYFVd18D1q JGOH9aXHJ6FJ4GwYmHQrlaDs/9z5hyBICJKleBoLFsVwD1DCqwH7rHAo5GtMn8fCLaeR Jb+3JkEMBiao2f/1/jwc7JgftcaohE3Fj4Hx0r0MuS6UQSsveu+vJ1WiFzawKjXJka7s TOUQ== X-Gm-Message-State: APt69E0H8pVbQdzN2WnpWML2XTTCYynCfIby/7J5p1FcvHsezxWxBy0t ehfkgGEf1cOelFW6cD/di8E/9A== X-Google-Smtp-Source: ADUXVKI6KTGCbaV8vBCslTiCZYecGjW1iiKOY6U0M43I8+GarMUGtBlqpS+wfEZzyEY8hSo0nswq6g== X-Received: by 2002:a1c:4787:: with SMTP id m7-v6mr13005385wmi.92.1529424115571; Tue, 19 Jun 2018 09:01:55 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 19 Jun 2018 16:43:51 +0100 Message-Id: <20180619154435.18898-13-alex.bennee@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180619154435.18898-1-alex.bennee@linaro.org> References: <20180619154435.18898-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PULL 12/56] tests/tcg/multiarch: don't hard code paths/ports for linux-test X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, =?UTF-8?q?Alex=20Benn=C3=A9e?= , richard.henderson@linaro.org, qemu-devel@nongnu.org, f4bug@amsat.org, cota@braap.org, famz@redhat.com, aurelien@aurel32.net Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 The fixed path and ports get in the way of running our tests and builds in parallel. Instead of using TESTPATH we use mkdtemp() and instead of a fixed port we allow the kernel to assign one and query it afterwards. Ideally test directory creation should be common functionally across all TCG tests but this could complicate an already huge patch series so we mark it as a TODO for next time. Signed-off-by: Alex Benn=C3=A9e --- v7 - chk_error(strlen(tmpdir)) -> assert(tmpdir) - mark common tempdir as a TODO diff --git a/tests/tcg/multiarch/linux-test.c b/tests/tcg/multiarch/linux-t= est.c index 6f2c531474..e80eccc0ce 100644 --- a/tests/tcg/multiarch/linux-test.c +++ b/tests/tcg/multiarch/linux-test.c @@ -40,9 +40,8 @@ #include #include #include +#include =20 -#define TESTPATH "/tmp/linux-test.tmp" -#define TESTPORT 7654 #define STACK_SIZE 16384 =20 static void error1(const char *filename, int line, const char *fmt, ...) @@ -85,19 +84,16 @@ static void test_file(void) struct iovec vecs[2]; DIR *dir; struct dirent *de; + /* TODO: make common tempdir creation for tcg tests */ + char template[] =3D "/tmp/linux-test-XXXXXX"; + char *tmpdir =3D mkdtemp(template); =20 - /* clean up, just in case */ - unlink(TESTPATH "/file1"); - unlink(TESTPATH "/file2"); - unlink(TESTPATH "/file3"); - rmdir(TESTPATH); + assert(tmpdir); =20 if (getcwd(cur_dir, sizeof(cur_dir)) =3D=3D NULL) error("getcwd"); =20 - chk_error(mkdir(TESTPATH, 0755)); - - chk_error(chdir(TESTPATH)); + chk_error(chdir(tmpdir)); =20 /* open/read/write/close/readv/writev/lseek */ =20 @@ -163,7 +159,7 @@ static void test_file(void) st.st_mtime !=3D 1000) error("stat time"); =20 - chk_error(stat(TESTPATH, &st)); + chk_error(stat(tmpdir, &st)); if (!S_ISDIR(st.st_mode)) error("stat mode"); =20 @@ -185,7 +181,7 @@ static void test_file(void) error("stat mode"); =20 /* getdents */ - dir =3D opendir(TESTPATH); + dir =3D opendir(tmpdir); if (!dir) error("opendir"); len =3D 0; @@ -207,7 +203,7 @@ static void test_file(void) chk_error(unlink("file3")); chk_error(unlink("file2")); chk_error(chdir(cur_dir)); - chk_error(rmdir(TESTPATH)); + chk_error(rmdir(tmpdir)); } =20 static void test_fork(void) @@ -264,7 +260,7 @@ static int server_socket(void) chk_error(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val))); =20 sockaddr.sin_family =3D AF_INET; - sockaddr.sin_port =3D htons(TESTPORT); + sockaddr.sin_port =3D htons(0); /* choose random ephemeral port) */ sockaddr.sin_addr.s_addr =3D 0; chk_error(bind(fd, (struct sockaddr *)&sockaddr, sizeof(sockaddr))); chk_error(listen(fd, 0)); @@ -272,7 +268,7 @@ static int server_socket(void) =20 } =20 -static int client_socket(void) +static int client_socket(uint16_t port) { int fd; struct sockaddr_in sockaddr; @@ -280,7 +276,7 @@ static int client_socket(void) /* server socket */ fd =3D chk_error(socket(PF_INET, SOCK_STREAM, 0)); sockaddr.sin_family =3D AF_INET; - sockaddr.sin_port =3D htons(TESTPORT); + sockaddr.sin_port =3D htons(port); inet_aton("127.0.0.1", &sockaddr.sin_addr); chk_error(connect(fd, (struct sockaddr *)&sockaddr, sizeof(sockaddr))); return fd; @@ -292,10 +288,17 @@ static void test_socket(void) { int server_fd, client_fd, fd, pid, ret, val; struct sockaddr_in sockaddr; - socklen_t len; + struct sockaddr_in server_addr; + socklen_t len, socklen; + uint16_t server_port; char buf[512]; =20 server_fd =3D server_socket(); + /* find out what port we got */ + socklen =3D sizeof(server_addr); + ret =3D getsockname(server_fd, &server_addr, &socklen); + chk_error(ret); + server_port =3D ntohs(server_addr.sin_port); =20 /* test a few socket options */ len =3D sizeof(val); @@ -305,7 +308,7 @@ static void test_socket(void) =20 pid =3D chk_error(fork()); if (pid =3D=3D 0) { - client_fd =3D client_socket(); + client_fd =3D client_socket(server_port); send(client_fd, socket_msg, sizeof(socket_msg), 0); close(client_fd); exit(0); --=20 2.17.1