From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-out.m-online.net (mail-out.m-online.net [212.18.0.9]) by sourceware.org (Postfix) with ESMTPS id 46DC4385700D for ; Mon, 22 Mar 2021 11:32:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 46DC4385700D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=lukma@denx.de Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4F3smJ5RmJz1qtf4; Mon, 22 Mar 2021 12:32:16 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 4F3smJ3l3bz1qvB1; Mon, 22 Mar 2021 12:32:16 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id caYpRCgndqml; Mon, 22 Mar 2021 12:32:14 +0100 (CET) X-Auth-Info: jYZ0bta7z7finJ8oRJUIsCh3hFRzZd9AtbzL1hN04fs= Received: from jawa (85-222-111-42.dynamic.chello.pl [85.222.111.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Mon, 22 Mar 2021 12:32:13 +0100 (CET) Date: Mon, 22 Mar 2021 12:32:13 +0100 From: Lukasz Majewski To: Joseph Myers , Adhemerval Zanella , Florian Weimer , DJ Delorie Cc: Paul Eggert , Alistair Francis , Arnd Bergmann , Alistair Francis , GNU C Library , Carlos O'Donell , Florian Weimer , Zack Weinberg Subject: Re: [PATCH] tst: Provide test for select Message-ID: <20210322123213.58775fbd@jawa> In-Reply-To: <20210314164625.9312-1-lukma@denx.de> References: <20210314164625.9312-1-lukma@denx.de> Organization: denx.de X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/7PSRCKHY4faiy4w790+tMzs"; protocol="application/pgp-signature" X-Spam-Status: No, score=-14.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_SHORT, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, 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 11:32:21 -0000 --Sig_/7PSRCKHY4faiy4w790+tMzs Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Dear Community, > 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). >=20 > 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 Do you have any comments regarding this patch? > --- > misc/Makefile | 2 +- > misc/tst-select.c | 70 > +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 > insertions(+), 1 deletion(-) create mode 100644 misc/tst-select.c >=20 > diff --git a/misc/Makefile b/misc/Makefile > index a8363d4b76..a3545f047e 100644 > --- a/misc/Makefile > +++ b/misc/Makefile > @@ -88,7 +88,7 @@ tests :=3D 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 > =20 > tests-time64 :=3D tst-pselect-time64 > =20 > 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 > + 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) > +{ > + const int fds =3D TST_SELECT_FD_ERR; > + int timeout =3D TST_SELECT_TIMEOUT; > + struct timeval to =3D { 0, 0 }; > + struct timespec ts; > + fd_set rfds; > + > + FD_ZERO (&rfds); > + FD_SET (fds, &rfds); > + > + if (zero_tmo) > + timeout =3D 0; > + > + to.tv_sec =3D timeout; > + ts =3D xclock_now (CLOCK_REALTIME); > + ts =3D timespec_add (ts, (struct timespec) { timeout, 0 }); > + > + /* Wait for timeout. */ > + int ret =3D select (fds + 1, &rfds, NULL, NULL, &to); > + if (ret =3D=3D -1) > + FAIL_EXIT1 ("select failed: %m\n"); > + > + TEST_TIMESPEC_NOW_OR_AFTER (CLOCK_REALTIME, ts); > + > + return 0; > +} > + > +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 Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de --Sig_/7PSRCKHY4faiy4w790+tMzs Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEgAyFJ+N6uu6+XupJAR8vZIA0zr0FAmBYgD0ACgkQAR8vZIA0 zr3loQf/aFO/YuiJ1OOez5m5W3/hEzKwj0ZfOJ/JDQuyzXrQfXB6F3FfLNfvFAmt /WzHR8YSGQ2IUTYRZXwjlptO8aGig7wzzBiP+FbEbg65ui8K6U8WvUNkgZaBmHzO wn2tWQjLeuA945t5cakZGO/0FzYOEJF5p1bXuK4UYE3qDYLMs0bDyNRCFovdr+wC Vns0+6QFMSUwiue0eo7oYERcLpbo187YyAbLbbzshTX89lTj27GHAOHElitS0IlJ cFk7t3fNLEVJdoD+suBbjISho6rN4S2J7erSzZUboHkzqG+9A0LXDqFWBNRDJwuy 9lMJtGTwrHZTyBcrE4eqknrp1M+JIQ== =bBGS -----END PGP SIGNATURE----- --Sig_/7PSRCKHY4faiy4w790+tMzs--