diff options
author | 2021-11-03 09:40:04 -0400 | |
---|---|---|
committer | 2021-12-07 16:59:40 -0500 | |
commit | 95b278757e4667ef33757394dfe50655ce39705c (patch) | |
tree | 449f3d9fc763206764c377d5d96cac37175ec5e6 | |
parent | d2d8e322f1ea3de8d4d7f13110b52f797f38dc30 (diff) |
Add test for performance testing
This is to ensure benchmarking infra continues working.
Test: go test bp2build tests
Change-Id: I20927652cf427548f6ff58a0c0cb8d3fa5df34d7
-rw-r--r-- | bp2build/performance_test.go | 99 |
1 files changed, 71 insertions, 28 deletions
diff --git a/bp2build/performance_test.go b/bp2build/performance_test.go index 32839522a..c4bbae262 100644 --- a/bp2build/performance_test.go +++ b/bp2build/performance_test.go @@ -29,6 +29,10 @@ import ( "testing" ) +const ( + performance_test_dir = "." +) + func genCustomModule(i int, convert bool) string { var conversionString string if convert { @@ -76,34 +80,83 @@ func genCustomModuleBp(pctConverted float64) string { return strings.Join(bp, "\n\n") } +type testConfig struct { + config android.Config + ctx *android.TestContext + codegenCtx *CodegenContext +} + +func (tc testConfig) parse() []error { + _, errs := tc.ctx.ParseFileList(performance_test_dir, []string{"Android.bp"}) + return errs +} + +func (tc testConfig) resolveDependencies() []error { + _, errs := tc.ctx.ResolveDependencies(tc.config) + return errs +} + +func (tc testConfig) convert() { + generateBazelTargetsForDir(tc.codegenCtx, performance_test_dir) +} + +func setup(builddir string, tcSize float64) testConfig { + config := android.TestConfig(buildDir, nil, genCustomModuleBp(tcSize), nil) + ctx := android.NewTestContext(config) + + registerCustomModuleForBp2buildConversion(ctx) + codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build) + return testConfig{ + config, + ctx, + codegenCtx, + } +} + var pctToConvert = []float64{0.0, 0.01, 0.05, 0.10, 0.25, 0.5, 0.75, 1.0} +// This is not intended to test performance, but to verify performance infra continues to work +func TestConvertManyModulesFull(t *testing.T) { + for _, tcSize := range pctToConvert { + + t.Run(fmt.Sprintf("pctConverted %f", tcSize), func(t *testing.T) { + testConfig := setup(buildDir, tcSize) + + errs := testConfig.parse() + if len(errs) > 0 { + t.Fatalf("Unexpected errors: %s", errs) + } + + errs = testConfig.resolveDependencies() + if len(errs) > 0 { + t.Fatalf("Unexpected errors: %s", errs) + } + + testConfig.convert() + }) + } +} + func BenchmarkManyModulesFull(b *testing.B) { - dir := "." for _, tcSize := range pctToConvert { b.Run(fmt.Sprintf("pctConverted %f", tcSize), func(b *testing.B) { for n := 0; n < b.N; n++ { b.StopTimer() - // setup we don't want to measure - config := android.TestConfig(buildDir, nil, genCustomModuleBp(tcSize), nil) - ctx := android.NewTestContext(config) - - registerCustomModuleForBp2buildConversion(ctx) - codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build) + testConfig := setup(buildDir, tcSize) b.StartTimer() - _, errs := ctx.ParseFileList(dir, []string{"Android.bp"}) + errs := testConfig.parse() if len(errs) > 0 { b.Fatalf("Unexpected errors: %s", errs) } - _, errs = ctx.ResolveDependencies(config) + errs = testConfig.resolveDependencies() if len(errs) > 0 { b.Fatalf("Unexpected errors: %s", errs) } - generateBazelTargetsForDir(codegenCtx, dir) + testConfig.convert() b.StopTimer() } }) @@ -111,63 +164,53 @@ func BenchmarkManyModulesFull(b *testing.B) { } func BenchmarkManyModulesResolveDependencies(b *testing.B) { - dir := "." for _, tcSize := range pctToConvert { b.Run(fmt.Sprintf("pctConverted %f", tcSize), func(b *testing.B) { for n := 0; n < b.N; n++ { b.StopTimer() // setup we don't want to measure - config := android.TestConfig(buildDir, nil, genCustomModuleBp(tcSize), nil) - ctx := android.NewTestContext(config) - - registerCustomModuleForBp2buildConversion(ctx) - codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build) + testConfig := setup(buildDir, tcSize) - _, errs := ctx.ParseFileList(dir, []string{"Android.bp"}) + errs := testConfig.parse() if len(errs) > 0 { b.Fatalf("Unexpected errors: %s", errs) } b.StartTimer() - _, errs = ctx.ResolveDependencies(config) + errs = testConfig.resolveDependencies() b.StopTimer() if len(errs) > 0 { b.Fatalf("Unexpected errors: %s", errs) } - generateBazelTargetsForDir(codegenCtx, dir) + testConfig.convert() } }) } } func BenchmarkManyModulesGenerateBazelTargetsForDir(b *testing.B) { - dir := "." for _, tcSize := range pctToConvert { b.Run(fmt.Sprintf("pctConverted %f", tcSize), func(b *testing.B) { for n := 0; n < b.N; n++ { b.StopTimer() // setup we don't want to measure - config := android.TestConfig(buildDir, nil, genCustomModuleBp(tcSize), nil) - ctx := android.NewTestContext(config) - - registerCustomModuleForBp2buildConversion(ctx) - codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build) + testConfig := setup(buildDir, tcSize) - _, errs := ctx.ParseFileList(dir, []string{"Android.bp"}) + errs := testConfig.parse() if len(errs) > 0 { b.Fatalf("Unexpected errors: %s", errs) } - _, errs = ctx.ResolveDependencies(config) + errs = testConfig.resolveDependencies() if len(errs) > 0 { b.Fatalf("Unexpected errors: %s", errs) } b.StartTimer() - generateBazelTargetsForDir(codegenCtx, dir) + testConfig.convert() b.StopTimer() } }) |