package Ġorg . my ddd . vertx . grpc Ċ Ċ import Ġcom . google . protobuf . BoolValue Ċ import Ġcom . google . protobuf . Empty Ċ import Ġio . vertx . core . Future Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . core . impl . logging . LoggerFactory Ċ import Ġio . vertx . grpc . Vert x Server Ċ import Ġio . vertx . grpc . Vert x Server Builder Ċ import Ġio . vertx . junit 5 . Vert x TestContext Ċ import Ġio . vertx . kotlin . coroutines . await Ċ import Ġio . vertx . serv iced is covery . Service Discovery Ċ import Ġio . vertx . serv iced is covery . Service Reference Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . my ddd . vertx . junit . execute Ċ import Ġkotlin . random . Random Ċ Ċ class ĠTest Grpc ServiceType : Abstract Test () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġdiscovery : ĠService Discovery ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġby Ġlazy Ġ{ ĠLoggerFactory . getLogger ( Test ServiceType :: class . java ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrandom Port Ġ= ĠRandom . nextInt ( 9 0 9 0 , 1 0 0 1 0 ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhealth Check Ġ= Ġobject Ġ: ĠVert x HealthCheck Grpc . HealthCheck Vert x Impl Base () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhello ( request : ĠEmpty ?): ĠFuture < BoolValue ? >{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFuture . succeeded Future ( BoolValue . of ( true )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġrpc Server : Vert x Server ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Before All ĊĠĠĠĠĠĠĠ Ġfun Ġbefore All ( test Context : ĠVert x TestContext ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Context . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiscovery Ġ= ĠService Discovery . create ( vertx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Context . verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertNotNull ( discovery ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug ( Vert x HealthCheck Grpc :: class . java . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrpc Server Ġ= ĠVert x Server Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Address ( vertx , Ġ" localhost ", Ġrandom Port ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Service ( health Check ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrpc Server . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create Grpc Service ( test Context : ĠVert x TestContext ){ ĊĠĠĠĠĠĠĠ Ġtest Context . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrpc Endpoint Ġ= ĠGr pc Endpoint . create Record (" my - test ", Ġ" 1 2 7 . 0 . 0 . 1 ", Ġrandom Port ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecord Ġ= Ġdiscovery . publish ( grpc Endpoint ). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Context . verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertNotNull ( record ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Query Grpc Service ( vertx : ĠVert x , test Context : ĠVert x TestContext ){ ĊĠĠĠĠĠĠĠ Ġtest Context . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠVert x HealthCheck Grpc :: class . java . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrpc Endpoint Ġ= ĠGr pc Endpoint . create Record ( name , Ġ" 1 2 7 . 0 . 0 . 1 ", Ġrandom Port ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiscovery . publish ( grpc Endpoint ). await () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġdiscovery . get Record { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name . equals ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. await () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Context . verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertNotNull ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrpc Service Reference : ĠService Reference Ġ= Ġdiscovery . getReference ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstub Ġ= Ġgrpc Service Reference . get < Vert x HealthCheck Grpc . HealthCheck Vert x Stub >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhealth Ġ= Ġstub . hello ( Empty . getDefaultInstance ()). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Context . verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( health . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrpc Server . shutdown () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstub . hello ( Empty . getDefaultInstance ()). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( t : Throwable ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Context . verify Ġ{ ĠAssertions . assertNotNull ( t ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . execute Blocking < Unit > Ġ{ Ġpromise Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrpc Server . start { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpromise . complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. await () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhealth Ġ= Ġstub . hello ( Empty . getDefaultInstance ()). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Context . verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( health . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }