From 33b07be8c37cd2b484b5258e7b594ed4b3c85cd2 Mon Sep 17 00:00:00 2001 From: yyforyongyu Date: Wed, 4 Dec 2024 09:51:10 +0800 Subject: [PATCH] itest: even out num of tests per tranche Previous splitting logic simply put all the remainder in the last tranche, which could make the last tranche run significantly more test cases. We now change it so the remainder is evened out across tranches. --- itest/lnd_test.go | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/itest/lnd_test.go b/itest/lnd_test.go index c1a43b410..07b8554f2 100644 --- a/itest/lnd_test.go +++ b/itest/lnd_test.go @@ -174,6 +174,30 @@ func maybeShuffleTestCases() { }) } +// createIndices divides the number of test cases into pairs of indices that +// specify the start and end of a tranche. +func createIndices(numCases, numTranches uint) [][2]uint { + // Calculate base value and remainder. + base := numCases / numTranches + remainder := numCases % numTranches + + // Generate indices. + indices := make([][2]uint, numTranches) + start := uint(0) + + for i := uint(0); i < numTranches; i++ { + end := start + base + if i < remainder { + // Add one for the remainder. + end++ + } + indices[i] = [2]uint{start, end} + start = end + } + + return indices +} + // getTestCaseSplitTranche returns the sub slice of the test cases that should // be run as the current split tranche as well as the index and slice offset of // the tranche. @@ -200,12 +224,9 @@ func getTestCaseSplitTranche() ([]*lntest.TestCase, uint, uint) { maybeShuffleTestCases() numCases := uint(len(allTestCases)) - testsPerTranche := numCases / numTranches - trancheOffset := runTranche * testsPerTranche - trancheEnd := trancheOffset + testsPerTranche - if trancheEnd > numCases || runTranche == numTranches-1 { - trancheEnd = numCases - } + indices := createIndices(numCases, numTranches) + index := indices[runTranche] + trancheOffset, trancheEnd := index[0], index[1] return allTestCases[trancheOffset:trancheEnd], threadID, trancheOffset