From: "Alex Bennée" <alex.bennee@linaro.org>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
Cc: cota@braap.org, famz@redhat.com, berrange@redhat.com,
richard.henderson@linaro.org, balrogg@gmail.com,
aurelien@aurel32.net, agraf@suse.de, peter.maydell@linaro.org,
qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v7 12/54] tests/tcg/multiarch: don't hard code paths/ports for linux-test
Date: Sun, 17 Jun 2018 10:18:36 +0100 [thread overview]
Message-ID: <87wouxepoz.fsf@linaro.org> (raw)
In-Reply-To: <02569193-5865-e408-86bf-7137b76b6792@amsat.org>
Philippe Mathieu-Daudé <f4bug@amsat.org> writes:
> Hi Alex,
>
> On 06/15/2018 04:46 PM, Alex Bennée wrote:
>> 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.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>> tests/tcg/multiarch/linux-test.c | 37 ++++++++++++++++----------------
>> 1 file changed, 19 insertions(+), 18 deletions(-)
>>
>> diff --git a/tests/tcg/multiarch/linux-test.c b/tests/tcg/multiarch/linux-test.c
>> index 6f2c531474..3f73b96420 100644
>> --- a/tests/tcg/multiarch/linux-test.c
>> +++ b/tests/tcg/multiarch/linux-test.c
>> @@ -41,8 +41,6 @@
>> #include <setjmp.h>
>> #include <sys/shm.h>
>>
>> -#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 +83,15 @@ static void test_file(void)
>> struct iovec vecs[2];
>> DIR *dir;
>> struct dirent *de;
>> + char template[] = "/tmp/linux-test-XXXXXX";
>
> Since /tmp doesn't always fit, can this be:
>
> char *tmpbase = getenv("TMPDIR");
> char *template = g_strdup_printf("%s/qemu-test-XXXXXX",
> tmpbase ? tmpbase : "/tmp");
It depends if we want to honour TMPDIR, is /tmp not likely to be there?
Either way we can't use glib functions for these tests to keep the
compilation simple.
>
>> + char *tmpdir = mkdtemp(template);
>
> g_free(template);
>
>>
>> - /* clean up, just in case */
>> - unlink(TESTPATH "/file1");
>> - unlink(TESTPATH "/file2");
>> - unlink(TESTPATH "/file3");
>> - rmdir(TESTPATH);
>> + chk_error(strlen(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 +157,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 +179,7 @@ static void test_file(void)
>> error("stat mode");
>>
>> /* getdents */
>> - dir = opendir(TESTPATH);
>> + dir = opendir(tmpdir);
>> if (!dir)
>> error("opendir");
>> len = 0;
>> @@ -207,7 +201,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 +258,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 +266,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 +274,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 +286,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 +306,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);
>>
--
Alex Bennée
next prev parent reply other threads:[~2018-06-17 9:18 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-15 19:46 [Qemu-devel] [PATCH v7 00/54] fix building of tests/tcg - last chance to review! Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 01/54] configure: add support for --cross-cc-FOO Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 02/54] configure: move i386_cc to cross_cc_i386 Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 03/54] configure: allow user to specify --cross-cc-cflags-foo= Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 04/54] configure: set cross_cc_FOO for host compiler Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 05/54] docker: Add "cc" subcommand Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 06/54] docker: extend "cc" command to accept compiler Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 07/54] docker: allow "cc" command to run in user context Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 08/54] docker: Makefile.include introduce DOCKER_SCRIPT Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 09/54] tests/tcg: move architecture independent tests into subdir Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 10/54] tests/tcg/multiarch: Build fix for linux-test Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 11/54] tests/tcg/multiarch: enable additional linux-test tests Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 12/54] tests/tcg/multiarch: don't hard code paths/ports for linux-test Alex Bennée
2018-06-16 19:46 ` Thomas Huth
2018-06-18 10:56 ` Alex Bennée
2018-06-18 11:08 ` Daniel P. Berrangé
2018-06-18 11:09 ` Thomas Huth
2018-06-18 11:14 ` Daniel P. Berrangé
2018-06-18 12:04 ` Alex Bennée
2018-06-18 12:40 ` Thomas Huth
2018-06-18 11:08 ` Thomas Huth
2018-06-16 22:24 ` Philippe Mathieu-Daudé
2018-06-17 9:18 ` Alex Bennée [this message]
2018-06-18 15:18 ` Philippe Mathieu-Daudé
2018-06-18 15:23 ` Philippe Mathieu-Daudé
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 13/54] tests/tcg/multiarch: move most output to stdout Alex Bennée
2018-06-16 19:48 ` Thomas Huth
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 14/54] tests/tcg: move i386 specific tests into subdir Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 15/54] tests/tcg: enable building for i386 Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 16/54] tests/tcg/i386: Build fix for hello-i386 Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 17/54] tests/tcg/i386: fix test-i386 Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 18/54] tests/tcg/i386: add runner for test-i386-fprem Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 19/54] tests/tcg/x86_64: add Makefile.target Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 20/54] tests/tcg/i386/test-i386: use modern vector_size attributes Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 21/54] tests/tcg/i386/test-i386: fix printf format Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 22/54] tests/tcg: move ARM specific tests into subdir Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 23/54] tests/tcg: enable building for ARM Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 24/54] tests/tcg/arm: fix up test-arm-iwmmxt test Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 25/54] tests/tcg: enable building for AArch64 Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 26/54] tests/tcg/arm: add fcvt test cases for AArch32/64 Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 27/54] tests/tcg: move MIPS specific tests into subdir Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 28/54] tests/tcg: enable building for MIPS Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 29/54] tests/docker/Makefile.include: fix mipsel-cross dependancy Alex Bennée
2018-06-16 22:27 ` Philippe Mathieu-Daudé
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 30/54] tests/tcg/mips: include common mips hello-mips Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 31/54] tests/tcg: enable building for s390x Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 32/54] tests/tcg: enable building for ppc64 Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 33/54] tests/tcg: enable building for Alpha Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 34/54] tests/tcg/alpha: add Alpha specific tests Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 35/54] tests/tcg: enable building for HPPA Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 36/54] tests/tcg: enable building for m68k Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 37/54] tests/tcg: enable building for sh4 Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 38/54] tests/tcg: enable building for sparc64 Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 39/54] tests/tcg: enable building for mips64 Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 40/54] tests/tcg: enable building for RISCV64 Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 41/54] docker: move debian-powerpc-cross to sid based build Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 42/54] tests/tcg: enable building for PowerPC Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 43/54] tests/tcg/Makefile: update to be called from Makefile.target Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 44/54] Makefile.target: add (clean-/build-)guest-tests targets Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 45/54] tests/Makefile.include: add [build|clean|check]-tcg targets Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 46/54] tests/tcg: add run, diff, and skip helper macros Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 47/54] tests/tcg: override runners for broken tests Alex Bennée
2018-06-15 19:46 ` [Qemu-devel] [PATCH v7 48/54] tests: add top-level make dependency for docker builds Alex Bennée
2018-06-15 19:47 ` [Qemu-devel] [PATCH v7 49/54] docker: docker.py don't conflate checksums for extra_files Alex Bennée
2018-06-15 19:47 ` [Qemu-devel] [PATCH v7 50/54] docker: docker.py add check sub-command Alex Bennée
2018-06-18 15:06 ` Philippe Mathieu-Daudé
2018-06-15 19:47 ` [Qemu-devel] [PATCH v7 51/54] tests/Makefile: call sub-makes with SKIP_DOCKER_BUILD=1 Alex Bennée
2018-06-15 19:47 ` [Qemu-devel] [PATCH v7 52/54] docker: docker.py adding age check command Alex Bennée
2018-06-18 15:07 ` Philippe Mathieu-Daudé
2018-06-15 19:47 ` [Qemu-devel] [PATCH v7 53/54] tests/docker/Makefile.include: only force SID to NOCACHE if old Alex Bennée
2018-06-15 19:47 ` [Qemu-devel] [PATCH v7 54/54] .travis.yml: add check-tcg test Alex Bennée
2018-06-15 22:29 ` [Qemu-devel] [PATCH v7 00/54] fix building of tests/tcg - last chance to review! no-reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wouxepoz.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=agraf@suse.de \
--cc=aurelien@aurel32.net \
--cc=balrogg@gmail.com \
--cc=berrange@redhat.com \
--cc=cota@braap.org \
--cc=f4bug@amsat.org \
--cc=famz@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).