platform_system_sepolicy/tests/Android.bp
Inseob Kim 55d140f904 Use heuristics to run sepolicy_tests faster
We are compiling regex more than 300000 times, and it's a main
bottleneck for slow sepolicy_tests. Actually we don't need to compile
regex that much; most of cases can be handled by simple string
comparison. This change introduces heuristics for optimization.

Bug: 301874100
Test: verified that return values of MatchPathPrefix are not changed.
Test: run cProfile, before and after.

Before
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    21951    0.923    0.000   56.491    0.003 policy.py:33(MatchPathPrefix)

After
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    21951    0.078    0.000    1.159    0.000 policy.py:40(MatchPathPrefix)

Change-Id: I1ebad586c2518e74a8ca67024df5e77d068e3ca5
2023-09-26 16:47:45 +09:00

178 lines
3.2 KiB
Text

package {
// http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// the below license kinds from "system_sepolicy_license":
// SPDX-license-identifier-Apache-2.0
default_applicable_licenses: ["system_sepolicy_license"],
}
cc_library_host_shared {
name: "libsepolwrap",
srcs: ["sepol_wrap.cpp"],
cflags: ["-Wall", "-Werror",],
export_include_dirs: ["include"],
stl: "c++_static",
// libsepolwrap gets loaded from the system python, which does not have the
// ASAN runtime. So turn off sanitization for ourself, and use static
// libraries, since the shared libraries will use ASAN.
static_libs: [
"libbase",
"libsepol",
],
sanitize: {
never: true,
},
}
python_library_host {
name: "mini_cil_parser",
srcs: ["mini_parser.py"],
}
python_library_host {
name: "pysepolwrap",
srcs: [
"fc_sort.py",
"policy.py",
],
}
python_binary_host {
name: "treble_sepolicy_tests",
srcs: [
"treble_sepolicy_tests.py",
],
version: {
py3: {
embedded_launcher: true,
},
},
libs: [
"mini_cil_parser",
],
}
python_binary_host {
name: "sepolicy_tests",
srcs: [
"sepolicy_tests.py",
],
version: {
py3: {
embedded_launcher: true,
},
},
libs: ["pysepolwrap"],
data: [":libsepolwrap"],
}
python_binary_host {
name: "apex_sepolicy_tests",
srcs: [
"apex_sepolicy_tests.py",
],
version: {
py3: {
embedded_launcher: true,
},
},
libs: ["pysepolwrap"],
data: [
":libsepolwrap",
":precompiled_sepolicy",
],
}
python_test_host {
name: "apex_sepolicy_tests_test",
srcs: [
"apex_sepolicy_tests.py",
"apex_sepolicy_tests_test.py",
],
libs: ["pysepolwrap"],
data: [
":libsepolwrap",
":precompiled_sepolicy",
],
test_options: {
unit_test: true,
},
version: {
py3: {
embedded_launcher: true,
},
},
}
python_binary_host {
name: "searchpolicy",
srcs: [
"searchpolicy.py",
],
libs: ["pysepolwrap"],
required: ["libsepolwrap"],
}
python_binary_host {
name: "combine_maps",
srcs: [
"combine_maps.py",
],
libs: ["mini_cil_parser"],
}
python_binary_host {
name: "fc_sort",
srcs: [
"fc_sort.py",
],
}
python_test_host {
name: "fc_sort_test",
srcs: [
"fc_sort.py",
"fc_sort_test.py",
],
test_options: {
unit_test: true,
}
}
python_binary_host {
name: "check_prop_prefix",
srcs: ["check_prop_prefix.py"],
}
python_binary_host {
name: "sepolicy_freeze_test",
srcs: [
"sepolicy_freeze_test.py",
],
version: {
py3: {
embedded_launcher: true,
},
},
libs: [
"mini_cil_parser",
],
}
python_test_host {
name: "policy_test",
srcs: [
"fc_sort.py",
"policy.py",
"policy_test.py",
],
test_options: {
unit_test: true,
},
version: {
py3: {
embedded_launcher: true,
},
},
}