On Tue, Jun 11, 2024 at 8:05 AM Andrew Dunstan <and...@dunslane.net> wrote: > > > On 2024-06-10 Mo 21:49, Andres Freund wrote: > > Hi, > > On 2024-06-10 16:46:56 -0400, Andrew Dunstan wrote: > > I'm not sure what part of the testing infrastructure you think is > unmaintained. For example, the last release of Test::Simple was all the way > back on April 25. > > IPC::Run is quite buggy and basically just maintained by Noah these days. > > > Yes, that's true. I think the biggest pain point is possibly the recovery > tests. > > Some time ago I did some work on wrapping libpq using the perl FFI module. It > worked pretty well, and would mean we could probably avoid many uses of > IPC::Run, and would probably be substantially more efficient (no fork > required). It wouldn't avoid all uses of IPC::Run, though. > > But my point was mainly that while a new framework might have value, I don't > think we need to run out and immediately rewrite several hundred TAP tests. > Let's pick the major pain points and address those.
FWIW, I felt a lot of pain trying to write recovery TAP tests with IPC::Run's pumping functionality. It was especially painful (as someone who knows even less Perl than the "street fighting Perl" Thomas Munro has described having) before the additional test infrastructure was added in BackgroudPsql.pm last year. As an example of the "worst case", it took me two full work days to go from a repro (with psql sessions on a primary and replica node) of the vacuum hang issue being explored in [1] to a sort-of working TAP test which demonstrated it - and that was with help from several other committers. Granted, this is a complex case. A small part of the issue is that, as Tristan has said elsewhere, there aren't good developer tool integrations that I know about for Perl. I use neovim's LSP support for C and Python (in other projects), and there is a whole ecosystem of tools I can use for both C and Python. I know not everyone likes or needs these, but I find that they help me write and debug code faster. I had offered to take a stab at writing some of the BackgroundPsql test infrastructure in Python. I haven't started exploring that yet or looking at what Jacob has done so far, but I am optimistic that this is an area where it is worth seeing what is available to us outside of IPC::Run. - Melanie [1] https://www.postgresql.org/message-id/CAAKRu_bXH2g_pchG7rN_4fs-_6_kVbbJ97gYRoN0Zdb9P04Wag%40mail.gmail.com