aboutsummaryrefslogtreecommitdiff
path: root/catapult/devil/docs/device_denylist.md
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/devil/docs/device_denylist.md')
-rw-r--r--catapult/devil/docs/device_denylist.md59
1 files changed, 59 insertions, 0 deletions
diff --git a/catapult/devil/docs/device_denylist.md b/catapult/devil/docs/device_denylist.md
new file mode 100644
index 00000000..0d654cdc
--- /dev/null
+++ b/catapult/devil/docs/device_denylist.md
@@ -0,0 +1,59 @@
+<!-- Copyright 2016 The Chromium Authors. All rights reserved.
+ Use of this source code is governed by a BSD-style license that can be
+ found in the LICENSE file.
+-->
+
+# Devil: Device Denylist
+
+## What is it?
+
+The device denylist is a per-run list of devices detected to be in a known bad
+state along with the reason they are suspected of being in a bad state (offline,
+not responding, etc). It is stored as a json file. This gets reset every run
+during the device recovery step (currently part of `bb_device_status_check`).
+
+## Bots
+
+On bots, this is normally found at `//out/bad_devices.json`. If you are having
+problems with denylisted devices locally even though a device is in a good
+state, you can safely delete this file.
+
+# Tools for interacting with device deny list.
+
+You can interact with the device denylist via [devil.android.device\_denylist](https://cs.chromium.org/chromium/src/third_party/catapult/devil/devil/android/device_denylist.py).
+This allows for any interaction you would need with a device denylist:
+
+ - Reading
+ - Writing
+ - Extending
+ - Resetting
+
+An example usecase of this is:
+```python
+from devil.android import device_denylist
+
+denylist = device_denylist.Denylist(denylist_path)
+denylisted_devices = denylist.Read()
+for device in denylisted_devices:
+ print 'Device %s is denylisted' % device
+denylist.Reset()
+new_denylist = {'device_id1': {'timestamp': ts, 'reason': reason}}
+denylist.Write(new_denylist)
+denylist.Extend([device_2, device_3], reason='Reason for denylisting')
+```
+
+
+## Where it is used.
+
+The denylist file path is passed directly to the following scripts in chromium:
+
+ - [test\_runner.py](https://cs.chromium.org/chromium/src/build/android/test_runner.py)
+ - [provision\_devices.py](https://cs.chromium.org/chromium/src/build/android/provision_devices.py)
+ - [bb\_device\_status\_check.py](https://cs.chromium.org/chromium/src/build/android/buildbot/bb_device_status_check.py)
+
+The denylist is also used in the following scripts:
+
+ - [device\_status.py](https://cs.chromium.org/chromium/src/third_party/catapult/devil/devil/android/tools/device_status.py)
+ - [device\_recovery.py](https://cs.chromium.org/chromium/src/third_party/catapult/devil/devil/android/tools/device_recovery.py)
+
+