2018-12-14 00:01:46 +01:00
|
|
|
// Copyright 2018 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 bpf
|
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"android/soong/android"
|
2019-05-15 01:05:20 +02:00
|
|
|
"android/soong/cc"
|
2018-12-14 00:01:46 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestMain(m *testing.M) {
|
2021-03-16 14:36:55 +01:00
|
|
|
os.Exit(m.Run())
|
2019-12-14 05:41:13 +01:00
|
|
|
}
|
|
|
|
|
2021-03-20 01:36:55 +01:00
|
|
|
var prepareForBpfTest = android.GroupFixturePreparers(
|
2021-02-24 19:51:54 +01:00
|
|
|
cc.PrepareForTestWithCcDefaultModules,
|
|
|
|
android.FixtureMergeMockFs(
|
|
|
|
map[string][]byte{
|
2022-07-07 11:48:06 +02:00
|
|
|
"bpf.c": nil,
|
|
|
|
"bpf_invalid_name.c": nil,
|
|
|
|
"BpfTest.cpp": nil,
|
2021-02-24 19:51:54 +01:00
|
|
|
},
|
|
|
|
),
|
|
|
|
PrepareForTestWithBpf,
|
|
|
|
)
|
2018-12-14 00:01:46 +01:00
|
|
|
|
|
|
|
func TestBpfDataDependency(t *testing.T) {
|
|
|
|
bp := `
|
|
|
|
bpf {
|
|
|
|
name: "bpf.o",
|
|
|
|
srcs: ["bpf.c"],
|
|
|
|
}
|
|
|
|
|
|
|
|
cc_test {
|
|
|
|
name: "vts_test_binary_bpf_module",
|
|
|
|
srcs: ["BpfTest.cpp"],
|
|
|
|
data: [":bpf.o"],
|
2019-05-15 01:05:20 +02:00
|
|
|
gtest: false,
|
2018-12-14 00:01:46 +01:00
|
|
|
}
|
|
|
|
`
|
|
|
|
|
2021-03-20 01:36:55 +01:00
|
|
|
prepareForBpfTest.RunTestWithBp(t, bp)
|
2018-12-14 00:01:46 +01:00
|
|
|
|
|
|
|
// We only verify the above BP configuration is processed successfully since the data property
|
|
|
|
// value is not available for testing from this package.
|
|
|
|
// TODO(jungjw): Add a check for data or move this test to the cc package.
|
|
|
|
}
|
2022-07-07 11:48:06 +02:00
|
|
|
|
|
|
|
func TestBpfSourceName(t *testing.T) {
|
|
|
|
bp := `
|
|
|
|
bpf {
|
|
|
|
name: "bpf_invalid_name.o",
|
|
|
|
srcs: ["bpf_invalid_name.c"],
|
|
|
|
}
|
|
|
|
`
|
|
|
|
prepareForBpfTest.ExtendWithErrorHandler(android.FixtureExpectsOneErrorPattern(
|
|
|
|
`\QAndroid.bp:2:3: module "bpf_invalid_name.o" variant "android_common": invalid character '_' in source name\E`)).
|
|
|
|
RunTestWithBp(t, bp)
|
|
|
|
}
|
2022-10-05 01:59:31 +02:00
|
|
|
|
|
|
|
func TestBpfWithBazel(t *testing.T) {
|
|
|
|
bp := `
|
|
|
|
bpf {
|
|
|
|
name: "bpf.o",
|
|
|
|
srcs: ["bpf.c"],
|
|
|
|
bazel_module: { label: "//bpf" },
|
|
|
|
}
|
|
|
|
`
|
|
|
|
|
|
|
|
result := android.GroupFixturePreparers(
|
|
|
|
prepareForBpfTest, android.FixtureModifyConfig(func(config android.Config) {
|
|
|
|
config.BazelContext = android.MockBazelContext{
|
|
|
|
OutputBaseDir: "outputbase",
|
|
|
|
LabelToOutputFiles: map[string][]string{
|
|
|
|
"//bpf": []string{"bpf.o"}}}
|
|
|
|
})).RunTestWithBp(t, bp)
|
|
|
|
|
|
|
|
output := result.Module("bpf.o", "android_common").(*bpf)
|
|
|
|
|
|
|
|
expectedOutputFiles := []string{"outputbase/execroot/__main__/bpf.o"}
|
|
|
|
android.AssertDeepEquals(t, "output files", expectedOutputFiles, output.objs.Strings())
|
|
|
|
}
|