Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5115758e authored by Josh Gao's avatar Josh Gao Committed by Automerger Merge Worker
Browse files

Merge changes I26f823e2,Iaff2b157,I82a0d54f,I7e4b6fda,I268367b8 am: 992f08e7

Change-Id: I12d3dd1cb1c37cb1254e77fc7eea8473d3911bd3
parents 6270b3b6 992f08e7
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -165,7 +165,6 @@ libadb_srcs = [
    "adb_unique_fd.cpp",
    "adb_utils.cpp",
    "fdevent/fdevent.cpp",
    "fdevent/fdevent_poll.cpp",
    "services.cpp",
    "sockets.cpp",
    "socket_spec.cpp",
@@ -176,6 +175,17 @@ libadb_srcs = [
    "types.cpp",
]

libadb_darwin_srcs = [
    "fdevent/fdevent_poll.cpp",
]

libadb_windows_srcs = [
    "fdevent/fdevent_poll.cpp",
    "sysdeps_win32.cpp",
    "sysdeps/win32/errno.cpp",
    "sysdeps/win32/stat.cpp",
]

libadb_posix_srcs = [
    "sysdeps_unix.cpp",
    "sysdeps/posix/network.cpp",
@@ -219,7 +229,7 @@ cc_library_host_static {
            srcs: ["client/usb_linux.cpp"] + libadb_linux_srcs,
        },
        darwin: {
            srcs: ["client/usb_osx.cpp"],
            srcs: ["client/usb_osx.cpp"] + libadb_darwin_srcs,
        },
        not_windows: {
            srcs: libadb_posix_srcs,
@@ -228,10 +238,7 @@ cc_library_host_static {
            enabled: true,
            srcs: [
                "client/usb_windows.cpp",
                "sysdeps_win32.cpp",
                "sysdeps/win32/errno.cpp",
                "sysdeps/win32/stat.cpp",
            ],
            ] + libadb_windows_srcs,
            shared_libs: ["AdbWinApi"],
        },
    },
+3 −8
Original line number Diff line number Diff line
@@ -89,18 +89,13 @@ void start_device_log(void) {

int adb_trace_mask;

std::string get_trace_setting_from_env() {
std::string get_trace_setting() {
#if ADB_HOST
    const char* setting = getenv("ADB_TRACE");
    if (setting == nullptr) {
        setting = "";
    }

    return std::string(setting);
}

std::string get_trace_setting() {
#if ADB_HOST
    return get_trace_setting_from_env();
    return setting;
#else
    return android::base::GetProperty("persist.adb.trace_mask", "");
#endif

adb/coverage.sh

deleted100755 → 0
+0 −63
Original line number Diff line number Diff line
#!/bin/bash
# Copyright (C) 2020 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -euxo pipefail

adb root
adb shell logcat -c -G128M
adb shell setprop persist.adb.trace_mask 1
adb shell killall adbd

# TODO: Add `adb transport-id` and wait-for-offline on it.
sleep 5

adb wait-for-device shell rm "/data/misc/trace/*"

./test_device.py

# Dump traces from the currently running adbd.
adb shell killall -37 adbd

echo Waiting for adbd to finish dumping traces
sleep 5

TRACEDIR=`mktemp -d`
adb pull /data/misc/trace "$TRACEDIR"/
echo Pulled traces to $TRACEDIR


# Identify which of the trace files are actually adbd, in case something else exited simultaneously.
ADBD_PIDS=$(adb shell "logcat -d -s adbd --format=process | grep 'adbd started' | cut -c 3-7 | tr -d ' ' | sort | uniq")
mkdir "$TRACEDIR"/adbd_traces

adb shell 'setprop persist.adb.trace_mask 0; killall adbd'

IFS=$'\n'
for PID in $ADBD_PIDS; do
  cp "$TRACEDIR"/trace/clang-$PID-*.profraw "$TRACEDIR"/adbd_traces 2>/dev/null || true
done

llvm-profdata merge --output="$TRACEDIR"/adbd.profdata "$TRACEDIR"/adbd_traces/*

cd $ANDROID_BUILD_TOP
llvm-cov report --instr-profile="$TRACEDIR"/adbd.profdata \
  $ANDROID_PRODUCT_OUT/apex/com.android.adbd/bin/adbd \
  --show-region-summary=false \
  /proc/self/cwd/system/core/adb

llvm-cov show --instr-profile="$TRACEDIR"/adbd.profdata \
  $ANDROID_PRODUCT_OUT/apex/com.android.adbd/bin/adbd \
  --format=html \
  /proc/self/cwd/system/core/adb > $TRACEDIR/report.html
+2 −0
Original line number Diff line number Diff line
/adbd.profdata
/report
+114 −0
Original line number Diff line number Diff line
#!/bin/bash

set -euxo pipefail

OUTPUT_DIR=$(dirname "$0")
. "$OUTPUT_DIR"/include.sh

TRACEDIR=`mktemp -d`

### Make sure we can connect to the device.

# Get the device's wlan0 address.
IP_ADDR=$(adb shell ip route get 0.0.0.0 oif wlan0 | sed -En -e 's/.*src (\S+)\s.*/\1/p')
REMOTE_PORT=5555
REMOTE=$IP_ADDR:$REMOTE_PORT
LOCAL_SERIAL=$(adb shell getprop ro.serialno)

# Check that we can connect to it.
adb disconnect
adb tcpip $REMOTE_PORT

# TODO: Add `adb transport-id` and wait-for-offline on it.
sleep 5

adb connect $REMOTE

REMOTE_FETCHED_SERIAL=$(adb -s $REMOTE shell getprop ro.serialno)

if [[ "$LOCAL_SERIAL" != "$REMOTE_FETCHED_SERIAL" ]]; then
  echo "Mismatch: local serial = $LOCAL_SERIAL, remote serial = $REMOTE_FETCHED_SERIAL"
  exit 1
fi

# Back to USB, and make sure adbd is root.
adb disconnect $REMOTE

adb root
adb wait-for-device usb

# TODO: Add `adb transport-id` and wait-for-offline on it.
sleep 5

adb wait-for-device

### Run the adb unit tests and fetch traces from them.
mkdir "$TRACEDIR"/test_traces
adb shell rm -rf /data/local/tmp/adb_coverage
adb shell mkdir /data/local/tmp/adb_coverage

for TEST in $ADB_TESTS; do
  adb shell LLVM_PROFILE_FILE=/data/local/tmp/adb_coverage/$TEST.profraw /data/nativetest64/$TEST/$TEST
  adb pull /data/local/tmp/adb_coverage/$TEST.profraw "$TRACEDIR"/test_traces/
done

adb pull /data/local/tmp/adb_coverage "$TRACEDIR"/test_traces

# Clear logcat and increase the buffer to something ridiculous so we can fetch the pids of adbd later.
adb shell logcat -c -G128M

# Turn on extremely verbose logging so as to not count debug logging against us.
adb shell setprop persist.adb.trace_mask 1

### Run test_device.py over USB.
adb shell killall adbd

# TODO: Add `adb transport-id` and wait-for-offline on it.
sleep 5

adb wait-for-device shell rm -rf "/data/misc/trace/*" /data/local/tmp/adb_coverage/
"$OUTPUT_DIR"/../test_device.py

# Do a usb reset to exercise the disconnect code.
adb_usbreset
adb wait-for-device

# Dump traces from the currently running adbd.
adb shell killall -37 adbd

echo Waiting for adbd to finish dumping traces
sleep 5

# Restart adbd in tcp mode.
adb tcpip $REMOTE_PORT
sleep 5
adb connect $REMOTE
adb -s $REMOTE wait-for-device

# Run test_device.py again.
ANDROID_SERIAL=$REMOTE "$OUTPUT_DIR"/../test_device.py

# Dump traces again.
adb disconnect $REMOTE
adb shell killall -37 adbd

echo Waiting for adbd to finish dumping traces
sleep 5

adb pull /data/misc/trace "$TRACEDIR"/
echo Pulled traces to $TRACEDIR

# Identify which of the trace files are actually adbd, in case something else exited simultaneously.
ADBD_PIDS=$(adb shell "logcat -d -s adbd --format=process | grep 'adbd started' | cut -c 3-7 | tr -d ' ' | sort | uniq")
mkdir "$TRACEDIR"/adbd_traces

adb shell 'setprop persist.adb.trace_mask 0; killall adbd'

IFS=$'\n'
for PID in $ADBD_PIDS; do
  cp "$TRACEDIR"/trace/clang-$PID-*.profraw "$TRACEDIR"/adbd_traces 2>/dev/null || true
done
unset IFS

### Merge the traces.
llvm-profdata merge --output="$OUTPUT_DIR"/adbd.profdata "$TRACEDIR"/adbd_traces/* "$TRACEDIR"/test_traces/*
Loading