package Ġcom . vi arte me v . the wh iter abbit . queue Ċ Ċ import Ġcom . vi arte me v . the wh iter abbit . Abstract Test Containers Test Ċ import Ġcom . vi arte me v . the wh iter abbit . channel . confirm Channel Ċ import Ġcom . vi arte me v . the wh iter abbit . channel . publish Ċ import Ġcom . vi arte me v . the wh iter abbit . exchange . Exchange Specification Ċ import Ġcom . vi arte me v . the wh iter abbit . exchange . declare Exchange Ċ import Ġcom . vi arte me v . the wh iter abbit . utils . create Message Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Assertions . assertNotNull Ċ import Ġorg . junit . jupiter . api . Assertions . assertNull Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . Disabled Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġorg . test containers . junit . jupiter . Test containers Ċ Ċ @ Test containers Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) Ċ class ĠQueue Test Ġ: ĠAbstract Test Containers Test () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` declare Ġa Ġqueue Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġqueue Name Ġ= Ġ" declare _ queue _ test " ĊĠĠĠĠĠĠĠ Ġfactory . new Connection (). use Ġ{ Ġconnection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . create Channel (). use Ġ{ Ġchannel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . declare Queue ( Queue Specification ( queue Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNotNull ( http Rabbit MQ Client . get Queue ( DEFAULT _ V HOST , Ġqueue Name )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` delete Ġa Ġqueue Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġqueue Name Ġ= Ġ" delete _ queue _ test " ĊĠĠĠĠĠĠĠ Ġfactory . new Connection (). use Ġ{ Ġconnection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . create Channel (). use Ġ{ Ġchannel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . declare Queue ( Queue Specification ( queue Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( http Rabbit MQ Client . get Queue ( DEFAULT _ V HOST , Ġqueue Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . delete Queue ( Delete Queue Specification ( queue Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( http Rabbit MQ Client . get Queue ( DEFAULT _ V HOST , Ġqueue Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` purge Ġa Ġqueue Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġqueue Name Ġ= Ġ" purge _ queue _ test " ĊĠĠĠĠĠĠĠ Ġfactory . new Connection (). use Ġ{ Ġconnection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . confirm Channel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeclare Queue ( Queue Specification ( queue Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqueue Ġ= Ġhttp Rabbit MQ Client . get Queue ( DEFAULT _ V HOST , Ġqueue Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( queue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġqueue . total Messages ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublish Ġ{ Ġpublish With Confirm Async ( messages Ġ= Ġ( 1 .. 1 0 ). map Ġ{ Ġcreate Message ( queue Ġ= Ġqueue Name , Ġbody Ġ= Ġ"") Ġ}) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqueue With Published Messages Ġ= Ġhttp Rabbit MQ Client . get Queue ( DEFAULT _ V HOST , Ġqueue Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( queue With Published Messages ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 , Ġqueue With Published Messages . total Messages ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurge Queue ( Purge Queue Specification ( queue Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpur ged Queue Ġ= Ġhttp Rabbit MQ Client . get Queue ( DEFAULT _ V HOST , Ġqueue Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( pur ged Queue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġpur ged Queue . total Messages ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` bind Ġa Ġqueue Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġqueue Name Ġ= Ġ" purge _ queue _ test " ĊĠĠĠĠĠĠĠ Ġval Ġexchange Name Ġ= Ġ" new _ exchange " ĊĠĠĠĠĠĠĠ Ġfactory . new Connection (). use Ġ{ Ġconnection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . confirm Channel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeclare Queue ( Queue Specification ( queue Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeclare Exchange ( Exchange Specification ( exchange Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqueue Bindings Before Ġ= Ġhttp Rabbit MQ Client . get Queue Bindings Between ( DEFAULT _ V HOST , Ġexchange Name , Ġqueue Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( queue Bindings Before . isEmpty ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Queue ( Bind Queue Specification ( queue Name , Ġexchange Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqueue Bindings After Ġ= Ġhttp Rabbit MQ Client . get Queue Bindings Between ( DEFAULT _ V HOST , Ġexchange Name , Ġqueue Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( queue Bindings After . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Disabled (" fix me ") ĊĠĠĠ Ġfun Ġ` unbind Ġa Ġqueue Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġqueue Name Ġ= Ġ" purge _ queue _ test " ĊĠĠĠĠĠĠĠ Ġval Ġexchange Name Ġ= Ġ" new _ exchange " ĊĠĠĠĠĠĠĠ Ġval Ġrouting Key Ġ= Ġ" routing _ key " ĊĠĠĠĠĠĠĠ Ġfactory . new Connection (). use Ġ{ Ġconnection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . confirm Channel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeclare Queue ( Queue Specification ( queue Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeclare Exchange ( Exchange Specification ( exchange Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqueue Ġ= Ġhttp Rabbit MQ Client . get Queue ( DEFAULT _ V HOST , Ġqueue Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( queue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Queue ( Bind Queue Specification ( queue Name , Ġexchange Name , Ġrouting Key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= Ġhttp Rabbit MQ Client . get Queue Bindings Between ( DEFAULT _ V HOST , Ġexchange Name , Ġqueue Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( binding . isNotEmpty ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun bind Queue ( Un bind Queue Specification ( queue Name , Ġexchange Name , Ġrouting Key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 4 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding After Un bind Ġ= Ġhttp Rabbit MQ Client . get Queue Bindings Between ( DEFAULT _ V HOST , Ġexchange Name , Ġqueue Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( binding After Un bind . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ