package Ġfl ank . core l li um . domain . test . android . task Ċ Ċ import Ġfl ank . core l li um . domain . Test Android Ċ import Ġfl ank . core l li um . domain . Test Android . Load Previous Dur ations Ċ import Ġfl ank . core l li um . domain . Test Android . Parse TestCase s Ċ import Ġfl ank . core l li um . domain . Test Android . Prepare Shards Ċ import Ġfl ank . core l li um . domain . Test Android . context Ċ import Ġfl ank . exe ction . parallel . from Ċ import Ġfl ank . exe ction . parallel . using Ċ import Ġfl ank . shard . Shard Ċ import Ġfl ank . shard . calculate Shards Ċ Ċ /** Ċ Ġ* ĠCalculates Ġshard Ġdata . Ċ Ġ*/ Ċ internal Ġval Ġprepare Shards Ġ= ĠPrepare Shards Ġfrom Ġset Of ( ĊĠĠĠ ĠParse TestCase s , ĊĠĠĠ ĠLoad Previous Dur ations , Ċ ) Ġusing Ġcontext Ġ{ ĊĠĠĠ Ġcalculate Shards ( ĊĠĠĠĠĠĠĠ Ġapps Ġ= Ġprepare Data For Sh arding ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġap ks Ġ= Ġargs . ap ks , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Cases Ġ= Ġtest Cases , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdur ations Ġ= Ġprevious Dur ations , ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġmax Count Ġ= Ġargs . max Shards Count ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠPrepare Ġinput Ġdata Ġfor Ġsh arding Ġcalculation . Ċ Ġ* ĠIt 's Ġa Ġsimple Ġdata Ġmapping , Ġno ĠAPI Ġcalls Ġor Ġlogical Ġoperations . Ċ Ġ*/ Ċ private Ġfun Ġprepare Data For Sh arding ( ĊĠĠĠ Ġap ks : ĠList < Test Android . Args . A pk . App >, ĊĠĠĠ Ġtest Cases : ĠMap < String , ĠList < String >>, ĊĠĠĠ Ġdur ations : ĠMap < String , ĠLong >, Ċ ): ĠList < Shard . App > Ġ= ĊĠĠĠ Ġap ks . map Ġ{ Ġapp Ġ-> ĊĠĠĠĠĠĠĠ ĠSh ard . App ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġapp . path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtests Ġ= Ġapp . tests . map Ġ{ Ġtest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSh ard . Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġtest . path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcases Ġ= Ġtest Cases ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getValue ( test . path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġname Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSh ard . Test . Case ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġdur ations . getValue ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ