[Lldb-commits] [PATCH] D79586: Do not list adb devices when a device id is given

2020-05-29 Thread Pavel Labath via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rG7ff2de4f0c60: Do not list adb devices when a device id is 
given (authored by emrekultursay, committed by labath).

Changed prior to commit:
  https://reviews.llvm.org/D79586?vs=262684&id=267152#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79586/new/

https://reviews.llvm.org/D79586

Files:
  lldb/source/Plugins/Platform/Android/AdbClient.cpp
  lldb/unittests/Platform/Android/AdbClientTest.cpp
  lldb/unittests/Platform/Android/CMakeLists.txt
  lldb/unittests/Platform/CMakeLists.txt

Index: lldb/unittests/Platform/CMakeLists.txt
===
--- lldb/unittests/Platform/CMakeLists.txt
+++ lldb/unittests/Platform/CMakeLists.txt
@@ -6,3 +6,5 @@
   LINK_COMPONENTS
 Support
   )
+
+add_subdirectory(Android)
Index: lldb/unittests/Platform/Android/CMakeLists.txt
===
--- /dev/null
+++ lldb/unittests/Platform/Android/CMakeLists.txt
@@ -0,0 +1,8 @@
+include_directories(${LLDB_SOURCE_DIR}/source/Plugins/Platform/Android)
+
+add_lldb_unittest(AdbClientTest
+  AdbClientTest.cpp
+
+  LINK_LIBS
+lldbPluginPlatformAndroid
+  )
Index: lldb/unittests/Platform/Android/AdbClientTest.cpp
===
--- /dev/null
+++ lldb/unittests/Platform/Android/AdbClientTest.cpp
@@ -0,0 +1,51 @@
+//===-- AdbClientTest.cpp -===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===--===//
+
+#include "gtest/gtest.h"
+#include "Plugins/Platform/Android/AdbClient.h"
+#include 
+
+static void set_env(const char *var, const char *value) {
+#ifdef _WIN32
+  _putenv_s(var, value);
+#else
+  setenv(var, value, true);
+#endif
+}
+
+using namespace lldb;
+using namespace lldb_private;
+
+namespace lldb_private {
+namespace platform_android {
+
+class AdbClientTest : public ::testing::Test {
+public:
+  void SetUp() override { set_env("ANDROID_SERIAL", ""); }
+
+  void TearDown() override { set_env("ANDROID_SERIAL", ""); }
+};
+
+TEST(AdbClientTest, CreateByDeviceId) {
+  AdbClient adb;
+  Status error = AdbClient::CreateByDeviceID("device1", adb);
+  EXPECT_TRUE(error.Success());
+  EXPECT_EQ("device1", adb.GetDeviceID());
+}
+
+TEST(AdbClientTest, CreateByDeviceId_ByEnvVar) {
+  set_env("ANDROID_SERIAL", "device2");
+
+  AdbClient adb;
+  Status error = AdbClient::CreateByDeviceID("", adb);
+  EXPECT_TRUE(error.Success());
+  EXPECT_EQ("device2", adb.GetDeviceID());
+}
+
+} // end namespace platform_android
+} // end namespace lldb_private
Index: lldb/source/Plugins/Platform/Android/AdbClient.cpp
===
--- lldb/source/Plugins/Platform/Android/AdbClient.cpp
+++ lldb/source/Plugins/Platform/Android/AdbClient.cpp
@@ -94,11 +94,7 @@
 
 Status AdbClient::CreateByDeviceID(const std::string &device_id,
AdbClient &adb) {
-  DeviceIDList connect_devices;
-  auto error = adb.GetDevices(connect_devices);
-  if (error.Fail())
-return error;
-
+  Status error;
   std::string android_serial;
   if (!device_id.empty())
 android_serial = device_id;
@@ -106,18 +102,18 @@
 android_serial = env_serial;
 
   if (android_serial.empty()) {
-if (connect_devices.size() != 1)
+DeviceIDList connected_devices;
+error = adb.GetDevices(connected_devices);
+if (error.Fail())
+  return error;
+
+if (connected_devices.size() != 1)
   return Status("Expected a single connected device, got instead %zu - try "
 "setting 'ANDROID_SERIAL'",
-connect_devices.size());
-adb.SetDeviceID(connect_devices.front());
+connected_devices.size());
+adb.SetDeviceID(connected_devices.front());
   } else {
-auto find_it = std::find(connect_devices.begin(), connect_devices.end(),
- android_serial);
-if (find_it == connect_devices.end())
-  return Status("Device \"%s\" not found", android_serial.c_str());
-
-adb.SetDeviceID(*find_it);
+adb.SetDeviceID(android_serial);
   }
   return error;
 }
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D79586: Do not list adb devices when a device id is given

2020-05-21 Thread Emre Kultursay via Phabricator via lldb-commits
emrekultursay added a comment.

I don't have commit access. Can someone submit this?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79586/new/

https://reviews.llvm.org/D79586



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D79586: Do not list adb devices when a device id is given

2020-05-11 Thread Pavel Labath via Phabricator via lldb-commits
labath accepted this revision.
labath added a comment.
This revision is now accepted and ready to land.

Looks good.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79586/new/

https://reviews.llvm.org/D79586



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D79586: Do not list adb devices when a device id is given

2020-05-07 Thread Emre Kultursay via Phabricator via lldb-commits
emrekultursay created this revision.
Herald added subscribers: lldb-commits, mgorny.
Herald added a project: LLDB.

On Android, this method gets called twice: first when establishing
a host-server connection, then when attaching to a process id.

Each call takes several seconds to finish (especially slower on Windows)
and eliminating the call for the typical case improves latency significantly.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D79586

Files:
  lldb/source/Plugins/Platform/Android/AdbClient.cpp
  lldb/unittests/Platform/Android/AdbClientTest.cpp
  lldb/unittests/Platform/Android/CMakeLists.txt
  lldb/unittests/Platform/CMakeLists.txt

Index: lldb/unittests/Platform/CMakeLists.txt
===
--- lldb/unittests/Platform/CMakeLists.txt
+++ lldb/unittests/Platform/CMakeLists.txt
@@ -6,3 +6,5 @@
   LINK_COMPONENTS
 Support
   )
+
+add_subdirectory(Android)
Index: lldb/unittests/Platform/Android/CMakeLists.txt
===
--- /dev/null
+++ lldb/unittests/Platform/Android/CMakeLists.txt
@@ -0,0 +1,8 @@
+include_directories(${LLDB_SOURCE_DIR}/source/Plugins/Platform/Android)
+
+add_lldb_unittest(AdbClientTest
+  AdbClientTest.cpp
+
+  LINK_LIBS
+lldbPluginPlatformAndroid
+  )
Index: lldb/unittests/Platform/Android/AdbClientTest.cpp
===
--- /dev/null
+++ lldb/unittests/Platform/Android/AdbClientTest.cpp
@@ -0,0 +1,45 @@
+//===-- AdbClientTest.cpp -===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===--===//
+
+#include "gtest/gtest.h"
+
+#include "Plugins/Platform/Android/AdbClient.h"
+
+#include 
+
+using namespace lldb;
+using namespace lldb_private;
+
+namespace lldb_private {
+namespace platform_android {
+
+class AdbClientTest : public ::testing::Test {
+public:
+  void SetUp() override { putenv("ANDROID_SERIAL="); }
+
+  void TearDown() override { putenv("ANDROID_SERIAL="); }
+};
+
+TEST(AdbClientTest, CreateByDeviceId) {
+  AdbClient adb;
+  Status error = AdbClient::CreateByDeviceID("device1", adb);
+  EXPECT_TRUE(error.Success());
+  EXPECT_EQ("device1", adb.GetDeviceID());
+}
+
+TEST(AdbClientTest, CreateByDeviceId_ByEnvVar) {
+  putenv("ANDROID_SERIAL=device2");
+
+  AdbClient adb;
+  Status error = AdbClient::CreateByDeviceID("", adb);
+  EXPECT_TRUE(error.Success());
+  EXPECT_EQ("device2", adb.GetDeviceID());
+}
+
+} // end namespace platform_android
+} // end namespace lldb_private
\ No newline at end of file
Index: lldb/source/Plugins/Platform/Android/AdbClient.cpp
===
--- lldb/source/Plugins/Platform/Android/AdbClient.cpp
+++ lldb/source/Plugins/Platform/Android/AdbClient.cpp
@@ -94,11 +94,7 @@
 
 Status AdbClient::CreateByDeviceID(const std::string &device_id,
AdbClient &adb) {
-  DeviceIDList connect_devices;
-  auto error = adb.GetDevices(connect_devices);
-  if (error.Fail())
-return error;
-
+  Status error;
   std::string android_serial;
   if (!device_id.empty())
 android_serial = device_id;
@@ -106,18 +102,18 @@
 android_serial = env_serial;
 
   if (android_serial.empty()) {
-if (connect_devices.size() != 1)
+DeviceIDList connected_devices;
+error = adb.GetDevices(connected_devices);
+if (error.Fail())
+  return error;
+
+if (connected_devices.size() != 1)
   return Status("Expected a single connected device, got instead %zu - try "
 "setting 'ANDROID_SERIAL'",
-connect_devices.size());
-adb.SetDeviceID(connect_devices.front());
+connected_devices.size());
+adb.SetDeviceID(connected_devices.front());
   } else {
-auto find_it = std::find(connect_devices.begin(), connect_devices.end(),
- android_serial);
-if (find_it == connect_devices.end())
-  return Status("Device \"%s\" not found", android_serial.c_str());
-
-adb.SetDeviceID(*find_it);
+adb.SetDeviceID(android_serial);
   }
   return error;
 }
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits