From patchwork Tue Jun 19 15:43:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 139217 Delivered-To: patch@linaro.org Received: by 2002:a2e:970d:0:0:0:0:0 with SMTP id r13-v6csp5416077lji; Tue, 19 Jun 2018 09:30:33 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJlxkb6oya/9ihv10B6VmPJYlLUa6WsPt6neTJ7T/LgJp4EFW+Af/MzKd3frdpXbbAb8zmn X-Received: by 2002:a37:5a43:: with SMTP id o64-v6mr14946348qkb.211.1529425833017; Tue, 19 Jun 2018 09:30:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529425833; cv=none; d=google.com; s=arc-20160816; b=kduCuXj9FeRZuvsY4+J/30VaoCm86JROJ5eXUjpjE/TEVhvstNkkhzK3BXFeA7KnrD 1abiSFDDI5odZV2hvGvhZziYPSrlZ1WPqYdRX4RKvOZgNc1/IH6sQRchdId2Lz5Bm3d2 SgLdQKNJb7KxuGzpagquN8ZS3XNU90Z4fKuurKh+k04lNQftwRqN7+TRswNZyVp/jRWX ExK5RCvZShG9fwTSRY3DRR+wqOCdfDGVCMsa+eS0uVD5NgsLZD2GCwg2wPF5OOr+Z07h pT5BBZArkUj+RH8+V5Ibg4keCMGZ/VcsiYY3vsimEwdgI6qjwIqBQIpklf2yEMMzU9/a pAZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=wMR4o6UA5ueo9j52GN2061/BJYxJY8qHO0RuFBTKZTs=; b=e09B6KvsnF134FV17Xddvd0D2/222MUHZ2u0Nlnf/IZ0g7Jm8Cz8cyJwJvoNOmS0hf m6xe3Fux9Ra72vDT+CzRTlQkNPbV8YbkuYdBRqOGzI4khTM2uVgCD8c/DANeoPx0F3Wh EHaoTRfNTGY8DPhy6i1TAH35dM72WKWEhNFezWx8krP7XNgpKefygA/vGSgwhNzLHE7+ 8Eibxqoc9EydDy/tWUZOBW8V2tPwGao3kN7kNrmNn25yH9yqdOXeuQAScwFw2jbF+Bnm Zf+BPOUniaxiFPtZILaqKtnShIW16nkQkaJ+Hq7dL7Ze6EgPj/4KMibQq0wSAdH+Sgfx HvrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Mv72R5Z0; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id p33-v6si126583qtk.62.2018.06.19.09.30.32 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 19 Jun 2018 09:30:33 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Mv72R5Z0; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:43659 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fVJWa-0002j5-9S for patch@linaro.org; Tue, 19 Jun 2018 12:30:32 -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) 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-Received: by 2002:a1c:4787:: with SMTP id m7-v6mr13005385wmi.92.1529424115571; Tue, 19 Jun 2018 09:01:55 -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) From: =?utf-8?q?Alex_Benn=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 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_Benn=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+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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ée --- v7 - chk_error(strlen(tmpdir)) -> assert(tmpdir) - mark common tempdir as a TODO -- 2.17.1 diff --git a/tests/tcg/multiarch/linux-test.c b/tests/tcg/multiarch/linux-test.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 -#define TESTPATH "/tmp/linux-test.tmp" -#define TESTPORT 7654 #define STACK_SIZE 16384 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[] = "/tmp/linux-test-XXXXXX"; + char *tmpdir = mkdtemp(template); - /* clean up, just in case */ - unlink(TESTPATH "/file1"); - unlink(TESTPATH "/file2"); - unlink(TESTPATH "/file3"); - rmdir(TESTPATH); + assert(tmpdir); if (getcwd(cur_dir, sizeof(cur_dir)) == NULL) error("getcwd"); - chk_error(mkdir(TESTPATH, 0755)); - - chk_error(chdir(TESTPATH)); + chk_error(chdir(tmpdir)); /* open/read/write/close/readv/writev/lseek */ @@ -163,7 +159,7 @@ static void test_file(void) st.st_mtime != 1000) error("stat time"); - chk_error(stat(TESTPATH, &st)); + chk_error(stat(tmpdir, &st)); if (!S_ISDIR(st.st_mode)) error("stat mode"); @@ -185,7 +181,7 @@ static void test_file(void) error("stat mode"); /* getdents */ - dir = opendir(TESTPATH); + dir = opendir(tmpdir); if (!dir) error("opendir"); len = 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)); } 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))); sockaddr.sin_family = AF_INET; - sockaddr.sin_port = htons(TESTPORT); + sockaddr.sin_port = htons(0); /* choose random ephemeral port) */ sockaddr.sin_addr.s_addr = 0; chk_error(bind(fd, (struct sockaddr *)&sockaddr, sizeof(sockaddr))); chk_error(listen(fd, 0)); @@ -272,7 +268,7 @@ static int server_socket(void) } -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 = chk_error(socket(PF_INET, SOCK_STREAM, 0)); sockaddr.sin_family = AF_INET; - sockaddr.sin_port = htons(TESTPORT); + sockaddr.sin_port = 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]; server_fd = server_socket(); + /* find out what port we got */ + socklen = sizeof(server_addr); + ret = getsockname(server_fd, &server_addr, &socklen); + chk_error(ret); + server_port = ntohs(server_addr.sin_port); /* test a few socket options */ len = sizeof(val); @@ -305,7 +308,7 @@ static void test_socket(void) pid = chk_error(fork()); if (pid == 0) { - client_fd = client_socket(); + client_fd = client_socket(server_port); send(client_fd, socket_msg, sizeof(socket_msg), 0); close(client_fd); exit(0);