[Xapian-tickets] [Xapian] #767: Make testcases using different backends run in parallel
Xapian
nobody at xapian.org
Wed Aug 1 02:09:26 BST 2018
#767: Make testcases using different backends run in parallel
--------------------+---------------------------
Reporter: gp1308 | Owner: gp1308
Type: task | Status: new
Priority: normal | Milestone:
Component: Other | Version:
Severity: normal | Resolution:
Keywords: | Blocked By:
Blocking: | Operating System: All
--------------------+---------------------------
Comment (by olly):
> Currently `BackendManagerGlass` creates a set of databases in .glass
directory by default. Can we make backend manager to create a separate set
of databases in a directory given as a parameter? .glass takes 5MB of disk
space, is it already a lot of memory? Or this change doesn't fit well?
We could just use separate cache directories for `glass`,
`remotetcp_glass`, etc, but not only does that use more disk space, but we
have to build the same database several times, and there's more disk cache
pressure, both of which work against trying to speed things up.
I think more work would be needed to get valgrind to work properly here.
In `runtest` we tell valgrind not to follow child processes after `fork()`
(and changing that would make things complicated for remote tests).
Probably when valgrind is in use the child process needs to `exec()`
valgrind with a command to run apitest on just the backend of interest
with some option to tell it to report output in TAP format.
Perhaps the simplest first step is to parallelise via the makefile -
automake's parallel testharness understands TAP format test output and as
the name suggests can run tests in parallel.
For output display, I think sending output in TAP format is the best
approach. The child process can just write to the pipe by hooking up its
end of the pipe as fd 1 and then using `cout` - no need to do anything
special at the iostreams level. The parent process will need to handle
displaying test results from multiple children in a sensible way - I think
just showing each completed test and recording the failed ones to
summarise at the end is probably the best approach.
I'm surprised you don't see more gain from parallelism - is one child
running all the tests which involve glass?
--
Ticket URL: <https://trac.xapian.org/ticket/767#comment:6>
Xapian <https://xapian.org/>
Xapian
More information about the Xapian-tickets
mailing list