summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2017-11-14 11:46:57 -0800
committerXin Li <delphij@google.com>2017-11-14 11:46:57 -0800
commitaa4b44e014004e58343083c4a3cd00112d8d9bfd (patch)
tree43ec0716cbe1de2c26c566038544e3b7f77c316e /tests
parent561958193e86bed5ef67bb6277deddebe3d77bbc (diff)
parentf22d9cd819bf8b21bedba3dedcfa08fe8f91a15e (diff)
downloadextras-aa4b44e014004e58343083c4a3cd00112d8d9bfd.tar.gz
Merge commit 'f22d9cd819bf8b21bedba3dedcfa08fe8f91a15e' into HEAD
Change-Id: I0a0f6a3057951735943b846270c2d445e5cb4c7b
Diffstat (limited to 'tests')
-rw-r--r--tests/bootloader/bootloadertest.py115
-rw-r--r--tests/kernel.config/Android.mk4
2 files changed, 73 insertions, 46 deletions
diff --git a/tests/bootloader/bootloadertest.py b/tests/bootloader/bootloadertest.py
index 59233431..963e22f3 100644
--- a/tests/bootloader/bootloadertest.py
+++ b/tests/bootloader/bootloadertest.py
@@ -13,15 +13,20 @@
# limitations under the License.
import adb
+import argparse
import os
import unittest
import fastboot
import subprocess
+import sys
+
+# Default values for arguments
+device_type = "phone"
class ShellTest(unittest.TestCase):
- def __init__(self, *args, **kwargs):
- super(ShellTest, self).__init__(*args, **kwargs)
- self.fastboot = fastboot.FastbootDevice()
+ @classmethod
+ def setUpClass(cls):
+ cls.fastboot = fastboot.FastbootDevice()
def exists_validvals(self, varname, varlist, validlist):
self.assertIn(varname, varlist)
@@ -71,6 +76,20 @@ class ShellTest(unittest.TestCase):
self.fail("%s (%s) is not an integer" % (varname, val))
return num
+ def get_slotcount(self):
+ slotcount = 0
+ try:
+ val = self.fastboot.getvar("slot-count")
+ if val != None:
+ slotcount = int(val)
+ except ValueError:
+ self.fail("slot-count (%s) is not an integer" % val)
+ except subprocess.CalledProcessError:
+ print "Does not appear to be an A/B device."
+ if not slotcount:
+ print "Does not appear to be an A/B device."
+ return slotcount
+
def test_getvarall(self):
"""Tests that required variables are reported by getvar all"""
@@ -137,13 +156,7 @@ class ShellTest(unittest.TestCase):
maxdl = self.get_exists_integer("max-download-size", 16)
self.assertGreater(maxdl, 0)
- slotcount = 0
- try:
- slotcountString = self.fastboot.getvar("slot-count")
- if slotcountString != None:
- slotcount = int(slotcountString)
- except ValueError:
- self.fail("slot-count (%s) is not an integer" % slotcountString)
+ slotcount = self.get_slotcount()
if slotcount > 1:
# test for A/B variables
slots = [chr(slotnum+ord('a')) for slotnum in range(slotcount)]
@@ -154,45 +167,59 @@ class ShellTest(unittest.TestCase):
self.get_exists_yes_no("slot-unbootable:"+slot)
self.get_exists_yes_no("slot-successful:"+slot)
self.get_exists_integer("slot-retry-count:"+slot)
- else:
- print "This does not appear to be an A/B device."
def test_setactive(self):
"""Tests that A/B devices can switch to each slot, and the change persists over a reboot."""
+ # Test invalid if not an A/B device
+ slotcount = self.get_slotcount()
+ if not slotcount:
+ return
- slotcount = 0
- try:
- val = self.fastboot.getvar("slot-count")
- if val != None:
- slotcount = int(val)
- except ValueError:
- self.fail("slot-count (%s) is not an integer" % val)
- except subprocess.CalledProcessError:
- print "Does not appear to be an A/B device."
maxtries = 0
- if slotcount > 1:
- slots = [chr(slotnum+ord('a')) for slotnum in range(slotcount)]
- for slot in slots:
- self.fastboot.set_active(slot)
- self.assertEqual(slot, self.fastboot.getvar("current-slot"))
- self.assertEqual("no", self.fastboot.getvar("slot-unbootable:"+slot))
- self.assertEqual("no", self.fastboot.getvar("slot-successful:"+slot))
- retry = self.get_exists_integer("slot-retry-count:"+slot)
- if maxtries == 0:
- maxtries = retry
- else:
- self.assertEqual(maxtries, retry)
- self.fastboot.reboot(True)
- self.assertEqual(slot, self.fastboot.getvar("current-slot"))
- self.assertEqual("no", self.fastboot.getvar("slot-unbootable:"+slot))
- self.assertEqual("no", self.fastboot.getvar("slot-successful:"+slot))
- retry = self.get_exists_integer("slot-retry-count:"+slot)
- if maxtries == 0:
- maxtries = retry
- else:
- self.assertEqual(maxtries, retry)
- else:
- print "Does not appear to be an A/B device."
+ slots = [chr(slotnum+ord('a')) for slotnum in range(slotcount)]
+ for slot in slots:
+ self.fastboot.set_active(slot)
+ self.assertEqual(slot, self.fastboot.getvar("current-slot"))
+ self.assertEqual("no", self.fastboot.getvar("slot-unbootable:"+slot))
+ self.assertEqual("no", self.fastboot.getvar("slot-successful:"+slot))
+ retry = self.get_exists_integer("slot-retry-count:"+slot)
+ if maxtries == 0:
+ maxtries = retry
+ else:
+ self.assertEqual(maxtries, retry)
+ self.fastboot.reboot(True)
+ self.assertEqual(slot, self.fastboot.getvar("current-slot"))
+ self.assertEqual("no", self.fastboot.getvar("slot-unbootable:"+slot))
+ self.assertEqual("no", self.fastboot.getvar("slot-successful:"+slot))
+ retry = self.get_exists_integer("slot-retry-count:"+slot)
+ if maxtries == 0:
+ maxtries = retry
+ else:
+ self.assertEqual(maxtries, retry)
+
+ def test_hasslot(self):
+ """Tests that A/B devices report partitions that have slots."""
+ # Test invalid if not an A/B device
+ if not self.get_slotcount():
+ return
+
+ self.assertEqual("yes", self.fastboot.getvar("has-slot:system"))
+ self.assertEqual("yes", self.fastboot.getvar("has-slot:boot"))
+
+ # Additional partition on AndroidThings (IoT) devices
+ if device_type == "iot":
+ self.assertEqual("yes", self.fastboot.getvar("has-slot:oem"))
if __name__ == '__main__':
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--device-type", default="phone",
+ help="Type of device ('phone' or 'iot').")
+ parser.add_argument("extra_args", nargs="*")
+ args = parser.parse_args()
+
+ if args.device_type.lower() not in ("phone", "iot"):
+ raise ValueError("Unsupported device type '%s'." % args.device_type)
+ device_type = args.device_type.lower()
+
+ sys.argv[1:] = args.extra_args
unittest.main(verbosity=3)
diff --git a/tests/kernel.config/Android.mk b/tests/kernel.config/Android.mk
index aa506c08..0c3fedd0 100644
--- a/tests/kernel.config/Android.mk
+++ b/tests/kernel.config/Android.mk
@@ -18,7 +18,6 @@ cts_src_files := \
logger_test.cpp \
multicast_test.cpp \
nfs_test.cpp \
- pstore_test.cpp \
sysvipc_test.cpp \
# Required plus Recommended Tests
@@ -28,6 +27,7 @@ test_src_files := \
aslr_test.cpp \
aslr_rec_test.cpp \
mmc_max_speed_test.cpp \
+ pstore_test.cpp \
include $(CLEAR_VARS)
LOCAL_MODULE := kernel-config-unit-tests
@@ -51,7 +51,7 @@ LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
LOCAL_SHARED_LIBRARIES := libbase
LOCAL_STATIC_LIBRARIES := libgtest libgtest_main
-LOCAL_COMPATIBILITY_SUITE := cts
+LOCAL_COMPATIBILITY_SUITE := cts vts
LOCAL_CTS_TEST_PACKAGE := android.kernel.config
include $(BUILD_CTS_EXECUTABLE)