Merge "Remove VNDK information from Rust, etc, and sysprop tests" into main

This commit is contained in:
Kiyoung Kim 2024-04-02 01:14:40 +00:00 committed by Gerrit Code Review
commit 683d7316cd
6 changed files with 32 additions and 223 deletions

View file

@ -11,7 +11,7 @@ import (
func TestRustAconfigLibrary(t *testing.T) {
result := android.GroupFixturePreparers(
PrepareForTestWithAconfigBuildComponents,
rust.PrepareForTestWithRustIncludeVndk,
rust.PrepareForIntegrationTestWithRust,
android.PrepareForTestWithArchMutator,
android.PrepareForTestWithDefaults,
android.PrepareForTestWithPrebuilts,
@ -100,7 +100,7 @@ func testRustCodegenModeHelper(t *testing.T, bpMode string, ruleMode string) {
t.Helper()
result := android.GroupFixturePreparers(
PrepareForTestWithAconfigBuildComponents,
rust.PrepareForTestWithRustIncludeVndk).
rust.PrepareForIntegrationTestWithRust).
ExtendWithErrorHandler(android.FixtureExpectsNoErrors).
RunTestWithBp(t, fmt.Sprintf(`
rust_library {
@ -162,7 +162,7 @@ func testIncorrectRustCodegenModeHelper(t *testing.T, bpMode string, err string)
t.Helper()
android.GroupFixturePreparers(
PrepareForTestWithAconfigBuildComponents,
rust.PrepareForTestWithRustIncludeVndk).
rust.PrepareForIntegrationTestWithRust).
ExtendWithErrorHandler(android.FixtureExpectsOneErrorPattern(err)).
RunTestWithBp(t, fmt.Sprintf(`
rust_library {

View file

@ -15,7 +15,6 @@
package etc
import (
"fmt"
"os"
"path/filepath"
"testing"
@ -23,7 +22,6 @@ import (
"github.com/google/blueprint/proptools"
"android/soong/android"
"android/soong/snapshot"
)
func TestMain(m *testing.M) {
@ -40,18 +38,6 @@ var prepareForPrebuiltEtcTest = android.GroupFixturePreparers(
}),
)
var prepareForPrebuiltEtcSnapshotTest = android.GroupFixturePreparers(
prepareForPrebuiltEtcTest,
android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) {
snapshot.VendorSnapshotImageSingleton.Init(ctx)
snapshot.RecoverySnapshotImageSingleton.Init(ctx)
}),
android.FixtureModifyConfig(func(config android.Config) {
config.TestProductVariables.DeviceVndkVersion = proptools.StringPtr("current")
config.TestProductVariables.RecoverySnapshotVersion = proptools.StringPtr("current")
}),
)
func TestPrebuiltEtcVariants(t *testing.T) {
result := prepareForPrebuiltEtcTest.RunTestWithBp(t, `
prebuilt_etc {
@ -415,110 +401,3 @@ func TestPrebuiltRFSADirPath(t *testing.T) {
})
}
}
func checkIfSnapshotTaken(t *testing.T, result *android.TestResult, image string, moduleName string) {
checkIfSnapshotExistAsExpected(t, result, image, moduleName, true)
}
func checkIfSnapshotNotTaken(t *testing.T, result *android.TestResult, image string, moduleName string) {
checkIfSnapshotExistAsExpected(t, result, image, moduleName, false)
}
func checkIfSnapshotExistAsExpected(t *testing.T, result *android.TestResult, image string, moduleName string, expectToExist bool) {
snapshotSingleton := result.SingletonForTests(image + "-snapshot")
archType := "arm64"
archVariant := "armv8-a"
archDir := fmt.Sprintf("arch-%s", archType)
snapshotDir := fmt.Sprintf("%s-snapshot", image)
snapshotVariantPath := filepath.Join(snapshotDir, archType)
outputDir := filepath.Join(snapshotVariantPath, archDir, "etc")
imageVariant := ""
if image == "recovery" {
imageVariant = "recovery_"
}
mod := result.ModuleForTests(moduleName, fmt.Sprintf("android_%s%s_%s", imageVariant, archType, archVariant))
outputFiles := mod.OutputFiles(t, "")
if len(outputFiles) != 1 {
t.Errorf("%q must have single output\n", moduleName)
return
}
snapshotPath := filepath.Join(outputDir, moduleName)
if expectToExist {
out := snapshotSingleton.Output(snapshotPath)
if out.Input.String() != outputFiles[0].String() {
t.Errorf("The input of snapshot %q must be %q, but %q", "prebuilt_vendor", out.Input.String(), outputFiles[0])
}
snapshotJsonPath := snapshotPath + ".json"
if snapshotSingleton.MaybeOutput(snapshotJsonPath).Rule == nil {
t.Errorf("%q expected but not found", snapshotJsonPath)
}
} else {
out := snapshotSingleton.MaybeOutput(snapshotPath)
if out.Rule != nil {
t.Errorf("There must be no rule for module %q output file %q", moduleName, outputFiles[0])
}
}
}
func TestPrebuiltTakeSnapshot(t *testing.T) {
var testBp = `
prebuilt_etc {
name: "prebuilt_vendor",
src: "foo.conf",
vendor: true,
}
prebuilt_etc {
name: "prebuilt_vendor_indirect",
src: "foo.conf",
vendor: true,
}
prebuilt_etc {
name: "prebuilt_recovery",
src: "bar.conf",
recovery: true,
}
prebuilt_etc {
name: "prebuilt_recovery_indirect",
src: "bar.conf",
recovery: true,
}
`
t.Run("prebuilt: vendor and recovery snapshot", func(t *testing.T) {
result := prepareForPrebuiltEtcSnapshotTest.RunTestWithBp(t, testBp)
checkIfSnapshotTaken(t, result, "vendor", "prebuilt_vendor")
checkIfSnapshotTaken(t, result, "vendor", "prebuilt_vendor_indirect")
checkIfSnapshotTaken(t, result, "recovery", "prebuilt_recovery")
checkIfSnapshotTaken(t, result, "recovery", "prebuilt_recovery_indirect")
})
t.Run("prebuilt: directed snapshot", func(t *testing.T) {
prepareForPrebuiltEtcDirectedSnapshotTest := android.GroupFixturePreparers(
prepareForPrebuiltEtcSnapshotTest,
android.FixtureModifyConfig(func(config android.Config) {
config.TestProductVariables.DirectedVendorSnapshot = true
config.TestProductVariables.VendorSnapshotModules = make(map[string]bool)
config.TestProductVariables.VendorSnapshotModules["prebuilt_vendor"] = true
config.TestProductVariables.DirectedRecoverySnapshot = true
config.TestProductVariables.RecoverySnapshotModules = make(map[string]bool)
config.TestProductVariables.RecoverySnapshotModules["prebuilt_recovery"] = true
}),
)
result := prepareForPrebuiltEtcDirectedSnapshotTest.RunTestWithBp(t, testBp)
checkIfSnapshotTaken(t, result, "vendor", "prebuilt_vendor")
checkIfSnapshotNotTaken(t, result, "vendor", "prebuilt_vendor_indirect")
checkIfSnapshotTaken(t, result, "recovery", "prebuilt_recovery")
checkIfSnapshotNotTaken(t, result, "recovery", "prebuilt_recovery_indirect")
})
}

View file

@ -24,7 +24,7 @@ import (
// Test that cc modules can link against vendor_available rust_ffi_static libraries.
func TestVendorLinkage(t *testing.T) {
ctx := testRustVndk(t, `
ctx := testRust(t, `
cc_binary {
name: "fizz_vendor",
static_libs: ["libfoo_vendor"],
@ -38,7 +38,7 @@ func TestVendorLinkage(t *testing.T) {
}
`)
vendorBinary := ctx.ModuleForTests("fizz_vendor", "android_vendor.29_arm64_armv8-a").Module().(*cc.Module)
vendorBinary := ctx.ModuleForTests("fizz_vendor", "android_vendor_arm64_armv8-a").Module().(*cc.Module)
if !android.InList("libfoo_vendor.vendor", vendorBinary.Properties.AndroidMkStaticLibs) {
t.Errorf("vendorBinary should have a dependency on libfoo_vendor: %#v", vendorBinary.Properties.AndroidMkStaticLibs)
@ -46,8 +46,8 @@ func TestVendorLinkage(t *testing.T) {
}
// Test that variants which use the vndk emit the appropriate cfg flag.
func TestImageVndkCfgFlag(t *testing.T) {
ctx := testRustVndk(t, `
func TestImageCfgFlag(t *testing.T) {
ctx := testRust(t, `
rust_ffi_static {
name: "libfoo",
crate_name: "foo",
@ -57,7 +57,7 @@ func TestImageVndkCfgFlag(t *testing.T) {
}
`)
vendor := ctx.ModuleForTests("libfoo", "android_vendor.29_arm64_armv8-a_static").Rule("rustc")
vendor := ctx.ModuleForTests("libfoo", "android_vendor_arm64_armv8-a_static").Rule("rustc")
if !strings.Contains(vendor.Args["rustcFlags"], "--cfg 'android_vndk'") {
t.Errorf("missing \"--cfg 'android_vndk'\" for libfoo vendor variant, rustcFlags: %#v", vendor.Args["rustcFlags"])
@ -69,7 +69,7 @@ func TestImageVndkCfgFlag(t *testing.T) {
t.Errorf("unexpected \"--cfg 'android_product'\" for libfoo vendor variant, rustcFlags: %#v", vendor.Args["rustcFlags"])
}
product := ctx.ModuleForTests("libfoo", "android_product.29_arm64_armv8-a_static").Rule("rustc")
product := ctx.ModuleForTests("libfoo", "android_product_arm64_armv8-a_static").Rule("rustc")
if !strings.Contains(product.Args["rustcFlags"], "--cfg 'android_vndk'") {
t.Errorf("missing \"--cfg 'android_vndk'\" for libfoo product variant, rustcFlags: %#v", product.Args["rustcFlags"])
}
@ -95,7 +95,7 @@ func TestImageVndkCfgFlag(t *testing.T) {
// Test that cc modules can link against vendor_ramdisk_available rust_ffi_static libraries.
func TestVendorRamdiskLinkage(t *testing.T) {
ctx := testRustVndk(t, `
ctx := testRust(t, `
cc_library_static {
name: "libcc_vendor_ramdisk",
static_libs: ["libfoo_vendor_ramdisk"],
@ -119,7 +119,7 @@ func TestVendorRamdiskLinkage(t *testing.T) {
// Test that prebuilt libraries cannot be made vendor available.
func TestForbiddenVendorLinkage(t *testing.T) {
testRustVndkError(t, "Rust prebuilt modules not supported for non-system images.", `
testRustError(t, "Rust prebuilt modules not supported for non-system images.", `
rust_prebuilt_library {
name: "librust_prebuilt",
crate_name: "rust_prebuilt",

View file

@ -37,11 +37,7 @@ var prepareForRustTest = android.GroupFixturePreparers(
genrule.PrepareForTestWithGenRuleBuildComponents,
PrepareForTestWithRustIncludeVndk,
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
variables.DeviceVndkVersion = StringPtr("current")
variables.Platform_vndk_version = StringPtr("29")
}),
PrepareForIntegrationTestWithRust,
)
var rustMockedFiles = android.MockFS{
@ -73,60 +69,21 @@ func testRust(t *testing.T, bp string) *android.TestContext {
return result.TestContext
}
func testRustVndk(t *testing.T, bp string) *android.TestContext {
return testRustVndkFs(t, bp, rustMockedFiles)
}
const (
sharedVendorVariant = "android_vendor.29_arm64_armv8-a_shared"
rlibVendorVariant = "android_vendor.29_arm64_armv8-a_rlib_rlib-std"
rlibDylibStdVendorVariant = "android_vendor.29_arm64_armv8-a_rlib_rlib-std"
dylibVendorVariant = "android_vendor.29_arm64_armv8-a_dylib"
sharedVendorVariant = "android_vendor_arm64_armv8-a_shared"
rlibVendorVariant = "android_vendor_arm64_armv8-a_rlib_rlib-std"
rlibDylibStdVendorVariant = "android_vendor_arm64_armv8-a_rlib_rlib-std"
dylibVendorVariant = "android_vendor_arm64_armv8-a_dylib"
sharedRecoveryVariant = "android_recovery_arm64_armv8-a_shared"
rlibRecoveryVariant = "android_recovery_arm64_armv8-a_rlib_dylib-std"
rlibRlibStdRecoveryVariant = "android_recovery_arm64_armv8-a_rlib_rlib-std"
dylibRecoveryVariant = "android_recovery_arm64_armv8-a_dylib"
binaryCoreVariant = "android_arm64_armv8-a"
binaryVendorVariant = "android_vendor.29_arm64_armv8-a"
binaryProductVariant = "android_product.29_arm64_armv8-a"
binaryVendorVariant = "android_vendor_arm64_armv8-a"
binaryProductVariant = "android_product_arm64_armv8-a"
binaryRecoveryVariant = "android_recovery_arm64_armv8-a"
)
func testRustVndkFs(t *testing.T, bp string, fs android.MockFS) *android.TestContext {
return testRustVndkFsVersions(t, bp, fs, "current", "current", "29")
}
func testRustVndkFsVersions(t *testing.T, bp string, fs android.MockFS, device_version, product_version, vndk_version string) *android.TestContext {
skipTestIfOsNotSupported(t)
result := android.GroupFixturePreparers(
prepareForRustTest,
fs.AddToFixture(),
android.FixtureModifyProductVariables(
func(variables android.FixtureProductVariables) {
variables.DeviceVndkVersion = StringPtr(device_version)
variables.Platform_vndk_version = StringPtr(vndk_version)
},
),
).RunTestWithBp(t, bp)
return result.TestContext
}
func testRustRecoveryFsVersions(t *testing.T, bp string, fs android.MockFS, device_version, vndk_version, recovery_version string) *android.TestContext {
skipTestIfOsNotSupported(t)
result := android.GroupFixturePreparers(
prepareForRustTest,
fs.AddToFixture(),
android.FixtureModifyProductVariables(
func(variables android.FixtureProductVariables) {
variables.DeviceVndkVersion = StringPtr(device_version)
variables.RecoverySnapshotVersion = StringPtr(recovery_version)
variables.Platform_vndk_version = StringPtr(vndk_version)
},
),
).RunTestWithBp(t, bp)
return result.TestContext
}
// testRustCov returns a TestContext in which a basic environment has been
// setup. This environment explicitly enables coverage.
func testRustCov(t *testing.T, bp string) *android.TestContext {
@ -158,27 +115,6 @@ func testRustError(t *testing.T, pattern string, bp string) {
RunTestWithBp(t, bp)
}
// testRustVndkError is similar to testRustError, but can be used to test VNDK-related errors.
func testRustVndkError(t *testing.T, pattern string, bp string) {
testRustVndkFsError(t, pattern, bp, rustMockedFiles)
}
func testRustVndkFsError(t *testing.T, pattern string, bp string, fs android.MockFS) {
skipTestIfOsNotSupported(t)
android.GroupFixturePreparers(
prepareForRustTest,
fs.AddToFixture(),
android.FixtureModifyProductVariables(
func(variables android.FixtureProductVariables) {
variables.DeviceVndkVersion = StringPtr("current")
variables.Platform_vndk_version = StringPtr("VER")
},
),
).
ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(pattern)).
RunTestWithBp(t, bp)
}
// testRustCtx is used to build a particular test environment. Unless your
// tests requires a specific setup, prefer the wrapping functions: testRust,
// testRustCov or testRustError.

View file

@ -43,10 +43,6 @@ var PrepareForTestWithRustDefaultModules = android.GroupFixturePreparers(
// Preparer that will allow use of all rust modules fully.
var PrepareForIntegrationTestWithRust = android.GroupFixturePreparers(
PrepareForTestWithRustDefaultModules,
)
var PrepareForTestWithRustIncludeVndk = android.GroupFixturePreparers(
PrepareForIntegrationTestWithRust,
cc.PrepareForIntegrationTestWithCc,
)

View file

@ -134,8 +134,6 @@ func test(t *testing.T, bp string) *android.TestResult {
PrepareForTestWithSyspropBuildComponents,
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
variables.DeviceSystemSdkVersions = []string{"28"}
variables.DeviceVndkVersion = proptools.StringPtr("current")
variables.Platform_vndk_version = proptools.StringPtr("29")
variables.DeviceCurrentApiLevelForVendorModules = proptools.StringPtr("28")
}),
java.FixtureWithPrebuiltApis(map[string][]string{
@ -258,10 +256,10 @@ func TestSyspropLibrary(t *testing.T) {
// Check for generated cc_library
for _, variant := range []string{
"android_vendor.29_arm_armv7-a-neon_shared",
"android_vendor.29_arm_armv7-a-neon_static",
"android_vendor.29_arm64_armv8-a_shared",
"android_vendor.29_arm64_armv8-a_static",
"android_vendor_arm_armv7-a-neon_shared",
"android_vendor_arm_armv7-a-neon_static",
"android_vendor_arm64_armv8-a_shared",
"android_vendor_arm64_armv8-a_static",
} {
result.ModuleForTests("libsysprop-platform", variant)
result.ModuleForTests("libsysprop-vendor", variant)
@ -270,10 +268,10 @@ func TestSyspropLibrary(t *testing.T) {
// product variant of vendor-owned sysprop_library
for _, variant := range []string{
"android_product.29_arm_armv7-a-neon_shared",
"android_product.29_arm_armv7-a-neon_static",
"android_product.29_arm64_armv8-a_shared",
"android_product.29_arm64_armv8-a_static",
"android_product_arm_armv7-a-neon_shared",
"android_product_arm_armv7-a-neon_static",
"android_product_arm64_armv8-a_shared",
"android_product_arm64_armv8-a_static",
} {
result.ModuleForTests("libsysprop-vendor-on-product", variant)
}
@ -296,16 +294,16 @@ func TestSyspropLibrary(t *testing.T) {
// Check for exported includes
coreVariant := "android_arm64_armv8-a_static"
vendorVariant := "android_vendor.29_arm64_armv8-a_static"
productVariant := "android_product.29_arm64_armv8-a_static"
vendorVariant := "android_vendor_arm64_armv8-a_static"
productVariant := "android_product_arm64_armv8-a_static"
platformInternalPath := "libsysprop-platform/android_arm64_armv8-a_static/gen/sysprop/include"
platformPublicVendorPath := "libsysprop-platform/android_vendor.29_arm64_armv8-a_static/gen/sysprop/public/include"
platformPublicVendorPath := "libsysprop-platform/android_vendor_arm64_armv8-a_static/gen/sysprop/public/include"
platformOnProductPath := "libsysprop-platform-on-product/android_product.29_arm64_armv8-a_static/gen/sysprop/public/include"
platformOnProductPath := "libsysprop-platform-on-product/android_product_arm64_armv8-a_static/gen/sysprop/public/include"
vendorInternalPath := "libsysprop-vendor/android_vendor.29_arm64_armv8-a_static/gen/sysprop/include"
vendorOnProductPath := "libsysprop-vendor-on-product/android_product.29_arm64_armv8-a_static/gen/sysprop/public/include"
vendorInternalPath := "libsysprop-vendor/android_vendor_arm64_armv8-a_static/gen/sysprop/include"
vendorOnProductPath := "libsysprop-vendor-on-product/android_product_arm64_armv8-a_static/gen/sysprop/public/include"
platformClient := result.ModuleForTests("cc-client-platform", coreVariant)
platformFlags := platformClient.Rule("cc").Args["cFlags"]