diff options
author | 2019-09-23 14:33:09 -0700 | |
---|---|---|
committer | 2019-09-29 23:26:37 -0700 | |
commit | 0a2f719bcaad397f27bcf52cd6604df6b5cec03b (patch) | |
tree | 9800973e04508e6440026f8e56fd876f7fc33807 /java | |
parent | 852116a061d8a339d0bca72744941537bcdba7ca (diff) |
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
Diffstat (limited to 'java')
-rw-r--r-- | java/aapt2.go | 2 | ||||
-rw-r--r-- | java/java.go | 14 | ||||
-rw-r--r-- | java/robolectric.go | 23 | ||||
-rw-r--r-- | java/robolectric_test.go | 88 |
4 files changed, 5 insertions, 122 deletions
diff --git a/java/aapt2.go b/java/aapt2.go index f0eb99cee..cfe0deab1 100644 --- a/java/aapt2.go +++ b/java/aapt2.go @@ -63,7 +63,7 @@ var aapt2CompileRule = pctx.AndroidStaticRule("aapt2Compile", func aapt2Compile(ctx android.ModuleContext, dir android.Path, paths android.Paths, flags []string) android.WritablePaths { - shards := shardPaths(paths, AAPT2_SHARD_SIZE) + shards := android.ShardPaths(paths, AAPT2_SHARD_SIZE) ret := make(android.WritablePaths, 0, len(paths)) diff --git a/java/java.go b/java/java.go index ce72c2760..f7b0f53ba 100644 --- a/java/java.go +++ b/java/java.go @@ -580,18 +580,6 @@ func hasSrcExt(srcs []string, ext string) bool { return false } -func shardPaths(paths android.Paths, shardSize int) []android.Paths { - ret := make([]android.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 -} - func (j *Module) hasSrcExt(ext string) bool { return hasSrcExt(j.properties.Srcs, ext) } @@ -1156,7 +1144,7 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { shardSize := int(*(j.properties.Javac_shard_size)) var shardSrcs []android.Paths if len(uniqueSrcFiles) > 0 { - shardSrcs = shardPaths(uniqueSrcFiles, shardSize) + shardSrcs = android.ShardPaths(uniqueSrcFiles, shardSize) for idx, shardSrc := range shardSrcs { classes := j.compileJavaClasses(ctx, jarName, idx, shardSrc, nil, flags, extraJarDeps) diff --git a/java/robolectric.go b/java/robolectric.go index dbf54c9b3..b7646eb45 100644 --- a/java/robolectric.go +++ b/java/robolectric.go @@ -123,25 +123,6 @@ func (r *robolectricTest) GenerateAndroidBuildActions(ctx android.ModuleContext) } } -func shardTests(paths []string, shards int) [][]string { - if shards > len(paths) { - shards = len(paths) - } - if shards == 0 { - return nil - } - ret := make([][]string, 0, shards) - shardSize := (len(paths) + shards - 1) / shards - for len(paths) > shardSize { - ret = append(ret, paths[0:shardSize]) - paths = paths[shardSize:] - } - if len(paths) > 0 { - ret = append(ret, paths) - } - return ret -} - func generateRoboTestConfig(ctx android.ModuleContext, outputFile android.WritablePath, instrumentedApp *AndroidApp) { manifest := instrumentedApp.mergedManifestFile resourceApk := instrumentedApp.outputFile @@ -183,7 +164,9 @@ func (r *robolectricTest) AndroidMkEntries() android.AndroidMkEntries { entries.ExtraFooters = []android.AndroidMkExtraFootersFunc{ func(w io.Writer, name, prefix, moduleDir string, entries *android.AndroidMkEntries) { if s := r.robolectricProperties.Test_options.Shards; s != nil && *s > 1 { - shards := shardTests(r.tests, int(*s)) + numShards := int(*s) + shardSize := (len(r.tests) + numShards - 1) / numShards + shards := android.ShardStrings(r.tests, shardSize) for i, shard := range shards { r.writeTestRunner(w, name, "Run"+name+strconv.Itoa(i), shard) } diff --git a/java/robolectric_test.go b/java/robolectric_test.go deleted file mode 100644 index e89c6e74c..000000000 --- a/java/robolectric_test.go +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2019 Google Inc. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package java - -import ( - "reflect" - "testing" -) - -func Test_shardTests(t *testing.T) { - type args struct { - paths []string - shards int - } - tests := []struct { - name string - args args - want [][]string - }{ - { - name: "empty", - args: args{ - paths: nil, - shards: 1, - }, - want: [][]string(nil), - }, - { - name: "too many shards", - args: args{ - paths: []string{"a", "b"}, - shards: 3, - }, - want: [][]string{{"a"}, {"b"}}, - }, - { - name: "single shard", - args: args{ - paths: []string{"a", "b"}, - shards: 1, - }, - want: [][]string{{"a", "b"}}, - }, - { - name: "shard per input", - args: args{ - paths: []string{"a", "b", "c"}, - shards: 3, - }, - want: [][]string{{"a"}, {"b"}, {"c"}}, - }, - { - name: "balanced shards", - args: args{ - paths: []string{"a", "b", "c", "d"}, - shards: 2, - }, - want: [][]string{{"a", "b"}, {"c", "d"}}, - }, - { - name: "unbalanced shards", - args: args{ - paths: []string{"a", "b", "c"}, - shards: 2, - }, - want: [][]string{{"a", "b"}, {"c"}}, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := shardTests(tt.args.paths, tt.args.shards); !reflect.DeepEqual(got, tt.want) { - t.Errorf("shardTests() = %v, want %v", got, tt.want) - } - }) - } -} |