package Ġcom . atlassian . performance . tools . infrastructure Ċ Ċ import Ġcom . atlassian . performance . tools . infrastructure . api . os . Ubuntu Ċ import Ġcom . atlassian . performance . tools . ssh . api . Ssh Connection Ċ import Ġorg . apache . http . client . methods . HttpGet Ċ import Ġorg . apache . http . impl . client . HttpClient s Ċ import Ġjava . net . URI Ċ import Ġjava . time . Duration Ċ Ċ internal Ġclass ĠCh ro med river Installer ( private Ġval Ġuri : ĠURI ) Ġ{ ĊĠĠĠ Ġinternal Ġfun Ġinstall ( ssh : ĠSsh Connection ) Ġ{ ĊĠĠĠĠĠĠĠ ĠParallel Executor (). execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Resource ( uri ). download ( ssh , Ġ" chro med river . zip ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUbuntu (). install ( ssh , ĠlistOf (" unzip ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġssh . execute (" unzip Ġ- n Ġ- q Ġch ro med river . zip ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġssh . execute (" chmod Ġ+ x Ġch ro med river ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġssh . execute (" sudo Ġln Ġ- s Ġ` pwd `/ chro med river Ġ/ usr / bin / chro med river ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUbuntu (). install ( ssh , ĠlistOf (" zip ", Ġ" lib glib 2 . 0 - 0 ", Ġ" lib nss 3 "), ĠDuration . of Minutes ( 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget Latest Version ( minor Version : ĠString ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttp client Ġ= ĠHttpClient s . create Default () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversion Suffix Ġ= Ġif Ġ( minor Version Ġ!= Ġnull ) Ġ"_ $ minor Version " Ġelse Ġ""; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġget Ġ= ĠHttp Get (" https :// chro med river . storage . googleapis . com / LATE ST _ RELEASE $ version Suffix ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhttp client . execute ( get ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse . entity . content . buffered Reader (). use Ġ{ Ġit . readLine () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ