package Ġf tl . gc Ċ Ċ import Ġcom . dd . plist . NSDictionary Ċ import Ġcom . google . api . services . testing . Testing Ċ import Ġcom . google . api . services . testing . model .* Ċ import Ġf tl . args . I os Args Ċ import Ġf tl . ios . X ctest run Ċ import Ġf tl . util . Utils Ċ import Ġf tl . util . Utils . fatal Error Ċ import Ġf tl . util . Utils . join Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ object ĠG c I os Test Matrix Ġ{ ĊĊĠĠĠ Ġfun Ġbuild ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġios Device List : ĠI os Device List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Zip G cs Path : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun G cs Path : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Shards Index : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxc Test Parsed : ĠNS Dictionary , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig : ĠI os Args ): ĠTesting . Projects . Test Mat rices . Create Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġg cs Bucket Ġ= Ġconfig . results Bucket ĊĠĠĠĠĠĠĠ Ġval Ġmatrix G cs Suffix Ġ= Ġjoin ( run G cs Path , ĠUtils . unique ObjectName ()) ĊĠĠĠĠĠĠĠ Ġval Ġmatrix G cs Path Ġ= Ġjoin ( g cs Bucket , Ġmatrix G cs Suffix ) ĊĠĠĠĠĠĠĠ Ġval Ġmethods Ġ= Ġconfig . test Shard Chunks . elementAt ( test Shards Index ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgenerated X ctest run Ġ= ĠX ctest run . rewrite ( xc Test Parsed , Ġmethods ) ĊĠĠĠĠĠĠĠ Ġval Ġx ctest run File G cs Path Ġ= ĠG c Storage . upload X CT est File ( config , Ġg cs Bucket , Ġmatrix G cs Suffix , Ġgenerated X ctest run ) ĊĊĠĠĠĠĠĠĠ Ġval ĠiOS X CT est Ġ= ĠI os Xc Test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tests Zip ( File Reference (). set G cs Path ( test Zip G cs Path )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set X ctest run ( File Reference (). set G cs Path ( x ctest run File G cs Path )) ĊĊĠĠĠĠĠĠĠ Ġval Ġi O ST est Setup Ġ= ĠI os Test Setup () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Network Profile ( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtimeout Ġ= Ġconfig . test Timeout ĊĠĠĠĠĠĠĠ Ġval Ġtest Timeout Seconds Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimeout . contains (" h ") Ġ-> ĠTimeUnit . HOUR S . to Seconds ( timeout . remove Suffix (" h "). to Long ()) Ġ// ĠH ours ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimeout . contains (" m ") Ġ-> ĠTimeUnit . MIN UTES . to Seconds ( timeout . remove Suffix (" m "). to Long ()) Ġ// ĠMin utes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimeout . contains (" s ") Ġ-> Ġtimeout . remove Suffix (" s "). to Long () Ġ// ĠSecond s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtimeout . remove Suffix (" s "). to Long () Ġ// ĠSecond s ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Spec Ġ= ĠTest Specification () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Disable Video Recording (! config . record Video ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Test Timeout ("${ test Timeout Seconds } s ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set I os Test Setup ( i O ST est Setup ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set I os Xc Test ( iOS X CT est ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġresult Storage Ġ= ĠResult Storage () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Google Cloud Storage ( Google Cloud Storage (). set G cs Path ( matrix G cs Path )) ĊĊĠĠĠĠĠĠĠ Ġval Ġenvironment Matrix Ġ= ĠEnvironment Matrix (). set I os Device List ( ios Device List ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Matrix Ġ= ĠTest Matrix () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Test Specification ( test Spec ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Client Info ( Client Info (). setName (" Fl ank ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Environment Matrix ( environment Matrix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result Storage ( result Storage ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠG c Testing . get . projects (). test Mat rices (). create ( config . projectId , Ġtest Matrix ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfatal Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Failed Ġto Ġcreate Ġtest Ġmatrix ") ĊĠĠĠ Ġ} Ċ } Ċ