package Ġdev . a aw ad ia Ċ Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . core . net . Net Socket Ċ import Ġorg . junit . Test Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Count DownLatch Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġkotlin . test . assertTrue Ċ import Ġkotlin . test . fail Ċ Ċ class ĠProxy Test Ġ{ ĊĠ Ġ@ Test ĊĠ Ġfun Ġtest () Ġ{ ĊĠĠĠ Ġval Ġvert x Ġ= ĠVert x . vertx ( get Vert x Options ()) ĊĠĠĠ Ġvar Ġconnected Ġ= Ġfalse ĊĠĠĠ Ġvar Ġmsg Ġ= Ġ"" ĊĠĠĠ Ġvar Ġreceived Msg Ġ= Ġ"" ĊĠĠĠ Ġval Ġc Ġ= ĠCount DownLatch ( 1 ) ĊĊĠĠĠ Ġfun Ġconnect Handler ( net Socket : ĠNet Socket ) Ġ{ ĊĠĠĠĠĠ Ġconnected Ġ= Ġtrue ĊĠĠĠĠĠ Ġnet Socket . handler Ġ{ Ġbuffer Ġ-> ĊĠĠĠĠĠĠĠ Ġmsg Ġ= Ġbuffer . toString () ĊĠĠĠĠĠĠĠ Ġnet Socket . write ( msg ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġvert x . create Net Server (). connect Handler (:: connect Handler ). listen ( 7 0 0 0 ) ĊĊĠĠĠ Ġval Ġdata Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠ Ġval Ġfuture Ġ= Ġvert x . deploy Vert icle ( TCP Proxy :: class . java , Ġget Deployment Options ( forward Port Ġ= Ġ 7 0 0 0 , Ġinstances Ġ= Ġ 1 )) ĊĠĠĠĠĠ Ġ. compose Ġ{ Ġvert x . create Net Client (). connect ( 9 0 9 0 , Ġ" localhost ") Ġ} ĊĠĠĠĠĠ Ġ. on Success Ġ{ ĊĠĠĠĠĠĠĠ Ġit . handler Ġ{ Ġbuffer Ġ-> Ġreceived Msg Ġ= Ġbuffer . toString () Ġ} ĊĠĠĠĠĠĠĠ Ġit . write ( data ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. on Failure Ġ{ ĠassertTrue Ġ{ Ġit . printStackTrace (); Ġtrue Ġ} Ġ} ĊĊĠĠĠ Ġvert x . set Timer ( 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠ Ġfuture . on Success Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġconnected Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġmsg Ġ== Ġdata Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreceived Msg Ġ== Ġdata Ġ} ĊĠĠĠĠĠ Ġ}. on Failure Ġ{ Ġfail ( it . localized Message , Ġit ) Ġ} ĊĠĠĠĠĠ Ġc . count Down () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġc . await ( 5 , ĠTimeUnit . SECONDS ) ĊĠ Ġ} Ċ } Ċ