All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: "Alex Bennée" <alex.bennee@linaro.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: Mon, 18 Jun 2018 12:23:25 -0300	[thread overview]
Message-ID: <a41890e9-d64d-21f5-31cc-56a1a7ff320b@amsat.org> (raw)
In-Reply-To: <7d926378-946e-e0bc-d354-aa2ff3b7a241@amsat.org>

On 06/18/2018 12:18 PM, Philippe Mathieu-Daudé wrote:
> On 06/17/2018 06:18 AM, Alex Bennée wrote:
>> 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?
> 
> My /tmp is a not huge tmpfs and I had troubles running iotests which let
> some dangling big files on failure. Now I prefer run tests with
> TMPDIR=/scratch where I have plenty of slower space.
> Shouldn't be a problem here however.

Thus is something that could be addressed in later patch, or not.

> 
>>
>> Either way we can't use glib functions for these tests to keep the
>> compilation simple.
> 
> char template[PATH_MAX] + snprintf() :)
> 
>>
>>>
>>>> +    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
>>

  reply	other threads:[~2018-06-18 15:23 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
2018-06-18 15:18       ` Philippe Mathieu-Daudé
2018-06-18 15:23         ` Philippe Mathieu-Daudé [this message]
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=a41890e9-d64d-21f5-31cc-56a1a7ff320b@amsat.org \
    --to=f4bug@amsat.org \
    --cc=agraf@suse.de \
    --cc=alex.bennee@linaro.org \
    --cc=aurelien@aurel32.net \
    --cc=balrogg@gmail.com \
    --cc=berrange@redhat.com \
    --cc=cota@braap.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.