Move sharding functions for reuse
Move shardPaths and shardTests to android.ShardPaths and android.ShardStrings for reuse in other packages. Test: m checkbuild Change-Id: I868802872c73616b80f56cbf11f959c01a8b793a
This commit is contained in:
@@ -319,3 +319,36 @@ func SplitFileExt(name string) (string, string, string) {
|
||||
|
||||
return root, suffix, ext
|
||||
}
|
||||
|
||||
// ShardPaths takes a Paths, and returns a slice of Paths where each one has at most shardSize paths.
|
||||
func ShardPaths(paths Paths, shardSize int) []Paths {
|
||||
if len(paths) == 0 {
|
||||
return nil
|
||||
}
|
||||
ret := make([]Paths, 0, (len(paths)+shardSize-1)/shardSize)
|
||||
for len(paths) > shardSize {
|
||||
ret = append(ret, paths[0:shardSize])
|
||||
paths = paths[shardSize:]
|
||||
}
|
||||
if len(paths) > 0 {
|
||||
ret = append(ret, paths)
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
// ShardStrings takes a slice of strings, and returns a slice of slices of strings where each one has at most shardSize
|
||||
// elements.
|
||||
func ShardStrings(s []string, shardSize int) [][]string {
|
||||
if len(s) == 0 {
|
||||
return nil
|
||||
}
|
||||
ret := make([][]string, 0, (len(s)+shardSize-1)/shardSize)
|
||||
for len(s) > shardSize {
|
||||
ret = append(ret, s[0:shardSize])
|
||||
s = s[shardSize:]
|
||||
}
|
||||
if len(s) > 0 {
|
||||
ret = append(ret, s)
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
Reference in New Issue
Block a user