Convert Vsock test to device test
Vsock test depends on two process groups running simultanously:
VirtManager+CrosVM and vsock_server. This was orchestrated by a Java
test runner running on the PC. With all the recent changes to the test,
it is now possible to run the former from AndroidTest.xml (and
eventually that will be completely removed) and convert vsock_server to
a GTest binary installed and invoked directly by TradeFed.
A common GTest class VirtualizationTest is added for hosting individual
test cases and sharing common code. Vsock test is converted to a single
TEST_F instance.
The test target is now called VirtualizationTestCases (dropped Host).
Bug: 181615964
Test: atest VirtualizationTestCases
Change-Id: I5a64d25ecc8f278250cfc3b196b8910ca8b8af52
diff --git a/tests/Android.bp b/tests/Android.bp
new file mode 100644
index 0000000..1b747fe
--- /dev/null
+++ b/tests/Android.bp
@@ -0,0 +1,95 @@
+// Copyright (C) 2020 The Android Open Source Project
+//
+// 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 {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+kernel_version = "5.10"
+
+kernel_stem = "kernel_prebuilts-" + kernel_version
+kernel_modules_stem = "virt_device_prebuilts_kernel_modules-" + kernel_version
+
+cc_test {
+ name: "VirtualizationTestCases",
+ test_suites: ["device-tests"],
+ srcs: [
+ "common.cc",
+ "vsock_test.cc",
+ ],
+ local_include_dirs: ["include"],
+ data: [
+ ":virt_test_kernel",
+ ":virt_test_initramfs",
+ "vsock_config.json",
+ ],
+ static_libs: [
+ // The existence of the library in the system partition is not guaranteed.
+ // Let's have our own copy of it.
+ "android.system.virtmanager-cpp",
+ ],
+ shared_libs: [
+ "libbase",
+ "libbinder",
+ "liblog",
+ "libutils",
+ ],
+}
+
+cc_defaults {
+ name: "virt_test_guest_binary",
+ static_libs: [
+ "libbase",
+ "liblog",
+ ],
+ static_executable: true,
+ installable: false,
+}
+
+cc_binary {
+ name: "virt_test_vsock_guest",
+ srcs: ["vsock_guest.cc"],
+ stem: "vsock_client",
+ defaults: ["virt_test_guest_binary"],
+}
+
+prebuilt_etc {
+ name: "virt_test_kernel",
+ src: "nofile",
+ arch: {
+ arm64: {
+ src: ":" + kernel_stem + "-arm64",
+ },
+ x86_64: {
+ src: ":" + kernel_stem + "-x86_64",
+ },
+ },
+}
+
+android_filesystem {
+ name: "virt_test_initramfs",
+ arch: {
+ arm64: {
+ deps: [kernel_modules_stem + "-arm64"],
+ },
+ x86_64: {
+ deps: [kernel_modules_stem + "-x86_64"],
+ },
+ },
+ deps: [
+ "virt_test_guest_init",
+ "virt_test_vsock_guest",
+ ],
+ type: "cpio",
+}