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.
This commit is contained in:
yyforyongyu
2024-12-04 09:51:10 +08:00
parent c536bc220f
commit 33b07be8c3

View File

@@ -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 // 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 // be run as the current split tranche as well as the index and slice offset of
// the tranche. // the tranche.
@@ -200,12 +224,9 @@ func getTestCaseSplitTranche() ([]*lntest.TestCase, uint, uint) {
maybeShuffleTestCases() maybeShuffleTestCases()
numCases := uint(len(allTestCases)) numCases := uint(len(allTestCases))
testsPerTranche := numCases / numTranches indices := createIndices(numCases, numTranches)
trancheOffset := runTranche * testsPerTranche index := indices[runTranche]
trancheEnd := trancheOffset + testsPerTranche trancheOffset, trancheEnd := index[0], index[1]
if trancheEnd > numCases || runTranche == numTranches-1 {
trancheEnd = numCases
}
return allTestCases[trancheOffset:trancheEnd], threadID, return allTestCases[trancheOffset:trancheEnd], threadID,
trancheOffset trancheOffset