package Ġcom . av ito . android . runner Ċ Ċ import Ġandroid . os . Build Ċ import Ġcom . av ito . android . elastic . Elastic Config Ċ import Ġcom . av ito . android . log . Elastic Config Factory Ċ import Ġcom . av ito . android . runner . annotation . resolver . TEST _ METADATA _ KEY Ċ import Ġcom . av ito . android . sentry . S entry Config Ċ import Ġcom . av ito . android . stats . Series Name Ċ import Ġcom . av ito . android . stats . Stats D Config Ċ import Ġcom . av ito . android . test . report . Args Provider Ċ import Ġcom . av ito . android . test . report . model . Test Metadata Ċ import Ġcom . av ito . android . test . report . video . Video Feature Value Ċ import Ġcom . av ito . android . transport . Report Destination Ċ import Ġcom . av ito . report viewer . model . Report Coordinates Ċ import Ġcom . av ito . utils . Build Metadata Ċ import Ġokhttp 3 . Http Url Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url Ċ Ċ sealed Ġclass ĠTest Run Environment Ġ{ ĊĊĠĠĠ Ġfun Ġas Run Environment OrThrow (): ĠRun Environment Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ! is ĠRun Environment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Expected Ġrun Ġenvironment Ġtype : ĠRun Environment , Ġactual : Ġ$ this ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġexecute If Real Run ( action : Ġ( Run Environment ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠRun Environment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWe Ġuse ĠTest Orche strator Ġwhen Ġrun Ġtests Ġfrom ĠAndroid ĠStudio , Ġfor Ġconsistency Ġwith ĠCI Ġruns Ġ( is olated Ġapp Ġprocesses ) ĊĠĠĠĠ Ġ* ĠO rche strator Ġruns Ġthis Ġrunner Ġbefore Ġany Ġtest Ġto Ġdetermine Ġwhich Ġtests Ġto Ġrun Ġand Ġspawn Ġseparate Ġprocesses ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġit Ġis Ġthis Ġspecial Ġrun , Ġwe Ġdon 't Ġneed Ġto Ġrun Ġany Ġof Ġour Ġspecial Ġmoves Ġhere , Ġbetter Ġskip Ġall Ġof Ġthem ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ link Ġhttps :// developer . android . com / training / testing / junit - runner # using - android - test - orche strator ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġobject ĠO rche strator Fake Run Environment Ġ: ĠTest Run Environment () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġthis :: class . java . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠInit Error ( val Ġerror : ĠString ) Ġ: ĠTest Run Environment () ĊĊĠĠĠ Ġdata Ġclass ĠRun Environment Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġtest Metadata : ĠTest Metadata , ĊĠĠĠĠĠĠĠ Ġval Ġtest Run Coordinates : ĠReport Coordinates , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġreport Destination : ĠReport Destination , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġvideo Recording Feature : ĠVideo Feature Value , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġelastic Config : ĠElastic Config , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġs entry Config : ĠS entry Config , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġstats D Config : ĠStats D Config , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġfile Storage Url : ĠHttp Url ĊĠĠĠ Ġ) Ġ: ĠTest Run Environment () Ċ } Ċ Ċ @ Deprecated (" Use Ġparse Environment , Ġfun Ġwill Ġbe Ġdeleted ", Ġreplace With Ġ= ĠReplace With (" parse Environment ")) Ċ @ Suppress (" Unused Private Member ", Ġ" UNUSED _ PARAMETER ") Ċ fun Ġprovide Environment ( ĊĠĠĠ Ġapi Url Parameter Key : ĠString Ġ= Ġ" un necessary Url ", ĊĠĠĠ Ġmock WebServer Url : ĠString Ġ= Ġ" localhost ", ĊĠĠĠ Ġarguments Provider : ĠArgs Provider , Ċ ): ĠTest Run Environment Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcoordinates Ġ= ĠReport Coordinates ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplan Slug Ġ= Ġarguments Provider . get Mandatory Argument (" plan Slug "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjob Slug Ġ= Ġarguments Provider . get Mandatory Argument (" job Slug "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Id Ġ= Ġarguments Provider . get Mandatory Argument (" run Id ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠTest Run Environment . Run Environment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Metadata Ġ= Ġarguments Provider . get Mandatory Serializable Argument ( TEST _ METADATA _ KEY ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Recording Feature Ġ= Ġprovide Video Recording Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Provider Ġ= Ġarguments Provider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelastic Config Ġ= ĠElastic Config Factory . parse ( arguments Provider ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs entry Config Ġ= Ġparse S entry Config ( arguments Provider ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstats D Config Ġ= Ġparse Stats D Config ( arguments Provider ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Storage Url Ġ= Ġarguments Provider . get Mandatory Argument (" file Storage Url "). to Http Url (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Run Coordinates Ġ= Ġcoordinates , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport Destination Ġ= Ġparse Report Destination ( arguments Provider ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Run Environment . Init Error ( e . message Ġ?: Ġ" Can 't Ġparse Ġarguments Ġfor Ġcreating ĠTest Run Environment ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġparse Environment ( ĊĠĠĠ Ġarguments Provider : ĠArgs Provider , Ċ ): ĠTest Run Environment Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcoordinates Ġ= ĠReport Coordinates ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplan Slug Ġ= Ġarguments Provider . get Mandatory Argument (" plan Slug "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjob Slug Ġ= Ġarguments Provider . get Mandatory Argument (" job Slug "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Id Ġ= Ġarguments Provider . get Mandatory Argument (" run Id ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠTest Run Environment . Run Environment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Metadata Ġ= Ġarguments Provider . get Mandatory Serializable Argument ( TEST _ METADATA _ KEY ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Recording Feature Ġ= Ġprovide Video Recording Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Provider Ġ= Ġarguments Provider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelastic Config Ġ= ĠElastic Config Factory . parse ( arguments Provider ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs entry Config Ġ= Ġparse S entry Config ( arguments Provider ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstats D Config Ġ= Ġparse Stats D Config ( arguments Provider ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Storage Url Ġ= Ġarguments Provider . get Mandatory Argument (" file Storage Url "). to Http Url (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Run Coordinates Ġ= Ġcoordinates , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport Destination Ġ= Ġparse Report Destination ( arguments Provider ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Run Environment . Init Error ( e . message Ġ?: Ġ" Can 't Ġparse Ġarguments Ġfor Ġcreating ĠTest Run Environment ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġparse Report Destination ( arguments Provider : ĠArgs Provider ): ĠReport Destination Ġ{ ĊĠĠĠ Ġval Ġdevice Name Ġ= Ġarguments Provider . get Mandatory Argument (" device Name ") ĊĠĠĠ Ġreturn Ġif Ġ( device Name . equals (" local ", Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Report Enabled Ġ= Ġarguments Provider . get Optional Argument (" av ito . report . enabled ") ?. to Boolean () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( is Report Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReport Destination . Backend ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Api Url Ġ= Ġarguments Provider . get Mandatory Argument (" report Api Url "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Viewer Url Ġ= Ġarguments Provider . get Mandatory Argument (" report Viewer Url "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Name Ġ= Ġarguments Provider . get Mandatory Argument (" device Name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReport Destination . No Op ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupload From Runner Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Provider . get Optional Argument (" av ito . report . from Runner ") ?. to Boolean () Ġ?: Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( upload From Runner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReport Destination . File ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReport Destination . Legacy ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġparse S entry Config ( arguments Provider : ĠArgs Provider ): ĠS entry Config Ġ{ ĊĠĠĠ Ġval Ġd sn Ġ= Ġarguments Provider . get Optional Argument (" sentry D sn ") ĊĠĠĠ Ġval Ġtags Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" API " Ġto ĠBuild . VERSION . SDK _ INT . toString () ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġrelease Ġ= ĠBuild Metadata . android Lib Version (" test - in house - runner ") ĊĊĠĠĠ Ġreturn Ġif Ġ( dsn . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠS entry Config . Disabled ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠS entry Config . Enabled ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd sn Ġ= Ġd sn , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment Ġ= Ġ" android - test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Name Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= Ġrelease , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtags Ġ= Ġtags ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġparse Stats D Config ( arguments Provider : ĠArgs Provider ): ĠStats D Config Ġ{ ĊĠĠĠ Ġval Ġhost Ġ= Ġarguments Provider . get Optional Argument (" stats D Host ") ĊĠĠĠ Ġval Ġport Ġ= Ġarguments Provider . get Optional Argument (" stats D Port ") ĊĠĠĠ Ġval Ġnamespace Ġ= Ġarguments Provider . get Optional Argument (" stats D Namespace ") ĊĠĠĠ Ġreturn Ġif Ġ( host . isNull Or Blank () Ġ|| Ġport . isNull Or Blank () Ġ|| Ġnamespace . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠStats D Config . Disabled ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġport Int Ġ= Ġport . toInt OrNull () ĊĠĠĠĠĠĠĠ Ġif Ġ( port Int Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStats D Config . Disabled ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStats D Config . Enabled ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġhost , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfallback Host Ġ= Ġhost , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġport Ġ= Ġport Int , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnamespace Ġ= ĠSeries Name . create ( namespace , Ġmultipart Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġprovide Video Recording Feature ( arguments Provider : ĠArgs Provider ): ĠVideo Feature Value Ġ{ ĊĠĠĠ Ġval Ġvideo Recording Argument Ġ= Ġarguments Provider . get Optional Argument (" video Recording ") ĊĊĠĠĠ Ġreturn Ġwhen Ġ( arguments Provider . get Optional Argument (" video Recording ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull , Ġ" disabled " Ġ-> ĠVideo Feature Value . Disabled ĊĠĠĠĠĠĠĠ Ġ" failed " Ġ-> ĠVideo Feature Value . Enabled . Only Failed ĊĠĠĠĠĠĠĠ Ġ" all " Ġ-> ĠVideo Feature Value . Enabled . All ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failed Ġto Ġresolve Ġvideo Ġrecording Ġresolution Ġfrom Ġargument : Ġ$ video Recording Argument " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ