package Ġdb Ċ Ċ import ĠConfig Constants Ċ import ĠassertThat Thrown By Ċ import Ġco Verify Ċ import Ġhelper . Default Output Collector Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . core . json . JsonArray Ċ import Ġio . vertx . junit 5 . Vert x Extension Ċ import Ġio . vertx . junit 5 . Vert x TestContext Ċ import Ġio . vertx . kotlin . core . json . json Ċ import Ġio . vertx . kotlin . core . json . obj Ċ import Ġio . vertx . kotlin . coroutines . dispatcher Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġmodel . plugins . Initializer Plugin Ċ import Ġmodel . plugins . Output Adapter Plugin Ċ import Ġmodel . plugins . Process Chain Adapter Plugin Ċ import Ġmodel . plugins . Progress Estimator Plugin Ċ import Ġmodel . plugins . Runtime Plugin Ċ import Ġmodel . plugins . call Ċ import Ġmodel . process chain . Argument Ċ import Ġmodel . process chain . Argument Variable Ċ import Ġmodel . process chain . Executable Ċ import Ġmodel . process chain . Process Chain Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġjavax . script . Script Exception Ċ Ċ /** Ċ Ġ* ĠTests Ġfor Ġ[ Plugin Registry Factory ] Ġand Ġ[ Plugin Registry ] Ċ Ġ* Ġ@ author ĠM ic hel ĠK ra em er Ċ Ġ*/ Ċ @ Extend With ( Vert x Extension :: class ) Ċ class ĠPlugin Registry Test Ġ{ ĊĠ Ġ@ After Each ĊĠ Ġfun ĠtearDown ( vertx : ĠVert x , Ġctx : ĠVert x TestContext ) Ġ{ ĊĠĠĠ ĠGlobal Scope . launch ( vertx . dispatcher ()) Ġ{ ĊĠĠĠĠĠ Ġ// Ġinitialize Ġthe ĠPlugin Registry Factory Ġwith Ġan Ġempty Ġlist Ġof Ġplugins ĊĠĠĠĠĠ Ġ// Ġafter Ġeach Ġtest , Ġso Ġwe Ġdon 't Ġsp ill Ġinto Ġother Ġtests Ġ( from Ġthis Ġclass ĊĠĠĠĠĠ Ġ// Ġas Ġwell Ġas Ġfrom Ġother Ġtest Ġclasses !) ĊĠĠĠĠĠ Ġval Ġconfig Ġ= Ġjson Ġ{ ĊĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Constants . PLUGIN S Ġto ĠJson Array () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠPlugin Registry Factory . initialize ( vertx , Ġconfig ) ĊĊĠĠĠĠĠ Ġctx . complete Now () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġa Ġsimple Ġinitializer Ġcan Ġbe Ġcompiled Ġand Ġexecuted ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġcompile Dummy Initializer ( vertx : ĠVert x , Ġctx : ĠVert x TestContext ) Ġ{ ĊĠĠĠ ĠGlobal Scope . launch ( vertx . dispatcher ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġconfig Ġ= Ġjson Ġ{ ĊĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Constants . PLUGIN S Ġto Ġ" src /** / db / dummy Initializer . yaml " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠPlugin Registry Factory . initialize ( vertx , Ġconfig ) ĊĊĠĠĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry Factory . create () ĊĠĠĠĠĠ Ġval Ġinitial izers Ġ= Ġpr . get Initial izers () ĊĠĠĠĠĠ Ġctx . co Verify Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( initial izers ). has Size ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġinitializer Ġ= Ġinitial izers [ 0 ] ĊĠĠĠĠĠĠĠ Ġvar Ġcalled Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvert x . event Bus (). consumer < Unit >(" D UMMY _ INITIAL IZER ") Ġ{ Ġmsg Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġcalled ++ ĊĠĠĠĠĠĠĠĠĠ Ġmsg . reply ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinitializer . call ( vertx ) ĊĠĠĠĠĠĠĠ ĠassertThat ( called ). isEqualTo ( 1 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġctx . complete Now () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġ[ Plugin Registry . get Initial izers ] Ġworks Ġcorrectly ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġget Initial izers () Ġ{ ĊĠĠĠ Ġval Ġinit 1 Ġ= ĠInitial izer Plugin (" a ", Ġ" file . k ts ") ĊĠĠĠ Ġval Ġinit 2 Ġ= ĠInitial izer Plugin (" b ", Ġ" file 2 . k ts ") ĊĠĠĠ Ġval Ġinit 3 Ġ= ĠInitial izer Plugin (" c ", Ġ" file 3 . k ts ") ĊĠĠĠ Ġval Ġexpected Ġ= ĠlistOf ( init 1 , Ġinit 2 , Ġinit 3 ) ĊĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry ( expected ) ĊĠĠĠ ĠassertThat ( pr . get Initial izers ()). isEqualTo ( expected ) ĊĠĠĠ ĠassertThat ( pr . get Initial izers ()). isNot Same As ( expected ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġ[ Plugin Registry . get Initial izers ] Ġworks Ġcorrectly Ġif Ġthe Ġplugins ĊĠĠ Ġ* Ġhave Ġdependencies ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġget Initial izers With Dependencies () Ġ{ ĊĠĠĠ Ġval Ġinit 1 Ġ= ĠInitial izer Plugin (" a ", Ġ" file . k ts ", Ġdepends On Ġ= ĠlistOf (" c ")) ĊĠĠĠ Ġval Ġinit 2 Ġ= ĠInitial izer Plugin (" b ", Ġ" file 2 . k ts ") ĊĠĠĠ Ġval Ġinit 3 Ġ= ĠInitial izer Plugin (" c ", Ġ" file 3 . k ts ") ĊĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry ( listOf ( init 1 , Ġinit 2 , Ġinit 3 )) ĊĠĠĠ ĠassertThat ( pr . get Initial izers ()). isEqualTo ( listOf ( init 2 , Ġinit 3 , Ġinit 1 )) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġa Ġsimple Ġoutput Ġadapter Ġcan Ġbe Ġcompiled Ġand Ġexecuted ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġcompile Dummy Output Adapter ( vertx : ĠVert x , Ġctx : ĠVert x TestContext ) Ġ{ ĊĠĠĠ ĠGlobal Scope . launch ( vertx . dispatcher ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġconfig Ġ= Ġjson Ġ{ ĊĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Constants . PLUGIN S Ġto Ġ" src /** / db / dummy Output Adapter . yaml " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠPlugin Registry Factory . initialize ( vertx , Ġconfig ) ĊĊĠĠĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry Factory . create () ĊĠĠĠĠĠ Ġval Ġadapter Ġ= Ġpr . find Output Adapter (" dummy ") ĊĠĠĠĠĠ Ġctx . co Verify Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( adapter ). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( adapter !!. call ( Argument ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Ġ= ĠArgument Variable (" id ", Ġ" my Value "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠArgument . Type . OUTPUT ĊĠĠĠĠĠĠĠ Ġ), ĠProcess Chain (), Ġvert x )). isEqualTo ( listOf (" my Value 1 ", Ġ" my Value 2 ")) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġctx . complete Now () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġ[ Plugin Registry . find Output Adapter ] Ġworks Ġcorrectly ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġfind Output Adapter () Ġ{ ĊĠĠĠ Ġval Ġadapter 1 Ġ= ĠOutput Adapter Plugin (" a ", Ġ" file . k ts ", Ġ" dataType ") ĊĠĠĠ Ġval Ġadapter 2 Ġ= ĠOutput Adapter Plugin (" b ", Ġ" file 2 . k ts ", Ġ" dataType ") ĊĠĠĠ Ġval Ġadapter 3 Ġ= ĠOutput Adapter Plugin (" c ", Ġ" file 3 . k ts ", Ġ" custom ") ĊĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry ( listOf ( adapter 1 , Ġadapter 2 , Ġadapter 3 )) ĊĠĠĠ ĠassertThat ( pr . find Output Adapter (" dataType ")). is Same As ( adapter 2 ) ĊĠĠĠ ĠassertThat ( pr . find Output Adapter (" wrong DataType ")). isNull () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġa Ġsimple Ġprocess Ġchain Ġadapter Ġcan Ġbe Ġcompiled Ġand Ġexecuted ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġcompile Dummy Process Chain Adapter ( vertx : ĠVert x , Ġctx : ĠVert x TestContext ) Ġ{ ĊĠĠĠ ĠGlobal Scope . launch ( vertx . dispatcher ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġconfig Ġ= Ġjson Ġ{ ĊĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Constants . PLUGIN S Ġto Ġ" src /** / db / dummy Process Chain Adapter . yaml " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠPlugin Registry Factory . initialize ( vertx , Ġconfig ) ĊĊĠĠĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry Factory . create () ĊĠĠĠĠĠ Ġval Ġadapters Ġ= Ġpr . get Process Chain Adapters () ĊĠĠĠĠĠ Ġctx . co Verify Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( adapters ). has Size ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġadapters [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġp cs Ġ= ĠlistOf ( Process Chain ()) ĊĠĠĠĠĠĠĠ Ġval Ġnew P cs Ġ= Ġadapter . call ( pcs , Ġvert x ) ĊĠĠĠĠĠĠĠ ĠassertThat ( new P cs ). isNot Same As ( pcs ) ĊĠĠĠĠĠĠĠ ĠassertThat ( new P cs ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( new P cs [ 0 ]). is Same As ( pcs [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertThat ( new P cs [ 1 ]). isNot Same As ( pcs [ 0 ]) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġctx . complete Now () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġ[ Plugin Registry . get Process Chain Adapters ] Ġworks Ġcorrectly ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġget Process Chain Adapters () Ġ{ ĊĠĠĠ Ġval Ġadapter 1 Ġ= ĠProcess Chain Adapter Plugin (" a ", Ġ" file . k ts ") ĊĠĠĠ Ġval Ġadapter 2 Ġ= ĠProcess Chain Adapter Plugin (" b ", Ġ" file 2 . k ts ") ĊĠĠĠ Ġval Ġadapter 3 Ġ= ĠProcess Chain Adapter Plugin (" c ", Ġ" file 3 . k ts ") ĊĠĠĠ Ġval Ġexpected Ġ= ĠlistOf ( adapter 1 , Ġadapter 2 , Ġadapter 3 ) ĊĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry ( expected ) ĊĠĠĠ ĠassertThat ( pr . get Process Chain Adapters ()). isEqualTo ( expected ) ĊĠĠĠ ĠassertThat ( pr . get Process Chain Adapters ()). isNot Same As ( expected ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġ[ Plugin Registry . get Process Chain Adapters ] Ġreturns Ġplugins Ġwith ĊĠĠ Ġ* Ġdependencies Ġin Ġthe Ġcorrect Ġorder ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġget Process Chain Adapter sWith Dependencies () Ġ{ ĊĠĠĠ Ġval Ġadapter 1 Ġ= ĠProcess Chain Adapter Plugin (" a ", Ġ" file . k ts ", Ġdepends On Ġ= ĠlistOf (" c ")) ĊĠĠĠ Ġval Ġadapter 2 Ġ= ĠProcess Chain Adapter Plugin (" b ", Ġ" file 2 . k ts ") ĊĠĠĠ Ġval Ġadapter 3 Ġ= ĠProcess Chain Adapter Plugin (" c ", Ġ" file 3 . k ts ") ĊĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry ( listOf ( adapter 1 , Ġadapter 2 , Ġadapter 3 )) ĊĠĠĠ ĠassertThat ( pr . get Process Chain Adapters ()). isEqualTo ( listOf ( adapter 2 , Ġadapter 3 , Ġadapter 1 )) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġa Ġsimple Ġprogress Ġestimator Ġcan Ġbe Ġcompiled Ġand Ġexecuted ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġcompile Dummy Progress Estimator ( vertx : ĠVert x , Ġctx : ĠVert x TestContext ) Ġ{ ĊĠĠĠ ĠGlobal Scope . launch ( vertx . dispatcher ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġconfig Ġ= Ġjson Ġ{ ĊĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Constants . PLUGIN S Ġto Ġ" src /** / db / dummy Progress Estimator . yaml " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠPlugin Registry Factory . initialize ( vertx , Ġconfig ) ĊĊĠĠĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry Factory . create () ĊĠĠĠĠĠ Ġval Ġestimator Ġ= Ġpr . find Progress Estimator (" dummy ") ĊĠĠĠĠĠ Ġctx . co Verify Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( estimator ). isNotNull ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠExec utable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ" path ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= Ġempty List () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( estimator !!. compiled Function . call ( e , ĠlistOf (" 0 "), Ġvert x )). isEqualTo ( 0 . 0 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( estimator . compiled Function . call ( e , ĠlistOf (" 1 0 "), Ġvert x )). isEqualTo ( 0 . 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( estimator . compiled Function . call ( e , ĠlistOf (" 1 0 0 "), Ġvert x )). isEqualTo ( 1 . 0 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( estimator . compiled Function . call ( e , ĠlistOf (" aa "), Ġvert x )). isEqualTo ( null ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġctx . complete Now () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġa Ġsimple Ġprogress Ġestimator Ġ( using Ġthe Ġdeprecated Ġ` supported Service Id ' ĊĠĠ Ġ* Ġproperty ) Ġcan Ġbe Ġcompiled Ġand Ġexecuted ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġcompile Dummy Progress Estimator Deprecated ( vertx : ĠVert x , Ġctx : ĠVert x TestContext ) Ġ{ ĊĠĠĠ ĠGlobal Scope . launch ( vertx . dispatcher ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġconfig Ġ= Ġjson Ġ{ ĊĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Constants . PLUGIN S Ġto Ġ" src /** / db / dummy Progress Estimator Deprecated . yaml " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠPlugin Registry Factory . initialize ( vertx , Ġconfig ) ĊĊĠĠĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry Factory . create () ĊĠĠĠĠĠ Ġval Ġestimator Ġ= Ġpr . find Progress Estimator (" dummy ") ĊĠĠĠĠĠ Ġctx . co Verify Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( estimator ). isNotNull ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠExec utable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ" path ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= Ġempty List () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( estimator !!. compiled Function . call ( e , ĠlistOf (" 0 "), Ġvert x )). isEqualTo ( 0 . 0 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( estimator . compiled Function . call ( e , ĠlistOf (" 1 0 "), Ġvert x )). isEqualTo ( 0 . 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( estimator . compiled Function . call ( e , ĠlistOf (" 1 0 0 "), Ġvert x )). isEqualTo ( 1 . 0 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( estimator . compiled Function . call ( e , ĠlistOf (" aa "), Ġvert x )). isEqualTo ( null ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġctx . complete Now () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġ[ Plugin Registry . find Progress Estimator ] Ġworks Ġcorrectly ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġfind Progress Estimator () Ġ{ ĊĠĠĠ Ġval Ġestimator 1 Ġ= ĠProgress Estimator Plugin (" a ", Ġ" file . k ts ", ĊĠĠĠĠĠĠĠ Ġsupported Service Ids Ġ= ĠlistOf (" copy ")) ĊĠĠĠ Ġval Ġestimator 2 Ġ= ĠProgress Estimator Plugin (" b ", Ġ" file 2 . k ts ", ĊĠĠĠĠĠĠĠ Ġsupported Service Ids Ġ= ĠlistOf (" sleep ")) ĊĠĠĠ Ġval Ġestimator 3 Ġ= ĠProgress Estimator Plugin (" c ", Ġ" file 3 . k ts ", ĊĠĠĠĠĠĠĠ Ġsupported Service Ids Ġ= ĠlistOf (" hello - world ")) ĊĠĠĠ Ġval Ġestimator 4 Ġ= ĠProgress Estimator Plugin (" d ", Ġ" file 4 . k ts ", ĊĠĠĠĠĠĠĠ Ġsupported Service Ids Ġ= ĠlistOf (" duplicate 1 ", Ġ" duplicate 2 ")) ĊĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry ( listOf ( estimator 1 , Ġestimator 2 , Ġestimator 3 , ĊĠĠĠĠĠĠĠ Ġestimator 4 )) ĊĠĠĠ ĠassertThat ( pr . find Progress Estimator (" copy ")). is Same As ( estimator 1 ) ĊĠĠĠ ĠassertThat ( pr . find Progress Estimator (" wrong Estimator ")). isNull () ĊĠĠĠ ĠassertThat ( pr . find Progress Estimator (" duplicate 1 ")). is Same As ( estimator 4 ) ĊĠĠĠ ĠassertThat ( pr . find Progress Estimator (" duplicate 2 ")). is Same As ( estimator 4 ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġa Ġsimple Ġruntime Ġcan Ġbe Ġcompiled Ġand Ġexecuted ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġcompile Dummy Runtime ( vertx : ĠVert x , Ġctx : ĠVert x TestContext ) Ġ{ ĊĠĠĠ ĠGlobal Scope . launch ( vertx . dispatcher ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġconfig Ġ= Ġjson Ġ{ ĊĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Constants . PLUGIN S Ġto Ġ" src /** / db / dummy Runtime . yaml " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠPlugin Registry Factory . initialize ( vertx , Ġconfig ) ĊĊĠĠĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry Factory . create () ĊĠĠĠĠĠ Ġval Ġruntime Ġ= Ġpr . find Runtime (" dummy ") ĊĠĠĠĠĠ Ġval Ġoutput Collector Ġ= ĠDefault Output Collector () ĊĠĠĠĠĠ Ġctx . co Verify Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( runtime ). isNotNull ĊĠĠĠĠĠĠĠ Ġruntime !!. compiled Function . call ( Executable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ" path ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= Ġempty List () ĊĠĠĠĠĠĠĠ Ġ), Ġoutput Collector , Ġvert x ) ĊĠĠĠĠĠĠĠ ĠassertThat ( output Collector . output ()). isEqualTo (" D UMMY ") ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġctx . complete Now () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTest Ġif Ġ[ Plugin Registry . find Runtime ] Ġworks Ġcorrectly ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġfind Runtime () Ġ{ ĊĠĠĠ Ġval Ġadapter 1 Ġ= ĠRuntime Plugin (" a ", Ġ" file . k ts ", Ġ" ssh ") ĊĠĠĠ Ġval Ġadapter 2 Ġ= ĠRuntime Plugin (" b ", Ġ" file 2 . k ts ", Ġ" ssh ") ĊĠĠĠ Ġval Ġadapter 3 Ġ= ĠRuntime Plugin (" c ", Ġ" file 3 . k ts ", Ġ" http ") ĊĠĠĠ Ġval Ġpr Ġ= ĠPlugin Registry ( listOf ( adapter 1 , Ġadapter 2 , Ġadapter 3 )) ĊĠĠĠ ĠassertThat ( pr . find Runtime (" ssh ")). is Same As ( adapter 2 ) ĊĠĠĠ ĠassertThat ( pr . find Runtime (" wrong Runtime ")). isNull () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠMake Ġsure Ġthat Ġan Ġinvalid Ġplugin Ġdescriptor Ġcannot Ġbe Ġread ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġinvalid Plugin Descriptor ( vertx : ĠVert x , Ġctx : ĠVert x TestContext ) Ġ{ ĊĠĠĠ ĠGlobal Scope . launch ( vertx . dispatcher ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġconfig Ġ= Ġjson Ġ{ ĊĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Constants . PLUGIN S Ġto Ġ" src /** / db / invalid Plugin Descriptor . yaml " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġctx . co Verify Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat Thrown By Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠPlugin Registry Factory . initialize ( vertx , Ġconfig ) ĊĠĠĠĠĠĠĠ Ġ}. isInstanceOf ( IllegalArgumentException :: class . java ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġctx . complete Now () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠMake Ġsure Ġthat Ġa Ġplugin Ġwith Ġa Ġmissing Ġscript Ġfile Ġcannot Ġbe Ġcompiled ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġmissing Script File ( vertx : ĠVert x , Ġctx : ĠVert x TestContext ) Ġ{ ĊĠĠĠ ĠGlobal Scope . launch ( vertx . dispatcher ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġconfig Ġ= Ġjson Ġ{ ĊĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Constants . PLUGIN S Ġto Ġ" src /** / db / missing Script File . yaml " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġctx . co Verify Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat Thrown By Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠPlugin Registry Factory . initialize ( vertx , Ġconfig ) ĊĠĠĠĠĠĠĠ Ġ}. isInstanceOf ( io . vertx . core . file . FileSystem Exception :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Cause InstanceOf ( java . nio . file . NoSuch File Exception :: class . java ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġctx . complete Now () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠMake Ġsure Ġthat Ġan Ġinvalid Ġplugin Ġscript Ġcannot Ġbe Ġcompiled ĊĠĠ Ġ*/ ĊĠ Ġ@ Test ĊĠ Ġfun Ġcompile Error ( vertx : ĠVert x , Ġctx : ĠVert x TestContext ) Ġ{ ĊĠĠĠ ĠGlobal Scope . launch ( vertx . dispatcher ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġconfig Ġ= Ġjson Ġ{ ĊĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Constants . PLUGIN S Ġto Ġ" src /** / db / compile Error . yaml " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġctx . co Verify Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat Thrown By Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠPlugin Registry Factory . initialize ( vertx , Ġconfig ) ĊĠĠĠĠĠĠĠ Ġ}. isInstanceOf ( Script Exception :: class . java ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġctx . complete Now () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ