[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