Skip to content

Commit

Permalink
Don't give critical error if whoami fails on unrooted device (faceboo…
Browse files Browse the repository at this point in the history
…k#469)

Summary:
Pull Request resolved: facebook#469

Don't always give critical error if whoami fails on unrooted device.

But always log.

Reviewed By: MarkAndersonIX

Differential Revision: D33193718

fbshipit-source-id: 405e03db2632584f36b55fd2b9fcccbbf9fd62bd
  • Loading branch information
Karl Simonsen authored and facebook-github-bot committed Jan 21, 2022
1 parent 0413569 commit 803019a
Showing 1 changed file with 30 additions and 21 deletions.
51 changes: 30 additions & 21 deletions benchmarking/platforms/android/adb.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,31 +58,40 @@ def user_is_root(self):
return self.get_user() == "root"

def get_user(self):
return self.shell("whoami", silent=True)[0]
try:
return self.shell("whoami", retry=1, silent=True)[0]
except Exception:
getLogger().exception("whoami failed.")
return None # could fail on unrooted device

def restart_adbd(self, root=False, silent=False):
try:
user = self.get_user()
if root and user != "root":
if not silent:
getLogger().info("Restarting adbd with root privilege.")
self.run(["root"], retry=1, silent=True)
elif not root and user == "root":
user = self.get_user()
if user is not None:
try:
if root and user != "root":
if not silent:
getLogger().info("Restarting adbd with root privilege.")
self.run(["root"], retry=1, silent=True)
elif not root and user == "root":
if not silent:
getLogger().info("Restarting adbd with nonroot privilege.")
self.run(["unroot"], retry=1, silent=True)
else:
return True # no-op

# Check if change worked
user = self.get_user()
if not silent:
getLogger().info("Restarting adbd with nonroot privilege.")
self.run(["unroot"], retry=1, silent=True)
else:
return True # no-op
getLogger().info(f"adbd user is now: {user}.")
return user == "root" if root else user != "root"
except Exception:
err_text = f"Error while restarting adbd with {'non' if not root else ''}root privilege."
if silent:
# still log error but no alert if in silent mode
getLogger().error(err_text, exc_info=True)

# Check if change worked
user = self.get_user()
if not silent:
getLogger().info(f"adbd user is now: {user}.")
return user == "root" if root else user != "root"
except Exception:
getLogger().critical(
f"Error while restarting adbd with {'non' if not root else ''}root privilege."
)
else:
getLogger().critical(err_text, exc_info=True)
return False

def deleteFile(self, file):
Expand Down

0 comments on commit 803019a

Please sign in to comment.