/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 2 Ġdz iko ys k Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . repos il ite Ċ Ċ import Ġcom . repos il ite . journal ist . Channel Ċ import Ġcom . repos il ite . journal ist . Logger Ċ import Ġcom . repos il ite . journal ist . backend . Print Stream Logger Ċ import Ġcom . repos il ite . maven . application . Prox ied Repository Ċ import Ġcom . repos il ite . maven . application . Maven Settings Ċ import Ġcom . repos il ite . maven . application . Repository Settings Ċ import Ġcom . repos il ite . settings . Settings Facade Ċ import Ġcom . repos il ite . storage . application . Storage Provider Settings Ċ import Ġcom . repos il ite . settings . api . LOCAL _ CONFIGURATION _ FILE Ċ import Ġcom . repos il ite . settings . api . Local Configuration Ċ import Ġio . jav al in . core . util . J aval in Bind Exception Ċ import Ġnet . dz iko ys k . cdn . KC dn Factory Ċ import Ġnet . dz iko ys k . cdn . source . Source Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . io . TempDir Ċ import Ġp anda . std . Result Ċ import Ġp anda . std . reactive . Reference Utils Ċ import Ġjava . io . File Ċ import Ġjava . io . Print Stream Ċ import Ġjava . nio . file . Files Ċ import Ġjava . util . concurrent . Thread Local Random Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġa Ġdirty Ġlauncher Ġof ĠRe pos il ite Ġinstance Ġfor Ġintegration Ġtests . Ċ Ġ* ĠEvery Ġintegration Ġtest Ġis Ġlaunched Ġtwice , Ġwith Ġlocal Ġand Ġremote Ġintegr ations , Ġthrough Ġdedicated Ġextensions : Ċ Ġ* Ġ- Ġ[ Local Specification J unit Extension ] Ċ Ġ* Ġ- Ġ[ Remote Specification J unit Extension ] Ċ Ġ*/ Ċ @ Suppress (" PropertyName ") Ċ internal Ġabstract Ġclass ĠRe pos il ite Runner Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TOKEN Ġ= Ġ" manager " Ġto Ġ" manager - secret " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ TempDir ĊĠĠĠ Ġlateinit Ġvar Ġrepos il ite Working Directory : ĠFile ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġ_ extension Initialized Ġ= Ġfalse ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġ_ database : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġ_ storage Provider : ĠStorage Provider Settings ? Ġ= Ġnull ĊĊĠĠĠ Ġlateinit Ġvar Ġrepos il ite : ĠRe pos il ite ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġboot Application () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(!_ extension Initialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Missing ĠRe pos il ite Ġextension Ġon Ġintegration Ġtest ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġdisable Ġlog . txt Ġto Ġavoid Ġconflicts Ġwith Ġparallel Ġtesting ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" tiny log . writer File . level ", Ġ" off ") ĊĠĠĠĠĠĠĠ Ġval Ġlogger Ġ= ĠPrint Stream Logger ( Print Stream ( Files . create TempFile (" repos il ite ", Ġ" test - out "). to File ()), ĠSystem . err , ĠChannel . ALL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġvar Ġlaunch Result : ĠResult < Repos il ite , ĠException > ĊĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Result Ġ= Ġprepare Instance ( logger ) ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( launch Result . error To Option (). ` is `( J aval in Bind Exception :: class . java ). isPresent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Instance ( logger : ĠLogger ): ĠResult < Repos il ite , ĠException > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= ĠRe pos il ite Parameters () ĊĠĠĠĠĠĠĠ Ġ// Ġparameters . shared Configuration Mode Ġ= Ġ" copy " ĊĠĠĠĠĠĠĠ Ġparameters . token Entries Ġ= ĠarrayOf ("${ DEFAULT _ TOKEN . first }:${ DEFAULT _ TOKEN . second }") ĊĠĠĠĠĠĠĠ Ġparameters . working DirectoryName Ġ= Ġrepos il ite Working Directory . absolute Path ĊĠĠĠĠĠĠĠ Ġparameters . test Env Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġparameters . port Ġ= Ġ 1 0 0 0 0 Ġ+ Ġ 2 Ġ* ĠThread Local Random . current (). nextInt ( 3 0 _ 0 0 0 Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġparameters . run () ĊĊĠĠĠĠĠĠĠ Ġval Ġlocal Configuration Ġ= ĠLocal Configuration (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReference Utils . setValue ( it . database , Ġ_ database ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReference Utils . setValue ( it . web ThreadPool , Ġ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReference Utils . setValue ( it . io ThreadPool , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Local Configuration ( local Configuration ) ĊĠĠĠĠĠĠĠ ĠKC dn Factory . create Standard (). render ( local Configuration , ĠSource . of ( repos il ite Working Directory . resolve ( LOCAL _ CONFIGURATION _ FILE ))) ĊĊĠĠĠĠĠĠĠ Ġrepos il ite Ġ= ĠRe pos il ite Factory . create Repos il ite ( parameters , Ġlogger ) ĊĠĠĠĠĠĠĠ Ġrepos il ite . journal ist . setVisible Threshold ( Channel . WARN ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Facade Ġ= Ġrepos il ite . extensions . facade < Settings Facade >() ĊĊĠĠĠĠĠĠĠ Ġsettings Facade . get Domain Settings < Maven Settings >(). update Ġ{ Ġold Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprox ied Configuration Ġ= ĠRepository Settings ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" prox ied ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprox ied Ġ= Ġmutable ListOf ( Prox ied Repository (" http :// localhost :${ parameters . port Ġ+ Ġ 1 }/ releases ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ update Ġold . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories Ġ= Ġold . repositories . associate By Ġ{ Ġit . id Ġ}. to Mutable Map () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġrepositories Ġ-> Ġrepositories [" prox ied "] Ġ= Ġprox ied Configuration Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Values Ġ{ Ġ(_, Ġrepository Configuration ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Configuration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre deployment Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstorage Provider Ġ= Ġ_ storage Provider !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. values . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Shared Configuration ( settings Facade ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrepos il ite . launch () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġoverride Local Configuration ( local Configuration : ĠLocal Configuration ) Ġ{ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġoverride Shared Configuration ( settings Facade : ĠSettings Facade ) Ġ{ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġshutdown Application () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepos il ite . shutdown () ĊĠĠĠ Ġ} Ċ Ċ } Ċ