| // 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" |
| "android/soong/cc" |
| ) |
| |
| func TestMain(m *testing.M) { |
| os.Exit(m.Run()) |
| } |
| |
| var prepareForBpfTest = android.GroupFixturePreparers( |
| cc.PrepareForTestWithCcDefaultModules, |
| android.FixtureMergeMockFs( |
| map[string][]byte{ |
| "bpf.c": nil, |
| "bpf_invalid_name.c": nil, |
| "BpfTest.cpp": nil, |
| }, |
| ), |
| PrepareForTestWithBpf, |
| ) |
| |
| 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"], |
| gtest: false, |
| } |
| ` |
| |
| prepareForBpfTest.RunTestWithBp(t, bp) |
| |
| // 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. |
| } |
| |
| 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) |
| } |
| |
| 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()) |
| } |