Commit graph

2676 commits

Author SHA1 Message Date
Luis Hector Chavez
0fe9752696 Merge changes I722d2c41,Ic216ddef am: c4ad6b6adc
am: 2c3f1d6c43

Change-Id: Ifb3905acae6e91acde802b118a88cce47fb21077
2018-04-19 19:30:12 -07:00
Treehugger Robot
c4ad6b6adc Merge changes I722d2c41,Ic216ddef
* changes:
  Improve test_adb.py
  adb: Distinguish betwen already-connected and connection failure
2018-04-20 02:13:09 +00:00
Josh Gao
5b1c964f95 Merge "adb: don't error in handle_host_request if we can't acquire a transport." am: 224d965be0
am: 22bce1788e

Change-Id: Ia6833ef85c666b5fd4682051d9846e45c61cbaeb
2018-04-19 14:59:11 -07:00
Treehugger Robot
224d965be0 Merge "adb: don't error in handle_host_request if we can't acquire a transport." 2018-04-19 21:40:57 +00:00
Josh Gao
78f133d7d4 adb: don't error in handle_host_request if we can't acquire a transport.
Host services are attempted after handle_host_request, which means that
failing to find a transport to give to handle_forward_request shouldn't
send an error over to the other end.

Bug: http://b/78294734
Test: `adb track-devices` with multiple devices connected
Change-Id: I46c89cc1894b51d48fea7d4e629b1d57f73e3fd6
2018-04-19 13:09:18 -07:00
Luis Hector Chavez
8b67c52099 Improve test_adb.py
This change uses a context manager to create the fake ADB servers (and
cleanly tear them down.

Bug: 74411879
Test: python system/core/adb/test_adb.py

Change-Id: I722d2c4135259b1b0ef00a1510aa8402e87ecf72
2018-04-17 21:49:43 -07:00
Luis Hector Chavez
5d39585255 adb: Distinguish betwen already-connected and connection failure
This change returns a different value (-EALREADY) when a connection has
already been established, as opposed to a real connection failure (which
still returns -1).

Bug: 74411879
Test: Opened a socket, tried to adb connect to it,
      got "failed to connect to localhost:1337"

Change-Id: Ic216ddef7f28eb43ca750f9e51d068c077d54b07
2018-04-17 14:36:33 -07:00
Elliott Hughes
b869ce3f11 Merge "Remove out of date comment." am: 8a34e636ca
am: aeaade106d

Change-Id: I813e0a41f5e8df93d4dc319c77e3ac8beed20279
2018-04-17 12:13:00 -07:00
Elliott Hughes
77561c1f28 Remove out of date comment.
Bug: https://code.google.com/p/android/issues/detail?id=189821
Test: N/A
Change-Id: I25e64611d0c2db75a9caf0f19e7dd17c725d98a1
2018-04-16 15:22:33 -07:00
Josh Gao
dc5771d968 Merge "adb: fix adb reverse when adbd has multiple transports." into pi-dev
am: 14eb61199e

Change-Id: Ie81a6ff98883074401f44e1fda5528fe00d911aa
2018-04-14 15:57:32 -07:00
Josh Gao
a98aab2a72 adb: fix adb reverse when adbd has multiple transports.
Plumb the transport that we received the adb reverse request on through
to reverse_service, instead of trying to get a unique transport on
devices that have multiple active transports (e.g. a device with USB
(even unplugged) connected via TCP).

Bug: http://b/37066218
Bug: http://b/71898863
Test: `echo foo | nc -l 12345 & adb reverse tcp:12345 tcp:12345; adb shell nc localhost 12345` on a device connected via TCP
Change-Id: Iae199ae787f2e344126bbcacca8544cfc9844a4c
(cherry picked from commit 44899eeb53)
2018-04-13 17:47:42 -07:00
Josh Gao
217b8fcf86 adbd: increase oom_score_adj for adb shell
Previously, processes started via `adb shell` have an oom_score_adj of
-1000, making them invisible to the oom killer. This makes running a
process that consumes all memory (e.g. by leaking in a loop) lead to
the entire rest of the system (including adbd, because of bad
heuristics in the kernel) being oom killed before getting to it.

Bug: http://b/63143027
Test: `adb shell cat /proc/self/oom_score_adj` with adb root
Change-Id: I59111134e36dc271adf4c1dd4bd4400d4fe6aee0
(cherry picked from commit 2de2ade387)
2018-04-13 15:47:53 -07:00
Josh Gao
44899eeb53 adb: fix adb reverse when adbd has multiple transports.
Plumb the transport that we received the adb reverse request on through
to reverse_service, instead of trying to get a unique transport on
devices that have multiple active transports (e.g. a device with USB
(even unplugged) connected via TCP).

Bug: http://b/37066218
Bug: http://b/71898863
Test: `echo foo | nc -l 12345 & adb reverse tcp:12345 tcp:12345; adb shell nc localhost 12345` on a device connected via TCP
Change-Id: Iae199ae787f2e344126bbcacca8544cfc9844a4c
2018-04-13 14:25:28 -07:00
Josh Gao
8abec3c2f0 Merge changes Ida272d21,If3f29f9e,I7dc5258d,I55258c15,Ibad79770 am: cd71fd5109
am: f1cf3868b4

Change-Id: Iea7ef597253ab702aba281b267c5deb092d8f5ee
2018-04-13 14:09:49 -07:00
Josh Gao
2e93df2e14 adb: win32: cleanup winsock initialization.
Instead of doing it in 3 arbitrary functions, do it at startup always.

Test: wine adb_test.exe
Change-Id: Ida272d218aee6c331471250edce64d512d3b628a
2018-04-11 12:54:38 -07:00
Josh Gao
011ba4b9bf adb: win32: properly set EBADF in some functions.
Test: treehugger
Change-Id: If3f29f9ee586e29652e9709b3f594a1376ed4bb3
2018-04-11 12:54:38 -07:00
Josh Gao
64a63acba9 adb: partially clang-format sysdeps_win32.cpp.
clang-format some functions that I'm about to touch, but do it in a
separate commit to avoid making the actual changes unreadable.

Test: treehugger
Change-Id: I7dc5258d9ecc1c091d42311149d9e18ae483715b
2018-04-11 12:54:38 -07:00
Josh Gao
116aa0a4ad adb: implement adb_writev.
Change-Id: I55258c155d7b07368ebb45577b2e01ca804cf258
Test: adb_test
Test: python test_device.py
2018-04-11 12:54:36 -07:00
Josh Gao
1ce99576f0 adb: switch apacket payload to a type that doesn't initialize its contents.
Switch from using std::string as the type we use to hold our payload in
apacket to a custom reimplementation that doesn't zero initialize. This
improves bulk transfer throughput in the adb_benchmark microbenchmark
on walleye by ~20%.

Test: adb shell taskset f0 /data/benchmarktest64/adb_benchmark/adb_benchmark
Change-Id: Ibad797701eb1460c9321b0400c5b167b89b2b4d0
2018-04-11 12:54:07 -07:00
Josh Gao
2e05dfa2f2 adb: properly calculate packet size on Mac.
OS X reports maxPacketSize as wMaxPacketSize * (bMaxBurst + 1) in the
deprecated GetPipeProperties function. Use the also-deprecated
GetPipePropetiesV2 API to get bMaxBurst and figure out what
wMaxPacketSize is. (This file is going to go away eventually, so don't
bother with switching to the recommended GetPipePropertiesV3, since
it would be a substantially larger charge.)

libusb is unaffected.

Bug: http://b/77733422
Test: python test_device.py
Change-Id: I66517d699a4f39b93ba5eb7882bd8ee6c70f3672
(cherry picked from commit 2ea46521f3)
2018-04-11 11:44:26 -07:00
Josh Gao
647043365b Merge "adb: properly calculate packet size on Mac." am: ee63d74b6c
am: 994a47cc98

Change-Id: I61aa194b43d50625edf3b8be84f65b5a2dbef709
2018-04-10 17:42:22 -07:00
Treehugger Robot
ee63d74b6c Merge "adb: properly calculate packet size on Mac." 2018-04-11 00:27:36 +00:00
Josh Gao
2ea46521f3 adb: properly calculate packet size on Mac.
OS X reports maxPacketSize as wMaxPacketSize * (bMaxBurst + 1) in the
deprecated GetPipeProperties function. Use the also-deprecated
GetPipePropetiesV2 API to get bMaxBurst and figure out what
wMaxPacketSize is. (This file is going to go away eventually, so don't
bother with switching to the recommended GetPipePropertiesV3, since
it would be a substantially larger charge.)

libusb is unaffected.

Bug: http://b/77733422
Test: python test_device.py
Change-Id: I66517d699a4f39b93ba5eb7882bd8ee6c70f3672
2018-04-10 14:46:34 -07:00
Elliott Hughes
6d2f2135ee Merge "Support /odm and /product in "adb remount" and "adb sync"." into pi-dev 2018-04-09 15:41:00 +00:00
Luis Hector Chavez
2685c77c34 adb: Correctly drop caps when ambient capabilities are used
This change splits the capability-dropping step of adbd into two. This
is more robust when ambient capabilities are being used, since minijail
cannot currently handle that case.

Bug: 77146512
Test: grep Cap /proc/`pidof adbd`/status
      CapInh: 0000000000000000
      CapPrm: 0000000000000000
      CapEff: 0000000000000000
      CapBnd: 00000000000000c0
      CapAmb: 0000000000000000

Change-Id: I0476a8d80f7a2497600196932542045f3bc87537
Merged-In: I0476a8d80f7a2497600196932542045f3bc87537
(cherry picked from commit daacf4f6f3)
2018-04-06 06:40:14 -07:00
Elliott Hughes
a5f2f7cc5e Merge "Support /odm and /product in "adb remount" and "adb sync"." am: 6eb9248cb3
am: 9b0d281c4f

Change-Id: Icb2a0362e320f988aae20f7766f2fb39b85569c6
2018-04-05 19:49:11 -07:00
Luis Hector Chavez
39eaab78f2 Merge "adb: Correctly drop caps when ambient capabilities are used" am: 44f78bed19
am: 00b2dffd38

Change-Id: I452f9f2620a0fbd4e2e8d08e90330fb275e2a161
2018-04-05 19:48:10 -07:00
Elliott Hughes
792581f183 Support /odm and /product in "adb remount" and "adb sync".
Bug: http://b/77587036
Test: `adb remount` and `adb sync` still work on hikey

(cherry picked from commit 57e97cb7aa)

Change-Id: Ie49d703dac04e2fb8eda420b9253b8d45b6e1479
2018-04-05 19:45:27 -07:00
Elliott Hughes
6eb9248cb3 Merge "Support /odm and /product in "adb remount" and "adb sync"." 2018-04-06 01:16:04 +00:00
Luis Hector Chavez
daacf4f6f3 adb: Correctly drop caps when ambient capabilities are used
This change splits the capability-dropping step of adbd into two. This
is more robust when ambient capabilities are being used, since minijail
cannot currently handle that case.

Bug: 77146512
Test: grep Cap /proc/`pidof adbd`/status
      CapInh: 0000000000000000
      CapPrm: 0000000000000000
      CapEff: 0000000000000000
      CapBnd: 00000000000000c0
      CapAmb: 0000000000000000

Change-Id: I0476a8d80f7a2497600196932542045f3bc87537
2018-04-05 15:34:05 -07:00
Josh Gao
dab5c00069 Merge "adbd: configure jemalloc to not immediately purge." am: fa1f191ad9
am: 6d200f0982

Change-Id: If954ee1107a9ecb1edd15ba36aeeada7fd6239a9
2018-04-05 15:32:35 -07:00
Treehugger Robot
fa1f191ad9 Merge "adbd: configure jemalloc to not immediately purge." 2018-04-05 22:14:05 +00:00
Josh Gao
218f766e21 adbd: configure jemalloc to not immediately purge.
Profiling of adb_benchmark revealed that something like half of the CPU
time was being spent in malloc and free, which was odd because the
benchmark repeatedly mallocs and frees allocations of the same size. It
turns out that our default configuration of jemalloc will purge after
every free. Configure jemalloc to not do this, for gains of over 100%
on adb_benchmark, and up to 25% (on walleye USB3) in real-life.

Test: adb_benchmark
Change-Id: I602dd1645c3d21709c7f6a78903511ce4d576558
2018-04-05 15:13:30 -07:00
Josh Gao
bc838a37b1 Merge "Revert "Revert "adb: add transport benchmark.""" am: 8daf742900
am: 454f13818d

Change-Id: Ic38675a38d107081ccbc73b0ebf19fa65b74b551
2018-04-04 19:02:51 -07:00
Treehugger Robot
8daf742900 Merge "Revert "Revert "adb: add transport benchmark.""" 2018-04-05 01:49:38 +00:00
Josh Gao
9c59649e0b Revert "Revert "adb: add transport benchmark.""
This reverts commit 2ef56a1174.

host_supported is broken in cc_benchmark on Mac, but we probably don't
actually too much about the host benchmarks, so just delete the line.

Bug: http://b/77585931
Test: treehugger
Change-Id: I8898b4037a3faf8e8dee2a99498a6f84e642b92b
2018-04-04 14:26:39 -07:00
Elliott Hughes
57e97cb7aa Support /odm and /product in "adb remount" and "adb sync".
Bug: http://b/77587036
Test: `adb remount` and `adb sync` still work on hikey
Change-Id: I960ae75099edf147f857a67d906b6bc133f817a7
2018-04-04 13:14:59 -07:00
Elliott Hughes
c6dbacd50d Merge "Move adb/fastboot bash completion into adb/fastboot." am: 9c8c03896e
am: 081e7f5eaa

Change-Id: I6a7e26de30a3c0a18ef6a0967077e38b4bda38c7
2018-04-04 13:09:03 -07:00
Elliott Hughes
9c8c03896e Merge "Move adb/fastboot bash completion into adb/fastboot." 2018-04-04 19:44:37 +00:00
Elliott Hughes
fbfa0e8781 Move adb/fastboot bash completion into adb/fastboot.
Bug: http://b/74443706
Test: bash completion still works.
Change-Id: I9da3a0ae748a202407652f513c990e9d05f8b01a
2018-04-04 08:33:33 -07:00
David Brazdil
20ab3df0a6 Merge "Revert "adb: add transport benchmark."" am: 3876e37319
am: 566cf781cf

Change-Id: I30b46eb5392468bc3542d0ee6d36240c361178ad
2018-04-04 04:59:55 -07:00
David Brazdil
3876e37319 Merge "Revert "adb: add transport benchmark."" 2018-04-04 11:42:39 +00:00
David Brazdil
2ef56a1174 Revert "adb: add transport benchmark."
This reverts commit d78f59ca53.

Reason for revert: Breaks aosp-master renderscript and sdk_mac:
  error: system/core/adb/Android.bp:199:19: unrecognized property "host_supported"

Change-Id: Ifd75921dcdf5dce57f98833a913540914984b293
2018-04-04 10:32:08 +00:00
Josh Gao
ad45a986c8 Merge "adb: add transport benchmark." am: 3f6ef0d2d2
am: 643187d895

Change-Id: I224207a522ced476aa1cbf5a23e93a9fd6120d75
2018-04-04 00:15:24 -07:00
Josh Gao
937a60634f Merge "adb: don't abort when connecting to the same address twice." am: 60c6023902
am: d550ab0c16

Change-Id: I56b76c960cf9f5270cd7ea97cb4307d3323053c9
2018-04-04 00:14:49 -07:00
Josh Gao
3f6ef0d2d2 Merge "adb: add transport benchmark." 2018-04-04 07:02:07 +00:00
Josh Gao
d78f59ca53 adb: add transport benchmark.
Add some basic benchmarks for the underlying transport.

Test: adb_benchmark
Change-Id: I6475a66eb5a43a241c907046c23fea68263db945
2018-04-03 16:54:51 -07:00
Josh Gao
c251ec55d3 adb: don't abort when connecting to the same address twice.
When connecting to an address, we construct a transport first, and then
check whether we've already connected to that address. The consequent
destruction of the BlockingConnectionAdapter attempts to join threads
that haven't been started, which aborts.

Make it safe to destruct a BlockingConnectionAdapter without calling
Start on it first, to solve this.

Bug: http://b/69137547
Test: nc -l 12345 & (adb connect localhost:12345; adb connect localhost:12345)
Test: python test_adb.py
Change-Id: I6cb968a62dbac6332907e06575893d764905ee62
2018-04-03 13:58:21 -07:00
Josh Gao
078c49f79d Merge changes Iff1ec14b,I32123c51,I517dbcba,Ic215c7fe am: b9b967e2fc
am: 606c83bcab

Change-Id: Ic21cdfcd9dbad36b7480ccb05be667e1a2c31693
2018-04-02 18:57:02 -07:00
Josh Gao
7651eb9ef7 adb: try harder to fill our test sockets.
On platforms that implement sockets via underlying sockets (e.g. Wine),
a socket can appear to be full, and then become available for writes
again without read being called on the other end. Add a sleep after
each write to give the underlying implementation time to flush.

This doesn't help us if the buffer size is smaller than MAX_PAYLOAD,
but at least in the case of Wine, that doesn't seem to be the case.

Test: adb_test
Test: wine adb_test.exe
Change-Id: Iff1ec14bbf318b9742ec7e2fb72e34e3d6bbe6ad
2018-04-02 14:18:50 -07:00