package Ġcom . by but ter . sis y ph us . test Ċ Ċ import Ġcom . by but ter . sis y ph us . dsl . cel . Cel Engine Ċ import Ġcom . by but ter . sis y ph us . test . extension . Extension Ċ import Ġio . grpc . Channel Ċ import Ġio . grpc . Managed Channel Builder Ċ import Ġorg . junit . platform . engine . support . hierarchical . Engine ExecutionContext Ċ Ċ interface ĠS isy ph us Test Engine Context Ġ: ĠEngine ExecutionContext Ġ{ ĊĠĠĠ Ġfun Ġcel (): ĠC el Engine ĊĊĠĠĠ Ġfun Ġchannel ( authority : ĠString ): ĠChannel ĊĊĠĠĠ Ġfun Ġresults (): ĠMap < String , ĠTest Result > ĊĊĠĠĠ Ġfun Ġextensions (): ĠList < Extension > Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠExtension > ĠS isy ph us Test Engine Context . extensions ( block : ĠT . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġextensions (). forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġ! is ĠT ) Ġreturn @ forEach ĊĠĠĠĠĠĠĠ Ġit . block () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠS isy ph us Test Root Context ( extensions : ĠList < Extension >) Ġ: ĠS isy ph us Test Engine Context Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcel Engine : ĠC el Engine Ġ= ĠC el Engine () ĊĠĠĠ Ġprivate Ġval Ġchannels : ĠMutable Map < String , ĠChannel > Ġ= Ġmutable Map Of () ĊĠĠĠ Ġprivate Ġval Ġextensions : ĠMutable List < Extension > Ġ= Ġextensions . to Mutable List () ĊĊĠĠĠ Ġoverride Ġfun Ġcel (): ĠC el Engine Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcel Engine ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchannel ( authority : ĠString ): ĠChannel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġchannels . get Or Put ( authority ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManaged Channel Builder . for Target ( authority ). use Pl aintext (). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresults (): ĠMap < String , ĠTest Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmap Of () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġextensions (): ĠList < Extension > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġextensions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfor Case (): ĠS isy ph us TestCase Context Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠS isy ph us TestCase Context ( this ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠS isy ph us TestCase Context ( val Ġparent : ĠS isy ph us Test Root Context ) Ġ: ĠS isy ph us Test Engine Context Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ results : ĠMutable Map < String , ĠTest Result > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġoverride Ġfun Ġcel (): ĠC el Engine Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparent . cel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchannel ( authority : ĠString ): ĠChannel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparent . channel ( authority ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresults (): ĠMap < String , ĠTest Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ results ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġextensions (): ĠList < Extension > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparent . extensions () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrecord ( result : ĠTest Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġresult . step ?. id ?. take If Ġ{ Ġit . isNotEmpty () Ġ} Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġ_ results [ id ] Ġ= Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfor Step ( call Context : ĠCall Context ): ĠS isy ph us Test Step Context Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠS isy ph us Test Step Context ( this , Ġcall Context ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠS isy ph us Test Step Context ( ĊĠĠĠ Ġval Ġparent : ĠS isy ph us TestCase Context , ĊĠĠĠ Ġval Ġcall Context : ĠCall Context Ċ ) Ġ: ĠS isy ph us Test Engine Context Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcel (): ĠC el Engine Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparent . cel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchannel ( authority : ĠString ): ĠChannel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparent . channel ( authority ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresults (): ĠMap < String , ĠTest Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparent . results () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġextensions (): ĠList < Extension > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparent . extensions () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrecord ( result : ĠTest Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparent . record ( result ) ĊĠĠĠ Ġ} Ċ } Ċ