{"id":19260946,"url":"https://github.com/evant/adp","last_synced_at":"2025-06-13T05:04:28.403Z","repository":{"id":144875390,"uuid":"419530638","full_name":"evant/adp","owner":"evant","description":"Android Device Pool","archived":false,"fork":false,"pushed_at":"2021-10-21T20:17:35.000Z","size":21,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-23T18:32:22.448Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/evant.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-21T00:30:21.000Z","updated_at":"2021-10-21T20:17:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"d9b89c1e-3915-4fab-8828-2e03e7a25db8","html_url":"https://github.com/evant/adp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/evant/adp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evant%2Fadp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evant%2Fadp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evant%2Fadp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evant%2Fadp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evant","download_url":"https://codeload.github.com/evant/adp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evant%2Fadp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259584783,"owners_count":22880198,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T19:23:41.137Z","updated_at":"2025-06-13T05:04:28.353Z","avatar_url":"https://github.com/evant.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# adp (Android Device Pool)\n\n## What is this?\n\nA tool to run device tests against a pool of devices. It will 'checkout' a device to run your tests against and then\nreturn that device back to the pool when it's complete. This allows you to run multiple sets of tests in parallel\nwithout them stepping on each other's toes.\n\n## Usage\n\nAll you need to do is prefix your gradle command with `adp`. It will figure which connected device to run on and set\nthe `ANDROID_SERIAL` env variable. If there's no available devices it will block until one becomes available.\n\n```shell\n./gradlew packageDebugAndroidTest\nadp ./gradlew connectedAndroidTest\n```\n\nNote: It's good practice to ensure everything is built _before_ you call with `adp`. This way it can be building when\notherwise it would be waiting for a device.\n\n## Use Cases\n\n### Multiple ci builds in parallel on the same build machine\n\nYou can have your build machine set up with a set of devices or emulators available. Separate builds will independently\nrun on a device without conflicting with each other.\n\n### Test sharding\n\nYou can easily shard tests across devices by running them in parallel. This even works if you have more shards than\navailable devices, it will just wait until one of them frees up.\n\n```shell\nseq 0 1 | xargs -I{} -n 1 -P 2 adp ./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.numShards=2 -Pandroid.testInstrumentationRunnerArguments.shardIndex={}\n```\n\n### Easy device boot waiting\n\nEven if you are running a single test run against a single device you can use `adp` to wait until the device is actually\nbrought up.\n\n```shell\n./start-emulator.sh \u0026 adp ./gradlew connectedAndroidTest\n```\n\n## Limitations\n\n- Right now there's no way to configure how `adp` runs. Additional options like more verbose\nlogging, specifying adb's path, and grouping devices into 'buckets' are planned.\n- All tests are expected to run on the same machine and must all be prefixed with `adp`, otherwise it won't be aware \nthat the device is in use.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevant%2Fadp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevant%2Fadp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevant%2Fadp/lists"}