Add python template for mobly tests.
Mobly is a Python-based test framework that specializes in supporting test cases that require multiple devices. There are some Mobly based Android tests, but these tests cannot be added to xTS since they are not using TF. Currently TF provides a 2-device Mobly test runner. This change is a short-term solution to help teams (eg. bluetooth) to add their multi-device Mobly tests to xTS without writing TF configs. For long-term, device infra team and xTS infra team will provide a solution for more complex multi-device tests in xTS and deprecate this TF template. Test: manually check the generated mobly xml config Bug: 272239365 Change-Id: I252cc774094eebbd9264243d30023ace4839c2cd
This commit is contained in:
parent
8972e4d6bb
commit
c3bb83a57b
2 changed files with 54 additions and 9 deletions
|
@ -15,6 +15,8 @@
|
|||
package python
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/google/blueprint/proptools"
|
||||
|
||||
"android/soong/android"
|
||||
|
@ -63,7 +65,22 @@ type TestProperties struct {
|
|||
Java_data []string
|
||||
|
||||
// Test options.
|
||||
Test_options android.CommonTestOptions
|
||||
Test_options TestOptions
|
||||
}
|
||||
|
||||
type TestOptions struct {
|
||||
android.CommonTestOptions
|
||||
|
||||
// Runner for the test. Supports "tradefed" and "mobly" (for multi-device tests). Default is "tradefed".
|
||||
Runner *string
|
||||
|
||||
// Metadata to describe the test configuration.
|
||||
Metadata []Metadata
|
||||
}
|
||||
|
||||
type Metadata struct {
|
||||
Name string
|
||||
Value string
|
||||
}
|
||||
|
||||
type PythonTestModule struct {
|
||||
|
@ -94,14 +111,41 @@ func (p *PythonTestModule) GenerateAndroidBuildActions(ctx android.ModuleContext
|
|||
p.PythonLibraryModule.GenerateAndroidBuildActions(ctx)
|
||||
p.buildBinary(ctx)
|
||||
|
||||
var configs []tradefed.Option
|
||||
for _, metadata := range p.testProperties.Test_options.Metadata {
|
||||
configs = append(configs, tradefed.Option{Name: "config-descriptor:metadata", Key: metadata.Name, Value: metadata.Value})
|
||||
}
|
||||
|
||||
runner := proptools.StringDefault(p.testProperties.Test_options.Runner, "tradefed")
|
||||
if runner == "tradefed" {
|
||||
p.testConfig = tradefed.AutoGenTestConfig(ctx, tradefed.AutoGenTestConfigOptions{
|
||||
TestConfigProp: p.testProperties.Test_config,
|
||||
TestConfigTemplateProp: p.testProperties.Test_config_template,
|
||||
TestSuites: p.binaryProperties.Test_suites,
|
||||
OptionsForAutogenerated: configs,
|
||||
AutoGenConfig: p.binaryProperties.Auto_gen_config,
|
||||
DeviceTemplate: "${PythonBinaryHostTestConfigTemplate}",
|
||||
HostTemplate: "${PythonBinaryHostTestConfigTemplate}",
|
||||
})
|
||||
} else if runner == "mobly" {
|
||||
if p.testProperties.Test_config != nil || p.testProperties.Test_config_template != nil || p.binaryProperties.Auto_gen_config != nil {
|
||||
panic(fmt.Errorf("cannot set test_config, test_config_template or auto_gen_config for mobly test"))
|
||||
}
|
||||
|
||||
for _, testSuite := range p.binaryProperties.Test_suites {
|
||||
if testSuite == "cts" {
|
||||
configs = append(configs, tradefed.Option{Name: "test-suite-tag", Value: "cts"})
|
||||
break
|
||||
}
|
||||
}
|
||||
p.testConfig = tradefed.AutoGenTestConfig(ctx, tradefed.AutoGenTestConfigOptions{
|
||||
OptionsForAutogenerated: configs,
|
||||
DeviceTemplate: "${PythonBinaryHostMoblyTestConfigTemplate}",
|
||||
HostTemplate: "${PythonBinaryHostMoblyTestConfigTemplate}",
|
||||
})
|
||||
} else {
|
||||
panic(fmt.Errorf("unknown python test runner '%s', should be 'tradefed' or 'mobly'", runner))
|
||||
}
|
||||
|
||||
p.installedDest = ctx.InstallFile(installDir(ctx, "nativetest", "nativetest64", ctx.ModuleName()), p.installSource.Base(), p.installSource)
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ func init() {
|
|||
pctx.SourcePathVariable("NativeBenchmarkTestConfigTemplate", "build/make/core/native_benchmark_test_config_template.xml")
|
||||
pctx.SourcePathVariable("NativeHostTestConfigTemplate", "build/make/core/native_host_test_config_template.xml")
|
||||
pctx.SourcePathVariable("NativeTestConfigTemplate", "build/make/core/native_test_config_template.xml")
|
||||
pctx.SourcePathVariable("PythonBinaryHostMoblyTestConfigTemplate", "build/make/core/python_binary_host_mobly_test_config_template.xml")
|
||||
pctx.SourcePathVariable("PythonBinaryHostTestConfigTemplate", "build/make/core/python_binary_host_test_config_template.xml")
|
||||
pctx.SourcePathVariable("RustDeviceTestConfigTemplate", "build/make/core/rust_device_test_config_template.xml")
|
||||
pctx.SourcePathVariable("RustHostTestConfigTemplate", "build/make/core/rust_host_test_config_template.xml")
|
||||
|
|
Loading…
Reference in a new issue