From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk1-x730.google.com (mail-qk1-x730.google.com [IPv6:2607:f8b0:4864:20::730]) by sourceware.org (Postfix) with ESMTPS id A847C3858D29 for ; Mon, 22 Mar 2021 19:23:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A847C3858D29 Received: by mail-qk1-x730.google.com with SMTP id q3so11804406qkq.12 for ; Mon, 22 Mar 2021 12:23:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=WsYZNHwsqJfKfxj0IA7x4gSkAsBPJUVvDQEoGwyItQ4=; b=dVq1AGnYbYfZi9nDUcJlfjmlMxWtzIWqpZjfIwghvnMj+GBhr4eR3lY+2XOIgUZuSY s9oKh8zK5fAAbwWmQTO9jr98nd3EpTQjOImdUgFC9UjBn0zP39qvbNwwN8B9vH2+z6if qw6yDUQTMkb3bqKJzowWA5qramcwNzUYUR2R0clYnFCkZoSLRKKhzA8c94ywgiwX7iTs mJWQ7v3TUpzLnjHiJHQyUIf7UNeYqacQQZswFNTFDorxEWkpkjCcZoLnFZ/XfzBG4Ca+ +KObnsE0V1rdUbYHKBtdhWSQksOETiOOUfsputI3fPxdR4r6oL84uhHMrhXA1qbGS4z4 +lew== X-Gm-Message-State: AOAM531dUZTuXuXQuW9wQLBopktn/Ig8KI13BG80Fzq4jmsduVexejYG YIOJ2gTke7pAXdigD6Lhheh6Y4PC59nxDg== X-Google-Smtp-Source: ABdhPJyZB2Tgb/+TTTnfet5cfi8rQoqGWV0gsevvM16DhCDRK4ZmV1AyD11PnPUdRU2zUbISVHw1jQ== X-Received: by 2002:a37:886:: with SMTP id 128mr1717690qki.430.1616441019915; Mon, 22 Mar 2021 12:23:39 -0700 (PDT) Received: from ?IPv6:2804:18:844:62ae:d820:43e4:85c0:4786? ([2804:18:844:62ae:d820:43e4:85c0:4786]) by smtp.gmail.com with ESMTPSA id d84sm11477262qke.53.2021.03.22.12.23.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 22 Mar 2021 12:23:39 -0700 (PDT) Subject: Re: [PATCH] tst: Provide test for select To: Lukasz Majewski Cc: GNU C Library References: <20210314164625.9312-1-lukma@denx.de> From: Adhemerval Zanella Message-ID: <54450734-e163-d14f-e8c9-4c8c1f2c3c0d@linaro.org> Date: Mon, 22 Mar 2021 16:23:35 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: <20210314164625.9312-1-lukma@denx.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Mar 2021 19:23:42 -0000 On 14/03/2021 13:46, Lukasz Majewski wrote: > This change adds new test to assess select()'s timeout related > functionality (the rdfs set provides valid fd - stderr - but during > normal program operation there is no data to be read, so one just > waits for timeout). > > To be more specific - two use cases are checked: > - if select() times out immediately when passed struct timeval has > zero values of tv_usec and tv_sec. > - if select() times out after timeout specified in passed argument LGTM with the nits below. Reviewed-by: Adhemerval Zanella > --- > misc/Makefile | 2 +- > misc/tst-select.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 71 insertions(+), 1 deletion(-) > create mode 100644 misc/tst-select.c > > diff --git a/misc/Makefile b/misc/Makefile > index a8363d4b76..a3545f047e 100644 > --- a/misc/Makefile > +++ b/misc/Makefile > @@ -88,7 +88,7 @@ tests := tst-dirname tst-tsearch tst-fdset tst-mntent tst-hsearch \ > tst-preadvwritev tst-preadvwritev64 tst-makedev tst-empty \ > tst-preadvwritev2 tst-preadvwritev64v2 tst-warn-wide \ > tst-ldbl-warn tst-ldbl-error tst-dbl-efgcvt tst-ldbl-efgcvt \ > - tst-mntent-autofs tst-syscalls tst-mntent-escape > + tst-mntent-autofs tst-syscalls tst-mntent-escape tst-select > > tests-time64 := tst-pselect-time64 > Ok. > diff --git a/misc/tst-select.c b/misc/tst-select.c > new file mode 100644 > index 0000000000..ea776c8880 > --- /dev/null > +++ b/misc/tst-select.c > @@ -0,0 +1,70 @@ > +/* Test for select timeout Missing period. > + Copyright (C) 2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + . */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#define TST_SELECT_TIMEOUT 1 > +#define TST_SELECT_FD_ERR 2 > + > +static int test_select_timeout (bool zero_tmo) Move the function to next line: | static int | test_select_timeout (bool zero_tmo) > +{ > + const int fds = TST_SELECT_FD_ERR; > + int timeout = TST_SELECT_TIMEOUT; > + struct timeval to = { 0, 0 }; > + struct timespec ts; > + fd_set rfds; > + > + FD_ZERO (&rfds); > + FD_SET (fds, &rfds); > + > + if (zero_tmo) > + timeout = 0; > + > + to.tv_sec = timeout; > + ts = xclock_now (CLOCK_REALTIME); > + ts = timespec_add (ts, (struct timespec) { timeout, 0 }); > + > + /* Wait for timeout. */ > + int ret = select (fds + 1, &rfds, NULL, NULL, &to); > + if (ret == -1) > + FAIL_EXIT1 ("select failed: %m\n"); > + > + TEST_TIMESPEC_NOW_OR_AFTER (CLOCK_REALTIME, ts); > + > + return 0; > +} > + Ok. > +static int > +do_test (void) > +{ > + /* Check if select exits immediately. */ > + test_select_timeout (true); > + > + /* Check if select exits after specified timeout. */ > + test_select_timeout (false); > + > + return 0; > +} > + > +#include > Ok.