package Ġf tl . gc . android Ċ Ċ import Ġcom . google . testing . model . Android Instrumentation Test Ċ import Ġcom . google . testing . model . File Reference Ċ import Ġcom . google . testing . model . Manual Sh arding Ċ import Ġcom . google . testing . model . Sh arding Option Ċ import Ġcom . google . testing . model . Test Targets For Shard Ċ import Ġcom . google . testing . model . Uniform Sh arding Ċ import Ġf tl . args . Shard Chunks Ċ import Ġf tl . log . log Ln Ċ import Ġf tl . run . platform . android . Android Test Config Ċ Ċ internal Ġfun Ġcreate Android Instrumentation Test ( ĊĠĠĠ Ġconfig : ĠAndroid Test Config . Instrumentation Ċ ) Ġ= ĠAndroid Instrumentation Test (). apply Ġ{ ĊĠĠĠ Ġapp A pk Ġ= ĠFile Reference (). set G cs Path ( config . app A pk G cs Path ) ĊĠĠĠ Ġtest A pk Ġ= ĠFile Reference (). set G cs Path ( config . test A pk G cs Path ) ĊĠĠĠ Ġtest Runner Class Ġ= Ġconfig . test Runner Class ĊĠĠĠ Ġorche strator Option Ġ= Ġconfig . orche strator Option Ċ }. setup Test Targets ( ĊĠĠĠ Ġdisable Sh arding Ġ= Ġconfig . disable Sh arding , ĊĠĠĠ Ġtest Shards Ġ= Ġconfig . test Shards , ĊĠĠĠ Ġnum Uniform Shards Ġ= Ġconfig . num Uniform Shards , ĊĠĠĠ Ġkeep Test Targets Empty Ġ= Ġconfig . keep Test Targets Empty , ĊĠĠĠ Ġtest Targets For Shard Ġ= Ġconfig . test Targets For Shard Ċ ) Ċ Ċ internal Ġfun ĠAndroid Instrumentation Test . setup Test Targets ( ĊĠĠĠ Ġdisable Sh arding : ĠBoolean , ĊĠĠĠ Ġtest Shards : ĠSh ard Chunks , ĊĠĠĠ Ġnum Uniform Shards : ĠInt ?, ĊĠĠĠ Ġkeep Test Targets Empty : ĠBoolean , ĊĠĠĠ Ġtest Targets For Shard : ĠSh ard Chunks Ċ ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġkeep Test Targets Empty Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Targets Ġ= Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdisable Sh arding Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Targets Ġ= Ġtest Shards . flatten () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsh arding Option Ġ= ĠSh arding Option (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( num Uniform Shards Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Targets Ġ= Ġtest Shards . flatten () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsafe Num Uniform Shards Ġ= Ġif Ġ( test Targets . size Ġ> Ġnum Uniform Shards ) Ġnum Uniform Shards Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Ln (" WARNING : Ġnum - uniform - shards Ġ($ num Uniform Shards ) Ġis Ġhigher Ġthan Ġnumber Ġof Ġtest Ġcases Ġ(${ test Targets . size }) Ġfrom Ġ${ test A pk . g cs Path }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Targets . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuniform Sh arding Ġ= ĠUniform Sh arding (). set Num Shards ( safe Num Uniform Shards ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanual Sh arding Ġ= Ġcreate Manual Sh arding ( test Targets For Shard , Ġtest Shards ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġcreate Manual Sh arding ( test Flag For Shard : ĠSh ard Chunks , Ġtest Shards : ĠSh ard Chunks ) Ġ= ĊĠĠĠ Ġif Ġ( test Flag For Shard . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠManual Sh arding (). set Test Targets For Shard ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Flag For Shard . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Targets For Shard (). set Test Targets ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠManual Sh arding (). set Test Targets For Shard ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Shards . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Targets For Shard (). set Test Targets ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ