Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:99174 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 10577 invoked from network); 25 May 2017 12:52:14 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 25 May 2017 12:52:14 -0000 Authentication-Results: pb1.pair.com smtp.mail=nikita.ppv@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=nikita.ppv@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.214.44 as permitted sender) X-PHP-List-Original-Sender: nikita.ppv@gmail.com X-Host-Fingerprint: 209.85.214.44 mail-it0-f44.google.com Received: from [209.85.214.44] ([209.85.214.44:38748] helo=mail-it0-f44.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 5E/B7-10292-A73D6295 for ; Thu, 25 May 2017 08:52:13 -0400 Received: by mail-it0-f44.google.com with SMTP id r63so56686914itc.1 for ; Thu, 25 May 2017 05:52:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=OBTQlPs5YCBSZ9ofo9fjDYaxYRR1ydYFm8dVu/nGn/k=; b=QHnNlJctkJ7h1kbRCGDS57XohEyFt8b5Z5aoTvDhNyikI5LAH09DWRSgp464TDQZv+ yrGl7sRDFX4/1IxHTbIvAgnWvA2uwLMVOKsDhpHd/y/R9pC7enDiXemv1c6YNqBtIDNr bau9tazeBbBLeTXlsrv6XUbxI/vieHARBVo3MVu61eKhaCaNCQ3rhsMRopVMqpEyNtSs z9X+BjaFPInwKXDuPc8zDUvdvc0ADMG7wGWFFKkBr7C7/O5Xp6GXLQDmCXJnPNoUzBTO 7Q5ymUcv/P9L6Kv88xHJkdVe0EVjGKeLWSRbh+GQQpHptpZ7+cUYhtN2IUUwl23rai10 dJ1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=OBTQlPs5YCBSZ9ofo9fjDYaxYRR1ydYFm8dVu/nGn/k=; b=qZqzolawb+C/3stQCcSfrPdt5S2Jw4Kst0xJ4x1BKwW3ogTcok90kT5yj5pjMwOy87 4rGHeUDfiBxixHNLv1IXzzFp+21pcgcKIK3xonbG+ByE21n3sI0MutMC8Sk4svhx3Gu5 Y7tapCC9iehzOOt++MmUn8RevfYDDfRE8NF2VpiyCi/Frqzbat6zGiX+huGXa/jx/zgp U3TtAvCqla4u3NYEvQysl6HVGAhwZVVVt8fUNGyLieEeRLvX9K7bJXE1Xsz6n62L9jB9 LwhMcbdvQ8MvJ9Awd5zruxFrvk3s3u2+QC7iOZgAn+EhCxGbFsu1/ifSHY1uwvyiqYHq gP+A== X-Gm-Message-State: AODbwcCeKAqI4ZPSyJ12ashCTBFo3MGmVX+OyGKKtEHPE0y9mcp8sEq1 Ge/z4Of0jbCTzbynP5ua7TeOuM7JfA== X-Received: by 10.36.116.82 with SMTP id o79mr4838494itc.88.1495716727797; Thu, 25 May 2017 05:52:07 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.12.158 with HTTP; Thu, 25 May 2017 05:52:07 -0700 (PDT) In-Reply-To: References: <1495067758.9756.47.camel@schlueters.de> <1495103485.9756.58.camel@schlueters.de> <6F.B1.10292.2B026295@pb1.pair.com> Date: Thu, 25 May 2017 14:52:07 +0200 Message-ID: To: Rasmus Lerdorf Cc: Andrea Faulds , PHP internals Content-Type: multipart/alternative; boundary="94eb2c0878c63ee10f055058b008" Subject: Re: [PHP-DEV] Implement formal process for run-tests.php refactor From: nikita.ppv@gmail.com (Nikita Popov) --94eb2c0878c63ee10f055058b008 Content-Type: text/plain; charset="UTF-8" On Thu, May 25, 2017 at 2:34 PM, Rasmus Lerdorf wrote: > On Thu, May 25, 2017 at 3:09 AM, Andrea Faulds wrote: > > > > It occurred to me a little while ago that if we ran the test suite in > > parallel, but only run one test from a given directory (or extension) at > a > > time, it should probably avoid any such problems, and it would not be > > particularly difficult to implement. > > > > Is that worth a shot, do you think? > > > Yes, definitely. Some of the tests also have side-effects and don't work if > not run in the original order. They shouldn't have such side-effects, of > course, but auditing nearly 15k tests for this is not a fun task. Within > each directory there should only be one execution thread and the tests > should be run in their original order. That still leaves plenty of room for > concurrency, of course. We have 152 separate directories containing .phpt > files. And if we are smart about it, we sort the directories based on the > number of tests in each and start off with the larger ones to make sure we > don't end with a single process still working on a huge directory. The 152 > directories sorted by the number of tests are: > During normal development I usually only run either Zend/ tests, or the tests in the extension I'm modifying (the rest is what CI is for). Parallelizing by directory will speed up our CI builds (which is important, we're often suffering from timeouts), but probably not help much during development. Nikita > [./Zend/tests] => 1613 > [./ext/standard/tests/strings] => 924 > [./ext/standard/tests/array] => 923 > [./ext/standard/tests/file] => 800 > [./ext/spl/tests] => 697 > [./ext/date/tests] => 632 > [./ext/intl/tests] => 474 > [./ext/mysqli/tests] => 396 > [./ext/oci8/tests] => 360 > [./ext/reflection/tests] => 334 > [./ext/gd/tests] => 329 > [./ext/mbstring/tests] => 317 > [./ext/phar/tests] => 300 > [./tests/classes] => 277 > [./ext/standard/tests/general_functions] => 272 > [./ext/session/tests] => 228 > [./ext/standard/tests/math] => 219 > [./ext/dom/tests] => 219 > [./tests/lang] => 216 > [./ext/zlib/tests] => 170 > [./ext/pcre/tests] => 118 > [./ext/pdo_mysql/tests] => 116 > [./ext/simplexml/tests] => 112 > [./ext/openssl/tests] => 112 > [./ext/ldap/tests] => 107 > [./Zend/tests/traits] => 107 > [./ext/curl/tests] => 107 > [./ext/phar/tests/tar] => 102 > [./ext/posix/tests] => 100 > [./ext/standard/tests/serialize] => 99 > [./ext/standard/tests/streams] => 96 > [./ext/filter/tests] => 94 > [./ext/phar/tests/zip] => 91 > [./Zend/tests/generators] => 86 > [./ext/soap/tests/schema] => 85 > [./ext/soap/tests/bugs] => 85 > [./ext/xml/tests] => 85 > [./ext/sockets/tests] => 85 > [./ext/sqlite3/tests] => 82 > [./tests/basic] => 80 > [./ext/iconv/tests] => 77 > [./ext/imap/tests] => 77 > [./ext/soap/tests/soap12] => 73 > [./sapi/cli/tests] => 73 > [./ext/soap/tests/interop/Round2/Base] => 72 > [./ext/ctype/tests] => 70 > [./ext/pgsql/tests] => 70 > [./ext/pdo/tests] => 69 > [./ext/standard/tests/class_object] => 68 > [./tests/output] => 66 > [./ext/soap/tests] => 65 > [./ext/mcrypt/tests] => 64 > [./ext/dba/tests] => 64 > [./ext/gmp/tests] => 63 > [./tests/lang/operators] => 62 > [./ext/json/tests] => 62 > [./ext/standard/tests/dir] => 61 > [./ext/xsl/tests] => 61 > [./ext/zip/tests] => 60 > [./ext/phar/tests/cache_list] => 60 > [./ext/soap/tests/interop/Round4/GroupH] => 58 > [./ext/standard/tests/network] => 58 > [./Zend/tests/type_declarations] => 56 > [./ext/opcache/tests] => 56 > [./Zend/tests/return_types] => 54 > [./ext/hash/tests] => 49 > [./ext/exif/tests] => 49 > [./tests/security] => 48 > [./ext/standard/tests/url] => 45 > [./Zend/tests/try] => 43 > [./ext/tidy/tests] => 39 > [./ext/xmlwriter/tests] => 38 > [./ext/fileinfo/tests] => 36 > [./sapi/phpdbg/tests] => 36 > [./ext/soap/tests/interop/Round4/GroupI] => 35 > [./ext/wddx/tests] => 34 > [./ext/pdo_pgsql/tests] => 34 > [./ext/snmp/tests] => 33 > [./ext/bcmath/tests] => 33 > [./ext/xmlrpc/tests] => 32 > [./ext/ftp/tests] => 32 > [./ext/tokenizer/tests] => 32 > [./ext/calendar/tests] => 32 > [./ext/standard/tests/image] => 31 > [./ext/pdo_sqlite/tests] => 28 > [./ext/standard/tests/mail] => 27 > [./ext/pdo_oci/tests] => 27 > [./ext/enchant/tests] => 25 > [./ext/gettext/tests] => 23 > [./Zend/tests/grammar] => 23 > [./ext/xmlreader/tests] => 22 > [./Zend/tests/assert] => 22 > [./sapi/fpm/tests] => 22 > [./ext/interbase/tests] => 22 > [./ext/soap/tests/interop/Round3/GroupD] => 21 > [./ext/standard/tests/assert] => 20 > [./ext/standard/tests/misc] => 20 > [./ext/standard/tests/filters] => 18 > [./ext/libxml/tests] => 18 > [./ext/pcntl/tests] => 18 > [./ext/readline/tests] => 16 > [./Zend/tests/variadic] => 16 > [./Zend/tests/use_function] => 16 > [./ext/soap/tests/interop/Round2/GroupB] => 15 > [./Zend/tests/varSyntax] => 15 > [./ext/pdo_dblib/tests] => 14 > [./ext/standard/tests/http] => 14 > [./Zend/tests/traits/bugs] => 14 > [./sapi/cgi/tests] => 14 > [./tests/func] => 14 > [./tests/run-test] => 14 > [./ext/pdo_firebird/tests] => 14 > [./ext/odbc/tests] => 14 > [./ext/com_dotnet/tests] => 14 > [./Zend/tests/arg_unpack] => 13 > [./Zend/tests/anon] => 12 > [./ext/bz2/tests] => 12 > [./tests/strings] => 11 > [./Zend/tests/use_const] => 11 > [./ext/standard/tests/password] => 10 > [./ext/sysvshm/tests] => 9 > [./tests/lang/string] => 9 > [./Zend/tests/generators/errors] => 9 > [./Zend/tests/generators/finally] => 8 > [./sapi/tests] => 8 > [./ext/standard/tests/time] => 7 > [./ext/standard/tests] => 7 > [./Zend/tests/multibyte] => 7 > [./ext/sysvmsg/tests] => 6 > [./ext/soap/tests/interop/Round3/GroupE] => 6 > [./ext/soap/tests/interop/Round3/GroupF] => 6 > [./ext/pspell/tests] => 5 > [./ext/intl/uchar/tests] => 4 > [./ext/standard/tests/versioning] => 4 > [./Zend/tests/constants] => 4 > [./ext/standard/tests/file/windows_acls] => 4 > [./ext/standard/tests/random] => 4 > [./ext/standard/tests/file/windows_links] => 4 > [./ext/standard/tests/directory] => 4 > [./ext/standard/tests/crypt] => 3 > [./ext/pdo_odbc/tests] => 3 > [./Zend/tests/bug67436] => 2 > [./ext/recode/tests] => 2 > [./Zend/tests/typehints] => 2 > [./tests/lang/constants] => 2 > [./ext/shmop/tests] => 2 > [./ext/sysvsem/tests] => 2 > [./ext/spl/examples/tests] => 1 > [./ext/phar/tests/bug64931] => 1 > [./ext/gmp] => 1 > [./ext/skeleton/tests] => 1 > [./Zend/tests/ast] => 1 > --94eb2c0878c63ee10f055058b008--