[automerger skipped] Allow OEMs to update old 32/64 devices' vendor partitions. am: 5127c802d6 -s ours
am skip reason: Merged-In Ieca1d6436814f786d555ff1fa2d38881be433511 with SHA-1 22bcb1d069 is already in history
Original change: https://android-review.googlesource.com/c/platform/test/vts-testcase/kernel/+/3413618
Change-Id: I4e3be94537c9bcec33b6e2159d5e6ae6a456074e
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/abi/TEST_MAPPING b/abi/TEST_MAPPING
new file mode 100644
index 0000000..7cd30de
--- /dev/null
+++ b/abi/TEST_MAPPING
@@ -0,0 +1,8 @@
+{
+ "kernel-presubmit": [
+ {
+ "name": "KernelAbilistTest"
+ }
+ ]
+}
+
diff --git a/api/TEST_MAPPING b/api/TEST_MAPPING
new file mode 100644
index 0000000..aba9301
--- /dev/null
+++ b/api/TEST_MAPPING
@@ -0,0 +1,16 @@
+{
+ "kernel-presubmit": [
+ {
+ "name": "bpf_module_test"
+ },
+ {
+ "name": "drop_caches_test"
+ },
+ {
+ "name": "KernelApiSysfsTest"
+ },
+ {
+ "name": "vts_kernel_tun_test"
+ }
+ ]
+}
diff --git a/api/bpf_native_test/Android.bp b/api/bpf_native_test/Android.bp
index d23a5b4..8cc6668 100644
--- a/api/bpf_native_test/Android.bp
+++ b/api/bpf_native_test/Android.bp
@@ -15,6 +15,7 @@
//
package {
+ default_team: "trendy_team_fwk_core_networking",
default_applicable_licenses: ["Android-Apache-2.0"],
}
diff --git a/api/bpf_native_test/OWNERS b/api/bpf_native_test/OWNERS
index 4ebca2d..c53d0c4 100644
--- a/api/bpf_native_test/OWNERS
+++ b/api/bpf_native_test/OWNERS
@@ -1,3 +1,3 @@
# Bug component: 31808
set noparent
-file:platform/system/bpf:master:/OWNERS_bpf
+file:platform/system/bpf:main:/OWNERS_bpf
diff --git a/api/drop_caches_prop/Android.bp b/api/drop_caches_prop/Android.bp
index 3be048c..96cfb2c 100644
--- a/api/drop_caches_prop/Android.bp
+++ b/api/drop_caches_prop/Android.bp
@@ -25,7 +25,10 @@
"libcutils",
"liblog",
],
- test_suites: ["vts"],
+ test_suites: [
+ "general-tests",
+ "vts",
+ ],
auto_gen_config: true,
require_root: false,
}
diff --git a/api/drop_caches_prop/drop_caches_test.cpp b/api/drop_caches_prop/drop_caches_test.cpp
index 76707ab..a6ea1e3 100644
--- a/api/drop_caches_prop/drop_caches_test.cpp
+++ b/api/drop_caches_prop/drop_caches_test.cpp
@@ -130,11 +130,15 @@
usage_after_minor.ru_minflt - usage_before_minor.ru_minflt;
long without_cache_major_faults =
usage_after_major.ru_majflt - usage_before_major.ru_majflt;
- bool failure = abs(with_cache_minor_faults - without_cache_major_faults) > 2;
- ALOGI("There were %ld minor faults and %ld major faults.",
- with_cache_minor_faults, without_cache_major_faults);
- ASSERT_EQ(failure, false)
- << "The difference between minor and major faults was too large.";
+
+ long with_cache_major_faults =
+ usage_after_minor.ru_majflt - usage_before_minor.ru_majflt;
+ long without_cache_minor_faults =
+ usage_after_major.ru_minflt - usage_before_major.ru_minflt;
+
+ ASSERT_NEAR(with_cache_minor_faults, without_cache_major_faults, 2)
+ << "with_cache_major_faults=" << with_cache_major_faults
+ << " without_cache_minor_faults=" << without_cache_minor_faults;
// Try to clean up the garbage.data file from the device.
remove("/data/local/tmp/garbage.data");
diff --git a/api/sysfs/Android.bp b/api/sysfs/Android.bp
index e447d41..fbf5b7c 100644
--- a/api/sysfs/Android.bp
+++ b/api/sysfs/Android.bp
@@ -25,6 +25,7 @@
],
srcs: ["src/**/*.java"],
test_suites: [
+ "general-tests",
"vts",
],
test_config: "KernelApiSysfsTest.xml",
diff --git a/api/sysfs/src/com/android/tests/sysfs/KernelApiSysfsTest.java b/api/sysfs/src/com/android/tests/sysfs/KernelApiSysfsTest.java
index 247356e..9dcdfa4 100644
--- a/api/sysfs/src/com/android/tests/sysfs/KernelApiSysfsTest.java
+++ b/api/sysfs/src/com/android/tests/sysfs/KernelApiSysfsTest.java
@@ -93,10 +93,10 @@
*/
@Test
public void testPerCpuCpufreq() throws Exception {
- String filePath = "/sys/devices/system/cpu/present";
+ String filePath = "/sys/devices/system/cpu/online";
assertTrue(TargetFileUtils.isReadOnly(filePath, getDevice()));
- String presentCpus = getDevice().pullFileContents(filePath).trim();
- String[] cpuRanges = presentCpus.split(",");
+ String onlineCpus = getDevice().pullFileContents(filePath).trim();
+ String[] cpuRanges = onlineCpus.split(",");
List<Integer> cpuList = new ArrayList<>();
Pattern p = Pattern.compile("(\\d+)(-\\d+)?");
for (String range : cpuRanges) {
diff --git a/api/tun/Android.bp b/api/tun/Android.bp
index 8ad5116..1448eac 100644
--- a/api/tun/Android.bp
+++ b/api/tun/Android.bp
@@ -13,17 +13,24 @@
// limitations under the License.
package {
+ default_team: "trendy_team_fwk_core_networking",
default_applicable_licenses: ["Android-Apache-2.0"],
}
cc_test {
name: "vts_kernel_tun_test",
srcs: ["vts_kernel_tun_test.cpp"],
- cflags: ["-Wall", "-Werror"],
+ cflags: [
+ "-Wall",
+ "-Werror",
+ ],
shared_libs: [
"libbase",
],
- test_suites: ["vts"],
+ test_suites: [
+ "general-tests",
+ "vts",
+ ],
auto_gen_config: true,
require_root: true,
}
diff --git a/checkpoint/vts_kernel_checkpoint_test.py b/checkpoint/vts_kernel_checkpoint_test.py
index 644750a..2a8081d 100644
--- a/checkpoint/vts_kernel_checkpoint_test.py
+++ b/checkpoint/vts_kernel_checkpoint_test.py
@@ -112,7 +112,7 @@
first_api_level = int(out)
except:
pass
- self.assertTrue(first_api_level < 30 or self.isCheckpoint_,
+ self.assertTrue(first_api_level < 29 or self.isCheckpoint_,
"User Data Checkpoint is disabled")
def testRollback(self):
diff --git a/dynamic_partitions/Android.bp b/dynamic_partitions/Android.bp
index 9f271cd..3778d9c 100644
--- a/dynamic_partitions/Android.bp
+++ b/dynamic_partitions/Android.bp
@@ -24,6 +24,7 @@
],
srcs: ["src/**/*.java"],
test_suites: [
+ "general-tests",
"vts",
],
test_config: "KernelDynamicPartitionsTest.xml",
diff --git a/dynamic_partitions/TEST_MAPPING b/dynamic_partitions/TEST_MAPPING
new file mode 100644
index 0000000..e40232a
--- /dev/null
+++ b/dynamic_partitions/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+ "kernel-presubmit": [
+ {
+ "name": "KernelDynamicPartitionsTest"
+ }
+ ]
+}
diff --git a/encryption/TEST_MAPPING b/encryption/TEST_MAPPING
new file mode 100644
index 0000000..866dcc3
--- /dev/null
+++ b/encryption/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+ "kernel-presubmit": [
+ {
+ "name": "vts_kernel_encryption_test"
+ }
+ ]
+}
diff --git a/encryption/file_based_encryption_tests.cpp b/encryption/file_based_encryption_tests.cpp
index 58c656d..b485440 100644
--- a/encryption/file_based_encryption_tests.cpp
+++ b/encryption/file_based_encryption_tests.cpp
@@ -261,12 +261,12 @@
int fd_ = -1;
};
-// Reads the raw data of the file specified by |fd| from its underlying block
-// device |blk_device|. The file has |expected_data_size| bytes of initialized
-// data; this must be a multiple of the filesystem block size
+// Reads the raw data of a file specified by |fd|. The file is located on the
+// filesystem specified by |fs_info|. The file has |expected_data_size| bytes of
+// initialized data; this must be a multiple of the filesystem block size
// kFilesystemBlockSize. The file may contain holes, in which case only the
// non-holes are read; the holes are not counted in |expected_data_size|.
-static bool ReadRawDataOfFile(int fd, const std::string &blk_device,
+static bool ReadRawDataOfFile(int fd, const FilesystemInfo &fs_info,
int expected_data_size,
std::vector<uint8_t> *raw_data) {
int max_extents = expected_data_size / kFilesystemBlockSize;
@@ -306,16 +306,8 @@
uint8_t *buf = static_cast<uint8_t *>(buf_mem.get());
int offset = 0;
- android::base::unique_fd blk_fd(
- open(blk_device.c_str(), O_RDONLY | O_DIRECT | O_CLOEXEC));
- if (blk_fd < 0) {
- ADD_FAILURE() << "Failed to open raw block device " << blk_device
- << Errno();
- return false;
- }
-
for (int i = 0; i < map->fm_mapped_extents; i++) {
- const struct fiemap_extent &extent = map->fm_extents[i];
+ struct fiemap_extent &extent = map->fm_extents[i];
GTEST_LOG_(INFO) << "Extent " << i + 1 << " of " << map->fm_mapped_extents
<< " is logical offset " << extent.fe_logical
@@ -329,13 +321,46 @@
return false;
}
if (extent.fe_length % kFilesystemBlockSize != 0) {
- ADD_FAILURE() << "Extent is not aligned to filesystem block size";
+ ADD_FAILURE()
+ << "Extent (length) is not aligned to filesystem block size";
+ return false;
+ }
+ if (extent.fe_physical % kFilesystemBlockSize != 0) {
+ ADD_FAILURE() << "Extent (physical address) is not aligned to filesystem "
+ "block size";
return false;
}
if (extent.fe_length > expected_data_size - offset) {
ADD_FAILURE() << "File is longer than expected";
return false;
}
+ // Find the raw block device and remap the physical offset.
+ std::string raw_blk_device;
+ for (const DiskMapEntry &map_entry : fs_info.disk_map) {
+ if (extent.fe_physical / kFilesystemBlockSize <= map_entry.end_blkaddr) {
+ if ((extent.fe_physical + extent.fe_length) / kFilesystemBlockSize >
+ (map_entry.end_blkaddr + 1)) {
+ ADD_FAILURE() << "Extent spans multiple block devices";
+ return false;
+ }
+ raw_blk_device = map_entry.raw_blk_device;
+ extent.fe_physical -= map_entry.start_blkaddr * kFilesystemBlockSize;
+ break;
+ }
+ }
+ if (raw_blk_device.empty()) {
+ ADD_FAILURE()
+ << "Failed to find a raw block device in the block device list";
+ return false;
+ }
+ // Open the raw block device and read out the data.
+ android::base::unique_fd blk_fd(
+ open(raw_blk_device.c_str(), O_RDONLY | O_DIRECT | O_CLOEXEC));
+ if (blk_fd < 0) {
+ ADD_FAILURE() << "Failed to open raw block device " << raw_blk_device
+ << Errno();
+ return false;
+ }
if (pread(blk_fd, &buf[offset], extent.fe_length, extent.fe_physical) !=
extent.fe_length) {
ADD_FAILURE() << "Error reading raw data from block device" << Errno();
@@ -351,11 +376,11 @@
return true;
}
-// Writes |plaintext| to a file |path| located on the block device |blk_device|.
-// Returns in |ciphertext| the file's raw ciphertext read from |blk_device|.
+// Writes |plaintext| to a file |path| on the filesystem |fs_info|.
+// Returns in |ciphertext| the file's raw ciphertext read from disk.
static bool WriteTestFile(const std::vector<uint8_t> &plaintext,
const std::string &path,
- const std::string &blk_device,
+ const FilesystemInfo &fs_info,
const struct f2fs_comp_option *compress_options,
std::vector<uint8_t> *ciphertext) {
GTEST_LOG_(INFO) << "Creating test file " << path << " containing "
@@ -393,7 +418,7 @@
}
GTEST_LOG_(INFO) << "Reading the raw ciphertext of " << path << " from disk";
- if (!ReadRawDataOfFile(fd, blk_device, plaintext.size(), ciphertext)) {
+ if (!ReadRawDataOfFile(fd, fs_info, plaintext.size(), ciphertext)) {
ADD_FAILURE() << "Failed to read the raw ciphertext of " << path;
return false;
}
@@ -623,7 +648,7 @@
enum {
kSkipIfNoPolicySupport = 1 << 0,
kSkipIfNoCryptoAPISupport = 1 << 1,
- kSkipIfNoHardwareSupport = 1 << 2,
+ kSkipIfInlineEncryptionNotUsable = 1 << 2,
};
// Returns 0 if encryption policies that include the inode number in the IVs
@@ -682,7 +707,8 @@
<< std::hex << flags << std::dec << Errno();
return false;
}
- if (skip_flags & (kSkipIfNoCryptoAPISupport | kSkipIfNoHardwareSupport)) {
+ if (skip_flags &
+ (kSkipIfNoCryptoAPISupport | kSkipIfInlineEncryptionNotUsable)) {
android::base::unique_fd fd(
open(test_file_.c_str(), O_WRONLY | O_CREAT | O_CLOEXEC, 0600));
if (fd < 0) {
@@ -696,13 +722,21 @@
"unsupported on this kernel, due to missing crypto API support";
return false;
}
- // We get EINVAL here when using a hardware-wrapped key and the inline
- // encryption hardware supports wrapped keys but doesn't support the
- // number of DUN bytes that the file contents encryption requires.
- if (errno == EINVAL && (skip_flags & kSkipIfNoHardwareSupport)) {
+ // We get EINVAL here when we're using a hardware-wrapped key, the device
+ // has inline encryption hardware that supports hardware-wrapped keys, and
+ // there are hardware or kernel limitations that make it impossible for
+ // inline encryption to actually be used with the policy. For example:
+ //
+ // - The device's inline encryption hardware doesn't support the number
+ // of DUN bytes needed for file contents encryption.
+ //
+ // - The policy uses the IV_INO_LBLK_32 flag, and the filesystem block
+ // size differs from the page size. (Kernel limitation.)
+ if (errno == EINVAL && (skip_flags & kSkipIfInlineEncryptionNotUsable)) {
GTEST_LOG_(INFO)
- << "Skipping test because encryption policy is not compatible with "
- "this device's inline encryption hardware";
+ << "Skipping test because encryption policy requires inline "
+ "encryption, but inline encryption is unsupported with this "
+ "policy on this device due to hardware or kernel limitations";
return false;
}
}
@@ -724,8 +758,8 @@
compress_options->log_cluster_size))
return false;
- if (!WriteTestFile(info->plaintext, test_file_, fs_info_.raw_blk_device,
- compress_options, &info->actual_ciphertext))
+ if (!WriteTestFile(info->plaintext, test_file_, fs_info_, compress_options,
+ &info->actual_ciphertext))
return false;
android::base::unique_fd fd(open(test_file_.c_str(), O_RDONLY | O_CLOEXEC));
@@ -960,11 +994,11 @@
std::vector<uint8_t> enc_key, sw_secret;
if (!CreateAndSetHwWrappedKey(&enc_key, &sw_secret)) return;
- if (!SetEncryptionPolicy(
- FSCRYPT_MODE_AES_256_XTS, FSCRYPT_MODE_AES_256_CTS,
- FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64,
- // 64-bit DUN support is not guaranteed.
- kSkipIfNoHardwareSupport | GetSkipFlagsForInoBasedEncryption()))
+ if (!SetEncryptionPolicy(FSCRYPT_MODE_AES_256_XTS, FSCRYPT_MODE_AES_256_CTS,
+ FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64,
+ // 64-bit DUN support is not guaranteed.
+ kSkipIfInlineEncryptionNotUsable |
+ GetSkipFlagsForInoBasedEncryption()))
return;
TestFileInfo file_info;
@@ -1054,7 +1088,7 @@
<< "Error writing data to " << path << Errno();
// Verify the ciphertext.
- ASSERT_TRUE(ReadRawDataOfFile(fd, fs_info_.raw_blk_device, data_size,
+ ASSERT_TRUE(ReadRawDataOfFile(fd, fs_info_, data_size,
&file_info.actual_ciphertext));
FscryptIV iv;
memset(&iv, 0, sizeof(iv));
@@ -1102,9 +1136,12 @@
std::vector<uint8_t> enc_key, sw_secret;
if (!CreateAndSetHwWrappedKey(&enc_key, &sw_secret)) return;
+ int skip_flags = GetSkipFlagsForInoBasedEncryption();
+ if (kFilesystemBlockSize != getpagesize())
+ skip_flags |= kSkipIfInlineEncryptionNotUsable;
+
if (!SetEncryptionPolicy(FSCRYPT_MODE_AES_256_XTS, FSCRYPT_MODE_AES_256_CTS,
- FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32,
- GetSkipFlagsForInoBasedEncryption()))
+ FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32, skip_flags))
return;
TestFileInfo file_info;
@@ -1274,7 +1311,11 @@
//
// Note, this test will be flaky if the kernel is missing commit 093f0bac32b
// ("f2fs: change fiemap way in printing compression chunk").
-TEST_F(FBEPolicyTest, TestF2fsCompression) {
+//
+// This test is currently disabled because the test is still flaky even with the
+// above fix, and it hasn't been able to be root-caused. TODO(b/329449658):
+// root cause the issue and re-enable the test.
+TEST_F(FBEPolicyTest, DISABLED_TestF2fsCompression) {
if (skip_test_) return;
// Currently, only f2fs supports compression+encryption.
@@ -1435,10 +1476,8 @@
std::vector<uint8_t> zeroes(kTestFileBytes, 0);
std::vector<uint8_t> ciphertext_1;
std::vector<uint8_t> ciphertext_2;
- ASSERT_TRUE(WriteTestFile(zeroes, path_1, fs_info.raw_blk_device, nullptr,
- &ciphertext_1));
- ASSERT_TRUE(WriteTestFile(zeroes, path_2, fs_info.raw_blk_device, nullptr,
- &ciphertext_2));
+ ASSERT_TRUE(WriteTestFile(zeroes, path_1, fs_info, nullptr, &ciphertext_1));
+ ASSERT_TRUE(WriteTestFile(zeroes, path_2, fs_info, nullptr, &ciphertext_2));
GTEST_LOG_(INFO) << "Verifying randomness of ciphertext";
diff --git a/encryption/metadata_encryption_tests.cpp b/encryption/metadata_encryption_tests.cpp
index 74db200..91fa06f 100644
--- a/encryption/metadata_encryption_tests.cpp
+++ b/encryption/metadata_encryption_tests.cpp
@@ -175,7 +175,7 @@
FilesystemInfo fs_info;
ASSERT_TRUE(GetFilesystemInfo(kTestMountpoint, &fs_info));
- raw_blk_device_ = fs_info.raw_blk_device;
+ raw_blk_device_ = fs_info.disk_map[0].raw_blk_device;
dm_->DeleteDevice(test_dm_device_name_.c_str());
}
@@ -321,8 +321,10 @@
std::vector<uint8_t> raw_data;
FilesystemInfo fs_info;
ASSERT_TRUE(GetFilesystemInfo(mountpoint, &fs_info));
- ASSERT_TRUE(
- ReadBlockDevice(fs_info.raw_blk_device, kFilesystemBlockSize, &raw_data));
+ // The first block of the filesystem's main block device should always be
+ // metadata-encrypted.
+ ASSERT_TRUE(ReadBlockDevice(fs_info.disk_map[0].raw_blk_device,
+ kFilesystemBlockSize, &raw_data));
ASSERT_TRUE(VerifyDataRandomness(raw_data));
}
diff --git a/encryption/utils.cpp b/encryption/utils.cpp
index b7a0b57..41430f3 100644
--- a/encryption/utils.cpp
+++ b/encryption/utils.cpp
@@ -16,8 +16,12 @@
// Utility functions for VtsKernelEncryptionTest.
+#include <fstream>
+
#include <LzmaLib.h>
+#include <android-base/parseint.h>
#include <android-base/properties.h>
+#include <android-base/strings.h>
#include <android-base/unique_fd.h>
#include <errno.h>
#include <ext4_utils/ext4.h>
@@ -33,6 +37,9 @@
#include "Keymaster.h"
#include "vts_kernel_encryption.h"
+using android::base::ParseInt;
+using android::base::Split;
+using android::base::StartsWith;
using namespace android::dm;
namespace android {
@@ -137,33 +144,8 @@
return true;
}
-// Gets the block device and type of the filesystem mounted on |mountpoint|.
-// This block device is the one on which the filesystem is directly located. In
-// the case of device-mapper that means something like /dev/mapper/dm-5, not the
-// underlying device like /dev/block/by-name/userdata.
-static bool GetFsBlockDeviceAndType(const std::string &mountpoint,
- std::string *fs_blk_device,
- std::string *fs_type) {
- std::unique_ptr<FILE, int (*)(FILE *)> mnts(setmntent("/proc/mounts", "re"),
- endmntent);
- if (!mnts) {
- ADD_FAILURE() << "Failed to open /proc/mounts" << Errno();
- return false;
- }
- struct mntent *mnt;
- while ((mnt = getmntent(mnts.get())) != nullptr) {
- if (mnt->mnt_dir == mountpoint) {
- *fs_blk_device = mnt->mnt_fsname;
- *fs_type = mnt->mnt_type;
- return true;
- }
- }
- ADD_FAILURE() << "No /proc/mounts entry found for " << mountpoint;
- return false;
-}
-
-// Gets the UUID of the filesystem of type |fs_type| that's located on
-// |fs_blk_device|.
+// Gets the UUID of the filesystem that uses |fs_blk_device| as its main block
+// device. |fs_type| gives the filesystem type.
//
// Unfortunately there's no kernel API to get the UUID; instead we have to read
// it from the filesystem superblock.
@@ -219,12 +201,13 @@
return true;
}
-// Gets the raw block device of the filesystem that is mounted from
-// |fs_blk_device|. By "raw block device" we mean a block device from which we
-// can read the encrypted file contents and filesystem metadata. When metadata
-// encryption is disabled, this is simply |fs_blk_device|. When metadata
-// encryption is enabled, then |fs_blk_device| is a dm-default-key device and
-// the "raw block device" is the parent of this dm-default-key device.
+// Gets the raw block device corresponding to |fs_blk_device| that is one of a
+// filesystem's mounted block devices. By "raw block device" we mean a block
+// device from which we can read the encrypted file contents and filesystem
+// metadata. When metadata encryption is disabled, this is simply
+// |fs_blk_device|. When metadata encryption is enabled, then |fs_blk_device|
+// is a dm-default-key device and the "raw block device" is the parent of this
+// dm-default-key device.
//
// We don't just use the block device listed in the fstab, because (a) it can be
// a logical partition name which needs extra code to map to a block device, and
@@ -281,21 +264,109 @@
return true;
}
+// Gets information about a filesystem's block devices
+static bool GetFsBlockDeviceList(FilesystemInfo *fs_info,
+ const std::string &mnt_fsname) {
+ // Add a default block device
+ DiskMapEntry map_entry;
+ map_entry.start_blkaddr = 0;
+ map_entry.end_blkaddr = INT64_MAX - 1;
+ map_entry.fs_blk_device = mnt_fsname;
+
+ if (!GetRawBlockDevice(map_entry.fs_blk_device, &map_entry.raw_blk_device)) {
+ ADD_FAILURE() << "Broken block device path of the default disk";
+ return false;
+ }
+ fs_info->disk_map.push_back(map_entry);
+
+ if (fs_info->type != "f2fs") return true;
+
+ // This requires a kernel patch, f238eff95f48 ("f2fs: add a proc entry show
+ // disk layout"), merged in v6.9
+ static constexpr std::string_view kDevBlockPrefix("/dev/block/");
+ const std::string proc_path = "/proc/fs/f2fs/" +
+ mnt_fsname.substr(kDevBlockPrefix.length()) +
+ "/disk_map";
+ std::ifstream proc_fs(proc_path.c_str());
+ if (!proc_fs.is_open()) {
+ GTEST_LOG_(INFO) << proc_path
+ << " does not exist (expected on pre-6.9 kernels)";
+ return true;
+ }
+
+ std::string line;
+ bool first_device = true;
+ while (std::getline(proc_fs, line)) {
+ if (!android::base::StartsWith(line, "Disk: ")) {
+ continue;
+ }
+ if (first_device) {
+ fs_info->disk_map.erase(fs_info->disk_map.begin());
+ first_device = false;
+ }
+ DiskMapEntry map_entry;
+ std::vector<std::string> data = Split(line, "\t ");
+ if (!ParseInt(data[3], &map_entry.start_blkaddr)) {
+ ADD_FAILURE() << "Broken first block address in the address range";
+ return false;
+ }
+ if (!ParseInt(data[5], &map_entry.end_blkaddr)) {
+ ADD_FAILURE() << "Broken last block address in the address range";
+ return false;
+ }
+ map_entry.fs_blk_device = data[7];
+ if (!GetRawBlockDevice(map_entry.fs_blk_device,
+ &map_entry.raw_blk_device)) {
+ ADD_FAILURE() << "Broken block device path in the disk map entry";
+ return false;
+ }
+ fs_info->disk_map.push_back(map_entry);
+ }
+ return true;
+}
+
+// Gets the block device list and type of the filesystem mounted on
+// |mountpoint|. The block device list has all the block device information
+// along with the address space ranges configured by the mounted filesystem.
+static bool GetFsBlockDeviceListAndType(const std::string &mountpoint,
+ FilesystemInfo *fs_info) {
+ std::unique_ptr<FILE, int (*)(FILE *)> mnts(setmntent("/proc/mounts", "re"),
+ endmntent);
+ if (!mnts) {
+ ADD_FAILURE() << "Failed to open /proc/mounts" << Errno();
+ return false;
+ }
+ struct mntent *mnt;
+ while ((mnt = getmntent(mnts.get())) != nullptr) {
+ if (mnt->mnt_dir == mountpoint) {
+ fs_info->type = mnt->mnt_type;
+ return GetFsBlockDeviceList(fs_info, mnt->mnt_fsname);
+ }
+ }
+ ADD_FAILURE() << "No /proc/mounts entry found for " << mountpoint;
+ return false;
+}
+
// Gets information about the filesystem mounted on |mountpoint|.
-bool GetFilesystemInfo(const std::string &mountpoint, FilesystemInfo *info) {
- if (!GetFsBlockDeviceAndType(mountpoint, &info->fs_blk_device, &info->type))
+bool GetFilesystemInfo(const std::string &mountpoint, FilesystemInfo *fs_info) {
+ if (!GetFsBlockDeviceListAndType(mountpoint, fs_info)) return false;
+
+ // This disk_map[0] always indicates the main block device which the
+ // filesystem contains its superblock.
+ if (!GetFilesystemUuid(fs_info->disk_map[0].fs_blk_device, fs_info->type,
+ &fs_info->uuid))
return false;
- if (!GetFilesystemUuid(info->fs_blk_device, info->type, &info->uuid))
- return false;
+ GTEST_LOG_(INFO) << " Filesystem mounted on " << mountpoint
+ << " has type: " << fs_info->type << ", UUID is "
+ << BytesToHex(fs_info->uuid.bytes);
- if (!GetRawBlockDevice(info->fs_blk_device, &info->raw_blk_device))
- return false;
-
- GTEST_LOG_(INFO) << info->fs_blk_device << " is mounted on " << mountpoint
- << " with type " << info->type << "; UUID is "
- << BytesToHex(info->uuid.bytes) << ", raw block device is "
- << info->raw_blk_device;
+ for (const DiskMapEntry &map_entry : fs_info->disk_map) {
+ GTEST_LOG_(INFO) << "Block device: " << map_entry.fs_blk_device << " ("
+ << map_entry.raw_blk_device << ") ranging from "
+ << map_entry.start_blkaddr << " to "
+ << map_entry.end_blkaddr;
+ }
return true;
}
diff --git a/encryption/vts_kernel_encryption.h b/encryption/vts_kernel_encryption.h
index bf45719..bd3b620 100644
--- a/encryption/vts_kernel_encryption.h
+++ b/encryption/vts_kernel_encryption.h
@@ -110,11 +110,27 @@
uint8_t bytes[kFilesystemUuidSize];
};
-struct FilesystemInfo {
+struct DiskMapEntry {
std::string fs_blk_device;
+ std::string raw_blk_device;
+ int64_t start_blkaddr;
+ int64_t end_blkaddr;
+};
+
+struct FilesystemInfo {
std::string type;
FilesystemUuid uuid;
- std::string raw_blk_device;
+
+ // The filesystem's block devices in sorted order of filesystem block address.
+ // The covered addresses are guaranteed to be contiguous and non-overlapping.
+ // The first device, starting at address 0, is the filesystem's "main" block
+ // device.
+ // Note, the disk_map's end_blkaddr is inclusive like below:
+ // [disk number] [start_blkaddr] [end_blkaddr]
+ // 0 0 X - 1
+ // 1 X Y - 1
+ // 2 Y Z
+ std::vector<DiskMapEntry> disk_map;
};
bool GetFilesystemInfo(const std::string &mountpoint, FilesystemInfo *info);
diff --git a/fuse_bpf/vts_kernel_fuse_bpf_test.py b/fuse_bpf/vts_kernel_fuse_bpf_test.py
index 0f6a911..111fcc5 100644
--- a/fuse_bpf/vts_kernel_fuse_bpf_test.py
+++ b/fuse_bpf/vts_kernel_fuse_bpf_test.py
@@ -38,7 +38,9 @@
except:
pass
out_running, err, return_code = self.dut.Execute("getprop ro.fuse.bpf.is_running")
- self.assertTrue(first_api_level < 34 or out_running.strip() == "true",
+ # Legacy devices that are using sdcardfs are unable to simply swap to fuse-bpf
+ out_sdcardfs, err, return_code = self.dut.Execute("mount | grep \"type sdcardfs\"")
+ self.assertTrue(first_api_level < 34 or out_sdcardfs.strip() != "" or out_running.strip() == "true",
"fuse-bpf is disabled")
diff --git a/gki/Android.bp b/gki/Android.bp
index 77c654a..5e803c3 100644
--- a/gki/Android.bp
+++ b/gki/Android.bp
@@ -50,6 +50,31 @@
}
cc_test {
+ name: "vts_eol_enforcement_test",
+ test_suites: [
+ "device-tests",
+ "vts",
+ ],
+ srcs: [
+ "eol_enforcement_test.cpp",
+ ],
+ defaults: [
+ "libvintf_static_user_defaults",
+ ],
+ static_libs: [
+ "libbase",
+ "libkver",
+ "libtinyxml2",
+ "libvintf",
+ ],
+ cflags: [
+ "-Wall",
+ "-Werror",
+ ],
+ test_config: "eol_enforcement_test.xml",
+}
+
+cc_test {
name: "vts_generic_boot_image_test",
require_root: true,
@@ -87,7 +112,6 @@
],
static_libs: [
"libbase",
- "libc++fs",
"libgmock",
"libkver",
"liblz4",
@@ -98,3 +122,8 @@
"libstorage_literals_headers",
],
}
+
+filegroup {
+ name: "WtsDlkmPartitionTestCasesSrc",
+ srcs: ["vts_dlkm_partition_test.cpp"],
+}
diff --git a/gki/eol_enforcement_test.cpp b/gki/eol_enforcement_test.cpp
new file mode 100644
index 0000000..4724b33
--- /dev/null
+++ b/gki/eol_enforcement_test.cpp
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+#include <chrono>
+#include <cstdint>
+#include <format>
+#include <limits>
+#include <regex>
+#include <sstream>
+
+#include <android-base/file.h>
+#include <android-base/parseint.h>
+#include <gtest/gtest.h>
+#include <kver/kernel_release.h>
+#include <tinyxml2.h>
+#include <vintf/Version.h>
+#include <vintf/VintfObject.h>
+
+using android::vintf::KernelVersion;
+using android::vintf::Level;
+using android::vintf::RuntimeInfo;
+using android::vintf::Version;
+using android::vintf::VintfObject;
+
+namespace {
+
+const std::string kernel_lifetimes_config_path =
+ "/system/etc/kernel/kernel-lifetimes.xml";
+
+bool parseDate(std::string_view date_string,
+ std::chrono::year_month_day& date) {
+ const std::regex date_regex("(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)");
+ std::cmatch date_match;
+ if (!std::regex_match(date_string.data(), date_match, date_regex)) {
+ return false;
+ }
+
+ uint32_t year, month, day;
+ android::base::ParseUint(date_match[1].str(), &year);
+ android::base::ParseUint(date_match[2].str(), &month);
+ android::base::ParseUint(date_match[3].str(), &day);
+ date = std::chrono::year_month_day(std::chrono::year(year),
+ std::chrono::month(month),
+ std::chrono::day(day));
+ return true;
+}
+
+KernelVersion parseKernelVersion(std::string_view kernel_version_string) {
+ const std::regex kernel_version_regex("(\\d+)\\.(\\d+)\\.(\\d+)");
+ std::cmatch kernel_version_match;
+ if (!std::regex_match(kernel_version_string.data(), kernel_version_match,
+ kernel_version_regex)) {
+ return {};
+ }
+
+ uint32_t v, mj, mi;
+ android::base::ParseUint(kernel_version_match[1].str(), &v);
+ android::base::ParseUint(kernel_version_match[2].str(), &mj);
+ android::base::ParseUint(kernel_version_match[3].str(), &mi);
+ return KernelVersion(v, mj, mi);
+}
+
+} // namespace
+
+class EolEnforcementTest : public testing::Test {
+ public:
+ virtual void SetUp() override {
+ // Get current date.
+ today = std::chrono::year_month_day(std::chrono::floor<std::chrono::days>(
+ std::chrono::system_clock::now()));
+
+ // Get runtime info.
+ auto vintf = VintfObject::GetInstance();
+ ASSERT_NE(vintf, nullptr);
+ runtime_info = vintf->getRuntimeInfo(RuntimeInfo::FetchFlag::CPU_VERSION |
+ RuntimeInfo::FetchFlag::CONFIG_GZ);
+ ASSERT_NE(runtime_info, nullptr);
+ }
+
+ bool isReleaseEol(std::string_view date) const;
+
+ std::chrono::year_month_day today;
+ std::shared_ptr<const RuntimeInfo> runtime_info;
+};
+
+bool EolEnforcementTest::isReleaseEol(std::string_view date_string) const {
+ std::chrono::year_month_day date;
+ if (!parseDate(date_string, date)) {
+ ADD_FAILURE() << "Failed to parse date string: " << date_string;
+ }
+ return today > date;
+}
+
+TEST_F(EolEnforcementTest, KernelNotEol) {
+ ASSERT_GE(runtime_info->kernelVersion().dropMinor(), (Version{4, 14}))
+ << "Kernel versions below 4.14 are EOL";
+
+ std::string kernel_lifetimes_content;
+ ASSERT_TRUE(android::base::ReadFileToString(kernel_lifetimes_config_path,
+ &kernel_lifetimes_content))
+ << "Failed to read approved OGKI builds config at "
+ << kernel_lifetimes_config_path;
+
+ tinyxml2::XMLDocument kernel_lifetimes_xml;
+ const auto xml_error =
+ kernel_lifetimes_xml.Parse(kernel_lifetimes_content.c_str());
+ ASSERT_EQ(xml_error, tinyxml2::XMLError::XML_SUCCESS)
+ << "Failed to parse approved builds config: "
+ << tinyxml2::XMLDocument::ErrorIDToName(xml_error);
+
+ const auto kernel_version = runtime_info->kernelVersion();
+ std::string branch_name;
+ if (kernel_version.dropMinor() < Version{5, 4}) {
+ branch_name = std::format("android-{}.{}", kernel_version.version,
+ kernel_version.majorRev);
+ } else if (kernel_version.dropMinor() == Version{5, 4} &&
+ VintfObject::GetInstance()->getKernelLevel() == Level::R) {
+ // Kernel release string on Android 11 is not GKI compatible.
+ branch_name = "android11-5.4";
+ } else {
+ const auto kernel_release = android::kver::KernelRelease::Parse(
+ android::vintf::VintfObject::GetRuntimeInfo()->osRelease(),
+ /* allow_suffix = */ true);
+ ASSERT_TRUE(kernel_release.has_value())
+ << "Failed to parse the kernel release string";
+ branch_name =
+ std::format("android{}-{}.{}", kernel_release->android_release(),
+ kernel_version.version, kernel_version.majorRev);
+ }
+
+ tinyxml2::XMLElement* branch_element = nullptr;
+ const auto kernels_element = kernel_lifetimes_xml.RootElement();
+ for (auto branch = kernels_element->FirstChildElement("branch"); branch;
+ branch = branch->NextSiblingElement("branch")) {
+ if (branch->Attribute("name", branch_name.c_str())) {
+ branch_element = branch;
+ break;
+ }
+ }
+ ASSERT_NE(branch_element, nullptr)
+ << "Branch '" << branch_name << "' not found in approved builds config";
+
+ // Test against branch EOL is there are no releases for the branch.
+ if (const auto no_releases = branch_element->FirstChildElement("no-releases");
+ no_releases != nullptr) {
+ std::chrono::year_month_day eol;
+ ASSERT_TRUE(parseDate(branch_element->Attribute("eol"), eol))
+ << "Failed to parse branch '" << branch_name
+ << "' EOL date: " << branch_element->Attribute("eol");
+ EXPECT_GE(eol, today);
+ return;
+ }
+
+ // Test against kernel release EOL.
+ const auto lts_versions = branch_element->FirstChildElement("lts-versions");
+ const auto release_version =
+ std::format("{}.{}.{}", kernel_version.version, kernel_version.majorRev,
+ kernel_version.minorRev);
+ tinyxml2::XMLElement* latest_release = nullptr;
+ KernelVersion latest_kernel_version;
+ for (auto release = lts_versions->FirstChildElement("release"); release;
+ release = release->NextSiblingElement("release")) {
+ if (release->Attribute("version", release_version.c_str())) {
+ EXPECT_FALSE(isReleaseEol(release->Attribute("eol")));
+ return;
+ } else if (auto kernel_version =
+ parseKernelVersion(release->Attribute("version"));
+ latest_release == nullptr ||
+ kernel_version > latest_kernel_version) {
+ latest_release = release;
+ latest_kernel_version = kernel_version;
+ }
+ }
+
+ // If current kernel version is newer than the latest kernel version found in
+ // the config, then this might be a kernel release which is yet to get a
+ // release config. Test against the latest kernel release version if this is
+ // the case.
+ if (kernel_version > latest_kernel_version) {
+ EXPECT_FALSE(isReleaseEol(latest_release->Attribute("eol")));
+ } else {
+ FAIL() << "Kernel release '" << release_version << "' is not recognised";
+ }
+}
diff --git a/gki/eol_enforcement_test.xml b/gki/eol_enforcement_test.xml
new file mode 100644
index 0000000..54a252c
--- /dev/null
+++ b/gki/eol_enforcement_test.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2024 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.
+-->
+<configuration description="Config for vts_eol_enforcement_test">
+ <target_preparer class="com.android.tradefed.targetprep.WaitForDeviceDatetimePreparer"/>
+ <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
+ <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+ <option name="cleanup" value="true"/>
+ <option name="push" value="vts_eol_enforcement_test->/data/local/tmp/vts_eol_enforcement_test"/>
+ </target_preparer>
+ <test class="com.android.tradefed.testtype.GTest">
+ <option name="native-test-device-path" value="/data/local/tmp"/>
+ <option name="module-name" value="vts_eol_enforcement_test"/>
+ </test>
+</configuration>
diff --git a/linux_kselftest/OWNERS b/linux_kselftest/OWNERS
deleted file mode 100644
index e32ce0e..0000000
--- a/linux_kselftest/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-# Bug component: 391836
[email protected]
[email protected]
[email protected]
[email protected]
diff --git a/linux_kselftest/TEST_MAPPING b/linux_kselftest/TEST_MAPPING
deleted file mode 100644
index 30d3833..0000000
--- a/linux_kselftest/TEST_MAPPING
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "presubmit": [
- {
- "name": "vts_linux_kselftest_arm_32"
- },
- {
- "name": "vts_linux_kselftest_arm_64"
- },
- {
- "name": "vts_linux_kselftest_riscv_64"
- },
- {
- "name": "vts_linux_kselftest_x86_32",
- "options": [
- {
- // TODO(b/191663053)
- "exclude-filter": "x86_single_step_syscall_x86_32"
- }
- ]
- },
- {
- "name": "vts_linux_kselftest_x86_64",
- "options": [
- {
- // TODO(b/191663053)
- "exclude-filter": "x86_single_step_syscall_x86_64"
- }
- ]
- }
- ],
- "kernel-presubmit": [
- {
- "name": "vts_linux_kselftest_arm_32"
- },
- {
- "name": "vts_linux_kselftest_arm_64"
- },
- {
- "name": "vts_linux_kselftest_riscv_64"
- },
- {
- "name": "vts_linux_kselftest_x86_32",
- "options": [
- {
- // TODO(b/191663053)
- "exclude-filter": "x86_single_step_syscall_x86_32"
- }
- ]
- },
- {
- "name": "vts_linux_kselftest_x86_64",
- "options": [
- {
- // TODO(b/191663053)
- "exclude-filter": "x86_single_step_syscall_x86_64"
- }
- ]
- }
- ]
-}
diff --git a/linux_kselftest/testcases/Android.bp b/linux_kselftest/testcases/Android.bp
deleted file mode 100644
index eef39d0..0000000
--- a/linux_kselftest/testcases/Android.bp
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// 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"],
-}
-
-sh_test {
- name: "vts_linux_kselftest_arm_64",
- src: "phony_kselftest_arm64.sh",
- test_suites: [
- "general-tests",
- "vts"
- ],
- test_config: "vts_linux_kselftest_arm_64.xml",
-}
-
-sh_test {
- name: "vts_linux_kselftest_arm_32",
- src: "phony_kselftest_arm.sh",
- test_suites: [
- "general-tests",
- "vts"
- ],
- test_config: "vts_linux_kselftest_arm_32.xml",
-}
-
-sh_test {
- name: "vts_linux_kselftest_x86_64",
- src: "phony_kselftest_x86_64.sh",
- test_suites: [
- "general-tests",
- "vts"
- ],
- test_config: "vts_linux_kselftest_x86_64.xml",
-}
-
-sh_test {
- name: "vts_linux_kselftest_x86_32",
- src: "phony_kselftest_x86.sh",
- test_suites: [
- "general-tests",
- "vts"
- ],
- test_config: "vts_linux_kselftest_x86_32.xml",
-}
-
-sh_test {
- name: "vts_linux_kselftest_riscv_64",
- src: "phony_kselftest_riscv64.sh",
- test_suites: [
- "general-tests",
- "vts"
- ],
- test_config: "vts_linux_kselftest_riscv_64.xml",
-}
diff --git a/linux_kselftest/testcases/OWNERS b/linux_kselftest/testcases/OWNERS
deleted file mode 100644
index 1f6a131..0000000
--- a/linux_kselftest/testcases/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-# Bug component: 391836
[email protected]
[email protected]
[email protected]
-
diff --git a/linux_kselftest/testcases/phony_kselftest_arm.sh b/linux_kselftest/testcases/phony_kselftest_arm.sh
deleted file mode 100755
index e69de29..0000000
--- a/linux_kselftest/testcases/phony_kselftest_arm.sh
+++ /dev/null
diff --git a/linux_kselftest/testcases/phony_kselftest_arm64.sh b/linux_kselftest/testcases/phony_kselftest_arm64.sh
deleted file mode 100755
index e69de29..0000000
--- a/linux_kselftest/testcases/phony_kselftest_arm64.sh
+++ /dev/null
diff --git a/linux_kselftest/testcases/phony_kselftest_riscv64.sh b/linux_kselftest/testcases/phony_kselftest_riscv64.sh
deleted file mode 100755
index e69de29..0000000
--- a/linux_kselftest/testcases/phony_kselftest_riscv64.sh
+++ /dev/null
diff --git a/linux_kselftest/testcases/phony_kselftest_x86.sh b/linux_kselftest/testcases/phony_kselftest_x86.sh
deleted file mode 100755
index e69de29..0000000
--- a/linux_kselftest/testcases/phony_kselftest_x86.sh
+++ /dev/null
diff --git a/linux_kselftest/testcases/phony_kselftest_x86_64.sh b/linux_kselftest/testcases/phony_kselftest_x86_64.sh
deleted file mode 100755
index e69de29..0000000
--- a/linux_kselftest/testcases/phony_kselftest_x86_64.sh
+++ /dev/null
diff --git a/linux_kselftest/testcases/vts_linux_kselftest_arm_32.xml b/linux_kselftest/testcases/vts_linux_kselftest_arm_32.xml
deleted file mode 100644
index 45e4ce33..0000000
--- a/linux_kselftest/testcases/vts_linux_kselftest_arm_32.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<!DOCTYPE configuration [
- <!ENTITY ktest_dir "/data/local/tmp/vts_kernel_kselftest_tests/DATA/nativetest/linux-kselftest">
-]>
-<configuration description="Runs vts_linux_kselftest.">
- <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
- <target_preparer class="com.android.tradefed.targetprep.StopServicesSetup" />
-
- <object type="module_controller" class="com.android.tradefed.testtype.suite.module.KernelTestModuleController" >
- <option name="arch" value="arm"/>
- </object>
-
- <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
- <option name="cleanup" value="true" />
- <option name="push" value="vts_kernel_kselftest_tests->/data/local/tmp/vts_kernel_kselftest_tests" />
- </target_preparer>
-
- <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
- <option name="run-command" value='find &ktest_dir; -type f | xargs grep -l -e "bin/sh" -e "bin/bash" | xargs sed -i -e "s?/bin/echo?echo?" -i -e "s?#!/bin/sh?#!/system/bin/sh?" -i -e "s?#!/bin/bash?#!/system/bin/sh?"' />
- </target_preparer>
-
- <test class="com.android.tradefed.testtype.binary.KernelTargetTest" >
- <option name="exit-code-skip" value="4" />
- <option name="skip-binary-check" value="true" />
- <option name="test-command-line" key="binderfs_arm_32" value="chmod 755 &ktest_dir;/filesystems/binderfs/binderfs_test; cd &ktest_dir;/filesystems/binderfs; ./binderfs_test" />
- <option name="test-command-line" key="capabilities_test_execve_arm_32" value="chmod 755 &ktest_dir;/capabilities/test_execve; cd &ktest_dir;/capabilities; ./test_execve" />
- <option name="test-command-line" key="futex_functional_run.sh_arm_32" value="chmod 755 &ktest_dir;/futex/functional/run.sh; cd &ktest_dir;/futex/functional; USE_COLOR=0 ./run.sh" />
- <option name="test-command-line" key="kcmp_kcmp_test_arm_32" value="chmod 755 &ktest_dir;/kcmp/kcmp_test; cd &ktest_dir;/kcmp; ./kcmp_test" />
- <option name="test-command-line" key="net_reuseaddr_conflict_arm_32" value="chmod 755 &ktest_dir;/net/reuseaddr_conflict; cd &ktest_dir;/net; ./reuseaddr_conflict" />
- <option name="test-command-line" key="net_socket_arm_32" value="chmod 755 &ktest_dir;/net/socket; cd &ktest_dir;/net; ./socket" />
- <option name="test-command-line" key="rtc_rtctest_arm_32" value="chmod 755 &ktest_dir;/rtc/rtctest; cd &ktest_dir;/rtc; ./rtctest" />
- <option name="test-command-line" key="seccomp_seccomp_bpf_arm_32" value="chmod 755 &ktest_dir;/seccomp/seccomp_bpf; cd &ktest_dir;/seccomp; ./seccomp_bpf" />
- <option name="test-command-line" key="size_get_size_arm_32" value="chmod 755 &ktest_dir;/size/get_size; cd &ktest_dir;/size; ./get_size" />
- <option name="test-command-line" key="splice_default_file_splice_read.sh_arm_32" value="chmod 755 &ktest_dir;/splice/default_file_splice_read.sh; cd &ktest_dir;/splice; ./default_file_splice_read.sh" />
- <option name="test-command-line" key="timers_inconsistency-check_arm_32" value="chmod 755 &ktest_dir;/timers/inconsistency-check; cd &ktest_dir;/timers; ./inconsistency-check" />
- <option name="test-command-line" key="timers_nanosleep_arm_32" value="chmod 755 &ktest_dir;/timers/nanosleep; cd &ktest_dir;/timers; ./nanosleep" />
- <option name="test-command-line" key="timers_nsleep-lat_arm_32" value="chmod 755 &ktest_dir;/timers/nsleep-lat; cd &ktest_dir;/timers; ./nsleep-lat" />
- <option name="test-command-line" key="timers_posix_timers_arm_32" value="chmod 755 &ktest_dir;/timers/posix_timers; cd &ktest_dir;/timers; ./posix_timers" />
- <option name="test-command-line" key="timers_raw_skew_arm_32" value="chmod 755 &ktest_dir;/timers/raw_skew; cd &ktest_dir;/timers; ./raw_skew" />
- <option name="test-command-line" key="timers_set-tai_arm_32" value="chmod 755 &ktest_dir;/timers/set-tai; cd &ktest_dir;/timers; ./set-tai" />
- <option name="test-command-line" key="timers_set-timer-lat_arm_32" value="chmod 755 &ktest_dir;/timers/set-timer-lat; cd &ktest_dir;/timers; ./set-timer-lat" />
- <option name="test-command-line" key="timers_threadtest_arm_32" value="chmod 755 &ktest_dir;/timers/threadtest; cd &ktest_dir;/timers; ./threadtest" />
- <option name="test-command-line" key="timers_valid-adjtimex_arm_32" value="chmod 755 &ktest_dir;/timers/valid-adjtimex; cd &ktest_dir;/timers; ./valid-adjtimex" />
- <option name="test-command-line" key="vm_mremap_dontunmap_arm_32" value="chmod 755 &ktest_dir;/vm/mremap_dontunmap; cd &ktest_dir;/vm; ./mremap_dontunmap" />
- <option name="test-command-line" key="vm_userfaultfd_anon_arm_32" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd anon 32 99" />
- <option name="test-command-line" key="vm_userfaultfd_shmem_arm_32" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd shmem 32 99" />
- </test>
-</configuration>
-
diff --git a/linux_kselftest/testcases/vts_linux_kselftest_arm_64.xml b/linux_kselftest/testcases/vts_linux_kselftest_arm_64.xml
deleted file mode 100644
index be1c8e4..0000000
--- a/linux_kselftest/testcases/vts_linux_kselftest_arm_64.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<!DOCTYPE configuration [
- <!ENTITY ktest_dir "/data/local/tmp/vts_kernel_kselftest_tests/DATA/nativetest64/linux-kselftest">
-]>
-<configuration description="Runs vts_linux_kselftest.">
- <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
- <target_preparer class="com.android.tradefed.targetprep.StopServicesSetup" />
-
- <object type="module_controller" class="com.android.tradefed.testtype.suite.module.KernelTestModuleController" >
- <option name="arch" value="arm64"/>
- </object>
-
- <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
- <option name="cleanup" value="true" />
- <option name="push" value="vts_kernel_kselftest_tests->/data/local/tmp/vts_kernel_kselftest_tests" />
- </target_preparer>
-
- <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
- <option name="run-command" value='find &ktest_dir; -type f | xargs grep -l -e "bin/sh" -e "bin/bash" | xargs sed -i -e "s?/bin/echo?echo?" -i -e "s?#!/bin/sh?#!/system/bin/sh?" -i -e "s?#!/bin/bash?#!/system/bin/sh?"' />
- </target_preparer>
-
- <test class="com.android.tradefed.testtype.binary.KernelTargetTest" >
- <option name="exit-code-skip" value="4" />
- <option name="skip-binary-check" value="true" />
- <option name="test-command-line" key="binderfs_arm_64" value="chmod 755 &ktest_dir;/filesystems/binderfs/binderfs_test; cd &ktest_dir;/filesystems/binderfs; ./binderfs_test" />
- <option name="test-command-line" key="breakpoints_breakpoint_test_arm64_arm_64" value="chmod 755 &ktest_dir;/breakpoints/breakpoint_test_arm64; cd &ktest_dir;/breakpoints; ./breakpoint_test_arm64" />
- <option name="test-command-line" key="capabilities_test_execve_arm_64" value="chmod 755 &ktest_dir;/capabilities/test_execve; cd &ktest_dir;/capabilities; ./test_execve" />
- <option name="test-command-line" key="futex_functional_run.sh_arm_64" value="chmod 755 &ktest_dir;/futex/functional/run.sh; cd &ktest_dir;/futex/functional; USE_COLOR=0 ./run.sh" />
- <option name="test-command-line" key="kcmp_kcmp_test_arm_64" value="chmod 755 &ktest_dir;/kcmp/kcmp_test; cd &ktest_dir;/kcmp; ./kcmp_test" />
- <option name="test-command-line" key="kvm_pvm_wipe_mem_arm_64" value="chmod 755 &ktest_dir;/kvm/aarch64/pvm_wipe_mem; cd &ktest_dir;/kvm/aarch64; ./pvm_wipe_mem" />
- <option name="test-command-line" key="net_psock_tpacket_arm_64" value="chmod 755 &ktest_dir;/net/psock_tpacket; cd &ktest_dir;/net; ./psock_tpacket" />
- <option name="test-command-line" key="net_reuseaddr_conflict_arm_64" value="chmod 755 &ktest_dir;/net/reuseaddr_conflict; cd &ktest_dir;/net; ./reuseaddr_conflict" />
- <option name="test-command-line" key="net_socket_arm_64" value="chmod 755 &ktest_dir;/net/socket; cd &ktest_dir;/net; ./socket" />
- <option name="test-command-line" key="ptrace_peeksiginfo_arm_64" value="chmod 755 &ktest_dir;/ptrace/peeksiginfo; cd &ktest_dir;/ptrace; ./peeksiginfo" />
- <option name="test-command-line" key="rtc_rtctest_arm_64" value="chmod 755 &ktest_dir;/rtc/rtctest; cd &ktest_dir;/rtc; ./rtctest" />
- <option name="test-command-line" key="seccomp_seccomp_bpf_arm_64" value="chmod 755 &ktest_dir;/seccomp/seccomp_bpf; cd &ktest_dir;/seccomp; ./seccomp_bpf" />
- <option name="test-command-line" key="size_get_size_arm_64" value="chmod 755 &ktest_dir;/size/get_size; cd &ktest_dir;/size; ./get_size" />
- <option name="test-command-line" key="splice_default_file_splice_read.sh_arm_64" value="chmod 755 &ktest_dir;/splice/default_file_splice_read.sh; cd &ktest_dir;/splice; ./default_file_splice_read.sh" />
- <option name="test-command-line" key="timers_inconsistency-check_arm_64" value="chmod 755 &ktest_dir;/timers/inconsistency-check; cd &ktest_dir;/timers; ./inconsistency-check" />
- <option name="test-command-line" key="timers_nanosleep_arm_64" value="chmod 755 &ktest_dir;/timers/nanosleep; cd &ktest_dir;/timers; ./nanosleep" />
- <option name="test-command-line" key="timers_nsleep-lat_arm_64" value="chmod 755 &ktest_dir;/timers/nsleep-lat; cd &ktest_dir;/timers; ./nsleep-lat" />
- <option name="test-command-line" key="timers_posix_timers_arm_64" value="chmod 755 &ktest_dir;/timers/posix_timers; cd &ktest_dir;/timers; ./posix_timers" />
- <option name="test-command-line" key="timers_raw_skew_arm_64" value="chmod 755 &ktest_dir;/timers/raw_skew; cd &ktest_dir;/timers; ./raw_skew" />
- <option name="test-command-line" key="timers_set-tai_arm_64" value="chmod 755 &ktest_dir;/timers/set-tai; cd &ktest_dir;/timers; ./set-tai" />
- <option name="test-command-line" key="timers_set-timer-lat_arm_64" value="chmod 755 &ktest_dir;/timers/set-timer-lat; cd &ktest_dir;/timers; ./set-timer-lat" />
- <option name="test-command-line" key="timers_threadtest_arm_64" value="chmod 755 &ktest_dir;/timers/threadtest; cd &ktest_dir;/timers; ./threadtest" />
- <option name="test-command-line" key="timers_valid-adjtimex_arm_64" value="chmod 755 &ktest_dir;/timers/valid-adjtimex; cd &ktest_dir;/timers; ./valid-adjtimex" />
- <option name="test-command-line" key="vDSO_kselftest_vdso_test_abi_arm_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_abi; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_abi" />
- <option name="test-command-line" key="vDSO_kselftest_vdso_test_clock_getres_arm_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_clock_getres; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_clock_getres" />
- <option name="test-command-line" key="vDSO_kselftest_vdso_test_getcpu_arm_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_getcpu; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_getcpu" />
- <option name="test-command-line" key="vDSO_kselftest_vdso_test_gettimeofday_arm_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_gettimeofday; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_gettimeofday" />
- <option name="test-command-line" key="vm_mremap_dontunmap_arm_64" value="chmod 755 &ktest_dir;/vm/mremap_dontunmap; cd &ktest_dir;/vm; ./mremap_dontunmap" />
- <option name="test-command-line" key="vm_mremap_test_arm_64" value="chmod 755 &ktest_dir;/vm/mremap_test; cd &ktest_dir;/vm; ./mremap_test" />
- <option name="test-command-line" key="vm_userfaultfd_anon_arm_64" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd anon 32 99" />
- <option name="test-command-line" key="vm_userfaultfd_shmem_arm_64" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd shmem 32 99" />
- </test>
-</configuration>
-
diff --git a/linux_kselftest/testcases/vts_linux_kselftest_riscv_64.xml b/linux_kselftest/testcases/vts_linux_kselftest_riscv_64.xml
deleted file mode 100644
index 6339073..0000000
--- a/linux_kselftest/testcases/vts_linux_kselftest_riscv_64.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<!DOCTYPE configuration [
- <!ENTITY ktest_dir "/data/local/tmp/vts_kernel_tests/DATA/nativetest64/linux-kselftest">
-]>
-<configuration description="Runs vts_linux_kselftest.">
- <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
- <target_preparer class="com.android.tradefed.targetprep.StopServicesSetup" />
-
- <object type="module_controller" class="com.android.tradefed.testtype.suite.module.KernelTestModuleController" >
- <option name="arch" value="riscv64"/>
- </object>
-
- <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
- <option name="cleanup" value="true" />
- <option name="push" value="vts_kernel_tests->/data/local/tmp/vts_kernel_tests" />
- </target_preparer>
-
- <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
- <option name="run-command" value='find &ktest_dir; -type f | xargs grep -l -e "bin/sh" -e "bin/bash" | xargs sed -i -e "s?/bin/echo?echo?" -i -e "s?#!/bin/sh?#!/system/bin/sh?" -i -e "s?#!/bin/bash?#!/system/bin/sh?"' />
- </target_preparer>
-
- <test class="com.android.tradefed.testtype.binary.ExecutableTargetTest" >
- <option name="test-command-line" key="capabilities_test_execve_riscv_64" value="chmod 755 &ktest_dir;/capabilities/test_execve; cd &ktest_dir;/capabilities; ./test_execve" />
- <option name="test-command-line" key="futex_functional_run.sh_riscv_64" value="chmod 755 &ktest_dir;/futex/functional/run.sh; cd &ktest_dir;/futex/functional; ./run.sh" />
- <option name="test-command-line" key="kcmp_kcmp_test_riscv_64" value="chmod 755 &ktest_dir;/kcmp/kcmp_test; cd &ktest_dir;/kcmp; ./kcmp_test" />
- <option name="test-command-line" key="net_psock_tpacket_riscv_64" value="chmod 755 &ktest_dir;/net/psock_tpacket; cd &ktest_dir;/net; ./psock_tpacket" />
- <option name="test-command-line" key="net_reuseaddr_conflict_riscv_64" value="chmod 755 &ktest_dir;/net/reuseaddr_conflict; cd &ktest_dir;/net; ./reuseaddr_conflict" />
- <option name="test-command-line" key="net_socket_riscv_64" value="chmod 755 &ktest_dir;/net/socket; cd &ktest_dir;/net; ./socket" />
- <option name="test-command-line" key="ptrace_peeksiginfo_riscv_64" value="chmod 755 &ktest_dir;/ptrace/peeksiginfo; cd &ktest_dir;/ptrace; ./peeksiginfo" />
- <option name="test-command-line" key="rtc_rtctest_riscv_64" value="chmod 755 &ktest_dir;/rtc/rtctest; cd &ktest_dir;/rtc; ./rtctest" />
- <option name="test-command-line" key="seccomp_seccomp_bpf_riscv_64" value="chmod 755 &ktest_dir;/seccomp/seccomp_bpf; cd &ktest_dir;/seccomp; ./seccomp_bpf" />
- <option name="test-command-line" key="size_get_size_riscv_64" value="chmod 755 &ktest_dir;/size/get_size; cd &ktest_dir;/size; ./get_size" />
- <option name="test-command-line" key="splice_default_file_splice_read.sh_riscv_64" value="chmod 755 &ktest_dir;/splice/default_file_splice_read.sh; cd &ktest_dir;/splice; ./default_file_splice_read.sh" />
- <option name="test-command-line" key="timers_inconsistency-check_riscv_64" value="chmod 755 &ktest_dir;/timers/inconsistency-check; cd &ktest_dir;/timers; ./inconsistency-check" />
- <option name="test-command-line" key="timers_nanosleep_riscv_64" value="chmod 755 &ktest_dir;/timers/nanosleep; cd &ktest_dir;/timers; ./nanosleep" />
- <option name="test-command-line" key="timers_nsleep-lat_riscv_64" value="chmod 755 &ktest_dir;/timers/nsleep-lat; cd &ktest_dir;/timers; ./nsleep-lat" />
- <option name="test-command-line" key="timers_posix_timers_riscv_64" value="chmod 755 &ktest_dir;/timers/posix_timers; cd &ktest_dir;/timers; ./posix_timers" />
- <option name="test-command-line" key="timers_raw_skew_riscv_64" value="chmod 755 &ktest_dir;/timers/raw_skew; cd &ktest_dir;/timers; ./raw_skew" />
- <option name="test-command-line" key="timers_set-tai_riscv_64" value="chmod 755 &ktest_dir;/timers/set-tai; cd &ktest_dir;/timers; ./set-tai" />
- <option name="test-command-line" key="timers_set-timer-lat_riscv_64" value="chmod 755 &ktest_dir;/timers/set-timer-lat; cd &ktest_dir;/timers; ./set-timer-lat" />
- <option name="test-command-line" key="timers_threadtest_riscv_64" value="chmod 755 &ktest_dir;/timers/threadtest; cd &ktest_dir;/timers; ./threadtest" />
- <option name="test-command-line" key="timers_valid-adjtimex_riscv_64" value="chmod 755 &ktest_dir;/timers/valid-adjtimex; cd &ktest_dir;/timers; ./valid-adjtimex" />
- <option name="test-command-line" key="vDSO_kselftest_vdso_test_riscv_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test; cd &ktest_dir;/vDSO; ./kselftest_vdso_test" />
- </test>
-</configuration>
-
diff --git a/linux_kselftest/testcases/vts_linux_kselftest_x86_32.xml b/linux_kselftest/testcases/vts_linux_kselftest_x86_32.xml
deleted file mode 100644
index 8b24dff..0000000
--- a/linux_kselftest/testcases/vts_linux_kselftest_x86_32.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<!DOCTYPE configuration [
- <!ENTITY ktest_dir "/data/local/tmp/vts_kernel_kselftest_tests/DATA/nativetest/linux-kselftest">
-]>
-<configuration description="Runs vts_linux_kselftest.">
- <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
- <target_preparer class="com.android.tradefed.targetprep.StopServicesSetup" />
-
- <object type="module_controller" class="com.android.tradefed.testtype.suite.module.KernelTestModuleController" >
- <option name="arch" value="x86"/>
- </object>
-
- <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
- <option name="cleanup" value="true" />
- <option name="push-file" key="vts_kernel_kselftest_tests" value="/data/local/tmp/vts_kernel_kselftest_tests" />
- <option name="skip-abi-filtering" value="true" />
- </target_preparer>
-
- <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
- <option name="run-command" value='find &ktest_dir; -type f | xargs grep -l -e "bin/sh" -e "bin/bash" | xargs sed -i -e "s?/bin/echo?echo?" -i -e "s?#!/bin/sh?#!/system/bin/sh?" -i -e "s?#!/bin/bash?#!/system/bin/sh?"' />
- </target_preparer>
-
- <test class="com.android.tradefed.testtype.binary.KernelTargetTest" >
- <option name="exit-code-skip" value="4" />
- <option name="skip-binary-check" value="true" />
- <option name="test-command-line" key="binderfs_x86_32" value="chmod 755 &ktest_dir;/filesystems/binderfs/binderfs_test; cd &ktest_dir;/filesystems/binderfs; ./binderfs_test" />
- <option name="test-command-line" key="capabilities_test_execve_x86_32" value="chmod 755 &ktest_dir;/capabilities/test_execve; cd &ktest_dir;/capabilities; ./test_execve" />
- <option name="test-command-line" key="futex_functional_run.sh_x86_32" value="chmod 755 &ktest_dir;/futex/functional/run.sh; cd &ktest_dir;/futex/functional; USE_COLOR=0 ./run.sh" />
- <option name="test-command-line" key="kcmp_kcmp_test_x86_32" value="chmod 755 &ktest_dir;/kcmp/kcmp_test; cd &ktest_dir;/kcmp; ./kcmp_test" />
- <option name="test-command-line" key="net_reuseaddr_conflict_x86_32" value="chmod 755 &ktest_dir;/net/reuseaddr_conflict; cd &ktest_dir;/net; ./reuseaddr_conflict" />
- <option name="test-command-line" key="net_socket_x86_32" value="chmod 755 &ktest_dir;/net/socket; cd &ktest_dir;/net; ./socket" />
- <option name="test-command-line" key="rtc_rtctest_x86_32" value="chmod 755 &ktest_dir;/rtc/rtctest; cd &ktest_dir;/rtc; ./rtctest" />
- <option name="test-command-line" key="seccomp_seccomp_bpf_x86_32" value="chmod 755 &ktest_dir;/seccomp/seccomp_bpf; cd &ktest_dir;/seccomp; ./seccomp_bpf" />
- <option name="test-command-line" key="size_get_size_x86_32" value="chmod 755 &ktest_dir;/size/get_size; cd &ktest_dir;/size; ./get_size" />
- <option name="test-command-line" key="splice_default_file_splice_read.sh_x86_32" value="chmod 755 &ktest_dir;/splice/default_file_splice_read.sh; cd &ktest_dir;/splice; ./default_file_splice_read.sh" />
- <option name="test-command-line" key="timers_inconsistency-check_x86_32" value="chmod 755 &ktest_dir;/timers/inconsistency-check; cd &ktest_dir;/timers; ./inconsistency-check" />
- <option name="test-command-line" key="timers_nanosleep_x86_32" value="chmod 755 &ktest_dir;/timers/nanosleep; cd &ktest_dir;/timers; ./nanosleep" />
- <option name="test-command-line" key="timers_nsleep-lat_x86_32" value="chmod 755 &ktest_dir;/timers/nsleep-lat; cd &ktest_dir;/timers; ./nsleep-lat" />
- <option name="test-command-line" key="timers_posix_timers_x86_32" value="chmod 755 &ktest_dir;/timers/posix_timers; cd &ktest_dir;/timers; ./posix_timers" />
- <option name="test-command-line" key="timers_raw_skew_x86_32" value="chmod 755 &ktest_dir;/timers/raw_skew; cd &ktest_dir;/timers; ./raw_skew" />
- <option name="test-command-line" key="timers_set-tai_x86_32" value="chmod 755 &ktest_dir;/timers/set-tai; cd &ktest_dir;/timers; ./set-tai" />
- <option name="test-command-line" key="timers_set-timer-lat_x86_32" value="chmod 755 &ktest_dir;/timers/set-timer-lat; cd &ktest_dir;/timers; ./set-timer-lat" />
- <option name="test-command-line" key="timers_threadtest_x86_32" value="chmod 755 &ktest_dir;/timers/threadtest; cd &ktest_dir;/timers; ./threadtest" />
- <option name="test-command-line" key="timers_valid-adjtimex_x86_32" value="chmod 755 &ktest_dir;/timers/valid-adjtimex; cd &ktest_dir;/timers; ./valid-adjtimex" />
- <option name="test-command-line" key="x86_single_step_syscall_x86_32" value="chmod 755 &ktest_dir;/x86/single_step_syscall; cd &ktest_dir;/x86; ./single_step_syscall" />
- <option name="test-command-line" key="x86_sysret_ss_attrs_x86_32" value="chmod 755 &ktest_dir;/x86/sysret_ss_attrs; cd &ktest_dir;/x86; ./sysret_ss_attrs" />
- <option name="test-command-line" key="x86_syscall_nt_x86_32" value="chmod 755 &ktest_dir;/x86/syscall_nt; cd &ktest_dir;/x86; ./syscall_nt" />
- <option name="test-command-line" key="x86_ptrace_syscall_x86_32" value="chmod 755 &ktest_dir;/x86/ptrace_syscall; cd &ktest_dir;/x86; ./ptrace_syscall" />
- <option name="test-command-line" key="x86_test_mremap_vdso_x86_32" value="chmod 755 &ktest_dir;/x86/test_mremap_vdso; cd &ktest_dir;/x86; ./test_mremap_vdso" />
- <option name="test-command-line" key="x86_check_initial_reg_state_x86_32" value="chmod 755 &ktest_dir;/x86/check_initial_reg_state; cd &ktest_dir;/x86; ./check_initial_reg_state" />
- <option name="test-command-line" key="x86_ldt_gdt_x86_32" value="chmod 755 &ktest_dir;/x86/ldt_gdt; cd &ktest_dir;/x86; ./ldt_gdt" />
- <option name="test-command-line" key="x86_syscall_arg_fault_x86_32" value="chmod 755 &ktest_dir;/x86/syscall_arg_fault; cd &ktest_dir;/x86; ./syscall_arg_fault" />
- <option name="test-command-line" key="x86_test_syscall_vdso_x86_32" value="chmod 755 &ktest_dir;/x86/test_syscall_vdso; cd &ktest_dir;/x86; ./test_syscall_vdso" />
- <option name="test-command-line" key="x86_unwind_vdso_x86_32" value="chmod 755 &ktest_dir;/x86/unwind_vdso; cd &ktest_dir;/x86; ./unwind_vdso" />
- <option name="test-command-line" key="x86_test_FCMOV_x86_32" value="chmod 755 &ktest_dir;/x86/test_FCMOV; cd &ktest_dir;/x86; ./test_FCMOV" />
- <option name="test-command-line" key="x86_test_FCOMI_x86_32" value="chmod 755 &ktest_dir;/x86/test_FCOMI; cd &ktest_dir;/x86; ./test_FCOMI" />
- <option name="test-command-line" key="x86_test_FISTTP_x86_32" value="chmod 755 &ktest_dir;/x86/test_FISTTP; cd &ktest_dir;/x86; ./test_FISTTP" />
- <option name="test-command-line" key="x86_vdso_restorer_x86_32" value="chmod 755 &ktest_dir;/x86/vdso_restorer; cd &ktest_dir;/x86; ./vdso_restorer" />
- <option name="test-command-line" key="vm_mremap_dontunmap_x86_32" value="chmod 755 &ktest_dir;/vm/mremap_dontunmap; cd &ktest_dir;/vm; ./mremap_dontunmap" />
- <option name="test-command-line" key="vm_userfaultfd_anon_x86_32" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd anon 32 99" />
- <option name="test-command-line" key="vm_userfaultfd_shmem_x86_32" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd shmem 32 99" />
- </test>
-</configuration>
-
diff --git a/linux_kselftest/testcases/vts_linux_kselftest_x86_64.xml b/linux_kselftest/testcases/vts_linux_kselftest_x86_64.xml
deleted file mode 100644
index 9dd513c..0000000
--- a/linux_kselftest/testcases/vts_linux_kselftest_x86_64.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<!DOCTYPE configuration [
- <!ENTITY ktest_dir "/data/local/tmp/vts_kernel_kselftest_tests/DATA/nativetest64/linux-kselftest">
-]>
-<configuration description="Runs vts_linux_kselftest.">
- <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
- <target_preparer class="com.android.tradefed.targetprep.StopServicesSetup" />
-
- <object type="module_controller" class="com.android.tradefed.testtype.suite.module.KernelTestModuleController" >
- <option name="arch" value="x86_64"/>
- </object>
-
- <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
- <option name="cleanup" value="true" />
- <option name="push-file" key="vts_kernel_kselftest_tests" value="/data/local/tmp/vts_kernel_kselftest_tests" />
- <option name="skip-abi-filtering" value="true" />
- </target_preparer>
-
- <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
- <option name="run-command" value='find &ktest_dir; -type f | xargs grep -l -e "bin/sh" -e "bin/bash" | xargs sed -i -e "s?/bin/echo?echo?" -i -e "s?#!/bin/sh?#!/system/bin/sh?" -i -e "s?#!/bin/bash?#!/system/bin/sh?"' />
- </target_preparer>
-
- <test class="com.android.tradefed.testtype.binary.KernelTargetTest" >
- <option name="exit-code-skip" value="4" />
- <option name="skip-binary-check" value="true" />
- <option name="test-command-line" key="binderfs_x86_64" value="chmod 755 &ktest_dir;/filesystems/binderfs/binderfs_test; cd &ktest_dir;/filesystems/binderfs; ./binderfs_test" />
- <option name="test-command-line" key="capabilities_test_execve_x86_64" value="chmod 755 &ktest_dir;/capabilities/test_execve; cd &ktest_dir;/capabilities; ./test_execve" />
- <option name="test-command-line" key="futex_functional_run.sh_x86_64" value="chmod 755 &ktest_dir;/futex/functional/run.sh; cd &ktest_dir;/futex/functional; USE_COLOR=0 ./run.sh" />
- <option name="test-command-line" key="kcmp_kcmp_test_x86_64" value="chmod 755 &ktest_dir;/kcmp/kcmp_test; cd &ktest_dir;/kcmp; ./kcmp_test" />
- <option name="test-command-line" key="net_psock_tpacket_x86_64" value="chmod 755 &ktest_dir;/net/psock_tpacket; cd &ktest_dir;/net; ./psock_tpacket" />
- <option name="test-command-line" key="net_reuseaddr_conflict_x86_64" value="chmod 755 &ktest_dir;/net/reuseaddr_conflict; cd &ktest_dir;/net; ./reuseaddr_conflict" />
- <option name="test-command-line" key="net_socket_x86_64" value="chmod 755 &ktest_dir;/net/socket; cd &ktest_dir;/net; ./socket" />
- <option name="test-command-line" key="ptrace_peeksiginfo_x86_64" value="chmod 755 &ktest_dir;/ptrace/peeksiginfo; cd &ktest_dir;/ptrace; ./peeksiginfo" />
- <option name="test-command-line" key="rtc_rtctest_x86_64" value="chmod 755 &ktest_dir;/rtc/rtctest; cd &ktest_dir;/rtc; ./rtctest" />
- <option name="test-command-line" key="seccomp_seccomp_bpf_x86_64" value="chmod 755 &ktest_dir;/seccomp/seccomp_bpf; cd &ktest_dir;/seccomp; ./seccomp_bpf" />
- <option name="test-command-line" key="size_get_size_x86_64" value="chmod 755 &ktest_dir;/size/get_size; cd &ktest_dir;/size; ./get_size" />
- <option name="test-command-line" key="splice_default_file_splice_read.sh_x86_64" value="chmod 755 &ktest_dir;/splice/default_file_splice_read.sh; cd &ktest_dir;/splice; ./default_file_splice_read.sh" />
- <option name="test-command-line" key="timers_inconsistency-check_x86_64" value="chmod 755 &ktest_dir;/timers/inconsistency-check; cd &ktest_dir;/timers; ./inconsistency-check" />
- <option name="test-command-line" key="timers_nanosleep_x86_64" value="chmod 755 &ktest_dir;/timers/nanosleep; cd &ktest_dir;/timers; ./nanosleep" />
- <option name="test-command-line" key="timers_nsleep-lat_x86_64" value="chmod 755 &ktest_dir;/timers/nsleep-lat; cd &ktest_dir;/timers; ./nsleep-lat" />
- <option name="test-command-line" key="timers_posix_timers_x86_64" value="chmod 755 &ktest_dir;/timers/posix_timers; cd &ktest_dir;/timers; ./posix_timers" />
- <option name="test-command-line" key="timers_raw_skew_x86_64" value="chmod 755 &ktest_dir;/timers/raw_skew; cd &ktest_dir;/timers; ./raw_skew" />
- <option name="test-command-line" key="timers_set-tai_x86_64" value="chmod 755 &ktest_dir;/timers/set-tai; cd &ktest_dir;/timers; ./set-tai" />
- <option name="test-command-line" key="timers_set-timer-lat_x86_64" value="chmod 755 &ktest_dir;/timers/set-timer-lat; cd &ktest_dir;/timers; ./set-timer-lat" />
- <option name="test-command-line" key="timers_threadtest_x86_64" value="chmod 755 &ktest_dir;/timers/threadtest; cd &ktest_dir;/timers; ./threadtest" />
- <option name="test-command-line" key="timers_valid-adjtimex_x86_64" value="chmod 755 &ktest_dir;/timers/valid-adjtimex; cd &ktest_dir;/timers; ./valid-adjtimex" />
- <option name="test-command-line" key="vDSO_kselftest_vdso_test_abi_x86_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_abi; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_abi" />
- <option name="test-command-line" key="vDSO_kselftest_vdso_test_clock_getres_x86_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_clock_getres; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_clock_getres" />
- <option name="test-command-line" key="vDSO_kselftest_vdso_test_getcpu_x86_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_getcpu; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_getcpu" />
- <option name="test-command-line" key="vDSO_kselftest_vdso_test_gettimeofday_x86_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_gettimeofday; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_gettimeofday" />
- <option name="test-command-line" key="x86_single_step_syscall_x86_64" value="chmod 755 &ktest_dir;/x86/single_step_syscall; cd &ktest_dir;/x86; ./single_step_syscall" />
- <option name="test-command-line" key="x86_syscall_nt_x86_64" value="chmod 755 &ktest_dir;/x86/syscall_nt; cd &ktest_dir;/x86; ./syscall_nt" />
- <option name="test-command-line" key="x86_ptrace_syscall_x86_64" value="chmod 755 &ktest_dir;/x86/ptrace_syscall; cd &ktest_dir;/x86; ./ptrace_syscall" />
- <option name="test-command-line" key="x86_test_mremap_vdso_x86_64" value="chmod 755 &ktest_dir;/x86/test_mremap_vdso; cd &ktest_dir;/x86; ./test_mremap_vdso" />
- <option name="test-command-line" key="x86_check_initial_reg_state_x86_64" value="chmod 755 &ktest_dir;/x86/check_initial_reg_state; cd &ktest_dir;/x86; ./check_initial_reg_state" />
- <option name="test-command-line" key="x86_ldt_gdt_x86_64" value="chmod 755 &ktest_dir;/x86/ldt_gdt; cd &ktest_dir;/x86; ./ldt_gdt" />
- <option name="test-command-line" key="vm_mremap_dontunmap_x86_64" value="chmod 755 &ktest_dir;/vm/mremap_dontunmap; cd &ktest_dir;/vm; ./mremap_dontunmap" />
- <option name="test-command-line" key="vm_mremap_test_x86_64" value="chmod 755 &ktest_dir;/vm/mremap_test; cd &ktest_dir;/vm; ./mremap_test" />
- <option name="test-command-line" key="vm_userfaultfd_anon_x86_64" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd anon 32 99" />
- <option name="test-command-line" key="vm_userfaultfd_shmem_x86_64" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd shmem 32 99" />
- </test>
-</configuration>
-
diff --git a/loop/TEST_MAPPING b/loop/TEST_MAPPING
new file mode 100644
index 0000000..f443dfc
--- /dev/null
+++ b/loop/TEST_MAPPING
@@ -0,0 +1,12 @@
+{
+ "postsubmit": [
+ {
+ "name": "vts_kernel_loopconfig_test"
+ }
+ ],
+ "kernel-presubmit": [
+ {
+ "name": "vts_kernel_loopconfig_test"
+ }
+ ]
+}
diff --git a/ltp/OWNERS b/ltp/OWNERS
index df9e29c..66f12c4 100644
--- a/ltp/OWNERS
+++ b/ltp/OWNERS
@@ -3,4 +3,3 @@
[email protected]
[email protected]
[email protected]
[email protected]
diff --git a/ltp/TEST_MAPPING b/ltp/TEST_MAPPING
new file mode 100644
index 0000000..621dd29
--- /dev/null
+++ b/ltp/TEST_MAPPING
@@ -0,0 +1,1050 @@
+{
+ "presubmit": [
+ {
+ "name": "vts_ltp_test_arm",
+ "options": [
+ {
+ // vts_slow_ltp_tests_arm
+ "exclude-filter": "controllers.memcg_regression_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2011-0999_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2015-7550_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2016-7117_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2017-2671_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio15_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio16_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio17_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio19_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio20_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio21_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio23_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio24_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio25_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio27_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio28_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_di_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_fill_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_inod01_32bit"
+ },
+ {
+ "exclude-filter": "fs.linker01_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress01_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress06_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress09_32bit"
+ },
+ {
+ "exclude-filter": "mm.mtest06_32bit"
+ },
+ {
+ "exclude-filter": "mm.mtest06_32bit"
+ },
+ {
+ "exclude-filter": "nptl.nptl01_32bit"
+ },
+ {
+ "exclude-filter": "pty.pty01_32bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench01_32bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.copy_file_range01_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.fallocate05_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.fcntl15_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.fcntl15_64_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.gettimeofday02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.inotify09_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.keyctl02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.kill02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.mkdir09_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.readahead02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.waitid01_32bit"
+ }
+ ]
+ },
+ {
+ "name": "vts_ltp_test_arm_64",
+ "options": [
+ {
+ // vts_slow_ltp_tests_arm
+ "exclude-filter": "controllers.memcg_regression_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2011-0999_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2015-7550_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2016-7117_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2017-2671_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio15_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio16_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio17_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio19_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio20_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio21_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio23_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio24_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio25_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio27_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio28_64bit"
+ },
+ {
+ "exclude-filter": "fs.fs_di_64bit"
+ },
+ {
+ "exclude-filter": "fs.fs_fill_64bit"
+ },
+ {
+ "exclude-filter": "fs.fs_inod01_64bit"
+ },
+ {
+ "exclude-filter": "fs.linker01_64bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress01_64bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress06_64bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress09_64bit"
+ },
+ {
+ "exclude-filter": "nptl.nptl01_64bit"
+ },
+ {
+ "exclude-filter": "pty.pty01_64bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench01_64bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.copy_file_range01_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.fallocate05_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.fcntl15_64_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.fcntl15_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.gettimeofday02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.inotify09_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.keyctl02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.kill02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.mkdir09_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.readahead02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.waitid01_64bit"
+ }
+ ]
+ },
+ {
+ "name": "vts_ltp_test_x86",
+ "options": [
+ {
+ // vts_slow_ltp_tests_x86
+ "exclude-filter": "controllers.memcg_regression_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2011-0999_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2015-7550_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2016-7117_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2017-2671_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio15_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio16_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio17_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio19_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio20_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio21_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio23_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio24_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio25_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio27_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio28_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_di_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_fill_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_inod01_32bit"
+ },
+ {
+ "exclude-filter": "fs.linker01_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress01_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress06_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress09_32bit"
+ },
+ {
+ "exclude-filter": "mm.mtest06_32bit"
+ },
+ {
+ "exclude-filter": "nptl.nptl01_32bit"
+ },
+ {
+ "exclude-filter": "pty.pty01_32bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench01_32bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.clock_nanosleep02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.copy_file_range01_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.fallocate05_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.fcntl15_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.gettimeofday02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.inotify09_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.keyctl02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.kill02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.mkdir09_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.nanosleep01_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.poll02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.readahead02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.select04_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.waitid01_32bit"
+ }
+ ]
+ },
+ {
+ "name": "vts_ltp_test_x86_64",
+ "options": [
+ {
+ // vts_slow_ltp_tests_x86
+ "exclude-filter": "cve.cve-2011-0999_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2015-7550_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2016-7117_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2017-2671_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio01_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio02_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio03_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio04_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio05_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio06_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio07_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio08_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio09_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio10_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio11_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio12_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio13_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio14_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio15_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio16_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio17_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio18_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio19_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio20_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio21_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio22_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio23_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio24_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio25_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio26_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio27_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio28_64bit"
+ },
+ {
+ "exclude-filter": "fs.fs_fill_64bit"
+ },
+ {
+ "exclude-filter": "fs.fs_inod01_64bit"
+ },
+ {
+ "exclude-filter": "fs.linker01_64bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress06_64bit"
+ },
+ {
+ "exclude-filter": "mm.mtest06_64bit"
+ },
+ {
+ "exclude-filter": "nptl.nptl01_64bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench01_64bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.clock_nanosleep02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.inotify09_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.keyctl02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.nanosleep01_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.poll02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.select04_64bit"
+ }
+ ]
+ }
+ ],
+ "kernel-presubmit": [
+ {
+ "name": "vts_ltp_test_arm",
+ "options": [
+ {
+ // vts_slow_ltp_tests_arm
+ "exclude-filter": "controllers.memcg_regression_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2011-0999_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2015-7550_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2016-7117_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2017-2671_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio15_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio16_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio17_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio19_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio20_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio21_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio23_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio24_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio25_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio27_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio28_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_di_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_fill_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_inod01_32bit"
+ },
+ {
+ "exclude-filter": "fs.linker01_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress01_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress06_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress09_32bit"
+ },
+ {
+ "exclude-filter": "mm.mtest06_32bit"
+ },
+ {
+ "exclude-filter": "mm.mtest06_32bit"
+ },
+ {
+ "exclude-filter": "nptl.nptl01_32bit"
+ },
+ {
+ "exclude-filter": "pty.pty01_32bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench01_32bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.copy_file_range01_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.fallocate05_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.fcntl15_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.fcntl15_64_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.gettimeofday02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.inotify09_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.keyctl02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.kill02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.mkdir09_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.readahead02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.waitid01_32bit"
+ }
+ ]
+ },
+ {
+ "name": "vts_ltp_test_arm_64",
+ "options": [
+ {
+ // vts_slow_ltp_tests_arm
+ "exclude-filter": "controllers.memcg_regression_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2011-0999_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2015-7550_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2016-7117_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2017-2671_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio15_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio16_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio17_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio19_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio20_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio21_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio23_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio24_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio25_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio27_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio28_64bit"
+ },
+ {
+ "exclude-filter": "fs.fs_di_64bit"
+ },
+ {
+ "exclude-filter": "fs.fs_fill_64bit"
+ },
+ {
+ "exclude-filter": "fs.fs_inod01_64bit"
+ },
+ {
+ "exclude-filter": "fs.linker01_64bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress01_64bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress06_64bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress09_64bit"
+ },
+ {
+ "exclude-filter": "nptl.nptl01_64bit"
+ },
+ {
+ "exclude-filter": "pty.pty01_64bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench01_64bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.copy_file_range01_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.fallocate05_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.fcntl15_64_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.fcntl15_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.gettimeofday02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.inotify09_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.keyctl02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.kill02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.mkdir09_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.readahead02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.waitid01_64bit"
+ }
+ ]
+ },
+ {
+ "name": "vts_ltp_test_x86",
+ "options": [
+ {
+ // vts_slow_ltp_tests_x86
+ "exclude-filter": "controllers.memcg_regression_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2011-0999_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2015-7550_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2016-7117_32bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2017-2671_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio15_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio16_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio17_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio19_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio20_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio21_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio23_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio24_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio25_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio27_32bit"
+ },
+ {
+ "exclude-filter": "dio.dio28_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_di_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_fill_32bit"
+ },
+ {
+ "exclude-filter": "fs.fs_inod01_32bit"
+ },
+ {
+ "exclude-filter": "fs.linker01_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress01_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress06_32bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress09_32bit"
+ },
+ {
+ "exclude-filter": "mm.mtest06_32bit"
+ },
+ {
+ "exclude-filter": "nptl.nptl01_32bit"
+ },
+ {
+ "exclude-filter": "pty.pty01_32bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench01_32bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.clock_nanosleep02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.copy_file_range01_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.fallocate05_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.fcntl15_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.gettimeofday02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.inotify09_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.keyctl02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.kill02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.mkdir09_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.nanosleep01_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.poll02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.readahead02_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.select04_32bit"
+ },
+ {
+ "exclude-filter": "syscalls.waitid01_32bit"
+ }
+ ]
+ },
+ {
+ "name": "vts_ltp_test_x86_64",
+ "options": [
+ {
+ // vts_slow_ltp_tests_x86
+ "exclude-filter": "cve.cve-2011-0999_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2015-7550_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2016-7117_64bit"
+ },
+ {
+ "exclude-filter": "cve.cve-2017-2671_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio01_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio02_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio03_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio04_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio05_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio06_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio07_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio08_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio09_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio10_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio11_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio12_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio13_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio14_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio15_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio16_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio17_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio18_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio19_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio20_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio21_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio22_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio23_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio24_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio25_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio26_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio27_64bit"
+ },
+ {
+ "exclude-filter": "dio.dio28_64bit"
+ },
+ {
+ "exclude-filter": "fs.fs_fill_64bit"
+ },
+ {
+ "exclude-filter": "fs.fs_inod01_64bit"
+ },
+ {
+ "exclude-filter": "fs.linker01_64bit"
+ },
+ {
+ "exclude-filter": "mm.mmapstress06_64bit"
+ },
+ {
+ "exclude-filter": "mm.mtest06_64bit"
+ },
+ {
+ "exclude-filter": "nptl.nptl01_64bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench01_64bit"
+ },
+ {
+ "exclude-filter": "sched.hackbench02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.clock_nanosleep02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.inotify09_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.keyctl02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.nanosleep01_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.poll02_64bit"
+ },
+ {
+ "exclude-filter": "syscalls.select04_64bit"
+ }
+ ]
+ }
+ ]
+}
diff --git a/ltp/testcase/Android.bp b/ltp/testcase/Android.bp
index a4aec2a..2f06c08 100644
--- a/ltp/testcase/Android.bp
+++ b/ltp/testcase/Android.bp
@@ -31,12 +31,8 @@
genrule {
name: "ltp_config_arm_64",
out: ["vts_ltp_test_arm_64.xml"],
- tool_files: [
- "tools/gen_ltp_config.py",
- "tools/**/*.py",
- "tools/template/template.xml",
- ],
- cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 64 --low-mem False --hwasan False $(out)",
+ tools: ["gen_ltp_config"],
+ cmd: "$(location gen_ltp_config) --arch arm --bitness 64 --low-mem False --hwasan False $(out)",
}
sh_test {
@@ -52,12 +48,8 @@
genrule {
name: "ltp_config_arm_64_lowmem",
out: ["vts_ltp_test_arm_64_lowmem.xml"],
- tool_files: [
- "tools/gen_ltp_config.py",
- "tools/**/*.py",
- "tools/template/template.xml",
- ],
- cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 64 --low-mem True --hwasan False $(out)",
+ tools: ["gen_ltp_config"],
+ cmd: "$(location gen_ltp_config) --arch arm --bitness 64 --low-mem True --hwasan False $(out)",
}
sh_test {
@@ -73,12 +65,8 @@
genrule {
name: "ltp_config_arm_64_hwasan",
out: ["vts_ltp_test_arm_64_hwasan.xml"],
- tool_files: [
- "tools/gen_ltp_config.py",
- "tools/**/*.py",
- "tools/template/template.xml",
- ],
- cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 64 --low-mem False --hwasan True $(out)",
+ tools: ["gen_ltp_config"],
+ cmd: "$(location gen_ltp_config) --arch arm --bitness 64 --low-mem False --hwasan True $(out)",
}
sh_test {
@@ -94,12 +82,8 @@
genrule {
name: "ltp_config_arm_64_lowmem_hwasan",
out: ["vts_ltp_test_arm_64_lowmem_hwasan.xml"],
- tool_files: [
- "tools/gen_ltp_config.py",
- "tools/**/*.py",
- "tools/template/template.xml",
- ],
- cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 64 --low-mem True --hwasan True $(out)",
+ tools: ["gen_ltp_config"],
+ cmd: "$(location gen_ltp_config) --arch arm --bitness 64 --low-mem True --hwasan True $(out)",
}
sh_test {
@@ -115,12 +99,8 @@
genrule {
name: "ltp_config_arm",
out: ["vts_ltp_test_arm.xml"],
- tool_files: [
- "tools/gen_ltp_config.py",
- "tools/**/*.py",
- "tools/template/template.xml",
- ],
- cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 32 --low-mem False --hwasan False $(out)",
+ tools: ["gen_ltp_config"],
+ cmd: "$(location gen_ltp_config) --arch arm --bitness 32 --low-mem False --hwasan False $(out)",
}
sh_test {
@@ -136,12 +116,8 @@
genrule {
name: "ltp_config_arm_lowmem",
out: ["vts_ltp_test_arm_lowmem.xml"],
- tool_files: [
- "tools/gen_ltp_config.py",
- "tools/**/*.py",
- "tools/template/template.xml",
- ],
- cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 32 --low-mem True --hwasan False $(out)",
+ tools: ["gen_ltp_config"],
+ cmd: "$(location gen_ltp_config) --arch arm --bitness 32 --low-mem True --hwasan False $(out)",
}
sh_test {
@@ -154,12 +130,8 @@
genrule {
name: "ltp_config_riscv_64",
out: ["vts_ltp_test_riscv_64.xml"],
- tool_files: [
- "tools/gen_ltp_config.py",
- "tools/**/*.py",
- "tools/template/template.xml",
- ],
- cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch riscv --bitness 64 --low-mem False --hwasan False $(out)",
+ tools: ["gen_ltp_config"],
+ cmd: "$(location gen_ltp_config) --arch riscv --bitness 64 --low-mem False --hwasan False $(out)",
}
sh_test {
@@ -175,12 +147,8 @@
genrule {
name: "ltp_config_x86_64",
out: ["vts_ltp_test_x86_64.xml"],
- tool_files: [
- "tools/gen_ltp_config.py",
- "tools/**/*.py",
- "tools/template/template.xml",
- ],
- cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch x86 --bitness 64 --low-mem False --hwasan False $(out)",
+ tools: ["gen_ltp_config"],
+ cmd: "$(location gen_ltp_config) --arch x86 --bitness 64 --low-mem False --hwasan False $(out)",
}
sh_test {
@@ -196,10 +164,6 @@
genrule {
name: "ltp_config_x86",
out: ["vts_ltp_test_x86.xml"],
- tool_files: [
- "tools/gen_ltp_config.py",
- "tools/**/*.py",
- "tools/template/template.xml",
- ],
- cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch x86 --bitness 32 --low-mem False --hwasan False $(out)",
+ tools: ["gen_ltp_config"],
+ cmd: "$(location gen_ltp_config) --arch x86 --bitness 32 --low-mem False --hwasan False $(out)",
}
diff --git a/ltp/testcase/tools/Android.bp b/ltp/testcase/tools/Android.bp
index 032610d..3d443a9 100644
--- a/ltp/testcase/tools/Android.bp
+++ b/ltp/testcase/tools/Android.bp
@@ -32,3 +32,22 @@
}
},
}
+
+python_binary_host {
+ name: "gen_ltp_config",
+ main: "gen_ltp_config.py",
+ srcs: [
+ "**/*.py",
+ ],
+ data: [
+ "template/template.xml",
+ ":ltp_gen_bp_file",
+ ":ltp_disabled_tests",
+ ":ltp_runtests",
+ ],
+ version: {
+ py3: {
+ embedded_launcher: true,
+ }
+ },
+}
diff --git a/ltp/testcase/tools/configs/disabled_tests.py b/ltp/testcase/tools/configs/disabled_tests.py
index 9f8fc89..750261b 100644
--- a/ltp/testcase/tools/configs/disabled_tests.py
+++ b/ltp/testcase/tools/configs/disabled_tests.py
@@ -57,14 +57,6 @@
'syscalls.epoll_pwait01_64bit', # b/277586905
'syscalls.epoll_pwait04_32bit', # b/241310858
'syscalls.epoll_pwait04_64bit', # b/241310858
- 'syscalls.fcntl34_32bit', # b/278714055
- 'syscalls.fcntl34_64_32bit', # b/278714055
- 'syscalls.fcntl36_32bit', # b/278714055
- 'syscalls.fcntl36_64_32bit', # b/278714055
- 'syscalls.ftruncate04_32bit', # b/198611142
- 'syscalls.ftruncate04_64_32bit', # b/198611142
- 'syscalls.ftruncate04_64_64bit', # b/198611142
- 'syscalls.ftruncate04_64bit', # b/198611142
'syscalls.inotify07_32bit', # b/191773884
'syscalls.inotify07_64bit', # b/191773884
'syscalls.inotify08_32bit', # b/191748474
@@ -103,6 +95,8 @@
'syscalls.semctl09_64bit', # b/191227035
'syscalls.setpgid02_32bit', # b/276300873
'syscalls.setpgid02_64bit', # b/276300873
+ 'syscalls.splice07_32bit', # b/328315662
+ 'syscalls.splice07_64bit', # b/328315662
'syscalls.statx07_32bit', # b/191236106
'syscalls.statx07_64bit', # b/191236106
}
diff --git a/ltp/testcase/tools/configs/stable_tests.py b/ltp/testcase/tools/configs/stable_tests.py
index 8fba499..ef0ffff 100644
--- a/ltp/testcase/tools/configs/stable_tests.py
+++ b/ltp/testcase/tools/configs/stable_tests.py
@@ -648,6 +648,8 @@
'syscalls.abort01_64bit': False,
'syscalls.accept01_32bit': True,
'syscalls.accept01_64bit': True,
+ 'syscalls.accept03_32bit': False,
+ 'syscalls.accept03_64bit': False,
'syscalls.accept4_01_32bit': True,
'syscalls.accept4_01_64bit': True,
'syscalls.access01_32bit': True,
@@ -1054,6 +1056,8 @@
'syscalls.fchmod07_64bit': True,
'syscalls.fchmodat01_32bit': True,
'syscalls.fchmodat01_64bit': True,
+ 'syscalls.fchmodat02_32bit': True,
+ 'syscalls.fchmodat02_64bit': True,
'syscalls.fchown01_16_32bit': False,
'syscalls.fchown01_16_64bit': False,
'syscalls.fchown01_32bit': True,
@@ -1194,12 +1198,16 @@
'syscalls.fcntl33_64_32bit': True,
'syscalls.fcntl33_64_64bit': True,
'syscalls.fcntl33_64bit': True,
+ 'syscalls.fcntl34_32bit': True,
+ 'syscalls.fcntl34_64_32bit': True,
'syscalls.fcntl34_64_64bit': True,
'syscalls.fcntl34_64bit': True,
'syscalls.fcntl35_32bit': True,
'syscalls.fcntl35_64_32bit': True,
'syscalls.fcntl35_64_64bit': True,
'syscalls.fcntl35_64bit': True,
+ 'syscalls.fcntl36_32bit': True,
+ 'syscalls.fcntl36_64_32bit': True,
'syscalls.fcntl36_64_64bit': True,
'syscalls.fcntl36_64bit': True,
'syscalls.fcntl37_32bit': True,
@@ -1328,6 +1336,10 @@
'syscalls.ftruncate03_64_32bit': True,
'syscalls.ftruncate03_64_64bit': True,
'syscalls.ftruncate03_64bit': True,
+ 'syscalls.ftruncate04_32bit': False,
+ 'syscalls.ftruncate04_64bit': False,
+ 'syscalls.ftruncate04_64_32bit': False,
+ 'syscalls.ftruncate04_64_64bit': False,
'syscalls.futex_cmp_requeue02_32bit': True,
'syscalls.futex_cmp_requeue02_64bit': True,
'syscalls.futex_wait01_32bit': True,
@@ -1494,6 +1506,8 @@
'syscalls.getsockopt02_64bit': True,
'syscalls.gettid01_32bit': True,
'syscalls.gettid01_64bit': True,
+ 'syscalls.gettid02_32bit': True,
+ 'syscalls.gettid02_64bit': True,
'syscalls.gettimeofday01_32bit': True,
'syscalls.gettimeofday01_64bit': True,
'syscalls.gettimeofday02_32bit': True,
@@ -2032,6 +2046,8 @@
'syscalls.pipe13_64bit': True,
'syscalls.pipe14_32bit': True,
'syscalls.pipe14_64bit': True,
+ 'syscalls.pipe15_32bit': True,
+ 'syscalls.pipe15_64bit': True,
'syscalls.pipe2_01_32bit': True,
'syscalls.pipe2_01_64bit': True,
'syscalls.pipe2_02_32bit': True,
@@ -2138,6 +2154,8 @@
'syscalls.ptrace04_64bit': False,
'syscalls.ptrace05_32bit': True,
'syscalls.ptrace05_64bit': True,
+ 'syscalls.ptrace06_32bit': True,
+ 'syscalls.ptrace06_64bit': True,
'syscalls.ptrace10_32bit': False,
'syscalls.ptrace10_64bit': False,
'syscalls.ptrace11_32bit': True,
@@ -2372,6 +2390,8 @@
'syscalls.sched_setscheduler02_64bit': True,
'syscalls.sched_setscheduler03_32bit': True,
'syscalls.sched_setscheduler03_64bit': True,
+ 'syscalls.sched_setscheduler04_32bit': True,
+ 'syscalls.sched_setscheduler04_64bit': True,
'syscalls.sched_yield01_32bit': True,
'syscalls.sched_yield01_64bit': True,
'syscalls.select01_32bit': True,
@@ -2727,6 +2747,8 @@
'syscalls.splice04_64bit': True,
'syscalls.splice05_32bit': True,
'syscalls.splice05_64bit': True,
+ 'syscalls.splice06_32bit': False,
+ 'syscalls.splice06_64bit': False,
'syscalls.ssetmask01_32bit': False,
'syscalls.ssetmask01_64bit': False,
'syscalls.stat01_32bit': True,
diff --git a/ltp/testcase/tools/gen_ltp_config.py b/ltp/testcase/tools/gen_ltp_config.py
index 59fc150..0da59d4 100755
--- a/ltp/testcase/tools/gen_ltp_config.py
+++ b/ltp/testcase/tools/gen_ltp_config.py
@@ -17,16 +17,13 @@
import argparse
import os
import sys
-from distutils.util import strtobool
import ltp_test_cases
from common import filter_utils
-def run(android_build_top: str, arch: str, n_bit: int, is_low_mem: bool, is_hwasan: bool, run_staging: bool, output_file: str):
+def run(arch: str, n_bit: int, is_low_mem: bool, is_hwasan: bool, run_staging: bool, output_file: str):
- android_build_top = android_build_top
- ltp_tests = ltp_test_cases.LtpTestCases(
- android_build_top, None)
+ ltp_tests = ltp_test_cases.LtpTestCases(None)
test_filter = filter_utils.Filter()
ltp_tests.GenConfig(
@@ -72,14 +69,12 @@
default="False",
help="Run all the tests, except from the disabled ones")
arg_parser.add_argument('output_file_path',
- nargs=1,
help="Path for the output file")
args = arg_parser.parse_args()
- run(android_build_top=os.environ['ANDROID_BUILD_TOP'],
- arch=args.arch,
+ run(arch=args.arch,
n_bit=str(args.bitness),
- is_low_mem=strtobool(args.is_low_mem),
- is_hwasan=strtobool(args.is_hwasan),
- run_staging=strtobool(args.run_staging),
- output_file=args.output_file_path[0])
+ is_low_mem=args.is_low_mem == 'True',
+ is_hwasan=args.is_hwasan == 'True',
+ run_staging=args.run_staging == 'True',
+ output_file=args.output_file_path)
diff --git a/ltp/testcase/tools/ltp_configs.py b/ltp/testcase/tools/ltp_configs.py
index cd3f4fb..dfd22ab 100644
--- a/ltp/testcase/tools/ltp_configs.py
+++ b/ltp/testcase/tools/ltp_configs.py
@@ -19,15 +19,6 @@
import ltp_enums
VTS_LTP_OUTPUT = os.path.join('DATA', 'nativetest', 'ltp')
-LTP_RUNTEST_DIR = 'external/ltp/runtest'
-# The bp file that contains all binaries of ltp
-LTP_GEN_BINARY_BP = 'external/ltp/gen.bp'
-
-LTP_DISABLED_BUILD_TESTS_CONFIG_PATH = 'external/ltp/android/tools/disabled_tests.txt'
-# Directory for the template of the test config.
-LTP_CONFIG_TEMPLATE_DIR = 'test/vts-testcase/kernel/ltp/testcase/tools/template'
-# The file name of the config template file
-LTP_CONFIG_TEMPLATE_FILE_NAME = 'template.xml'
# Environment paths for ltp test cases
# string, ltp build root directory on target
@@ -92,7 +83,6 @@
'can',
'cap_bounds',
'commands',
- 'connectors',
'containers',
'controllers',
'cpuhotplug',
@@ -103,7 +93,6 @@
'fs',
'fs_bind',
'fs_perms_simple',
- 'fsx',
'hugetlb',
'hyperthreading',
'input',
@@ -126,7 +115,6 @@
'can',
'cap_bounds',
'commands',
- 'connectors',
'containers',
'cpuhotplug',
'cve',
@@ -136,7 +124,6 @@
'fs',
'fs_bind',
'fs_perms_simple',
- 'fsx',
'hugetlb',
'hyperthreading',
'input',
diff --git a/ltp/testcase/tools/ltp_test_cases.py b/ltp/testcase/tools/ltp_test_cases.py
index 25451ec..07682eb 100644
--- a/ltp/testcase/tools/ltp_test_cases.py
+++ b/ltp/testcase/tools/ltp_test_cases.py
@@ -16,6 +16,8 @@
import os
import logging
+import pkgutil
+from importlib import resources
import ltp_configs
import ltp_enums
@@ -39,8 +41,7 @@
_ltp_config_lines: list of string: the context of the generated config
"""
- def __init__(self, android_build_top: str, filter_func: Callable):
- self._android_build_top = android_build_top
+ def __init__(self, filter_func: Callable):
self._filter_func = filter_func
self._ltp_tests_filter = filter_utils.Filter(
set(stable_tests.STABLE_TESTS.keys()),
@@ -77,10 +78,8 @@
Returns:
String.
"""
- file_name = ltp_configs.LTP_CONFIG_TEMPLATE_FILE_NAME
- file_path = os.path.join(self._android_build_top, ltp_configs.LTP_CONFIG_TEMPLATE_DIR, file_name)
- with open(file_path, 'r') as f:
- return f.read()
+ # This gets bundled into the gen_ltp_config tool during the build
+ return pkgutil.get_data('template', 'template.xml').decode()
def GetKernelModuleControllerOption(self, arch: str, n_bit: int, is_low_mem: bool = False, is_hwasan: bool = False) -> str:
"""Get the Option of KernelModuleController.
@@ -116,8 +115,7 @@
Args:
command: String, the test command
"""
- gen_bp_path = os.path.join(self._android_build_top, ltp_configs.LTP_GEN_BINARY_BP)
- for line in open(gen_bp_path, 'r'):
+ for line in pkgutil.get_data('android.tools', 'gen.bp').decode().splitlines():
line = line.strip()
if not line or line.startswith('#'):
continue
@@ -263,25 +261,6 @@
with open(output_file, 'w') as f:
f.write(config_lines)
- def ReadCommentedTxt(self, filepath: str) -> Optional[Set[str]]:
- '''Read a lines of a file that are not commented by #.
-
- Args:
- filepath: string, path of file to read
-
- Returns:
- A set of string representing non-commented lines in given file
- '''
- if not filepath:
- logging.error('Invalid file path')
- return None
-
- with open(filepath, 'r') as f:
- lines_gen = (line.strip() for line in f)
- return set(
- line for line in lines_gen
- if line and not line.startswith('#'))
-
def GenerateLtpTestCases(self, testsuite: str, disabled_tests_list: List[str]) -> List[str]:
'''Generate test cases for each ltp test suite.
@@ -291,11 +270,8 @@
Returns:
A list of string
'''
- testsuite_script = os.path.join(self._android_build_top,
- ltp_configs.LTP_RUNTEST_DIR, testsuite)
-
result = []
- for line in open(testsuite_script, 'r'):
+ for line in pkgutil.get_data('runtest', testsuite).decode().splitlines():
line = line.strip()
if not line or line.startswith('#'):
continue
@@ -318,9 +294,11 @@
Returns:
A list of string
'''
- disabled_tests_path = os.path.join(
- self._android_build_top, ltp_configs.LTP_DISABLED_BUILD_TESTS_CONFIG_PATH)
- disabled_tests_list = self.ReadCommentedTxt(disabled_tests_path)
+ disabled_tests_list = pkgutil.get_data('android.tools', 'disabled_tests.txt').decode().splitlines()
+ disabled_tests_list = [line.strip() for line in disabled_tests_list]
+ disabled_tests_list = set(
+ line for line in disabled_tests_list
+ if line and not line.startswith('#'))
result = []
for testsuite in scenario_groups:
diff --git a/page_size_16kb/OWNERS b/page_size_16kb/OWNERS
deleted file mode 100644
index 392e306..0000000
--- a/page_size_16kb/OWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-# Bug component: 1261834
[email protected]
[email protected]
[email protected]
diff --git a/page_size_16kb/vendor_elf_alignment_test.sh b/page_size_16kb/vendor_elf_alignment_test.sh
deleted file mode 100755
index 0d6802d..0000000
--- a/page_size_16kb/vendor_elf_alignment_test.sh
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/bash
-
-# Copyright (C) 2023 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.
-
-# Check that vendor ELF files have the required 16KB [or 64KB] load segment
-# alignment on devices.
-
-# Requirement added in U (34)
-MIN_VENDOR_API_LEVEL=34
-
-DEFAULT_VENDOR_API_LEVEL=0
-
-# Default to 64KB max page size unless otherwise specified.
-DEFAULT_MAX_PAGE_SIZE=65536
-
-# Device is only low RAM if explicitly stated
-DEFAULT_CONFIG_LOW_RAM=false
-
-fail() { #msg
- echo "FAILED: $1"
- exit 1
-}
-
-pass() { #msg
- echo "PASSED: $1"
- exit 0
-}
-
-skip() { #msg
- echo "SKIPPED: $1"
- exit 0
-}
-
-# Skip test if vendor API level < U (34)
-vendor_api_level="$(adb shell getprop ro.vendor.api_level $DEFAULT_VENDOR_API_LEVEL)"
-if [ "$vendor_api_level" -lt "$MIN_VENDOR_API_LEVEL" ]; then
- skip "Vendor API level ($vendor_api_level) < Min vendor API level ($MIN_VENDOR_API_LEVEL)"
-fi
-
-# Android Go and other low RAM devices do not support larger than 4KB page size
-config_low_ram="$(adb shell getprop ro.config.low_ram $DEFAULT_CONFIG_LOW_RAM)"
-if [ "$config_low_ram" != "$DEFAULT_CONFIG_LOW_RAM" ]; then
- skip "Low RAM devices only support 4096 max page size"
-fi
-
-# Some devices may choose to opt out of 64KB max page size support
-max_page_size="$(adb shell getprop ro.product.cpu.pagesize.max $DEFAULT_MAX_PAGE_SIZE)"
-if [ $max_page_size -lt $DEFAULT_MAX_PAGE_SIZE ]; then
- skip "Device only supports $max_page_size max page size"
-fi
-
-
-unaligned_elfs=()
-
-get_unaligned_elfs() {
- adb shell '
- # Find all vendor ELF files
- paths=()
- for i in `find /vendor -type f -exec file {} \; | grep ELF | awk -F: "{ print \\$1 }"`; do
- paths+=( $i )
- done
-
- unaligned=()
- for path in "${paths[@]}"; do
- load_alignment=$( readelf -l $path | grep LOAD | head -n1 | awk "{ print \$NF }" )
-
- # Require 64KB alignment for future proofing. Android uses sparse files so
- # the real disk space impact is not significant.
- if [ "$load_alignment" != "0x10000" ]; then
- unaligned+=( $path )
- fi
- done
-
- echo "${unaligned[@]}"'
-}
-
-print_unaligned_elfs() { # arr_unaligned_elfs
- elfs=("$@")
-
- echo ""
- echo "=== Unaligned vendor ELF files found ==="
- echo ""
- for elf in ${elfs[@]}; do
- echo " $elf"
- done
- echo ""
- echo "Please rebuild the above artifacts with 64KB aligned load segments."
- echo ""
- echo " This can be done by specifying the following linker flag:"
- echo " -Wl,-z,max-page-size=65536"
- echo ""
- echo "This is required in devices with Vendor API Level >= $MIN_VENDOR_API_LEVEL"
- echo ""
-}
-
-# @VsrTest = 3.3-005
-vendor_elf_alignment_test() {
- unaligned_elfs+=( $(get_unaligned_elfs) )
- nr_unaligned="${#unaligned_elfs[@]}"
-
- if [ "$nr_unaligned" == "0" ]; then
- pass "All vendor ELF files have the required load segment alignment"
- else
- print_unaligned_elfs "${unaligned_elfs[@]}"
- fail "Vendor ELF files with unaligned load segments found"
- fi
-}
-
-vendor_elf_alignment_test
diff --git a/page_size_16kb/vendor_elf_alignment_test.xml b/page_size_16kb/vendor_elf_alignment_test.xml
deleted file mode 100644
index 7c372c1..0000000
--- a/page_size_16kb/vendor_elf_alignment_test.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2023 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.
--->
-
-<configuration description="64KB Vendor ELF Alignment Test">
- <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
- <test class="com.android.tradefed.testtype.binary.ExecutableHostTest" >
- <option name="binary" value="vendor_elf_alignment_test" />
- <option name="per-binary-timeout" value="5m" />
- </test>
-</configuration>
diff --git a/pagesize_16kb/.clang-format b/pagesize_16kb/.clang-format
new file mode 120000
index 0000000..0457b53
--- /dev/null
+++ b/pagesize_16kb/.clang-format
@@ -0,0 +1 @@
+../../../../build/soong/scripts/system-clang-format
\ No newline at end of file
diff --git a/page_size_16kb/Android.bp b/pagesize_16kb/Android.bp
similarity index 66%
rename from page_size_16kb/Android.bp
rename to pagesize_16kb/Android.bp
index 5188807..0c3b6c3 100644
--- a/page_size_16kb/Android.bp
+++ b/pagesize_16kb/Android.bp
@@ -15,14 +15,34 @@
//
package {
+ default_team: "trendy_team_android_kernel",
default_applicable_licenses: ["Android-Apache-2.0"],
}
-sh_test {
- name: "vendor_elf_alignment_test",
- src: "vendor_elf_alignment_test.sh",
+cc_test {
+ name: "Vts16KPageSizeTest",
+ require_root: true,
test_suites: [
"general-tests",
+ "vts",
+ "device-tests",
],
- test_config: "vendor_elf_alignment_test.xml",
+
+ srcs: [
+ "Vts16KPageSizeTest.cpp",
+ ],
+
+ static_libs: [
+ "libelf64",
+ ],
+
+ shared_libs: [
+ "libbase",
+ "liblog",
+ ],
+
+ cflags: [
+ "-Wall",
+ "-Werror",
+ ],
}
diff --git a/pagesize_16kb/OWNERS b/pagesize_16kb/OWNERS
new file mode 100644
index 0000000..192a75b
--- /dev/null
+++ b/pagesize_16kb/OWNERS
@@ -0,0 +1,6 @@
+# Bug component: 1261834
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
diff --git a/pagesize_16kb/TEST_MAPPING b/pagesize_16kb/TEST_MAPPING
new file mode 100644
index 0000000..c8eedfe
--- /dev/null
+++ b/pagesize_16kb/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+ "presubmit": [
+ {
+ "name": "Vts16KPageSizeTest"
+ }
+ ]
+}
diff --git a/pagesize_16kb/Vts16KPageSizeTest.cpp b/pagesize_16kb/Vts16KPageSizeTest.cpp
new file mode 100644
index 0000000..be4184b
--- /dev/null
+++ b/pagesize_16kb/Vts16KPageSizeTest.cpp
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2023 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.
+ */
+
+#include <android-base/properties.h>
+#include <android/api-level.h>
+#include <elf.h>
+#include <gtest/gtest.h>
+#include <libelf64/parse.h>
+
+class Vts16KPageSizeTest : public ::testing::Test {
+ protected:
+ static int VendorApiLevel() {
+ // "ro.vendor.api_level" is added in Android T.
+ // Undefined indicates S or below
+ return android::base::GetIntProperty("ro.vendor.api_level", __ANDROID_API_S__);
+ }
+
+ static bool NoBionicPageSizeMacroProperty() {
+ // "ro.product.build.no_bionic_page_size_macro" was added in Android V and is
+ // set to true when Android is build with PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true.
+ return android::base::GetBoolProperty("ro.product.build.no_bionic_page_size_macro", false);
+ }
+
+ static std::string Architecture() { return android::base::GetProperty("ro.bionic.arch", ""); }
+
+ static ssize_t MaxPageSize(const std::string& filepath) {
+ ssize_t maxPageSize = -1;
+
+ android::elf64::Elf64Binary elf;
+
+ if (!android::elf64::Elf64Parser::ParseElfFile(filepath, elf)) {
+ return -1;
+ }
+
+ for (int i = 0; i < elf.phdrs.size(); i++) {
+ Elf64_Phdr phdr = elf.phdrs[i];
+
+ if ((phdr.p_type != PT_LOAD) || !(phdr.p_type & PF_X)) {
+ continue;
+ }
+
+ maxPageSize = phdr.p_align;
+ break;
+ }
+
+ return maxPageSize;
+ }
+
+ static void SetUpTestSuite() {
+ if (VendorApiLevel() < __ANDROID_API_V__) {
+ GTEST_SKIP() << "16kB support is only required on V and later releases.";
+ }
+ }
+
+ /*
+ * x86_64 also needs to be at least 16KB aligned, since Android
+ * supports page size emulation in x86_64 for app development.
+ */
+ size_t RequiredMaxPageSize() {
+ if (mArch == "arm64" || mArch == "aarch64" || mArch == "x86_64") {
+ return 0x4000;
+ } else {
+ return 0x1000;
+ }
+ }
+
+ const std::string mArch = Architecture();
+};
+
+/**
+ * Checks the max-page-size of init against the architecture's
+ * required max-page-size.
+ *
+ * Note: a more comprehensive version of this test exists in
+ * elf_alignment_test. This has turned out to be a canary test
+ * to give visibility on this when checking all 16K tests.
+ */
+// @VsrTest = 3.14.1
+TEST_F(Vts16KPageSizeTest, InitMaxPageSizeTest) {
+ constexpr char initPath[] = "/system/bin/init";
+
+ ssize_t expectedMaxPageSize = RequiredMaxPageSize();
+ ASSERT_NE(expectedMaxPageSize, -1)
+ << "Failed to get required max page size for arch: " << mArch;
+
+ ssize_t initMaxPageSize = MaxPageSize(initPath);
+ ASSERT_NE(initMaxPageSize, -1) << "Failed to get max page size of ELF: " << initPath;
+
+ ASSERT_EQ(initMaxPageSize % expectedMaxPageSize, 0)
+ << "ELF " << initPath << " with page size " << initMaxPageSize
+ << " was not built with the required max-page-size " << expectedMaxPageSize;
+}
+
+/**
+ * Checks if the vendor's build was compiled with the define
+ * PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO based on the product property
+ * ro.product.build.no_bionic_page_size_macro.
+ */
+// @VsrTest = 3.14.2
+TEST_F(Vts16KPageSizeTest, NoBionicPageSizeMacro) {
+ /**
+ * TODO(b/315034809): switch to error when final decision is made.
+ */
+ if (!NoBionicPageSizeMacroProperty())
+ GTEST_SKIP() << "Device was not built with: PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true";
+}
+
+/**
+ * Checks if the device has page size which was set using TARGET_BOOTS_16K
+ */
+TEST_F(Vts16KPageSizeTest, ProductPageSize) {
+ // We can't set the default value to be 4096 since device which will have 16KB page size and
+ // doesn't set TARGET_BOOTS_16K, won't have this property and will fail the test.
+ int requiredPageSize = android::base::GetIntProperty("ro.product.page_size", 0);
+ if (requiredPageSize != 0) {
+ int currentPageSize = getpagesize();
+ ASSERT_EQ(requiredPageSize, currentPageSize);
+ } else {
+ GTEST_SKIP() << "Device was not built with option TARGET_BOOTS_16K = true";
+ }
+}
diff --git a/sdcardfs/src/com/android/sdcardfs/vts/SdcardfsTest.java b/sdcardfs/src/com/android/sdcardfs/vts/SdcardfsTest.java
index 83d0d13..1574a8d 100644
--- a/sdcardfs/src/com/android/sdcardfs/vts/SdcardfsTest.java
+++ b/sdcardfs/src/com/android/sdcardfs/vts/SdcardfsTest.java
@@ -17,6 +17,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
+import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
@@ -33,8 +34,17 @@
private static final int MIN_KERNEL_MAJOR = 5;
private static final int MIN_KERNEL_MINOR = 4;
+ private static final int MIN_FIRST_API_LEVEL = 30; // Android 11
- private boolean should_run(String str) {
+ private boolean should_run(String str) throws DeviceNotAvailableException {
+ String result = getDevice().getProperty("ro.product.first_api_level");
+ if (result != null && !result.isEmpty()) {
+ int first_api_level = Integer.parseInt(result);
+
+ if (first_api_level < MIN_FIRST_API_LEVEL)
+ return false;
+ }
+
Scanner versionScanner = new Scanner(str).useDelimiter("\\.");
int major = versionScanner.nextInt();
int minor = versionScanner.nextInt();
diff --git a/toolchain/Android.bp b/toolchain/Android.bp
index 6999bb6..659c962 100644
--- a/toolchain/Android.bp
+++ b/toolchain/Android.bp
@@ -28,10 +28,11 @@
],
static_libs: [
"libgmock",
+ "libkver",
],
test_suites: [
"device-tests",
- "vts"
+ "vts",
],
require_root: true,
auto_gen_config: true,
diff --git a/toolchain/vts_kernel_toolchain.cpp b/toolchain/vts_kernel_toolchain.cpp
index a491914..bb72b3c 100644
--- a/toolchain/vts_kernel_toolchain.cpp
+++ b/toolchain/vts_kernel_toolchain.cpp
@@ -21,6 +21,7 @@
#include <android/api-level.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
+#include <kver/kernel_release.h>
namespace android {
namespace kernel {
@@ -77,5 +78,26 @@
ASSERT_THAT(version_, ::testing::HasSubstr(needle));
}
+// @VsrTest = 3.4.2
+TEST_F(KernelVersionTest, IsKleaf) {
+ constexpr uint64_t kMinAndroidRelease = 15; // Android 15
+ const auto kernel_release =
+ android::kver::KernelRelease::Parse(version_, /* allow_suffix = */ true);
+ if (!kernel_release.has_value()) {
+ GTEST_SKIP()
+ << "The test only applies to android" << kMinAndroidRelease
+ << " or later kernels. The kernel release string does not have the"
+ << " GKI kernel release format: " << version_;
+ }
+ if (kernel_release->android_release() < kMinAndroidRelease) {
+ GTEST_SKIP() << "The test only applies to android" << kMinAndroidRelease
+ << " or later kernels. This kernel declares android"
+ << kernel_release->android_release() << ": " << version_;
+ }
+ ASSERT_THAT(version_, ::testing::HasSubstr("kleaf@"))
+ << "android" << kernel_release->android_release()
+ << " kernel is required to be built with Kleaf.";
+}
+
} // namespace kernel
} // namespace android