package Ġse . h ale by . k yst rix Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġcom . fasterxml . jackson . module . kotlin . register Kotlin Module Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . as yn ch ttp client . Dsl Ċ import Ġorg . as yn ch ttp client . Response Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġrx . Observable Ċ import Ġse . h ale by . k yst rix . support . G reet Service Ċ import Ġse . h ale by . k yst rix . support . G reeting Ċ import Ġse . h ale by . k yst rix . support . H yst rix Support Ċ Ċ class ĠK yst rix Observable Command Test Ġ{ ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġg reet Service Ġ= ĠG reet Service () ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġh yst rix Support Ġ= ĠH yst rix Support () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` DSL Ġworks Ġwith ĠH yst rix ĠObservable ĠCommands `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval ĠfirstName Ġ= Ġ" John " ĊĠĠĠĠĠĠĠ Ġval ĠlastName Ġ= Ġ" Do e " ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġg reeting Ġ= Ġh yst rix Observable Command < G reeting > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Key (" Test ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Key (" Test - Command ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠD sl . async HttpClient (). execute Request ( Dsl . get (" http :// localhost :${ gre et Service . port () }/ greeting ? firstName =$ firstName & lastName =$ lastName "). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . from ( response ). map ( Response :: get ResponseBody ). map Ġ{ Ġbody Ġ-> ĠObjectMapper (). register Kotlin Module (). readValue < G reeting >( body ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Properties Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Execution Timeout In Milliseconds ( 2 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Execution Isolation Semaphore Max Concurrent Requests ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Fallback Enabled ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. to Blocking (). first () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( greeting . message ). isEqualTo (" Have Ġa Ġnice Ġday Ġ$ firstName Ġ$ lastName ") ĊĠĠĠ Ġ} Ċ }