Merge "Add test_mainline_modules to the auto-gen test config(AndroidJUnitTest only)."

This commit is contained in:
Treehugger Robot 2020-05-18 01:50:49 +00:00 committed by Gerrit Code Review
commit 1d9e2364ed
3 changed files with 23 additions and 6 deletions

View File

@ -1001,6 +1001,7 @@ func (a *AndroidTest) InstallInTestcases() bool {
} }
func (a *AndroidTest) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (a *AndroidTest) GenerateAndroidBuildActions(ctx android.ModuleContext) {
var configs []tradefed.Config
if a.appTestProperties.Instrumentation_target_package != nil { if a.appTestProperties.Instrumentation_target_package != nil {
a.additionalAaptFlags = append(a.additionalAaptFlags, a.additionalAaptFlags = append(a.additionalAaptFlags,
"--rename-instrumentation-target-package "+*a.appTestProperties.Instrumentation_target_package) "--rename-instrumentation-target-package "+*a.appTestProperties.Instrumentation_target_package)
@ -1013,8 +1014,12 @@ func (a *AndroidTest) GenerateAndroidBuildActions(ctx android.ModuleContext) {
} }
a.generateAndroidBuildActions(ctx) a.generateAndroidBuildActions(ctx)
for _, module := range a.testProperties.Test_mainline_modules {
configs = append(configs, tradefed.Option{Name: "config-descriptor:metadata", Key: "mainline-param", Value: module})
}
testConfig := tradefed.AutoGenInstrumentationTestConfig(ctx, a.testProperties.Test_config, testConfig := tradefed.AutoGenInstrumentationTestConfig(ctx, a.testProperties.Test_config,
a.testProperties.Test_config_template, a.manifestPath, a.testProperties.Test_suites, a.testProperties.Auto_gen_config) a.testProperties.Test_config_template, a.manifestPath, a.testProperties.Test_suites, a.testProperties.Auto_gen_config, configs)
a.testConfig = a.FixTestConfig(ctx, testConfig) a.testConfig = a.FixTestConfig(ctx, testConfig)
a.data = android.PathsForModuleSrc(ctx, a.testProperties.Data) a.data = android.PathsForModuleSrc(ctx, a.testProperties.Data)
} }

View File

@ -2047,6 +2047,10 @@ type testProperties struct {
// doesn't exist next to the Android.bp, this attribute doesn't need to be set to true // doesn't exist next to the Android.bp, this attribute doesn't need to be set to true
// explicitly. // explicitly.
Auto_gen_config *bool Auto_gen_config *bool
// Add parameterized mainline modules to auto generated test config. The options will be
// handled by TradeFed to do downloading and installing the specified modules on the device.
Test_mainline_modules []string
} }
type testHelperLibraryProperties struct { type testHelperLibraryProperties struct {

View File

@ -219,31 +219,39 @@ func AutoGenRustTestConfig(ctx android.ModuleContext, name string, testConfigPro
} }
var autogenInstrumentationTest = pctx.StaticRule("autogenInstrumentationTest", blueprint.RuleParams{ var autogenInstrumentationTest = pctx.StaticRule("autogenInstrumentationTest", blueprint.RuleParams{
Command: "${AutoGenTestConfigScript} $out $in ${EmptyTestConfig} $template", Command: "${AutoGenTestConfigScript} $out $in ${EmptyTestConfig} $template ${extraConfigs}",
CommandDeps: []string{ CommandDeps: []string{
"${AutoGenTestConfigScript}", "${AutoGenTestConfigScript}",
"${EmptyTestConfig}", "${EmptyTestConfig}",
"$template", "$template",
}, },
}, "name", "template") }, "name", "template", "extraConfigs")
func AutoGenInstrumentationTestConfig(ctx android.ModuleContext, testConfigProp *string, func AutoGenInstrumentationTestConfig(ctx android.ModuleContext, testConfigProp *string,
testConfigTemplateProp *string, manifest android.Path, testSuites []string, autoGenConfig *bool) android.Path { testConfigTemplateProp *string, manifest android.Path, testSuites []string, autoGenConfig *bool, configs []Config) android.Path {
path, autogenPath := testConfigPath(ctx, testConfigProp, testSuites, autoGenConfig, testConfigTemplateProp) path, autogenPath := testConfigPath(ctx, testConfigProp, testSuites, autoGenConfig, testConfigTemplateProp)
var configStrings []string
if autogenPath != nil { if autogenPath != nil {
template := "${InstrumentationTestConfigTemplate}" template := "${InstrumentationTestConfigTemplate}"
moduleTemplate := getTestConfigTemplate(ctx, testConfigTemplateProp) moduleTemplate := getTestConfigTemplate(ctx, testConfigTemplateProp)
if moduleTemplate.Valid() { if moduleTemplate.Valid() {
template = moduleTemplate.String() template = moduleTemplate.String()
} }
for _, config := range configs {
configStrings = append(configStrings, config.Config())
}
extraConfigs := strings.Join(configStrings, fmt.Sprintf("\\n%s", test_xml_indent))
extraConfigs = fmt.Sprintf("--extra-configs '%s'", extraConfigs)
ctx.Build(pctx, android.BuildParams{ ctx.Build(pctx, android.BuildParams{
Rule: autogenInstrumentationTest, Rule: autogenInstrumentationTest,
Description: "test config", Description: "test config",
Input: manifest, Input: manifest,
Output: autogenPath, Output: autogenPath,
Args: map[string]string{ Args: map[string]string{
"name": ctx.ModuleName(), "name": ctx.ModuleName(),
"template": template, "template": template,
"extraConfigs": extraConfigs,
}, },
}) })
return autogenPath return autogenPath