DO NOT MERGE
Merge pie-platform-release (PPRL.181105.017, history) into master
Bug: 118454372
Change-Id: I957cb7ede4ac439ae7b8166d17571ffea742cad8
diff --git a/OWNERS b/OWNERS
index 80f05a3..ea18248 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,4 +1,3 @@
-romlem@google.com
smuckle@google.com
sspatil@google.com
yim@google.com
diff --git a/api/bpf_native_test/Android.bp b/api/bpf_native_test/Android.bp
index 6d1ca41..5c2fa19 100644
--- a/api/bpf_native_test/Android.bp
+++ b/api/bpf_native_test/Android.bp
@@ -15,7 +15,6 @@
//
cc_test {
- tags: ["tests"],
name: "vts_test_binary_bpf_module",
srcs: ["BpfTest.cpp"],
shared_libs: [
@@ -25,7 +24,7 @@
"libbase",
],
static_libs: [
- "libbpf",
+ "libbpf_android",
"libnetdutils",
"libtestUtil",
],
diff --git a/api/bpf_native_test/Android.mk b/api/bpf_native_test/Android.mk
index f3d2966..28ccb9f 100644
--- a/api/bpf_native_test/Android.mk
+++ b/api/bpf_native_test/Android.mk
@@ -19,5 +19,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelNetBpfTest
-VTS_CONFIG_SRC_DIR := testcases/kernel/api/bpf_native_test
include test/vts/tools/build/Android.host_config.mk
diff --git a/api/bpf_native_test/BpfTest.cpp b/api/bpf_native_test/BpfTest.cpp
index cacf092..24a921d 100644
--- a/api/bpf_native_test/BpfTest.cpp
+++ b/api/bpf_native_test/BpfTest.cpp
@@ -53,7 +53,7 @@
sizeof(uint32_t), 10,
BPF_F_NO_PREALLOC));
ASSERT_LT(0, mapfd) << "create map failed with error: " << strerror(errno);
- ASSERT_EQ(0, mapPin(mapfd, bpfMapPath))
+ ASSERT_EQ(0, bpfFdPin(mapfd, bpfMapPath))
<< "pin map failed with error: " << strerror(errno);
ASSERT_EQ(0, access(bpfMapPath, F_OK));
ASSERT_EQ(0, remove(bpfMapPath));
diff --git a/api/net/AndroidTest.xml b/api/net/AndroidTest.xml
index 25728c8..773dd16 100644
--- a/api/net/AndroidTest.xml
+++ b/api/net/AndroidTest.xml
@@ -24,6 +24,6 @@
<test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
<option name="test-module-name" value="VtsKernelNetTest" />
<option name="test-case-path" value="vts/testcases/kernel/api/net/VtsKernelNetTest" />
- <option name="test-timeout" value="5m" />
+ <option name="test-timeout" value="10m" />
</test>
</configuration>
diff --git a/api/net/VtsKernelNetTest.py b/api/net/VtsKernelNetTest.py
index da0f33d..71c4f0f 100644
--- a/api/net/VtsKernelNetTest.py
+++ b/api/net/VtsKernelNetTest.py
@@ -73,7 +73,7 @@
logging.info('exit code: %s', result[const.EXIT_CODE])
asserts.assertFalse(
result[const.EXIT_CODE],
- 'kernel_net_tests binary returned non-zero exit code.')
+ 'kernel_net_tests binary returned non-zero exit code: \n' + result[const.STDERR])
if __name__ == '__main__':
test_runner.main()
diff --git a/api/proc/Android.mk b/api/proc/Android.mk
index 7b9068c..7e377c2 100644
--- a/api/proc/Android.mk
+++ b/api/proc/Android.mk
@@ -19,5 +19,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelProcFileApi
-VTS_CONFIG_SRC_DIR := testcases/kernel/api/proc
-include test/vts/tools/build/Android.host_config.mk
diff --git a/api/proc/KernelProcFileTestBase.py b/api/proc/KernelProcFileTestBase.py
index 5a3501b..aeaac70 100644
--- a/api/proc/KernelProcFileTestBase.py
+++ b/api/proc/KernelProcFileTestBase.py
@@ -94,7 +94,7 @@
t_COLON = r':'
t_EQUALS = r'='
t_COMMA = r','
- t_PERIOD = r'.'
+ t_PERIOD = r'\.'
t_STRING = r'[a-zA-Z\(\)_0-9\-@]+'
t_TAB = r'\t'
@@ -187,8 +187,16 @@
"""
return True
- def file_optional(self):
- """Returns: True if file is allowed to be absent (boolean)."""
+ def file_optional(self, shell=None, dut=None):
+ """Performs any actions necessary to return if file is allowed to be absent
+
+ Args:
+ shell: shell object, to run commands on the device side
+ dut: AndroidDevice object to access functions and properties of that object
+
+ Returns:
+ boolean, True if file is allowed to be absent.
+ """
return False
def result_correct(self, parse_result):
diff --git a/api/proc/ProcFsFileTests.py b/api/proc/ProcFsFileTests.py
index 9e37067..266e781 100644
--- a/api/proc/ProcFsFileTests.py
+++ b/api/proc/ProcFsFileTests.py
@@ -110,6 +110,6 @@
def get_path(self):
return "/proc/swaps"
- def file_optional(self):
+ def file_optional(self, shell=None, dut=None):
# It is not mandatory to have this file present
return True
diff --git a/api/proc/ProcQtaguidCtrlTest.py b/api/proc/ProcQtaguidCtrlTest.py
index 7948d45..ef2be8c 100644
--- a/api/proc/ProcQtaguidCtrlTest.py
+++ b/api/proc/ProcQtaguidCtrlTest.py
@@ -52,6 +52,26 @@
def get_path(self):
return "/proc/net/xt_qtaguid/ctrl"
+ def file_optional(self, shell=None, dut=None):
+ """Specifies if the /proc/net/xt_qtaguid/ctrl file is mandatory.
+
+ For device running kernel 4.9 or above, it should use the eBPF cgroup
+ filter to monitor networking stats instead. So it may not have
+ xt_qtaguid module and /proc/net/xt_qtaguid/ctrl file on device.
+ But for device that still has xt_qtaguid module, this file is mandatory.
+
+ Same logic as checkKernelSupport in file:
+ test/vts-testcase/kernel/api/qtaguid/SocketTagUserSpace.cpp
+
+ Returns:
+ True when the kernel is 4.9 or newer, otherwise False is returned
+ """
+ (version, patchlevel, sublevel) = dut.kernel_version
+ if version == 4 and patchlevel >= 9 or version > 4:
+ return True
+ else:
+ return False
+
def get_permission_checker(self):
"""Get r/w file permission checker.
"""
diff --git a/api/proc/ProcSimpleFileTests.py b/api/proc/ProcSimpleFileTests.py
index f94fa9a..e19600d 100644
--- a/api/proc/ProcSimpleFileTests.py
+++ b/api/proc/ProcSimpleFileTests.py
@@ -111,7 +111,7 @@
def get_permission_checker(self):
return target_file_utils.IsReadWrite
- def file_optional(self):
+ def file_optional(self, shell=None, dut=None):
return True
class ProcKptrRestrictTest(KernelProcFileTestBase.KernelProcFileTestBase):
@@ -412,6 +412,21 @@
return target_file_utils.IsReadWrite
+class ProcDirtyExpireCentisecs(KernelProcFileTestBase.KernelProcFileTestBase):
+ '''/proc/sys/vm/dirty_expire_centisecs is used to define when dirty data is
+ old enough to be eligible for writeout by the kernel flusher threads.
+ '''
+
+ def parse_contents(self, contents):
+ return self.parse_line("{:d}\n", contents)[0]
+
+ def get_path(self):
+ return "/proc/sys/vm/dirty_expire_centisecs"
+
+ def get_permission_checker(self):
+ return target_file_utils.IsReadWrite
+
+
class ProcDropCaches(KernelProcFileTestBase.KernelProcFileTestBase):
'''Writing to /proc/sys/vm/drop_caches will cause the kernel to drop clean
caches.
@@ -443,7 +458,7 @@
def get_permission_checker(self):
return target_file_utils.IsReadWrite
- def file_optional(self):
+ def file_optional(self, shell=None, dut=None):
# This file isn't in Android common kernel.
return True
diff --git a/api/proc/ProcUidCpuPowerTests.py b/api/proc/ProcUidCpuPowerTests.py
index d4cb255..71af639 100644
--- a/api/proc/ProcUidCpuPowerTests.py
+++ b/api/proc/ProcUidCpuPowerTests.py
@@ -42,7 +42,7 @@
def get_path(self):
return "/proc/uid_cpupower/time_in_state"
- def file_optional(self):
+ def file_optional(self, shell=None, dut=None):
# This file is optional until implemented in Android common kernel
return True
@@ -66,7 +66,7 @@
def get_path(self):
return "/proc/uid_cpupower/concurrent_active_time"
- def file_optional(self):
+ def file_optional(self, shell=None, dut=None):
# This file is optional until implemented in Android common kernel
return True
@@ -98,6 +98,6 @@
def get_path(self):
return "/proc/uid_cpupower/concurrent_policy_time"
- def file_optional(self):
+ def file_optional(self, shell=None, dut=None):
# This file is optional until implemented in Android common kernel
return True
diff --git a/api/proc/ProcUidTimeInStateTest.py b/api/proc/ProcUidTimeInStateTest.py
index be812d5..c3a1a71 100644
--- a/api/proc/ProcUidTimeInStateTest.py
+++ b/api/proc/ProcUidTimeInStateTest.py
@@ -49,7 +49,7 @@
def get_path(self):
return "/proc/uid_time_in_state"
- def file_optional(self):
+ def file_optional(self, shell=None, dut=None):
# This file is optional until implemented in Android common kernel
return True
diff --git a/api/proc/VtsKernelProcFileApiTest.py b/api/proc/VtsKernelProcFileApiTest.py
index 3fe7a41..a656b37 100644
--- a/api/proc/VtsKernelProcFileApiTest.py
+++ b/api/proc/VtsKernelProcFileApiTest.py
@@ -67,6 +67,7 @@
ProcSimpleFileTests.ProcCorePipeLimit(),
ProcSimpleFileTests.ProcDirtyBackgroundBytes(),
ProcSimpleFileTests.ProcDirtyBackgroundRatio(),
+ ProcSimpleFileTests.ProcDirtyExpireCentisecs(),
ProcSimpleFileTests.ProcDmesgRestrict(),
ProcSimpleFileTests.ProcDomainname(),
ProcSimpleFileTests.ProcDropCaches(),
@@ -139,7 +140,7 @@
"Skip test for 64-bit kernel.")
filepath = test_object.get_path()
asserts.skipIf(not target_file_utils.Exists(filepath, self.shell) and
- test_object.file_optional(),
+ test_object.file_optional(shell=self.shell, dut=self.dut),
"%s does not exist and is optional." % filepath)
target_file_utils.assertPermissionsAndExistence(
self.shell, filepath, test_object.get_permission_checker())
@@ -187,6 +188,12 @@
return results[const.STDOUT][0]
def testProcPagetypeinfo(self):
+ # TODO(b/109884074): make mandatory once incident_helper is in AOSP.
+ try:
+ self.dut.adb.shell("which incident_helper")
+ except:
+ asserts.skip("incident_helper not present")
+
filepath = "/proc/pagetypeinfo"
# Check that incident_helper can parse /proc/pagetypeinfo.
result = self.shell.Execute("cat %s | incident_helper -s 2001" % filepath)
@@ -199,16 +206,16 @@
# This command only performs a best effort attempt to remount all
# filesystems. Check that it doesn't throw an error.
- self.dut.adb.shell("\"echo u > %s\"" % filepath)
+ self.dut.adb.shell("echo u > %s" % filepath)
# Reboot the device.
- self.dut.adb.shell("\"echo b > %s\"" % filepath)
+ self.dut.adb.shell("echo b > %s" % filepath)
asserts.assertFalse(self.dut.hasBooted(), "Device is still alive.")
self.dut.waitForBootCompletion()
self.dut.rootAdb()
# Crash the system.
- self.dut.adb.shell("\"echo c > %s\"" % filepath)
+ self.dut.adb.shell("echo c > %s" % filepath)
asserts.assertFalse(self.dut.hasBooted(), "Device is still alive.")
self.dut.waitForBootCompletion()
self.dut.rootAdb()
@@ -225,7 +232,7 @@
"""
stats_path = "/proc/uid_io/stats"
result = self.dut.adb.shell(
- "\"cat %s | grep '^%d'\"" % (stats_path, uid),
+ "cat %s | grep '^%d'" % (stats_path, uid),
no_except=True)
return result[const.STDOUT].split()
@@ -243,9 +250,9 @@
# fg write chars are at index 2, and bg write chars are at 6.
wchar_index = 6 if state else 2
old_wchar = UidIOStats(root_uid)[wchar_index]
- self.dut.adb.shell("\"echo %d %s > %s\"" % (root_uid, state, filepath))
+ self.dut.adb.shell("echo %d %s > %s" % (root_uid, state, filepath))
# This should increase the number of write syscalls.
- self.dut.adb.shell("\"echo foo\"")
+ self.dut.adb.shell("echo foo")
asserts.assertLess(
old_wchar,
UidIOStats(root_uid)[wchar_index],
diff --git a/api/qtaguid/Android.mk b/api/qtaguid/Android.mk
index 39ca48d..63eef09 100644
--- a/api/qtaguid/Android.mk
+++ b/api/qtaguid/Android.mk
@@ -35,5 +35,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelQtaguidTest
-VTS_CONFIG_SRC_DIR := testcases/kernel/api/qtaguid
-include test/vts/tools/build/Android.host_config.mk
diff --git a/api/qtaguid/SocketTagUserSpace.cpp b/api/qtaguid/SocketTagUserSpace.cpp
index 1653351..2dd634d 100644
--- a/api/qtaguid/SocketTagUserSpace.cpp
+++ b/api/qtaguid/SocketTagUserSpace.cpp
@@ -121,7 +121,7 @@
// b/30950746
if (ret >= 2 && ((kernel_version_major == 4 && kernel_version_minor >= 9) ||
(kernel_version_major > 4))) {
- *qtaguidSupport = (access("/dev/xt_qtaguid", F_OK) != -1);
+ *qtaguidSupport = false;
} else {
*qtaguidSupport = true;
}
@@ -213,6 +213,8 @@
uint64_t max_uint_tag;
virtual void SetUp() {
+ SKIP_IF_QTAGUID_NOT_SUPPORTED();
+
my_uid = getuid();
my_pid = getpid();
srand48(my_pid * my_uid);
@@ -253,6 +255,8 @@
/* Tag to a invalid socket fd, should fail */
TEST_F(SocketTagUsrSpaceTest, invalidSockfdFail) {
+ SKIP_IF_QTAGUID_NOT_SUPPORTED();
+
EXPECT_LT(legacy_tagSocket(-1, valid_tag1, my_uid), 0)
<< "Invalid socketfd case 1, should fail.";
}
@@ -268,6 +272,8 @@
/* Untag invalid socket fd, should fail */
TEST_F(SocketTagUsrSpaceTest, UntagInvalidSocketFail) {
+ SKIP_IF_QTAGUID_NOT_SUPPORTED();
+
EXPECT_LT(legacy_untagSocket(-1), 0) << "invalid socket fd, should fail";
EXPECT_LT(legacy_untagSocket(sock_0.fd), 0)
<< "no tags on sock0, should fail";
@@ -278,6 +284,8 @@
* should fail
*/
TEST_F(SocketTagUsrSpaceTest, CounterSetNumExceedFail) {
+ SKIP_IF_QTAGUID_NOT_SUPPORTED();
+
int wrongCounterNum = kMaxCounterSet + 1;
EXPECT_LT(legacy_setCounterSet(wrongCounterNum, my_uid), 0)
<< "Invalid counter set number, should fail.";
@@ -350,6 +358,8 @@
* Should keep both
*/
TEST_F(SocketTagUsrSpaceTest, ReTagWithUidChange) {
+ SKIP_IF_QTAGUID_NOT_SUPPORTED();
+
EXPECT_GE(legacy_tagSocket(sock_0.fd, valid_tag2, fake_uid), 0);
EXPECT_GE(legacy_tagSocket(sock_0.fd, valid_tag1, fake_uid2), 0);
}
diff --git a/api/rootdir/Android.mk b/api/rootdir/Android.mk
index f148a27..e2a6f08 100644
--- a/api/rootdir/Android.mk
+++ b/api/rootdir/Android.mk
@@ -19,5 +19,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelRootDir
-VTS_CONFIG_SRC_DIR := testcases/kernel/api/rootdir
-include test/vts/tools/build/Android.host_config.mk
diff --git a/api/selinux/Android.mk b/api/selinux/Android.mk
index 0c50947..906575d 100644
--- a/api/selinux/Android.mk
+++ b/api/selinux/Android.mk
@@ -19,5 +19,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelSelinuxFileApi
-VTS_CONFIG_SRC_DIR := testcases/kernel/api/selinux
-include test/vts/tools/build/Android.host_config.mk
diff --git a/api/sysfs/Android.mk b/api/sysfs/Android.mk
index 6871e46..4b63d86 100644
--- a/api/sysfs/Android.mk
+++ b/api/sysfs/Android.mk
@@ -19,5 +19,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelApiSysfsTest
-VTS_CONFIG_SRC_DIR := testcases/kernel/api/sysfs
-include test/vts/tools/build/Android.host_config.mk
diff --git a/api/sysfs/KernelApiSysfsTest.py b/api/sysfs/KernelApiSysfsTest.py
index 7d09100..ca5a1e3 100644
--- a/api/sysfs/KernelApiSysfsTest.py
+++ b/api/sysfs/KernelApiSysfsTest.py
@@ -66,35 +66,52 @@
asserts.assertEqual(match.start(), 0, message)
asserts.assertEqual(match.end(), len(string), message)
- def GetPathPermission(self, path):
+ def GetPathPermission(self, path, assert_if_absent):
'''Get the permission bits of a path, catching IOError.'''
permission = ''
try:
permission = target_file_utils.GetPermission(path, self.shell)
except IOError as e:
+ if not assert_if_absent:
+ return None
logging.exception(e)
asserts.fail('Path "%s" does not exist or has invalid '
'permission bits' % path)
return permission
- def IsReadOnly(self, path):
+ def IsReadOnly(self, path, assert_if_absent=True):
'''Check whether a given path is read only.
Assertion will fail if given path does not exist or is not read only.
'''
- permission = self.GetPathPermission(path)
+ permission = self.GetPathPermission(path, assert_if_absent)
+ if permission is None and not assert_if_absent:
+ return
asserts.assertTrue(target_file_utils.IsReadOnly(permission),
'path %s is not read only' % path)
- def IsReadWrite(self, path):
+ def IsReadWrite(self, path, assert_if_absent=True):
'''Check whether a given path is read-write.
Assertion will fail if given path does not exist or is not read-write.
'''
- permission = self.GetPathPermission(path)
+ permission = self.GetPathPermission(path, assert_if_absent)
+ if permission is None and not assert_if_absent:
+ return
asserts.assertTrue(target_file_utils.IsReadWrite(permission),
'path %s is not read write' % path)
+ def tryReadFileContent(self, f, shell):
+ '''Attempt to read a file.
+
+ If the file does not exist None will be returned.
+ '''
+ try:
+ content = target_file_utils.ReadFileContent(f, self.shell)
+ except IOError as e:
+ return None
+ return content
+
def testAndroidUSB(self):
'''Check for the existence of required files in /sys/class/android_usb.
'''
@@ -124,50 +141,62 @@
'''Check each cpu's scaling_cur_freq, scaling_min_freq, scaling_max_freq,
scaling_available_frequencies, and time_in_state files.
'''
- f = '/sys/devices/system/cpu/online'
+ f = '/sys/devices/system/cpu/present'
self.IsReadOnly(f)
- online_cpus = target_file_utils.ReadFileContent(f, self.shell)
- cpu_ranges = online_cpus.split(',')
+ present_cpus = target_file_utils.ReadFileContent(f, self.shell)
+ cpu_ranges = present_cpus.split(',')
cpu_list = []
+
for r in cpu_ranges:
m = re.match(r'(\d+)(-\d+)?', r)
asserts.assertTrue(m is not None,
- 'malformatted range in /sys/devices/system/cpu/online')
+ 'malformatted range in /sys/devices/system/cpu/present')
start_cpu = int(m.group(1))
if m.group(2) is None:
end_cpu = start_cpu
else:
- end_cpu = int(m.group(2))
+ end_cpu = int(m.group(2)[1:])
cpu_list += range(start_cpu, end_cpu+1)
+
for cpu in cpu_list:
f = '/sys/devices/system/cpu/cpu%s/cpufreq/scaling_cur_freq' % cpu
- self.IsReadOnly(f)
- content = target_file_utils.ReadFileContent(f, self.shell)
- self.ConvertToInteger(content)
+ self.IsReadOnly(f, False)
+ content = self.tryReadFileContent(f, self.shell)
+ if content is not None:
+ self.ConvertToInteger(content)
+
f = '/sys/devices/system/cpu/cpu%s/cpufreq/scaling_min_freq' % cpu
- self.IsReadWrite(f)
- content = target.file_utils.ReadFileContent(f, self.shell)
- self.ConvertToInteger(content)
+ self.IsReadWrite(f, False)
+ content = self.tryReadFileContent(f, self.shell)
+ if content is not None:
+ self.ConvertToInteger(content)
+
f = '/sys/devices/system/cpu/cpu%s/cpufreq/scaling_max_freq' % cpu
- self.IsReadWrite(f)
- content = target.file_utils.ReadFileContent(f, self.shell)
- self.ConvertToInteger(content)
+ self.IsReadWrite(f, False)
+ content = self.tryReadFileContent(f, self.shell)
+ if content is not None:
+ self.ConvertToInteger(content)
+
f = '/sys/devices/system/cpu/cpu%s/cpufreq/scaling_available_frequencies' % cpu
- self.IsReadOnly(f)
- content = target.file_utils.ReadFileContent(f, self.shell)
- avail_freqs = content.split(' ')
- for x in avail_freqs:
- self.ConvertToInteger(x)
+ self.IsReadOnly(f, False)
+ content = self.tryReadFileContent(f, self.shell)
+ if content is not None:
+ content = content.rstrip()
+ avail_freqs = content.split(' ')
+ for x in avail_freqs:
+ self.ConvertToInteger(x)
+
f = '/sys/devices/system/cpu/cpu%s/cpufreq/stats/time_in_state' % cpu
- self.IsReadOnly(f)
- content = target.file_utils.ReadFileContent(f, shelf.shell)
- for line in content:
- values = line.split()
- for v in values:
- try:
- unused = int(v)
- except ValueError as e:
- asserts.fail("Malformatted time_in_state file at %s" % f)
+ self.IsReadOnly(f, False)
+ content = self.tryReadFileContent(f, self.shell)
+ if content is not None:
+ for line in content:
+ values = line.split()
+ for v in values:
+ try:
+ unused = int(v)
+ except ValueError as e:
+ asserts.fail("Malformatted time_in_state file at %s" % f)
def testIpv4(self):
'''Check /sys/kernel/ipv4/*.'''
diff --git a/api/system_as_root/Android.mk b/api/system_as_root/Android.mk
deleted file mode 100644
index b7957a3..0000000
--- a/api/system_as_root/Android.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Copyright (C) 2018 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VtsKernelSystemAsRoot
-VTS_CONFIG_SRC_DIR := testcases/kernel/api/system_as_root
--include test/vts/tools/build/Android.host_config.mk
diff --git a/api/system_as_root/VtsKernelSystemAsRootTest.py b/api/system_as_root/VtsKernelSystemAsRootTest.py
deleted file mode 100644
index 8fb5d05..0000000
--- a/api/system_as_root/VtsKernelSystemAsRootTest.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2018 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.
-#
-
-"""A test module to check system-as-root is enabled for new devices in P.
-
-The test logic is:
- if precondition-first-api-level >= 28 (in AndroidTest.xml):
- assert (
- ro.build.system_root_image is 'true' AND
- /system mount point doesn't exist)
- else:
- assert True
-"""
-
-
-import logging
-
-from vts.runners.host import asserts
-from vts.runners.host import base_test
-from vts.runners.host import const
-from vts.runners.host import test_runner
-
-
-# The property to indicate the system image is also root image.
-_SYSTEM_ROOT_IMAGE_PROP = "ro.build.system_root_image"
-
-
-class VtsKernelSystemAsRootTest(base_test.BaseTestClass):
- """A test class to verify system-as-root is enabled."""
-
- def setUpClass(self):
- """Initializes device and shell."""
- self._dut = self.android_devices[0]
- self._shell = self._dut.shell
-
- def testSystemRootImageProperty(self):
- """Checks ro.build.system_root_image is 'true'."""
- asserts.assertEqual("true",
- self._dut.getProp(_SYSTEM_ROOT_IMAGE_PROP),
- "%s is not true" % _SYSTEM_ROOT_IMAGE_PROP)
-
- def testNoSystemMountPoint(self):
- """Checks there is no /system mount point."""
- # The format of /proc/mounts is:
- # <partition> <mount point> <file system> <mount options> ...
- results = self._shell.Execute(
- "cat /proc/mounts | cut -d\" \" -f2")
- mount_points = results[const.STDOUT][0].split()
- logging.info('Mount points on the device: %s', mount_points)
- asserts.assertFalse("/system" in mount_points,
- "/system mount point shouldn't exist")
-
-
-if __name__ == "__main__":
- test_runner.main()
diff --git a/api/system_as_root/__init__.py b/api/system_as_root/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/api/system_as_root/__init__.py
+++ /dev/null
diff --git a/version/Android.mk b/checkpoint/Android.mk
similarity index 95%
rename from version/Android.mk
rename to checkpoint/Android.mk
index 07cc197..e07d2e4 100644
--- a/version/Android.mk
+++ b/checkpoint/Android.mk
@@ -18,5 +18,5 @@
include $(CLEAR_VARS)
-LOCAL_MODULE := VtsKernelVersion
+LOCAL_MODULE := CheckpointTest
-include test/vts/tools/build/Android.host_config.mk
diff --git a/api/system_as_root/AndroidTest.xml b/checkpoint/AndroidTest.xml
similarity index 76%
rename from api/system_as_root/AndroidTest.xml
rename to checkpoint/AndroidTest.xml
index ad28d5e..a2498b7 100644
--- a/api/system_as_root/AndroidTest.xml
+++ b/checkpoint/AndroidTest.xml
@@ -13,14 +13,16 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<configuration description="Config for VTS KernelSystemAsRoot test cases">
+<configuration description="Config for VTS CheckpointTest test cases">
<option name="config-descriptor:metadata" key="plan" value="vts-kernel" />
<target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
<option name="push-group" value="HostDrivenTest.push" />
+ <option name="cleanup" value="true" />
</target_preparer>
<test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
- <option name="test-module-name" value="VtsKernelSystemAsRoot" />
- <option name="test-case-path" value="vts/testcases/kernel/api/system_as_root/VtsKernelSystemAsRootTest" />
- <option name="precondition-first-api-level" value="28" />
+ <option name="test-module-name" value="VtsKernelCheckpointTest" />
+ <option name="test-timeout" value="6m" />
+ <option name="runtime-hint" value="5m" />
+ <option name="test-case-path" value="vts/testcases/kernel/checkpoint/CheckpointTest" />
</test>
</configuration>
diff --git a/checkpoint/CheckpointTest.py b/checkpoint/CheckpointTest.py
new file mode 100644
index 0000000..e6d0344
--- /dev/null
+++ b/checkpoint/CheckpointTest.py
@@ -0,0 +1,122 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2018 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.
+#
+
+from vts.runners.host import asserts
+from vts.runners.host import base_test
+from vts.runners.host import const
+from vts.runners.host import test_runner
+
+
+class VtsKernelCheckpointTest(base_test.BaseTestClass):
+
+ _CHECKPOINTTESTFILE = "/data/local/tmp/checkpointtest"
+ _ORIGINALVALUE = "original value"
+ _MODIFIEDVALUE = "modified value"
+
+ def getFstab(self):
+ self.dut.adb.root()
+
+ for prop in ["hardware", "hardware.platform"]:
+ extension = self.dut.adb.shell("getprop ro.boot." + prop, no_except = True)
+ extension = extension[const.STDOUT]
+ if not extension:
+ continue
+
+ for filename in ["/odm/etc/fstab.", "/vendor/etc/fstab.", "/fstab."]:
+ contents = self.dut.adb.shell("cat " + filename + extension, no_except = True)
+ if contents[const.EXIT_CODE] != 0:
+ continue
+
+ return contents[const.STDOUT]
+
+ return ""
+
+ def isCheckpoint(self):
+ fstab = self.getFstab().splitlines()
+ for line in fstab:
+ parts = line.split()
+ if len(parts) != 5: # fstab has five parts for each entry:
+ # [device-name] [mount-point] [type] [mount_flags] [fsmgr_flags]
+ continue
+
+ flags = parts[4] # the fsmgr_flags field is the fifth one, thus index 4
+ flags = flags.split(',')
+ if any(flag.startswith("checkpoint=") for flag in flags):
+ return True
+
+ return False
+
+ def setUpClass(self):
+ self.dut = self.android_devices[0]
+ self.shell = self.dut.shell
+ self.isCheckpoint_ = self.isCheckpoint()
+
+ def reboot(self):
+ self.dut.reboot()
+ self.dut.adb.root()
+
+ def testRollback(self):
+ if not self.isCheckpoint_:
+ return
+
+ # Create a file and initiate checkpoint
+ self.dut.adb.root()
+ self.dut.adb.shell("echo " + self._ORIGINALVALUE + " > " + self._CHECKPOINTTESTFILE)
+ result = self.dut.adb.shell("vdc checkpoint startCheckpoint 1", no_except = True)
+ asserts.assertEqual(result[const.EXIT_CODE], 1)
+ self.reboot()
+
+ # Modify the file but do not commit
+ self.dut.adb.shell("echo " + self._MODIFIEDVALUE + " > " + self._CHECKPOINTTESTFILE)
+ self.reboot()
+
+ # Check the file is unchanged
+ result = self.dut.adb.shell("cat " + self._CHECKPOINTTESTFILE)
+ asserts.assertEqual(result.strip(), self._ORIGINALVALUE)
+
+ # Clean up
+ result = self.dut.adb.shell("vdc checkpoint commitChanges", no_except = True)
+ asserts.assertEqual(result[const.EXIT_CODE], 1)
+ self.reboot()
+ self.dut.adb.shell("rm " + self._CHECKPOINTTESTFILE)
+
+ def testCommit(self):
+ if not self.isCheckpoint_:
+ return
+
+ # Create a file and initiate checkpoint
+ self.dut.adb.root()
+ self.dut.adb.shell("echo " + self._ORIGINALVALUE + " > " + self._CHECKPOINTTESTFILE)
+ result = self.dut.adb.shell("vdc checkpoint startCheckpoint 1", no_except = True)
+ asserts.assertEqual(result[const.EXIT_CODE], 1)
+ self.reboot()
+
+ # Modify the file and commit the checkpoint
+ self.dut.adb.shell("echo " + self._MODIFIEDVALUE + " > " + self._CHECKPOINTTESTFILE)
+ result = self.dut.adb.shell("vdc checkpoint commitChanges", no_except = True)
+ asserts.assertEqual(result[const.EXIT_CODE], 1)
+ self.reboot()
+
+ # Check file has changed
+ result = self.dut.adb.shell("cat " + self._CHECKPOINTTESTFILE)
+ asserts.assertEqual(result.strip(), self._MODIFIEDVALUE)
+
+ # Clean up
+ self.dut.adb.shell("rm " + self._CHECKPOINTTESTFILE)
+
+if __name__ == "__main__":
+ test_runner.main()
diff --git a/config/__init__.py b/checkpoint/__init__.py
similarity index 100%
rename from config/__init__.py
rename to checkpoint/__init__.py
diff --git a/config/Android.mk b/config/Android.mk
deleted file mode 100644
index 181a8e4..0000000
--- a/config/Android.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Copyright (C) 2017 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VtsKernelConfig
--include test/vts/tools/build/Android.host_config.mk
\ No newline at end of file
diff --git a/config/AndroidTest.xml b/config/AndroidTest.xml
deleted file mode 100644
index bac70bc..0000000
--- a/config/AndroidTest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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 KernelConfigTest">
- <option name="config-descriptor:metadata" key="plan" value="vts-kernel" />
- <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
- <option name="push-group" value="HostDrivenTest.push" />
- </target_preparer>
- <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
- <option name="test-module-name" value="VtsKernelConfig" />
- <option name="test-case-path" value="vts/testcases/kernel/config/VtsKernelConfigTest" />
- </test>
-</configuration>
diff --git a/config/VtsKernelConfigTest.py b/config/VtsKernelConfigTest.py
deleted file mode 100644
index 73cf7b0..0000000
--- a/config/VtsKernelConfigTest.py
+++ /dev/null
@@ -1,252 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2017 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.
-#
-
-import gzip
-import logging
-import os
-import re
-import shutil
-import tempfile
-
-from vts.runners.host import asserts
-from vts.runners.host import base_test
-from vts.runners.host import const
-from vts.runners.host import keys
-from vts.runners.host import test_runner
-from vts.utils.python.android import api
-from vts.utils.python.controllers import android_device
-from vts.utils.python.file import target_file_utils
-
-from vts.testcases.kernel.lib import version
-
-
-class VtsKernelConfigTest(base_test.BaseTestClass):
- """Test case which check config options in /proc/config.gz.
-
- Attributes:
- _temp_dir: The temporary directory to which /proc/config.gz is copied.
- """
-
- PROC_FILE_PATH = "/proc/config.gz"
- KERNEL_CONFIG_FILE_PATH = "vts/testcases/kernel/config/data"
-
- def setUpClass(self):
- required_params = [keys.ConfigKeys.IKEY_DATA_FILE_PATH]
- self.getUserParams(required_params)
- self.dut = self.android_devices[0]
- self.shell = self.dut.shell
- self._temp_dir = tempfile.mkdtemp()
- self.supported_kernel_versions = version.getSupportedKernels(self.dut)
- self.release_dir = self.getReleaseDir()
-
- def getReleaseDir(self):
- """Return the appropriate subdirectory in kernel/configs.
-
- Returns the directory in kernel/configs corresponding to
- the device's first_api_level.
-
- Returns:
- string: a directory in kernel configs
- """
- api_level = self.dut.getLaunchApiLevel(strict=False)
-
- if (api_level == 0):
- logging.info("Cound not detect api level, using last release")
- return "p"
- elif api_level == api.PLATFORM_API_LEVEL_P:
- return "p"
- elif api_level == api.PLATFORM_API_LEVEL_O_MR1:
- return "o-mr1"
- elif api_level <= api.PLATFORM_API_LEVEL_O:
- return "o"
- else:
- return "."
-
- def checkKernelVersion(self):
- """Validate the kernel version of DUT is a valid kernel version.
-
- Returns:
- string, kernel version of device
- """
- cmd = "uname -a"
- results = self.shell.Execute(cmd)
- logging.info("Shell command '%s' results: %s", cmd, results)
-
- match = re.search(r"(\d+)\.(\d+)", results[const.STDOUT][0])
- if match is None:
- asserts.fail("Failed to detect kernel version of device.")
- else:
- kernel_version = int(match.group(1))
- kernel_patchlevel = int(match.group(2))
- logging.info("Detected kernel version: %s", match.group(0))
-
- for v in self.supported_kernel_versions:
- if (kernel_version == v[0] and kernel_patchlevel == v[1]):
- return match.group(0)
- asserts.fail("Detected kernel version is not one of %s" %
- self.supported_kernel_versions)
-
- def checkKernelArch(self, configs):
- """Find arch of the device kernel.
-
- Uses the kernel configuration to determine the architecture
- it is compiled for.
-
- Args:
- configs: dict containing device kernel configuration options
-
- Returns:
- A string containing the architecture of the device kernel. If
- the architecture cannot be determined, an empty string is
- returned.
- """
-
- CONFIG_ARM = "CONFIG_ARM"
- CONFIG_ARM64 = "CONFIG_ARM64"
- CONFIG_X86 = "CONFIG_X86"
-
- if CONFIG_ARM in configs and configs[CONFIG_ARM] == "y":
- return "arm"
- elif CONFIG_ARM64 in configs and configs[CONFIG_ARM64] == "y":
- return "arm64"
- elif CONFIG_X86 in configs and configs[CONFIG_X86] == "y":
- return "x86"
- else:
- print "Unable to determine kernel architecture."
- return ""
-
- def parseConfigFileToDict(self, file, configs):
- """Parse kernel config file to a dictionary.
-
- Args:
- file: file object, android-base.cfg or unzipped /proc/config.gz
- configs: dict to which config options in file will be added
-
- Returns:
- dict: {config_name: config_state}
- """
- config_lines = [line.rstrip("\n") for line in file.readlines()]
-
- for line in config_lines:
- if line.startswith("#") and line.endswith("is not set"):
- match = re.search(r"CONFIG_\S+", line)
- if match is None:
- asserts.fail("Failed to parse config file")
- else:
- config_name = match.group(0)
- config_state = "n"
- elif line.startswith("CONFIG_"):
- config_name, config_state = line.split("=", 1)
- if config_state.startswith(("'", '"')):
- config_state = config_state[1:-1]
- else:
- continue
- configs[config_name] = config_state
-
- return configs
-
- def testKernelConfigs(self):
- """Ensures all kernel configs conform to Android requirements.
-
- Detects kernel version of device and validates against appropriate
- Common Android Kernel android-base.cfg and Android Treble
- requirements.
- """
- logging.info("Testing existence of %s" % self.PROC_FILE_PATH)
- target_file_utils.assertPermissionsAndExistence(
- self.shell, self.PROC_FILE_PATH, target_file_utils.IsReadOnly)
-
- logging.info("Validating kernel version of device.")
- kernel_version = self.checkKernelVersion()
-
- # Pull configs from the universal config file.
- configs = dict()
- config_file_path = os.path.join(
- self.data_file_path, self.KERNEL_CONFIG_FILE_PATH,
- self.release_dir, "android-" + kernel_version, "android-base.cfg")
- logging.info("Pulling base cfg from %s", config_file_path)
- with open(config_file_path, 'r') as config_file:
- configs = self.parseConfigFileToDict(config_file, configs)
-
- # Pull configs from device.
- device_configs = dict()
- self.dut.adb.pull("%s %s" % (self.PROC_FILE_PATH, self._temp_dir))
- logging.info("Adb pull %s to %s", self.PROC_FILE_PATH, self._temp_dir)
-
- localpath = os.path.join(self._temp_dir, "config.gz")
- with gzip.open(localpath, "rb") as device_config_file:
- device_configs = self.parseConfigFileToDict(
- device_config_file, device_configs)
-
- # Check device architecture and pull arch-specific configs.
- kernelArch = self.checkKernelArch(device_configs)
- if kernelArch is not "":
- config_file_path = os.path.join(self.data_file_path,
- self.KERNEL_CONFIG_FILE_PATH,
- self.release_dir,
- "android-" + kernel_version,
- "android-base-%s.cfg" % kernelArch)
- if os.path.isfile(config_file_path):
- logging.info("Pulling arch cfg from %s", config_file_path)
- with open(config_file_path, 'r') as config_file:
- configs = self.parseConfigFileToDict(config_file, configs)
-
- # Determine any deviations from the required configs.
- should_be_enabled = []
- should_not_be_set = []
- incorrect_config_state = []
- for config_name, config_state in configs.iteritems():
- if (config_state == "y" and
- (config_name not in device_configs or
- device_configs[config_name] not in ("y", "m"))):
- should_be_enabled.append(config_name)
- elif (config_state == "n" and (config_name in device_configs) and
- device_configs[config_name] != "n"):
- should_not_be_set.append(config_name + "=" +
- device_configs[config_name])
- elif (config_name in device_configs and
- device_configs[config_name] != config_state):
- incorrect_config_state.append(config_name + "=" +
- device_configs[config_name])
-
- if ("CONFIG_OF" not in device_configs and
- "CONFIG_ACPI" not in device_configs):
- should_be_enabled.append("CONFIG_OF | CONFIG_ACPI")
-
- if ("CONFIG_ANDROID_LOW_MEMORY_KILLER" not in device_configs and
- ("CONFIG_MEMCG" not in device_configs or
- "CONFIG_MEMCG_SWAP" not in device_configs)):
- should_be_enabled.append("CONFIG_ANDROID_LOW_MEMORY_KILLER | "
- "(CONFIG_MEMCG & CONFIG_MEMCG_SWAP)")
-
- asserts.assertTrue(
- len(should_be_enabled) == 0 and len(should_not_be_set) == 0 and
- len(incorrect_config_state) == 0,
- ("The following kernel configs should be enabled: [%s]\n"
- "The following kernel configs should not be set: [%s]\n"
- "THe following kernel configs have incorrect state: [%s]") %
- (", ".join(should_be_enabled), ", ".join(should_not_be_set),
- ", ".join(incorrect_config_state)))
-
- def tearDownClass(self):
- """Deletes the temporary directory."""
- logging.info("Delete %s", self._temp_dir)
- shutil.rmtree(self._temp_dir)
-
-
-if __name__ == "__main__":
- test_runner.main()
diff --git a/cpu_profiling/Android.mk b/cpu_profiling/Android.mk
index b05e156..fe4a2bf 100644
--- a/cpu_profiling/Android.mk
+++ b/cpu_profiling/Android.mk
@@ -18,5 +18,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := CpuProfilingTest
-VTS_CONFIG_SRC_DIR := testcases/kernel/cpu_profiling
-include test/vts/tools/build/Android.host_config.mk
diff --git a/lib/__init__.py b/lib/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/__init__.py
+++ /dev/null
diff --git a/lib/version.py b/lib/version.py
deleted file mode 100644
index c5cc466..0000000
--- a/lib/version.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Copyright (C) 2018 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.
-
-from vts.utils.python.android import api
-
-def getSupportedKernels(dut):
- """Returns a list of the supported kernel versions for this
- devices' advertised API level.
-
- Args:
- dut: The AndroidDevice object corresponding to the device
- under test.
-
- Returns:
- A list of supported kernel versions.
- """
- api_level = dut.getLaunchApiLevel(strict=False)
- if api_level > api.PLATFORM_API_LEVEL_O_MR1 or api_level == 0:
- return [[4, 4, 107], [4, 9, 84], [4, 14, 42]]
- else:
- return [[3, 18, 0], [4, 4, 0], [4, 9, 0]]
diff --git a/linux_kselftest/presubmit/Android.mk b/linux_kselftest/presubmit/Android.mk
index 52e91d7..b02f247 100644
--- a/linux_kselftest/presubmit/Android.mk
+++ b/linux_kselftest/presubmit/Android.mk
@@ -19,5 +19,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelLinuxKselftestPresubmit
-VTS_CONFIG_SRC_DIR := testcases/kernel/linux_kselftest/presubmit
-include test/vts/tools/build/Android.host_config.mk
diff --git a/linux_kselftest/stable/Android.mk b/linux_kselftest/stable/Android.mk
index ddc23e0..95d2b78 100644
--- a/linux_kselftest/stable/Android.mk
+++ b/linux_kselftest/stable/Android.mk
@@ -19,5 +19,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelLinuxKselftest
-VTS_CONFIG_SRC_DIR := testcases/kernel/linux_kselftest/stable
-include test/vts/tools/build/Android.host_config.mk
diff --git a/linux_kselftest/staging/Android.mk b/linux_kselftest/staging/Android.mk
index c413cf3..6b789ce 100644
--- a/linux_kselftest/staging/Android.mk
+++ b/linux_kselftest/staging/Android.mk
@@ -19,5 +19,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelLinuxKselftestStaging
-VTS_CONFIG_SRC_DIR := testcases/kernel/linux_kselftest/staging
-include test/vts/tools/build/Android.host_config.mk
diff --git a/ltp/KernelLtpTest.py b/ltp/KernelLtpTest.py
index ccf2143..c11322d 100644
--- a/ltp/KernelLtpTest.py
+++ b/ltp/KernelLtpTest.py
@@ -60,8 +60,8 @@
the number is greater than 0, that number of threads
will be created to run the tests.
"""
- _32BIT = "32"
- _64BIT = "64"
+ _32BIT = 32
+ _64BIT = 64
_PASS = 0
_SKIP = 1
_FAIL = -1
@@ -196,12 +196,15 @@
# For LTP test cases, we run one shell command for each test case
# So the result should also contains only one execution output
- stdout = results[const.STDOUT][0]
- ret_code = results[const.EXIT_CODE][0]
+ try:
+ stdout = results[const.STDOUT][0]
+ ret_code = results[const.EXIT_CODE][0]
+ except IndexError as e:
+ logging.exception(e)
+ return (self._FAIL, "Command result is malformed.")
+
# Test case is not for the current configuration, SKIP
- if ((ret_code == ltp_enums.TestExitCode.TCONF and
- 'TPASS' not in stdout) or
- (ret_code == ltp_enums.TestExitCode.TPASS and 'CONF' in stdout)):
+ if (ret_code == ltp_enums.TestExitCode.TCONF):
return (self._SKIP, "Incompatible test skipped: TCONF")
elif ret_code not in (ltp_enums.TestExitCode.TCONF,
ltp_enums.TestExitCode.TPASS):
@@ -242,7 +245,7 @@
n_bit: int, bitness
"""
test_bit = 'nativetest'
- if n_bit == 64:
+ if n_bit == self._64BIT:
test_bit += '64'
self.PreTestSetup(test_bit)
self.PushFiles(test_bit)
diff --git a/ltp/configs/disabled_tests.py b/ltp/configs/disabled_tests.py
index f53fcff..3c8e3b3 100644
--- a/ltp/configs/disabled_tests.py
+++ b/ltp/configs/disabled_tests.py
@@ -1,92 +1,37 @@
# Tests disabled
-# Based on external/ltp commit 5f01077afe994f4107b147222f3956716d4a8fde
DISABLED_TESTS = [
- # b/32386191 getrusage04 result is flaky
- 'syscalls.getrusage04',
- # b/31154962
- 'cpuhotplug.cpuhotplug02',
- # The following test cases are uncategorized
- 'syscalls.chown01_16',
- 'syscalls.chown02_16',
- 'syscalls.chown03_16',
- 'syscalls.chown05_16',
- 'syscalls.fchown04',
- 'syscalls.fchown01_16',
- 'syscalls.fchown02_16',
- 'syscalls.fchown03_16',
- 'syscalls.fchown04_16',
- 'syscalls.fchown05_16',
- 'syscalls.getegid01_16',
- 'syscalls.getegid02_16',
- 'syscalls.geteuid01_16',
- 'syscalls.geteuid02_16',
- 'syscalls.getgid01_16',
- 'syscalls.getgid03_16',
- 'syscalls.getgroups01_16',
- 'syscalls.gethostbyname_r01',
- 'syscalls.getuid01_16',
- 'syscalls.getuid03_16',
- 'syscalls.ioctl03',
- 'syscalls.inotify03',
- 'syscalls.lchown03',
- 'syscalls.lchown01_16',
- 'syscalls.lchown02_16',
- 'syscalls.lchown03_16',
- 'syscalls.mmap16',
- 'syscalls.mprotect01',
- 'syscalls.nftw01',
- 'syscalls.nftw6401',
- 'syscalls.nice04',
- 'syscalls.open08',
- 'syscalls.open11',
- 'syscalls.pathconf01',
- 'syscalls.preadv02',
- 'syscalls.pwritev02',
- 'syscalls.rt_sigprocmask01',
- 'syscalls.setfsgid01_16',
- 'syscalls.setfsgid02_16',
- 'syscalls.setfsgid03_16',
- 'syscalls.setfsuid01_16',
- 'syscalls.setfsuid02_16',
- 'syscalls.setfsuid03_16',
- 'syscalls.setfsuid04_16',
- 'syscalls.setgid01_16',
- 'syscalls.setgid02_16',
- 'syscalls.setgid03_16',
- 'syscalls.setgroups01_16',
- 'syscalls.setgroups02_16',
- 'syscalls.setgroups03_16',
- 'syscalls.setgroups04_16',
- 'syscalls.setregid02',
- 'syscalls.setregid03',
- 'syscalls.setregid04',
- 'syscalls.setregid01_16',
- 'syscalls.setregid02_16',
- 'syscalls.setregid03_16',
- 'syscalls.setregid04_16',
- 'syscalls.setresgid01_16',
- 'syscalls.setresgid02_16',
- 'syscalls.setresgid03_16',
- 'syscalls.setresgid04_16',
- 'syscalls.setresuid01_16',
- 'syscalls.setresuid02_16',
- 'syscalls.setresuid03_16',
- 'syscalls.setresuid04_16',
- 'syscalls.setresuid05_16',
- 'syscalls.setreuid01_16',
- 'syscalls.setreuid02_16',
- 'syscalls.setreuid03_16',
- 'syscalls.setreuid04_16',
- 'syscalls.setreuid05_16',
- 'syscalls.setreuid06_16',
- 'syscalls.setreuid07_16',
- 'syscalls.setuid01_16',
- 'syscalls.setuid02_16',
- 'syscalls.setuid03_16',
- 'syscalls.setuid04_16',
- 'syscalls.splice02',
- 'syscalls.sysconf01',
- 'syscalls.utimensat01',
+ 'cap_bounds.Cap_bounds',
+ 'commands.file01', # b/71414136
+ 'cpuhotplug.cpuhotplug02', # b/31154962
+ 'cpuhotplug.cpuhotplug03',
+ 'cpuhotplug.cpuhotplug04', # b/30688056
+ 'cpuhotplug.cpuhotplug06',
+ 'cve.cve-2014-0196', # b/112350736
+ 'cve.cve-2015-0235', # b/112350398
+ 'cve.cve-2016-4470', # b/112354289
+ 'cve.cve-2017-1000364', # b/112350736
+ 'cve.cve-2017-5669', # b/112354289
+ 'dio.dio04',
+ 'dio.dio10',
+ 'dio.dio29', # takes too long
+ 'dio.dio30', # takes too long
+ 'dma_thread_diotest.dma_thread_diotest1', # b/32100169
+ 'dma_thread_diotest.dma_thread_diotest2',
+ 'dma_thread_diotest.dma_thread_diotest3',
+ 'dma_thread_diotest.dma_thread_diotest4',
+ 'dma_thread_diotest.dma_thread_diotest5',
+ 'dma_thread_diotest.dma_thread_diotest6',
+ 'dma_thread_diotest.dma_thread_diotest7',
+ 'fcntl-locktests_android.FCNTL_LOCKTESTS',
+ 'filecaps.Filecaps',
+ 'fs.fs_racer_32bit', # b/71780005
+ 'fs.fs_racer_64bit', # b/71780005
+ 'fs.ftest01',
+ 'fs.ftest03',
+ 'fs.ftest04',
+ 'fs.ftest05',
+ 'fs.ftest07',
+ 'fs.ftest08',
'fs.gf01',
'fs.gf02',
'fs.gf03',
@@ -115,19 +60,61 @@
'fs.gf28',
'fs.gf29',
'fs.gf30',
+ 'fs.iogen01',
+ 'fs.isofs',
+ 'fs.proc01', # b/71415362
+ 'fs.quota_remount_test01', # b/33008689
'fs.rwtest01',
'fs.rwtest02',
'fs.rwtest03',
'fs.rwtest04',
'fs.rwtest05',
- 'fs.iogen01',
- 'fs.isofs',
+ 'fs_bind.BindMounts',
+ 'fs_ext4.ext4-persist-prealloc',
+ 'fs_ext4.ext4-uninit-groups',
'fsx.fsx-linux',
- 'mm.mtest06',
- 'mm.shm_test01',
+ 'fsx.fsx-linux',
+ 'hugetlb.hugemmap05_1',
+ 'hugetlb.hugemmap05_2',
+ 'hugetlb.hugemmap05_3',
+ 'input.input01_64bit', # unstable 64-bits tests
+ 'input.input02_64bit',
+ 'input.input04_64bit',
+ 'input.input05_64bit',
+ 'input.input06_32bit',
+ 'input.input06_64bit',
+ 'kernel_misc.kmsg01', # b/32343072
+ 'kernel_misc.zram03',
+ 'mm.ksm01',
+ 'mm.ksm01_1', # b/71416672
+ 'mm.ksm03',
+ 'mm.ksm03_1',
'mm.mallocstress01',
- 'mm.vma03',
+ 'mm.max_map_count_32bit', # b/67981135
+ 'mm.max_map_count_64bit', # b/67981135
'mm.min_free_kbytes',
+ 'mm.mmapstress10',
+ 'mm.mtest01',
+ 'mm.mtest01w', # b/30699880
+ 'mm.oom01_64bit', # b/31181781
+ 'mm.oom02_64bit',
+ 'mm.oom03_64bit',
+ 'mm.oom04_64bit',
+ 'mm.oom05_64bit',
+ 'mm.overcommit_memory01_64bit', # failing 64-bit only tests
+ 'mm.overcommit_memory02_64bit',
+ 'mm.overcommit_memory03_64bit',
+ 'mm.overcommit_memory04_64bit',
+ 'mm.overcommit_memory05_64bit',
+ 'mm.overcommit_memory06_64bit',
+ 'mm.shm_test01',
+ 'mm.swapping01_64bit', # b/31181781
+ 'mm.thp01_32bit', # b/65636203
+ 'mm.thp01_64bit',
+ 'mm.thp02_64bit',
+ 'mm.thp03_64bit',
+ 'mm.vma01_64bit', # b/31181781
+ 'mm.vma03',
'pipes.pipeio_1',
'pipes.pipeio_3',
'pipes.pipeio_4',
@@ -135,165 +122,65 @@
'pipes.pipeio_6',
'pipes.pipeio_8',
'sched.trace_sched01',
- 'math.float_bessel',
- 'math.float_exp_log',
- 'math.float_iperb',
- 'math.float_power',
- 'math.float_trigo',
- 'fs_bind.BindMounts',
- 'filecaps.Filecaps',
- 'cap_bounds.Cap_bounds',
- 'fcntl-locktests_android.FCNTL_LOCKTESTS',
- 'numa.move_pages03',
- 'numa.move_pages11',
- 'hugetlb.hugemmap05_1',
- 'hugetlb.hugemmap05_2',
- 'hugetlb.hugemmap05_3',
- 'hyperthreading.smt_smp_enabled',
- 'hyperthreading.smt_smp_affinity',
- 'kernel_misc.zram03',
- 'fs_ext4.ext4-uninit-groups',
- 'fs_ext4.ext4-persist-prealloc',
- 'cpuhotplug.cpuhotplug03',
- 'cpuhotplug.cpuhotplug06',
- 'dio.dio10',
- # dio29 and dio30 take too long to finish
- 'dio.dio29',
- 'dio.dio30',
- 'fsx.fsx-linux',
- 'dio.dio04',
- 'numa.Numa-testcases',
- 'syscalls.connect01',
- 'syscalls.prot_hsymlinks',
- 'fs.ftest01',
- 'fs.ftest03',
- 'fs.ftest04',
- 'fs.ftest05',
- 'fs.ftest07',
- 'fs.ftest08',
- 'fs.inode02',
- 'ipc.signal_test_01',
- 'mm.mmapstress10',
+ 'syscalls.access04',
+ 'syscalls.alarm02', # b/112423802
+ 'syscalls.cve-2017-5669', # b/71416706
+ 'syscalls.fchown04',
+ 'syscalls.fchown04_16',
'syscalls.fcntl14',
'syscalls.fcntl14',
'syscalls.fcntl14_64',
'syscalls.fcntl17',
'syscalls.fcntl17_64',
- 'syscalls.kill12',
- 'syscalls.sigpending02',
- 'syscalls.sigrelse01',
- 'syscalls.vfork02',
- # The following tests are not stable on 64bit version
- 'input.input01_64bit',
- 'input.input02_64bit',
- 'input.input04_64bit',
- 'input.input05_64bit',
- 'input.input06_64bit',
- 'input.input06_32bit',
- # The following tests are failing on 64bit version
- 'mm.overcommit_memory01_64bit',
- 'mm.overcommit_memory02_64bit',
- 'mm.overcommit_memory03_64bit',
- 'mm.overcommit_memory04_64bit',
- 'mm.overcommit_memory05_64bit',
- 'mm.overcommit_memory06_64bit',
- # tests that are currently killing some lab devices 64bit on (pixel and bullhead)
- # b/31181781
- 'mm.oom01_64bit',
- 'mm.oom02_64bit',
- 'mm.oom03_64bit',
- 'mm.oom04_64bit',
- 'mm.oom05_64bit',
- 'mm.swapping01_64bit',
- 'mm.thp01_64bit',
- 'mm.thp02_64bit',
- 'mm.thp03_64bit',
- 'mm.vma01_64bit',
- # b/65636203
- 'mm.thp01_32bit',
- # kmsg01 would pass but it occasionally causes socket timeout and misalignment
- # of request and response
- # b/32343072
- 'kernel_misc.kmsg01',
- # alarm02 tests for a boundary condition which is impractical to implement
- # correctly on 32-bit Linux. bionic deliberately breaks with POSIX by reporting
- # that it failed to set up the alarm. (Other libc implementations fail to
- # set up the alarm too, but then return 0 anyway.)
- 'syscalls.alarm02',
- # readdir02 calls opendir() -> closedir() -> readdir() and checks if readdir()
- # returns EBADF. POSIX doesn't require this, and bionic is likely to instead
- # deadlock trying to acquire a destroyed mutex.
- 'syscalls.readdir02',
- # Android sets RLIMIT_NICE to 40, so setpriority02 succeeds unexpectedly
- 'syscalls.setpriority02',
- # fork13 takes ~45 minutes to run
- 'syscalls.fork13',
- # open13 tests that fchmod() fails on fds opened with O_PATH. bionic
- # deliberately masks the EBADF returned by the kernel.
- #
- # https://android-review.googlesource.com/#/c/127908/
- 'syscalls.open13',
- # Bug#30675453
- 'syscalls.perf_event_open02',
- # Bug#30688551
- 'syscalls.lstat03_64',
- 'syscalls.lstat03',
- # Bug#30688056
- 'cpuhotplug.cpuhotplug04',
- # Bug#30699880
- 'mm.mtest01w',
- 'mm.mtest01',
- # Bug#30688574
- 'syscalls.accept4_01',
- # Bug #32100169
- 'dma_thread_diotest.dma_thread_diotest1',
- 'dma_thread_diotest.dma_thread_diotest2',
- 'dma_thread_diotest.dma_thread_diotest3',
- 'dma_thread_diotest.dma_thread_diotest4',
- 'dma_thread_diotest.dma_thread_diotest5',
- 'dma_thread_diotest.dma_thread_diotest6',
- 'dma_thread_diotest.dma_thread_diotest7',
- # b/33008689 (closed) requires mkfs.ext4 and loop device support.
- 'fs.quota_remount_test01',
- # https://b/65053723#comment19 (Flaky due to timeout dependency)
- 'syscalls.pselect01',
- # https://b/65053723#comment20 (seems to test for "xfs" specific bug)
- 'syscalls.getxattr04',
- # Following tests added in LTP20170516 release are disabled because
- # they currently fail with VTS
- 'syscalls.access04',
+ 'syscalls.fcntl35',
+ 'syscalls.fcntl35_64', # b/71416738
+ 'syscalls.fcntl36',
+ 'syscalls.fcntl36_64', # b/71416760
+ 'syscalls.fork13', # takes too long: ~45mins
+ 'syscalls.gethostbyname_r01',
+ 'syscalls.getrusage04', # b/32386191
+ 'syscalls.getxattr04', # b/65053723#comment20
+ 'syscalls.inotify03',
+ 'syscalls.ioctl03',
'syscalls.ioctl04',
'syscalls.ioctl06',
'syscalls.kcmp03',
- # TODO(b/67981135): Following tests added in LTP20170929 release are
- # disabled because they currently fail with VTS
- 'mm.max_map_count_64bit',
- 'mm.max_map_count_32bit',
- # TODO(b/69117476): Following test needs to be checked to see it
- # it correctly skips running
- 'tracing.ftrace_regression01',
- # b/71780005: causes /data to get filled repeatedly
- 'fs.fs_racer_32bit',
- 'fs.fs_racer_64bit',
- # b/71414136: fails in VTS
- 'commands.file01',
- # b/71415362: fails in VTS
- 'fs.proc01',
- # b/71416672: fails in VTS
- 'mm.ksm01_1',
- 'mm.ksm01',
- 'mm.ksm03_1',
- 'mm.ksm03',
- # b/71416706: fails in VTS
- 'syscalls.cve-2017-5669',
- # b/71416738: fails in VTS
- 'syscalls.fcntl35_64',
- 'syscalls.fcntl35',
- # b/71416760: fails in VTS
- 'syscalls.fcntl36_64',
- 'syscalls.fcntl36',
- # b/71416822: fails in VTS
- 'tracing.dynamic_debug01',
- # (TODO): b/73784987
- 'syscalls.mount03',
+ 'syscalls.kill12',
+ 'syscalls.lchown03',
+ 'syscalls.lchown03_16',
+ 'syscalls.lstat03',
+ 'syscalls.lstat03_64', # b/30688551
+ 'syscalls.mmap16',
+ 'syscalls.move_pages01', # move_pages syscalls requires userspace numa.
+ 'syscalls.move_pages02',
+ 'syscalls.move_pages03',
+ 'syscalls.move_pages04',
+ 'syscalls.move_pages05',
+ 'syscalls.move_pages06',
+ 'syscalls.move_pages07',
+ 'syscalls.move_pages08',
+ 'syscalls.move_pages09',
+ 'syscalls.move_pages10',
+ 'syscalls.move_pages11',
+ 'syscalls.move_pages12',
+ 'syscalls.nftw01',
+ 'syscalls.nftw6401',
+ 'syscalls.nice04',
+ 'syscalls.open08',
+ 'syscalls.open13', # https://android-review.googlesource.com/#/c/127908/
+ 'syscalls.perf_event_open02', # b/30675443
+ 'syscalls.prot_hsymlinks',
+ 'syscalls.pselect01', # b/65053723#comment19
+ 'syscalls.readdir02', # b/112422073
+ 'syscalls.rt_sigprocmask01_32bit', # b/31152672
+ 'syscalls.setpriority02', # b/73137289
+ 'syscalls.setregid02',
+ 'syscalls.setregid02_16',
+ 'syscalls.sigpending02',
+ 'syscalls.sigrelse01',
+ 'syscalls.splice02',
+ 'syscalls.utimensat01',
+ 'syscalls.vfork02',
+ 'tracing.dynamic_debug01', # b/71416822
+ 'tracing.ftrace_regression01', # b/69117476
]
diff --git a/ltp/configs/stable_tests.py b/ltp/configs/stable_tests.py
index 9ed44e1..1f3f963 100644
--- a/ltp/configs/stable_tests.py
+++ b/ltp/configs/stable_tests.py
@@ -1,8 +1,14 @@
STABLE_TESTS = [
+ 'commands.cp01_32bit',
+ 'commands.cp01_64bit',
+ 'commands.cpio01_32bit',
+ 'commands.cpio01_64bit',
'commands.ldd_32bit',
'commands.ldd_64bit',
'commands.ln01_32bit',
'commands.ln01_64bit',
+ 'commands.mkdir01_32bit',
+ 'commands.mkdir01_64bit',
'containers.mountns01_32bit',
'containers.mountns01_64bit',
'containers.mountns02_32bit',
@@ -11,6 +17,66 @@
'containers.mountns03_64bit',
'containers.mountns04_32bit',
'containers.mountns04_64bit',
+ 'cve.cve-2011-0999_32bit',
+ 'cve.cve-2011-0999_64bit',
+ 'cve.cve-2011-2496_32bit',
+ 'cve.cve-2011-2496_64bit',
+ 'cve.cve-2012-0957_32bit',
+ 'cve.cve-2012-0957_64bit',
+ 'cve.cve-2015-3290_32bit',
+ 'cve.cve-2015-3290_64bit',
+ 'cve.cve-2015-7550_32bit',
+ 'cve.cve-2015-7550_64bit',
+ 'cve.cve-2016-10044_32bit',
+ 'cve.cve-2016-10044_64bit',
+ 'cve.cve-2016-4470_32bit',
+ 'cve.cve-2016-4470_64bit',
+ 'cve.cve-2016-4997_32bit',
+ 'cve.cve-2016-4997_64bit',
+ 'cve.cve-2016-5195_32bit',
+ 'cve.cve-2016-5195_64bit',
+ 'cve.cve-2016-7042_32bit',
+ 'cve.cve-2016-7042_64bit',
+ 'cve.cve-2016-7117_32bit',
+ 'cve.cve-2016-7117_64bit',
+ 'cve.cve-2016-9604_32bit',
+ 'cve.cve-2016-9604_64bit',
+ 'cve.cve-2017-12192_32bit',
+ 'cve.cve-2017-12192_64bit',
+ 'cve.cve-2017-12193_32bit',
+ 'cve.cve-2017-12193_64bit',
+ 'cve.cve-2017-15274_32bit',
+ 'cve.cve-2017-15274_64bit',
+ 'cve.cve-2017-15299_32bit',
+ 'cve.cve-2017-15299_64bit',
+ 'cve.cve-2017-15537_32bit',
+ 'cve.cve-2017-15537_64bit',
+ 'cve.cve-2017-15951_32bit',
+ 'cve.cve-2017-15951_64bit',
+ 'cve.cve-2017-16939_32bit',
+ 'cve.cve-2017-16939_64bit',
+ 'cve.cve-2017-17052_32bit',
+ 'cve.cve-2017-17052_64bit',
+ 'cve.cve-2017-17053_32bit',
+ 'cve.cve-2017-17053_64bit',
+ 'cve.cve-2017-17807_32bit',
+ 'cve.cve-2017-17807_64bit',
+ 'cve.cve-2017-2618_32bit',
+ 'cve.cve-2017-2618_64bit',
+ 'cve.cve-2017-2671_32bit',
+ 'cve.cve-2017-2671_64bit',
+ 'cve.cve-2017-5669_32bit',
+ 'cve.cve-2017-5669_64bit',
+ 'cve.cve-2017-5754_32bit',
+ 'cve.cve-2017-5754_64bit',
+ 'cve.cve-2017-6951_32bit',
+ 'cve.cve-2017-6951_64bit',
+ 'cve.cve-2017-7308_32bit',
+ 'cve.cve-2017-7308_64bit',
+ 'cve.cve-2017-7472_32bit',
+ 'cve.cve-2017-7472_64bit',
+ 'cve.cve-2018-5803_32bit',
+ 'cve.cve-2018-5803_64bit',
'dio.dio01_32bit',
'dio.dio01_64bit',
'dio.dio02_32bit',
@@ -167,10 +233,16 @@
'ipc.signal_test_06_64bit',
'ipc.signal_test_07_32bit',
'ipc.signal_test_07_64bit',
+ 'math.abs01_32bit',
+ 'math.abs01_64bit',
+ 'math.atof01_32bit',
+ 'math.atof01_64bit',
'math.fptest01_32bit',
'math.fptest01_64bit',
'math.fptest02_32bit',
'math.fptest02_64bit',
+ 'math.nextafter01_32bit',
+ 'math.nextafter01_64bit',
'mm.data_space_32bit',
'mm.data_space_64bit',
'mm.max_map_count_32bit',
@@ -207,12 +279,12 @@
'mm.mmapstress09_64bit',
'mm.mtest05_32bit',
'mm.mtest05_64bit',
- 'mm.mtest06_32bit',
- 'mm.mtest06_64bit',
'mm.mtest06_2_32bit',
'mm.mtest06_2_64bit',
+ 'mm.mtest06_32bit',
'mm.mtest06_3_32bit',
'mm.mtest06_3_64bit',
+ 'mm.mtest06_64bit',
'mm.page01_32bit',
'mm.page01_64bit',
'mm.page02_32bit',
@@ -230,6 +302,8 @@
'pty.ptem01_64bit',
'pty.pty01_32bit',
'pty.pty01_64bit',
+ 'pty.pty02_32bit',
+ 'pty.pty02_64bit',
'sched.hackbench01_32bit',
'sched.hackbench01_64bit',
'sched.hackbench01_low_mem_32bit',
@@ -264,6 +338,8 @@
'syscalls.abort01_64bit',
'syscalls.accept01_32bit',
'syscalls.accept01_64bit',
+ 'syscalls.accept4_01_32bit',
+ 'syscalls.accept4_01_64bit',
'syscalls.access01_32bit',
'syscalls.access01_64bit',
'syscalls.access02_32bit',
@@ -276,12 +352,14 @@
'syscalls.add_key01_64bit',
'syscalls.add_key02_32bit',
'syscalls.add_key02_64bit',
+ 'syscalls.add_key03_32bit',
+ 'syscalls.add_key03_64bit',
+ 'syscalls.add_key04_32bit',
+ 'syscalls.add_key04_64bit',
'syscalls.adjtimex01_32bit',
'syscalls.adjtimex01_64bit',
'syscalls.adjtimex02_32bit',
'syscalls.adjtimex02_64bit',
- 'syscalls.alarm01_32bit',
- 'syscalls.alarm01_64bit',
'syscalls.alarm03_32bit',
'syscalls.alarm03_64bit',
'syscalls.alarm05_32bit',
@@ -332,12 +410,16 @@
'syscalls.chmod05_64bit',
'syscalls.chmod07_32bit',
'syscalls.chmod07_64bit',
+ 'syscalls.chown01_16_32bit',
'syscalls.chown01_32bit',
'syscalls.chown01_64bit',
+ 'syscalls.chown02_16_32bit',
'syscalls.chown02_32bit',
'syscalls.chown02_64bit',
+ 'syscalls.chown03_16_32bit',
'syscalls.chown03_32bit',
'syscalls.chown03_64bit',
+ 'syscalls.chown05_16_32bit',
'syscalls.chown05_32bit',
'syscalls.chown05_64bit',
'syscalls.chroot01_32bit',
@@ -352,6 +434,8 @@
'syscalls.clock_getres01_64bit',
'syscalls.clock_nanosleep01_32bit',
'syscalls.clock_nanosleep01_64bit',
+ 'syscalls.clock_nanosleep02_32bit',
+ 'syscalls.clock_nanosleep02_64bit',
'syscalls.clock_nanosleep2_01_32bit',
'syscalls.clock_nanosleep2_01_64bit',
'syscalls.clone01_32bit',
@@ -380,6 +464,8 @@
'syscalls.close08_64bit',
'syscalls.connect01_32bit',
'syscalls.connect01_64bit',
+ 'syscalls.copy_file_range01_32bit',
+ 'syscalls.copy_file_range01_64bit',
'syscalls.creat01_32bit',
'syscalls.creat01_64bit',
'syscalls.creat03_32bit',
@@ -436,12 +522,15 @@
'syscalls.epoll_ctl01_64bit',
'syscalls.epoll_ctl02_32bit',
'syscalls.epoll_ctl02_64bit',
+ 'syscalls.epoll_pwait01_32bit',
+ 'syscalls.epoll_pwait01_64bit',
'syscalls.epoll_wait01_32bit',
'syscalls.epoll_wait01_64bit',
'syscalls.epoll_wait02_32bit',
'syscalls.epoll_wait02_64bit',
'syscalls.epoll_wait03_32bit',
'syscalls.epoll_wait03_64bit',
+ 'syscalls.eventfd01_32bit',
'syscalls.eventfd2_01_32bit',
'syscalls.eventfd2_01_64bit',
'syscalls.eventfd2_02_32bit',
@@ -508,12 +597,16 @@
'syscalls.fchmod07_64bit',
'syscalls.fchmodat01_32bit',
'syscalls.fchmodat01_64bit',
+ 'syscalls.fchown01_16_32bit',
'syscalls.fchown01_32bit',
'syscalls.fchown01_64bit',
+ 'syscalls.fchown02_16_32bit',
'syscalls.fchown02_32bit',
'syscalls.fchown02_64bit',
+ 'syscalls.fchown03_16_32bit',
'syscalls.fchown03_32bit',
'syscalls.fchown03_64bit',
+ 'syscalls.fchown05_16_32bit',
'syscalls.fchown05_32bit',
'syscalls.fchown05_64bit',
'syscalls.fchownat01_32bit',
@@ -641,13 +734,19 @@
'syscalls.fcntl33_64_64bit',
'syscalls.fcntl33_64bit',
'syscalls.fcntl34_32bit',
- 'syscalls.fcntl34_64bit',
'syscalls.fcntl34_64_32bit',
'syscalls.fcntl34_64_64bit',
+ 'syscalls.fcntl34_64bit',
'syscalls.fdatasync01_32bit',
'syscalls.fdatasync01_64bit',
'syscalls.fdatasync02_32bit',
'syscalls.fdatasync02_64bit',
+ 'syscalls.fgetxattr01_32bit',
+ 'syscalls.fgetxattr01_64bit',
+ 'syscalls.fgetxattr02_32bit',
+ 'syscalls.fgetxattr02_64bit',
+ 'syscalls.fgetxattr03_32bit',
+ 'syscalls.fgetxattr03_64bit',
'syscalls.flistxattr01_32bit',
'syscalls.flistxattr01_64bit',
'syscalls.flistxattr02_32bit',
@@ -690,6 +789,10 @@
'syscalls.fork11_64bit',
'syscalls.fpathconf01_32bit',
'syscalls.fpathconf01_64bit',
+ 'syscalls.fsetxattr01_32bit',
+ 'syscalls.fsetxattr01_64bit',
+ 'syscalls.fsetxattr02_32bit',
+ 'syscalls.fsetxattr02_64bit',
'syscalls.fstat01_32bit',
'syscalls.fstat01_64_32bit',
'syscalls.fstat01_64_64bit',
@@ -735,9 +838,9 @@
'syscalls.ftruncate03_64_64bit',
'syscalls.ftruncate03_64bit',
'syscalls.ftruncate04_32bit',
- 'syscalls.ftruncate04_64bit',
'syscalls.ftruncate04_64_32bit',
'syscalls.ftruncate04_64_64bit',
+ 'syscalls.ftruncate04_64bit',
'syscalls.futex_wait01_32bit',
'syscalls.futex_wait01_64bit',
'syscalls.futex_wait03_32bit',
@@ -778,20 +881,30 @@
'syscalls.getdomainname01_64bit',
'syscalls.getdtablesize01_32bit',
'syscalls.getdtablesize01_64bit',
+ 'syscalls.getegid01_16_32bit',
'syscalls.getegid01_32bit',
'syscalls.getegid01_64bit',
+ 'syscalls.getegid02_16_32bit',
'syscalls.getegid02_32bit',
'syscalls.getegid02_64bit',
+ 'syscalls.geteuid01_16_32bit',
'syscalls.geteuid01_32bit',
'syscalls.geteuid01_64bit',
+ 'syscalls.geteuid02_16_32bit',
'syscalls.geteuid02_32bit',
'syscalls.geteuid02_64bit',
+ 'syscalls.getgid01_16_32bit',
'syscalls.getgid01_32bit',
'syscalls.getgid01_64bit',
+ 'syscalls.getgid03_16_32bit',
'syscalls.getgid03_32bit',
'syscalls.getgid03_64bit',
+ 'syscalls.getgroups01_16_32bit',
'syscalls.getgroups01_32bit',
'syscalls.getgroups01_64bit',
+ 'syscalls.getgroups03_16_32bit',
+ 'syscalls.getgroups03_32bit',
+ 'syscalls.getgroups03_64bit',
'syscalls.gethostname01_32bit',
'syscalls.gethostname01_64bit',
'syscalls.getitimer01_32bit',
@@ -866,8 +979,10 @@
'syscalls.gettimeofday01_64bit',
'syscalls.gettimeofday02_32bit',
'syscalls.gettimeofday02_64bit',
+ 'syscalls.getuid01_16_32bit',
'syscalls.getuid01_32bit',
'syscalls.getuid01_64bit',
+ 'syscalls.getuid03_16_32bit',
'syscalls.getuid03_32bit',
'syscalls.getuid03_64bit',
'syscalls.getxattr01_32bit',
@@ -914,6 +1029,22 @@
'syscalls.iopl01_64bit',
'syscalls.iopl02_32bit',
'syscalls.iopl02_64bit',
+ 'syscalls.keyctl01_32bit',
+ 'syscalls.keyctl01_64bit',
+ 'syscalls.keyctl02_32bit',
+ 'syscalls.keyctl02_64bit',
+ 'syscalls.keyctl03_32bit',
+ 'syscalls.keyctl03_64bit',
+ 'syscalls.keyctl04_32bit',
+ 'syscalls.keyctl04_64bit',
+ 'syscalls.keyctl05_32bit',
+ 'syscalls.keyctl05_64bit',
+ 'syscalls.keyctl06_32bit',
+ 'syscalls.keyctl06_64bit',
+ 'syscalls.keyctl07_32bit',
+ 'syscalls.keyctl07_64bit',
+ 'syscalls.keyctl08_32bit',
+ 'syscalls.keyctl08_64bit',
'syscalls.kill01_32bit',
'syscalls.kill01_64bit',
'syscalls.kill02_32bit',
@@ -932,8 +1063,10 @@
'syscalls.kill10_64bit',
'syscalls.kill11_32bit',
'syscalls.kill11_64bit',
+ 'syscalls.lchown01_16_32bit',
'syscalls.lchown01_32bit',
'syscalls.lchown01_64bit',
+ 'syscalls.lchown02_16_32bit',
'syscalls.lchown02_32bit',
'syscalls.lchown02_64bit',
'syscalls.lgetxattr01_32bit',
@@ -968,6 +1101,12 @@
'syscalls.listxattr02_64bit',
'syscalls.listxattr03_32bit',
'syscalls.listxattr03_64bit',
+ 'syscalls.llistxattr01_32bit',
+ 'syscalls.llistxattr01_64bit',
+ 'syscalls.llistxattr02_32bit',
+ 'syscalls.llistxattr02_64bit',
+ 'syscalls.llistxattr03_32bit',
+ 'syscalls.llistxattr03_64bit',
'syscalls.llseek01_32bit',
'syscalls.llseek01_64bit',
'syscalls.llseek02_32bit',
@@ -1002,6 +1141,8 @@
'syscalls.madvise05_64bit',
'syscalls.madvise08_32bit',
'syscalls.madvise08_64bit',
+ 'syscalls.madvise10_32bit',
+ 'syscalls.madvise10_64bit',
'syscalls.memcmp01_32bit',
'syscalls.memcmp01_64bit',
'syscalls.memcpy01_32bit',
@@ -1016,8 +1157,6 @@
'syscalls.mincore01_64bit',
'syscalls.mincore02_32bit',
'syscalls.mincore02_64bit',
- 'syscalls.mkdir01_32bit',
- 'syscalls.mkdir01_64bit',
'syscalls.mkdir02_32bit',
'syscalls.mkdir02_64bit',
'syscalls.mkdir03_32bit',
@@ -1028,8 +1167,6 @@
'syscalls.mkdir05A_64bit',
'syscalls.mkdir05_32bit',
'syscalls.mkdir05_64bit',
- 'syscalls.mkdir08_32bit',
- 'syscalls.mkdir08_64bit',
'syscalls.mkdir09_32bit',
'syscalls.mkdir09_64bit',
'syscalls.mkdirat01_32bit',
@@ -1112,6 +1249,8 @@
'syscalls.mount05_64bit',
'syscalls.mount06_32bit',
'syscalls.mount06_64bit',
+ 'syscalls.mprotect01_32bit',
+ 'syscalls.mprotect01_64bit',
'syscalls.mprotect02_32bit',
'syscalls.mprotect02_64bit',
'syscalls.mprotect03_32bit',
@@ -1164,10 +1303,10 @@
'syscalls.nice03_64bit',
'syscalls.nice05_32bit',
'syscalls.nice05_64bit',
- 'syscalls.open01_32bit',
- 'syscalls.open01_64bit',
'syscalls.open01A_32bit',
'syscalls.open01A_64bit',
+ 'syscalls.open01_32bit',
+ 'syscalls.open01_64bit',
'syscalls.open02_32bit',
'syscalls.open02_64bit',
'syscalls.open03_32bit',
@@ -1190,6 +1329,8 @@
'syscalls.openat01_64bit',
'syscalls.openat03_32bit',
'syscalls.openat03_64bit',
+ 'syscalls.pathconf01_32bit',
+ 'syscalls.pathconf01_64bit',
'syscalls.pause01_32bit',
'syscalls.pause01_64bit',
'syscalls.pause02_32bit',
@@ -1254,6 +1395,8 @@
'syscalls.prctl01_64bit',
'syscalls.prctl02_32bit',
'syscalls.prctl02_64bit',
+ 'syscalls.prctl03_32bit',
+ 'syscalls.prctl03_64bit',
'syscalls.pread01_32bit',
'syscalls.pread01_64_32bit',
'syscalls.pread01_64_64bit',
@@ -1271,9 +1414,9 @@
'syscalls.preadv01_64_64bit',
'syscalls.preadv01_64bit',
'syscalls.preadv02_32bit',
- 'syscalls.preadv02_64bit',
'syscalls.preadv02_64_32bit',
'syscalls.preadv02_64_64bit',
+ 'syscalls.preadv02_64bit',
'syscalls.process_vm_readv01_32bit',
'syscalls.process_vm_readv01_64bit',
'syscalls.process_vm_readv02_32bit',
@@ -1284,6 +1427,8 @@
'syscalls.process_vm_writev01_64bit',
'syscalls.process_vm_writev02_32bit',
'syscalls.process_vm_writev02_64bit',
+ 'syscalls.pselect01_64_32bit',
+ 'syscalls.pselect01_64_64bit',
'syscalls.pselect02_32bit',
'syscalls.pselect02_64_32bit',
'syscalls.pselect02_64_64bit',
@@ -1317,9 +1462,9 @@
'syscalls.pwritev01_64_64bit',
'syscalls.pwritev01_64bit',
'syscalls.pwritev02_32bit',
- 'syscalls.pwritev02_64bit',
'syscalls.pwritev02_64_32bit',
'syscalls.pwritev02_64_64bit',
+ 'syscalls.pwritev02_64bit',
'syscalls.qmm01_32bit',
'syscalls.qmm01_64bit',
'syscalls.read01_32bit',
@@ -1340,12 +1485,8 @@
'syscalls.readlink01A_64bit',
'syscalls.readlink01_32bit',
'syscalls.readlink01_64bit',
- 'syscalls.readlink02_32bit',
- 'syscalls.readlink02_64bit',
'syscalls.readlink03_32bit',
'syscalls.readlink03_64bit',
- 'syscalls.readlink04_32bit',
- 'syscalls.readlink04_64bit',
'syscalls.readlinkat01_32bit',
'syscalls.readlinkat01_64bit',
'syscalls.readlinkat02_32bit',
@@ -1406,6 +1547,10 @@
'syscalls.renameat202_64bit',
'syscalls.request_key01_32bit',
'syscalls.request_key01_64bit',
+ 'syscalls.request_key02_32bit',
+ 'syscalls.request_key02_64bit',
+ 'syscalls.request_key03_32bit',
+ 'syscalls.request_key03_64bit',
'syscalls.rmdir01_32bit',
'syscalls.rmdir01_64bit',
'syscalls.rmdir02_32bit',
@@ -1414,10 +1559,6 @@
'syscalls.rmdir03A_64bit',
'syscalls.rmdir03_32bit',
'syscalls.rmdir03_64bit',
- 'syscalls.rmdir04_32bit',
- 'syscalls.rmdir04_64bit',
- 'syscalls.rmdir05_32bit',
- 'syscalls.rmdir05_64bit',
'syscalls.rt_sigaction01_32bit',
'syscalls.rt_sigaction01_64bit',
'syscalls.rt_sigaction02_32bit',
@@ -1428,6 +1569,8 @@
'syscalls.rt_sigprocmask02_64bit',
'syscalls.rt_sigqueueinfo01_32bit',
'syscalls.rt_sigqueueinfo01_64bit',
+ 'syscalls.rt_sigsuspend01_32bit',
+ 'syscalls.rt_sigsuspend01_64bit',
'syscalls.sbrk01_32bit',
'syscalls.sbrk01_64bit',
'syscalls.sbrk02_32bit',
@@ -1540,32 +1683,46 @@
'syscalls.setegid01_64bit',
'syscalls.setegid02_32bit',
'syscalls.setegid02_64bit',
+ 'syscalls.setfsgid01_16_32bit',
'syscalls.setfsgid01_32bit',
'syscalls.setfsgid01_64bit',
+ 'syscalls.setfsgid02_16_32bit',
'syscalls.setfsgid02_32bit',
'syscalls.setfsgid02_64bit',
+ 'syscalls.setfsgid03_16_32bit',
'syscalls.setfsgid03_32bit',
'syscalls.setfsgid03_64bit',
+ 'syscalls.setfsuid01_16_32bit',
'syscalls.setfsuid01_32bit',
'syscalls.setfsuid01_64bit',
+ 'syscalls.setfsuid02_16_32bit',
'syscalls.setfsuid02_32bit',
'syscalls.setfsuid02_64bit',
+ 'syscalls.setfsuid03_16_32bit',
'syscalls.setfsuid03_32bit',
'syscalls.setfsuid03_64bit',
+ 'syscalls.setfsuid04_16_32bit',
'syscalls.setfsuid04_32bit',
'syscalls.setfsuid04_64bit',
+ 'syscalls.setgid01_16_32bit',
'syscalls.setgid01_32bit',
'syscalls.setgid01_64bit',
+ 'syscalls.setgid02_16_32bit',
'syscalls.setgid02_32bit',
'syscalls.setgid02_64bit',
+ 'syscalls.setgid03_16_32bit',
'syscalls.setgid03_32bit',
'syscalls.setgid03_64bit',
+ 'syscalls.setgroups01_16_32bit',
'syscalls.setgroups01_32bit',
'syscalls.setgroups01_64bit',
+ 'syscalls.setgroups02_16_32bit',
'syscalls.setgroups02_32bit',
'syscalls.setgroups02_64bit',
+ 'syscalls.setgroups03_16_32bit',
'syscalls.setgroups03_32bit',
'syscalls.setgroups03_64bit',
+ 'syscalls.setgroups04_16_32bit',
'syscalls.setgroups04_32bit',
'syscalls.setgroups04_64bit',
'syscalls.sethostname01_32bit',
@@ -1600,38 +1757,61 @@
'syscalls.setpriority04_64bit',
'syscalls.setpriority05_32bit',
'syscalls.setpriority05_64bit',
+ 'syscalls.setregid01_16_32bit',
'syscalls.setregid01_32bit',
'syscalls.setregid01_64bit',
+ 'syscalls.setregid03_16_32bit',
+ 'syscalls.setregid03_32bit',
+ 'syscalls.setregid03_64bit',
+ 'syscalls.setregid04_16_32bit',
+ 'syscalls.setregid04_32bit',
+ 'syscalls.setregid04_64bit',
+ 'syscalls.setresgid01_16_32bit',
'syscalls.setresgid01_32bit',
'syscalls.setresgid01_64bit',
+ 'syscalls.setresgid02_16_32bit',
'syscalls.setresgid02_32bit',
'syscalls.setresgid02_64bit',
+ 'syscalls.setresgid03_16_32bit',
'syscalls.setresgid03_32bit',
'syscalls.setresgid03_64bit',
+ 'syscalls.setresgid04_16_32bit',
'syscalls.setresgid04_32bit',
'syscalls.setresgid04_64bit',
+ 'syscalls.setresuid01_16_32bit',
'syscalls.setresuid01_32bit',
'syscalls.setresuid01_64bit',
+ 'syscalls.setresuid02_16_32bit',
'syscalls.setresuid02_32bit',
'syscalls.setresuid02_64bit',
+ 'syscalls.setresuid03_16_32bit',
'syscalls.setresuid03_32bit',
'syscalls.setresuid03_64bit',
+ 'syscalls.setresuid04_16_32bit',
'syscalls.setresuid04_32bit',
'syscalls.setresuid04_64bit',
+ 'syscalls.setresuid05_16_32bit',
'syscalls.setresuid05_32bit',
'syscalls.setresuid05_64bit',
+ 'syscalls.setreuid01_16_32bit',
'syscalls.setreuid01_32bit',
'syscalls.setreuid01_64bit',
+ 'syscalls.setreuid02_16_32bit',
'syscalls.setreuid02_32bit',
'syscalls.setreuid02_64bit',
+ 'syscalls.setreuid03_16_32bit',
'syscalls.setreuid03_32bit',
'syscalls.setreuid03_64bit',
+ 'syscalls.setreuid04_16_32bit',
'syscalls.setreuid04_32bit',
'syscalls.setreuid04_64bit',
+ 'syscalls.setreuid05_16_32bit',
'syscalls.setreuid05_32bit',
'syscalls.setreuid05_64bit',
+ 'syscalls.setreuid06_16_32bit',
'syscalls.setreuid06_32bit',
'syscalls.setreuid06_64bit',
+ 'syscalls.setreuid07_16_32bit',
'syscalls.setreuid07_32bit',
'syscalls.setreuid07_64bit',
'syscalls.setrlimit01_32bit',
@@ -1654,12 +1834,13 @@
'syscalls.settimeofday01_64bit',
'syscalls.settimeofday02_32bit',
'syscalls.settimeofday02_64bit',
+ 'syscalls.setuid01_16_32bit',
'syscalls.setuid01_32bit',
'syscalls.setuid01_64bit',
- 'syscalls.setuid02_32bit',
- 'syscalls.setuid02_64bit',
+ 'syscalls.setuid03_16_32bit',
'syscalls.setuid03_32bit',
'syscalls.setuid03_64bit',
+ 'syscalls.setuid04_16_32bit',
'syscalls.setuid04_32bit',
'syscalls.setuid04_64bit',
'syscalls.setxattr01_32bit',
@@ -1696,6 +1877,8 @@
'syscalls.signalfd4_02_64bit',
'syscalls.sigprocmask01_32bit',
'syscalls.sigprocmask01_64bit',
+ 'syscalls.sigsuspend01_32bit',
+ 'syscalls.sigsuspend01_64bit',
'syscalls.sigwaitinfo01_32bit',
'syscalls.sigwaitinfo01_64bit',
'syscalls.socket01_32bit',
@@ -1870,8 +2053,6 @@
'syscalls.unlink01_64bit',
'syscalls.unlink05_32bit',
'syscalls.unlink05_64bit',
- 'syscalls.unlink06_32bit',
- 'syscalls.unlink06_64bit',
'syscalls.unlink07_32bit',
'syscalls.unlink07_64bit',
'syscalls.unlink08_32bit',
diff --git a/ltp/ltp_configs.py b/ltp/ltp_configs.py
index f44d5b8..1fcf211 100644
--- a/ltp/ltp_configs.py
+++ b/ltp/ltp_configs.py
@@ -119,8 +119,8 @@
'commands',
'connectors',
'containers',
-# 'controllers',
'cpuhotplug',
+ 'cve',
'dio',
'fcntl-locktests_android',
'filecaps',
@@ -139,15 +139,13 @@
'mm',
'modules',
'nptl',
- 'numa',
'pipes',
'power_management_tests',
'pty',
'sched',
+ 'securebits',
'syscalls',
'timers',
- # The following are not included in default LTP scenario group
- 'securebits',
'tracing',
]
@@ -159,8 +157,8 @@
'commands',
'connectors',
'containers',
-# 'controllers',
'cpuhotplug',
+ 'cve',
'dio',
'fcntl-locktests_android',
'filecaps',
@@ -179,15 +177,13 @@
'mm',
'modules',
'nptl',
- 'numa',
'pipes',
'power_management_tests',
'pty',
'sched_low_mem',
+ 'securebits',
'syscalls',
'timers',
- # The following are not included in default LTP scenario group
- 'securebits',
'tracing',
]
diff --git a/ltp/stable/Android.mk b/ltp/stable/Android.mk
index 1807499..816e0fc 100644
--- a/ltp/stable/Android.mk
+++ b/ltp/stable/Android.mk
@@ -19,5 +19,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelLtp
-VTS_CONFIG_SRC_DIR := testcases/kernel/ltp/stable
-include test/vts/tools/build/Android.host_config.mk
diff --git a/ltp/stable/AndroidTest.xml b/ltp/stable/AndroidTest.xml
index e5e3ac5..7afa51b 100644
--- a/ltp/stable/AndroidTest.xml
+++ b/ltp/stable/AndroidTest.xml
@@ -22,6 +22,7 @@
<option name="test-module-name" value="VtsKernelLtp" />
<option name="test-timeout" value="3h" />
<option name="runtime-hint" value="30m" />
+ <option name="disable-framework" value="true" />
<option name="test-case-path" value="vts/testcases/kernel/ltp/KernelLtpTest" />
</test>
</configuration>
diff --git a/ltp/staging/Android.mk b/ltp/staging/Android.mk
index 5161053..37e8d49 100644
--- a/ltp/staging/Android.mk
+++ b/ltp/staging/Android.mk
@@ -19,5 +19,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelLtpStaging
-VTS_CONFIG_SRC_DIR := testcases/kernel/ltp/staging
-include test/vts/tools/build/Android.host_config.mk
diff --git a/ltp/staging/AndroidTest.xml b/ltp/staging/AndroidTest.xml
index 7e1685f..71b888d 100644
--- a/ltp/staging/AndroidTest.xml
+++ b/ltp/staging/AndroidTest.xml
@@ -22,6 +22,7 @@
<option name="test-module-name" value="VtsKernelLtpStaging" />
<option name="test-timeout" value="3h30m" />
<option name="runtime-hint" value="1h30m" />
+ <option name="disable-framework" value="true" />
<option name="test-case-path" value="vts/testcases/kernel/ltp/KernelLtpTest" />
<option name="test-config-path" value="vts/testcases/kernel/ltp/staging/KernelLtpStagingTest.runner_conf" />
</test>
diff --git a/memory/Android.mk b/memory/Android.mk
index 0fa172a..e6e04db 100644
--- a/memory/Android.mk
+++ b/memory/Android.mk
@@ -19,5 +19,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := MemorySystemStressTest
-VTS_CONFIG_SRC_DIR := testcases/kernel/memory
-include test/vts/tools/build/Android.host_config.mk
diff --git a/syscall/Android.mk b/syscall/Android.mk
index 48f8106..6ec8d44 100644
--- a/syscall/Android.mk
+++ b/syscall/Android.mk
@@ -40,6 +40,4 @@
include $(CLEAR_VARS)
LOCAL_MODULE := VtsKernelSyscallExistence
-
-VTS_CONFIG_SRC_DIR := testcases/kernel/syscall
-include test/vts/tools/build/Android.host_config.mk
diff --git a/version/AndroidTest.xml b/version/AndroidTest.xml
deleted file mode 100644
index 3a61516..0000000
--- a/version/AndroidTest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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 KernelVersionTest">
- <option name="config-descriptor:metadata" key="plan" value="vts-kernel" />
- <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
- <option name="push-group" value="HostDrivenTest.push" />
- </target_preparer>
- <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
- <option name="test-module-name" value="VtsKernelVersion" />
- <option name="test-case-path" value="vts/testcases/kernel/version/VtsKernelVersionTest" />
- </test>
-</configuration>
diff --git a/version/VtsKernelVersionTest.py b/version/VtsKernelVersionTest.py
deleted file mode 100644
index b2edeb5..0000000
--- a/version/VtsKernelVersionTest.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2018 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.
-#
-
-import logging
-import re
-
-from vts.runners.host import asserts
-from vts.runners.host import base_test
-from vts.runners.host import const
-from vts.runners.host import keys
-from vts.runners.host import test_runner
-from vts.utils.python.controllers import android_device
-from vts.utils.python.file import target_file_utils
-
-from vts.testcases.kernel.lib import version
-
-
-class VtsKernelVersionTest(base_test.BaseTestClass):
- """Test case which verifies the version of the kernel on the DUT is
- supported.
- """
-
- def setUpClass(self):
- required_params = [keys.ConfigKeys.IKEY_DATA_FILE_PATH]
- self.getUserParams(required_params)
- self.dut = self.android_devices[0]
- self.shell = self.dut.shell
- self.supported_kernel_versions = version.getSupportedKernels(self.dut)
-
- def testKernelVersion(self):
- """Validate the kernel version of DUT is a valid kernel version.
-
- Returns:
- string, kernel version of device
- """
- cmd = "uname -a"
- results = self.shell.Execute(cmd)
- logging.info("Shell command '%s' results: %s", cmd, results)
-
- match = re.search(r"(\d+)\.(\d+)\.(\d+)", results[const.STDOUT][0])
- if match is None:
- asserts.fail("Failed to detect kernel version of device.")
- else:
- kernel_version = int(match.group(1))
- kernel_patchlevel = int(match.group(2))
- kernel_sublevel = int(match.group(3))
- logging.info("Detected kernel version: %s.%s.%s" % (kernel_version,
- kernel_patchlevel, kernel_sublevel))
-
- for v in self.supported_kernel_versions:
- if (kernel_version == v[0] and kernel_patchlevel == v[1] and
- kernel_sublevel >= v[2]):
- logging.info("Compliant kernel version %s.%s.%s found." %
- (kernel_version, kernel_patchlevel, kernel_sublevel))
- return
-
- asserts.fail("Device is running an unsupported kernel version (%s.%s.%s)" %
- (kernel_version, kernel_patchlevel, kernel_sublevel))
-
-
-if __name__ == "__main__":
- test_runner.main()
diff --git a/version/__init__.py b/version/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/version/__init__.py
+++ /dev/null