[fuchsia] More test target script improvements.

- EmuTarget and DeviceTarget each now call `ffx target remove` (if
  needed) before shutting down the emulator or breaking contact with the
  device, respectively. This is an attempt to resolve flakiness whereby
  the ffx daemon gets wedged.

- DeviceTarget now only uses `fx target add` when given a host:port
  pair if the target isn't already known. This allows repeat uses of a
  persistent emulator that is not using TUN/TAP (e.g.,
  `start_emulator.py --without-network`)

- Moved the basic implementation of EmuTarget._IsEmuStillRunning into
  QemuTarget since the implementation is specific to the lifecycle of
  qemu-based emulators. (FvdlTarget already has its own implementation.)

- Moved the bulk of EmuTarget.Shutdown into QemuTarget since the
  implementation is specific to the lifecycle of qemu-based emulators.
  (FvdlTarget already has its own implementation.)

- Moved statistic logging from EmuTarget.Shutdown (which is responsible
  for shutting down the emulator) into EmuTarget.Stop after Shutdown is
  called.

- Renamed EmuTarget.Shutdown to _Shutdown since it's an implementation
  detail of EmuTarget.Stop(), and made it an empty implementation so
  that subclasses don't need to invoke it (implementations are
  necessarily specific to the subclasses). Among other things, this
  removes spurious log messages in qemu-specific code when shutting down
  fvdl-based emulators.

- FvdlTarget._ConnectToTarget now emits a log message before waiting for
  `fvdl` to finish starting to let the user know that something is
  happening.

- FvdlTarget._IsEmuStillRunning now returns False rather than throwing
  an exception if the emulator is stopped (e.g., via `ffx target off` or
  similar).

- Improve handling of IPv6 addresses as hosts in ffx_session.

- start_emulator.py now gives more explicit instructions to the user on
  how to point the test runner scripts at it, and makes it clear that
  Ctrl-C can be used to shut down the emulator. For example:

Emulator successfully started. You can now run Chrome Fuchsia tests with "-d --host 127.0.0.1 --port 60665" to target this emulator.
Type Ctrl-C in this terminal to shut down the emulator.

Bug: 1256502
Change-Id: I3a757c1062f929524723c3c84ab891215be825d2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3540186
Reviewed-by: Benjamin Lerman <qsr@chromium.org>
Commit-Queue: Greg Thompson <grt@chromium.org>
Cr-Commit-Position: refs/heads/main@{#984291}
8 files changed
tree: 7ec3504525abca1077a15735d01826ded100027e
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. cloud_print/
  13. codelabs/
  14. components/
  15. content/
  16. courgette/
  17. crypto/
  18. dbus/
  19. device/
  20. docs/
  21. extensions/
  22. fuchsia/
  23. gin/
  24. google_apis/
  25. google_update/
  26. gpu/
  27. headless/
  28. infra/
  29. ios/
  30. ipc/
  31. media/
  32. mojo/
  33. native_client_sdk/
  34. net/
  35. pdf/
  36. ppapi/
  37. printing/
  38. remoting/
  39. rlz/
  40. sandbox/
  41. services/
  42. skia/
  43. sql/
  44. storage/
  45. styleguide/
  46. testing/
  47. third_party/
  48. tools/
  49. ui/
  50. url/
  51. weblayer/
  52. .clang-format
  53. .clang-tidy
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitattributes
  57. .gitignore
  58. .gn
  59. .mailmap
  60. .rustfmt.toml
  61. .vpython
  62. .vpython3
  63. .yapfignore
  64. AUTHORS
  65. BUILD.gn
  66. CODE_OF_CONDUCT.md
  67. codereview.settings
  68. DEPS
  69. DIR_METADATA
  70. ENG_REVIEW_OWNERS
  71. LICENSE
  72. LICENSE.chromium_os
  73. OWNERS
  74. PRESUBMIT.py
  75. PRESUBMIT_test.py
  76. PRESUBMIT_test_mocks.py
  77. README.md
  78. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure .

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.