<!-- 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: Persistent Device List

## What is it?

A persistent device list that stores all expected devices between builds. It
is used by the perf test runner in order to properly shard tests by device
affinity. This is important because the same performance test can yield
meaningfully different results when run on different devices.

## Bots

The list is usually located at one of these locations:

  - `/b/build/site_config/.known_devices`.
  - `~/.android`.

Look at recipes listed below in order to find more up to date location.

## Local Runs

The persistent device list is unnecessary for local runs. It is only used on the
bots that upload data to the perf dashboard.

## Where it is used

The persistent device list is used in performance test recipes via
[api.chromium\_tests.steps.DynamicPerfTests](https://cs.chromium.org/chromium/build/scripts/slave/recipe_modules/chromium_tests/steps.py?q=DynamicPerfTests).
For example, the [android/perf](https://cs.chromium.org/chromium/build/scripts/slave/recipes/android/perf.py) recipe uses it like this:

```python
dynamic_perf_tests = api.chromium_tests.steps.DynamicPerfTests(
    builder['perf_id'], 'android', None,
    known_devices_file=builder.get('known_devices_file', None))
dynamic_perf_tests.run(api, None)
```


<!-- 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: Persistent Device List

## What is it?

A persistent device list that stores all expected devices between builds. It
is used by non-swarmed bots to detect any missing/extra devices attached to
them.

This will be no longer needed when all bots are switched over to swarming.

## Bots

The list is usually located at:

  - `~/.android/known_devices.json`.

Look at recipes listed below in order to find more up to date location.

## Local Runs

The persistent device list is unnecessary for local runs. It is only used on the
bots that upload data to the perf dashboard.

## Where it is used

The persistent device list is used in the
[chromium_android](https://cs.chromium.org/chromium/build/scripts/slave/recipe_modules/chromium_android/api.py?q=known_devices_file)
recipe module, and consumed by the
[device_status.py](https://cs.chromium.org/chromium/src/third_party/catapult/devil/devil/android/tools/device_status.py?q=\-\-known%5C-devices%5C-file)
script among others.

Update docs on persistent device list
[devil] Update docs on persistent device list

Remove references to the obsoleted DynamicPerfTests; the main remaining
client is on the devuce_status.py script, so mention that one instead.

Bug: chromium:770700
Change-Id: I840424cede7308af1f5190ec2092363f30bf4268
Reviewed-on: https://chromium-review.googlesource.com/716498
Reviewed-by: John Budorick <17d38a2d68c6a07a3ab0ce4a2873c5acefbd3dbb@chromium.org>
Commit-Queue: Juan Antonio Navarro Pérez <1649bb5e6b9eafe026580e338065dc64ba6b80b2@chromium.org>
