[Xapian-tickets] [Xapian] #767: Make testcases using different backends run in parallel

Xapian nobody at xapian.org
Tue May 9 02:29:44 BST 2023


#767: Make testcases using different backends run in parallel
------------------------------+-------------------------------------
 Reporter:  Guruprasad Hegde  |             Owner:  Guruprasad Hegde
     Type:  enhancement       |            Status:  new
 Priority:  normal            |         Milestone:
Component:  Test Suite        |           Version:  git master
 Severity:  normal            |        Resolution:
 Keywords:                    |        Blocked By:
 Blocking:                    |  Operating System:  All
------------------------------+-------------------------------------
Comment (by Olly Betts):

 https://github.com/xapian/xapian/pull/210 has the prototype using
 automake's parallel test harness.

 I tried updating that (and merging honey into the list of glass-based
 testsuite backends since we compact the glass DB to give the honey one)
 and the speed up is disappointing (~20% IIRC), I think mostly because the
 glass-based list is most of the work.  I didn't copy the stats off my
 laptop but I'll try to remember to add them next time I turn it on.

 I have come up with a cheap way to schedule though.

 If we annotate testcases (could be automatically derived) with the
 database names they use then we can partition the testcases such that any
 which use the same DB are in the same partition.  Some use more than one,
 and that will kind of span between DBs and pull them into the same
 partition, but many use their own DB or share a DB but without such
 overlaps.

 We order these partitions by decreasing expected time to process (could be
 just by number of testcases as a simple approximation, but we could
 feedback from actual runtime), then each worker subprocess just gets the
 next partition from the list to work through when it needs more to do.
 This simple greedy algorithm should work well as we have a load of small
 partitions which should help even out the end of the run between workers.

 These partitions can take into account testsuite backends, overlap between
 them (e.g. glass and honey) and which testcases run for each.

 If we aren't running in parallel we could even run testcases in the same
 order as currently by having a suitable alternative partition set for
 that.
-- 
Ticket URL: <https://trac.xapian.org/ticket/767#comment:9>
Xapian <https://xapian.org/>
Xapian


More information about the Xapian-tickets mailing list