Merge "Migrate libstatspull to libbinder_ndk"
diff --git a/adb/Android.bp b/adb/Android.bp
index 5073568..675525c 100644
--- a/adb/Android.bp
+++ b/adb/Android.bp
@@ -696,10 +696,10 @@
test_suites: ["general-tests"],
version: {
py2: {
- enabled: true,
+ enabled: false,
},
py3: {
- enabled: false,
+ enabled: true,
},
},
}
diff --git a/adb/test_device.py b/adb/test_device.py
index 083adce..6a9ff89 100755
--- a/adb/test_device.py
+++ b/adb/test_device.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2015 The Android Open Source Project
@@ -81,6 +81,13 @@
self.device = adb.get_device()
+class AbbTest(DeviceTest):
+ def test_smoke(self):
+ result = subprocess.run(['adb', 'abb'], capture_output=True)
+ self.assertEqual(1, result.returncode)
+ expected_output = b"cmd: No service specified; use -l to list all services\n"
+ self.assertEqual(expected_output, result.stderr)
+
class ForwardReverseTest(DeviceTest):
def _test_no_rebind(self, description, direction_list, direction,
direction_no_rebind, direction_remove_all):
@@ -246,7 +253,7 @@
# Accept the client connection.
accepted_connection, addr = listener.accept()
with contextlib.closing(accepted_connection) as server:
- data = 'hello'
+ data = b'hello'
# Send data into the port setup by adb forward.
client.sendall(data)
@@ -254,7 +261,7 @@
client.close()
# Verify that the data came back via adb reverse.
- self.assertEqual(data, server.makefile().read())
+ self.assertEqual(data, server.makefile().read().encode("utf8"))
finally:
if reverse_setup:
self.device.reverse_remove(forward_spec)
@@ -268,7 +275,7 @@
Args:
shell_args: List of string arguments to `adb shell`.
- input: String input to send to the interactive shell.
+ input: bytes input to send to the interactive shell.
Returns:
The remote exit code.
@@ -286,7 +293,7 @@
# Closing host-side stdin doesn't trigger a PTY shell to exit so we need
# to explicitly add an exit command to close the session from the device
# side, plus the necessary newline to complete the interactive command.
- proc.communicate(input + '; exit\n')
+ proc.communicate(input + b'; exit\n')
return proc.returncode
def test_cat(self):
@@ -419,7 +426,7 @@
self.assertEqual('foo' + self.device.linesep, result[1])
self.assertEqual('bar' + self.device.linesep, result[2])
- self.assertEqual(17, self._interactive_shell([], 'exit 17'))
+ self.assertEqual(17, self._interactive_shell([], b'exit 17'))
# -x flag should disable shell protocol.
result = self.device.shell_nocheck(
@@ -428,7 +435,7 @@
self.assertEqual('foo{0}bar{0}'.format(self.device.linesep), result[1])
self.assertEqual('', result[2])
- self.assertEqual(0, self._interactive_shell(['-x'], 'exit 17'))
+ self.assertEqual(0, self._interactive_shell(['-x'], b'exit 17'))
def test_non_interactive_sigint(self):
"""Tests that SIGINT in a non-interactive shell kills the process.
@@ -447,7 +454,7 @@
self.device.adb_cmd + shlex.split('shell echo $$; sleep 60'),
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
- remote_pid = sleep_proc.stdout.readline().strip()
+ remote_pid = sleep_proc.stdout.readline().strip().decode("utf8")
self.assertIsNone(sleep_proc.returncode, 'subprocess terminated early')
proc_query = shlex.split('ps {0} | grep {0}'.format(remote_pid))
@@ -469,9 +476,10 @@
'on this device')
# Test both small and large inputs.
- small_input = 'foo'
- large_input = '\n'.join(c * 100 for c in (string.ascii_letters +
- string.digits))
+ small_input = b'foo'
+ characters = [c.encode("utf8") for c in string.ascii_letters + string.digits]
+ large_input = b'\n'.join(characters)
+
for input in (small_input, large_input):
proc = subprocess.Popen(self.device.adb_cmd + ['shell', 'cat'],
@@ -480,7 +488,7 @@
stderr=subprocess.PIPE)
stdout, stderr = proc.communicate(input)
self.assertEqual(input.splitlines(), stdout.splitlines())
- self.assertEqual('', stderr)
+ self.assertEqual(b'', stderr)
def test_sighup(self):
"""Ensure that SIGHUP gets sent upon non-interactive ctrl-c"""
@@ -502,7 +510,7 @@
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
- self.assertEqual("Waiting\n", process.stdout.readline())
+ self.assertEqual(b"Waiting\n", process.stdout.readline())
process.send_signal(signal.SIGINT)
process.wait()
@@ -533,7 +541,7 @@
threads.append(thread)
for thread in threads:
thread.join()
- for i, success in result.iteritems():
+ for i, success in result.items():
self.assertTrue(success)
def disabled_test_parallel(self):
@@ -546,24 +554,24 @@
n_procs = 2048
procs = dict()
- for i in xrange(0, n_procs):
+ for i in range(0, n_procs):
procs[i] = subprocess.Popen(
['adb', 'shell', 'read foo; echo $foo; read rc; exit $rc'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE
)
- for i in xrange(0, n_procs):
+ for i in range(0, n_procs):
procs[i].stdin.write("%d\n" % i)
- for i in xrange(0, n_procs):
+ for i in range(0, n_procs):
response = procs[i].stdout.readline()
assert(response == "%d\n" % i)
- for i in xrange(0, n_procs):
+ for i in range(0, n_procs):
procs[i].stdin.write("%d\n" % (i % 256))
- for i in xrange(0, n_procs):
+ for i in range(0, n_procs):
assert(procs[i].wait() == i % 256)
@@ -602,14 +610,14 @@
def test_install_argument_escaping(self):
"""Make sure that install argument escaping works."""
# http://b/20323053, http://b/3090932.
- for file_suffix in ('-text;ls;1.apk', "-Live Hold'em.apk"):
+ for file_suffix in (b'-text;ls;1.apk', b"-Live Hold'em.apk"):
tf = tempfile.NamedTemporaryFile('wb', suffix=file_suffix,
delete=False)
tf.close()
# Installing bogus .apks fails if the device supports exit codes.
try:
- output = self.device.install(tf.name)
+ output = self.device.install(tf.name.decode("utf8"))
except subprocess.CalledProcessError as e:
output = e.output
@@ -712,7 +720,7 @@
max_size = 16 * (1 << 10)
files = []
- for _ in xrange(num_files):
+ for _ in range(num_files):
file_handle = tempfile.NamedTemporaryFile(dir=in_dir, delete=False)
size = random.randrange(min_size, max_size, 1024)
@@ -731,7 +739,7 @@
max_size = 16 * (1 << 10)
files = []
- for file_num in xrange(num_files):
+ for file_num in range(num_files):
size = random.randrange(min_size, max_size, 1024)
base_name = prefix + str(file_num)
@@ -878,7 +886,7 @@
subdir_temp_files = make_random_host_files(in_dir=subdir,
num_files=4)
- paths = map(lambda temp_file: temp_file.full_path, temp_files)
+ paths = [x.full_path for x in temp_files]
paths.append(subdir)
self.device._simple_call(['push'] + paths + [self.DEVICE_TEMP_DIR])
@@ -907,7 +915,7 @@
Bug: http://b/26816782
"""
with tempfile.NamedTemporaryFile() as tmp_file:
- tmp_file.write('\0' * 1024 * 1024)
+ tmp_file.write(b'\0' * 1024 * 1024)
tmp_file.flush()
try:
self.device.push(local=tmp_file.name, remote='/system/')
@@ -915,8 +923,8 @@
except subprocess.CalledProcessError as e:
output = e.output
- self.assertTrue('Permission denied' in output or
- 'Read-only file system' in output)
+ self.assertTrue(b'Permission denied' in output or
+ b'Read-only file system' in output)
@requires_non_root
def test_push_directory_creation(self):
@@ -925,7 +933,7 @@
Bug: http://b/110953234
"""
with tempfile.NamedTemporaryFile() as tmp_file:
- tmp_file.write('\0' * 1024 * 1024)
+ tmp_file.write(b'\0' * 1024 * 1024)
tmp_file.flush()
remote_path = self.DEVICE_TEMP_DIR + '/test_push_directory_creation'
self.device.shell(['rm', '-rf', remote_path])
@@ -967,7 +975,7 @@
except subprocess.CalledProcessError as e:
output = e.output
- self.assertIn('Permission denied', output)
+ self.assertIn(b'Permission denied', output)
self.device.shell(['rm', '-f', self.DEVICE_TEMP_FILE])
@@ -1166,7 +1174,7 @@
subdir_temp_files = make_random_device_files(
self.device, in_dir=subdir, num_files=4, prefix='subdir_')
- paths = map(lambda temp_file: temp_file.full_path, temp_files)
+ paths = [x.full_path for x in temp_files]
paths.append(subdir)
self.device._simple_call(['pull'] + paths + [host_dir])
@@ -1355,7 +1363,7 @@
"""
# The values that trigger things are 507 (512 - 5 bytes from shell protocol) + 1024*n
# Probe some surrounding values as well, for the hell of it.
- for base in [512] + range(1024, 1024 * 16, 1024):
+ for base in [512] + list(range(1024, 1024 * 16, 1024)):
for offset in [-6, -5, -4]:
length = base + offset
cmd = ['dd', 'if=/dev/zero', 'bs={}'.format(length), 'count=1', '2>/dev/null;'
@@ -1390,10 +1398,10 @@
sock = socket.create_connection(("localhost", local_port))
with contextlib.closing(sock):
- bytesWritten = sock.send("a" * size)
+ bytesWritten = sock.send(b"a" * size)
self.assertEqual(size, bytesWritten)
readBytes = sock.recv(4096)
- self.assertEqual("foo\n", readBytes)
+ self.assertEqual(b"foo\n", readBytes)
thread.join()
finally:
@@ -1424,13 +1432,13 @@
s.sendall(adb_length_prefixed(transport_string))
response = s.recv(4)
- self.assertEquals(b"OKAY", response)
+ self.assertEqual(b"OKAY", response)
shell_string = "shell:sleep 0.5; dd if=/dev/zero bs=1m count=1 status=none; echo foo"
s.sendall(adb_length_prefixed(shell_string))
response = s.recv(4)
- self.assertEquals(b"OKAY", response)
+ self.assertEqual(b"OKAY", response)
# Spawn a thread that dumps garbage into the socket until failure.
def spam():
@@ -1453,7 +1461,7 @@
break
received += read
- self.assertEquals(1024 * 1024 + len("foo\n"), len(received))
+ self.assertEqual(1024 * 1024 + len("foo\n"), len(received))
thread.join()
diff --git a/init/test_utils/include/init-test-utils/service_utils.h b/init/test_utils/include/init-test-utils/service_utils.h
index 1b59c7b..f9366ea 100644
--- a/init/test_utils/include/init-test-utils/service_utils.h
+++ b/init/test_utils/include/init-test-utils/service_utils.h
@@ -20,7 +20,6 @@
#include <set>
#include <android-base/result.h>
-#include <hidl-util/FqInstance.h>
namespace android {
namespace init {
diff --git a/libcutils/fs_config.cpp b/libcutils/fs_config.cpp
index fd9a3eb..c4e4f85 100644
--- a/libcutils/fs_config.cpp
+++ b/libcutils/fs_config.cpp
@@ -74,6 +74,8 @@
{ 00775, AID_MEDIA_RW, AID_MEDIA_RW, 0, "data/media" },
{ 00750, AID_ROOT, AID_SHELL, 0, "data/nativetest" },
{ 00750, AID_ROOT, AID_SHELL, 0, "data/nativetest64" },
+ { 00750, AID_ROOT, AID_SHELL, 0, "data/benchmarktest" },
+ { 00750, AID_ROOT, AID_SHELL, 0, "data/benchmarktest64" },
{ 00775, AID_ROOT, AID_ROOT, 0, "data/preloads" },
{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data" },
{ 00755, AID_ROOT, AID_SYSTEM, 0, "mnt" },
@@ -145,6 +147,8 @@
{ 00640, AID_ROOT, AID_SHELL, 0, "data/nativetest64/tests.txt" },
{ 00750, AID_ROOT, AID_SHELL, 0, "data/nativetest/*" },
{ 00750, AID_ROOT, AID_SHELL, 0, "data/nativetest64/*" },
+ { 00750, AID_ROOT, AID_SHELL, 0, "data/benchmarktest/*" },
+ { 00750, AID_ROOT, AID_SHELL, 0, "data/benchmarktest64/*" },
{ 00600, AID_ROOT, AID_ROOT, 0, "default.prop" }, // legacy
{ 00600, AID_ROOT, AID_ROOT, 0, "system/etc/prop.default" },
{ 00600, AID_ROOT, AID_ROOT, 0, "odm/build.prop" }, // legacy; only for P release
diff --git a/libutils/include/utils/String16.h b/libutils/include/utils/String16.h
index adc3e7d..27eca0c 100644
--- a/libutils/include/utils/String16.h
+++ b/libutils/include/utils/String16.h
@@ -25,18 +25,10 @@
// ---------------------------------------------------------------------------
-extern "C" {
-
-}
-
-// ---------------------------------------------------------------------------
-
namespace android {
// ---------------------------------------------------------------------------
-class String8;
-
template <size_t N>
class StaticString16;
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 896745b..2d89cf2 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -114,15 +114,6 @@
symlink /proc/self/fd/1 /dev/stdout
symlink /proc/self/fd/2 /dev/stderr
- symlink /system/bin /bin
- symlink /system/etc /etc
-
- # Backward compatibility.
- symlink /sys/kernel/debug /d
-
- # Link /vendor to /system/vendor for devices without a vendor partition.
- symlink /system/vendor /vendor
-
# Create energy-aware scheduler tuning nodes
mkdir /dev/stune/foreground
mkdir /dev/stune/background
@@ -144,6 +135,14 @@
chmod 0664 /dev/stune/top-app/tasks
chmod 0664 /dev/stune/rt/tasks
+ # Create an stune group for NNAPI HAL processes
+ mkdir /dev/stune/nnapi-hal
+ chown system system /dev/stune/nnapi-hal
+ chown system system /dev/stune/nnapi-hal/tasks
+ chmod 0664 /dev/stune/nnapi-hal/tasks
+ write /dev/stune/nnapi-hal/schedtune.boost 1
+ write /dev/stune/nnapi-hal/schedtune.prefer_idle 1
+
# Create blkio group and apply initial settings.
# This feature needs kernel to support it, and the
# device's init.rc must actually set the correct values.
@@ -211,7 +210,6 @@
mkdir /mnt/runtime/full/self 0755 root root
# Symlink to keep legacy apps working in multi-user world
- symlink /storage/self/primary /sdcard
symlink /storage/self/primary /mnt/sdcard
symlink /mnt/user/0/primary /mnt/runtime/default/self/primary