/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 ĠRed ĠHat , ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ġor Ġmore Ċ Ġ* Ġcontributor Ġlicense Ġagreements . ĠSee Ġthe ĠNOTICE Ġfile Ġdistributed Ġwith Ċ Ġ* Ġthis Ġwork Ġfor Ġadditional Ġinformation Ġregarding Ġcopyright Ġownership . Ċ Ġ* ĠThe ĠASF Ġlicenses Ġthis Ġfile Ġto ĠYou Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ċ Ġ* Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ċ Ġ* Ġthe ĠLicense . ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . redhat . mq e . Client Listener Ċ import Ġorg . junit . jupiter . api . Assertions . assert Timeout Pre empt ively Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Tag Ċ import Ġorg . junit . jupiter . api . Tags Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . function . Executable Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Csv File Source Ċ import Ġorg . junit . jupiter . params . provider . Value Source Ċ import Ġjava . io . File Ċ import Ġjava . math . BigInteger Ċ import Ġjava . nio . file . Files Ċ import Ġjava . security . Message Digest Ċ import Ġjava . security . Permission Ċ import Ġjava . time . Duration Ċ import Ġjava . time . Local Time Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlin . test . fail Ċ Ċ @ Tag (" external ") Ċ abstract Ġclass ĠAbstract Main Test Ġ: ĠAbstract Test () Ġ{ ĊĠĠĠ Ġabstract Ġval Ġbroker Url : ĠString ĊĠĠĠ Ġabstract Ġval Ġssl Broker Url : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġall Ġsingle - value Ġoptions Ġto Ġsome Ġharm less Ġnon default Ġvalue Ġhere . ĊĠĠĠĠ Ġ* ĠUsed Ġin Ġa Ġtest Ġto Ġincrease Ġcode Ġcoverage Ġand Ġcatch Ġsome Ġun fore seen Ġoption Ġinteractions . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġsender Additional Options : ĠArray < String > ĊĠĠĠ Ġabstract Ġval Ġconnector Additional Options : ĠArray < String > ĊĊĠĠĠ Ġopen Ġval Ġaddress : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprefix Ġ+ Ġrandom Suffix ĊĊĠĠĠ Ġabstract Ġfun Ġmain _( listener : ĠClient Listener , Ġargs : ĠArray < String >) ĊĠĠĠ Ġfun Ġmain ( args : ĠArray < String >): ĠList < Map < String , ĠAny >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessages Ġ= ĠArrayList < Map < String , ĠAny >>() ĊĠĠĠĠĠĠĠ Ġmain _( object Ġ: ĠClient Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message ( message : ĠMap < String , ĠAny >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages . add ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Output ( output : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġargs ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmessages ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġprint ( Local Time . now ()) ĊĠĠĠĠĠĠĠ Ġrandom Suffix Ġ= Ġgenerate Random Suffix () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tags ( Tag (" pair wise "), ĠTag (" external ")) ĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Value Source ( strings Ġ= ĠarrayOf (" sender ", Ġ" receiver ", Ġ" connector ")) ĊĠĠĠ Ġfun Ġprint Help ( client : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ client Ġ-- help ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġprevious Manager Ġ= ĠSystem . get Security Manager () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠNo Exit Security Manager ( previous Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . set Security Manager ( manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" expected Ġexception ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSystem Exit ing With Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( e . status ). isEqualTo ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . set Security Manager ( previous Manager ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend And Receive Single Message () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġassert Timeout Pre empt ively ( Duration . of Seconds ( 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend Browse And Receive Single Message () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġassert Timeout Pre empt ively ( Duration . of Seconds ( 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" B rowsing : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters Ġ+ Ġ"-- recv - browse Ġtrue ". split (" Ġ"). to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconnect Connector () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnector Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" connector Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġassert Timeout Pre empt ively ( Duration . of Seconds ( 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Connecting : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( connector Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend And Receive Single Message Using Credentials () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- conn - username Ġadmin Ġ-- conn - password Ġadmin Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- conn - username Ġadmin Ġ-- conn - password Ġadmin Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġassert Timeout Pre empt ively ( Duration . of Seconds ( 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend Browse And Receive Single Message With Empty Selector () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- msg - selector Ġ'' Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġassert Timeout Pre empt ively ( Duration . of Seconds ( 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" B rowsing : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters Ġ+ Ġ"-- recv - browse Ġtrue ". split (" Ġ"). to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend Single Message Without Protocol In Broker Url () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbroker Url Ġ= Ġbroker Url . substring After (": ") ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġassert Timeout Pre empt ively ( Duration . of Seconds ( 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend And Receive Single Message Log Interop () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġinter op Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġinter op Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġassert Timeout Pre empt ively ( Duration . of Seconds ( 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend And Receive Single Message Log Json () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- out Ġjson Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- out Ġjson Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġassert Timeout Pre empt ively ( Duration . of Seconds ( 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend And Receive Single Message Log Json Float Type () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- out Ġjson Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- msg - property Ġb af ~ 4 2 . 2 Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- out Ġjson Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġassert Timeout Pre empt ively ( Duration . of Seconds ( 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tags ( Tag (" pair wise "), ĠTag (" external ")) ĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Csv File Source ( resources Ġ= ĠarrayOf ("/ receiver . csv ")) ĊĠĠĠ Ġfun Ġsend And Receive With All Receiver CL IS w itches ( receiver Dynamic Options : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( receiver Dynamic Options ) ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġassert No System Exit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters Ġ+ Ġreceiver Dynamic Options . split (" Ġ"). to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tags ( Tag (" pair wise "), ĠTag (" external ")) ĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Csv File Source ( resources Ġ= ĠarrayOf ("/ sender . csv ")) ĊĠĠĠ Ġfun Ġsend And Receive With All Sender CL IS w itches ( sender Dynamic Options : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( sender Dynamic Options ) ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġassert No System Exit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters Ġ+ Ġsender Dynamic Options . split (" Ġ"). to Typed Array () Ġ+ Ġsender Additional Options ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tags ( Tag (" pair wise "), ĠTag (" external ")) ĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Csv File Source ( resources Ġ= ĠarrayOf ("/ connector . csv ")) ĊĠĠĠ Ġfun Ġconnect Connector With All Sender CL IS w itches ( sender Dynamic Options : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( sender Dynamic Options ) ĊĠĠĠĠĠĠĠ Ġval Ġconnector P rame ters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" connector Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address ". split (" Ġ"). to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġassert No System Exit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Connecting : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( connector P rame ters Ġ+ Ġsender Dynamic Options . split (" Ġ"). to Typed Array () Ġ+ Ġconnector Additional Options ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend And Receive List Message () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 Ġ-- msg - content - list - item Ġ-- msg - content - list - item Ġ" String " Ġ-- msg - content - list - item Ġ"~ 1 " Ġ-- msg - content - list - item Ġ"~ 1 . 0 " Ġ-- msg - content - list - item Ġ" 1 " Ġ-- msg - content - list - item Ġ" 1 . 0 " Ġ-- msg - content - list - item Ġ"~ - 1 " Ġ-- msg - content - list - item Ġ"~ - 1 . 3 " Ġ-- msg - content - list - item Ġ"- 1 " Ġ-- msg - content - list - item Ġ" ~~ 1 """" . split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend And Receive An Int () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert No System Exit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 Ġ-- content - type Ġint Ġ-- msg - content Ġ 1 2 3 4 """. split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend And Receive Message FromFile () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile . create TempFile ( address , Ġnull ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . write Text (" a Content ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 Ġ-- msg - content - from - file Ġ$ file ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend And Receive Binary Message FromFile () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile . create TempFile ( address , Ġnull ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . write Text (" a Content ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 Ġ-- msg - content - from - file Ġ$ file Ġ-- msg - content - binary Ġtrue ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠsendMessage From Non existent File () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert System Exit ( 2 , ĠExec utable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġ" no Such File " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 Ġ-- msg - content - from - file Ġ$ file ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend Binary Message From Non existent File () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert System Exit ( 2 , ĠExec utable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġ" no Such File " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 Ġ-- msg - content - from - file Ġ$ file Ġ-- msg - content - binary Ġtrue ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend And Receive Text Message From ToFile () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile . create TempFile ( address , Ġ" input ") ĊĠĠĠĠĠĠĠ Ġval Ġoutput Directory Ġ= ĠFiles . create Temp Directory ( address ) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġoutput Directory . resolve (" message ") ĊĠĠĠĠĠĠĠ Ġval Ġoutput 0 Ġ= Ġoutput Directory . resolve (" message _ 0 ") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . write Text (" a Content ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 Ġ-- msg - content - from - file Ġ$ file ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġ$ address Ġ-- count Ġ 1 Ġ-- msg - content - to - file Ġ$ output ". split (" Ġ"). to Typed Array () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( output 0 . to File (). read Text ()). isEqualTo ( file . read Text ()) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Directory . to File (). delete Re cursively () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsend And Receive Message To Topic () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġtopic :// $ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ broker Url Ġ-- address Ġtopic :// $ address Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Re ceiving : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( receiver Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġt . start () ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠ Ġt . join () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġopen Ġfun Ġsend Single Message All Trust ing Tls () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert No System Exit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġtcp :// 1 2 7 . 0 . 0 . 1 : 6 1 6 1 7 Ġ-- address Ġl ala Land Ġ-- count Ġ 1 Ġ-- conn - ssl - trust store - location Ġ Ġ-- conn - ssl - trust store - password Ġsecure example Ġ-- conn - ssl - keystore - location Ġ/ home / jd ane k / Downloads / AM Q 7 / am q 7 cr 1 i 0 / i key si old / client - side - keystore . j ks Ġ-- conn - ssl - keystore - password Ġsecure example ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender Ġ-- log - msgs Ġdict Ġ-- broker Ġ$ ssl Broker Url Ġ-- address Ġ$ address Ġ-- conn - ssl - verify - host Ġfalse Ġ-- conn - ssl - trust - all Ġtrue Ġ-- count Ġ 1 ". split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Sending : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġopen Ġfun Ġsend Large Message Changing Limit () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsender Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ(" sender Ġ-- log - msgs Ġdict " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ-- address Ġ$ address " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ-- broker - uri Ġ$ broker Url ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" min Large Message Size = 2 5 0 0 0 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). split (" Ġ"). to Typed Array () ĊĠĠĠĠĠĠĠ Ġmain ( sender Parameters ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tag (" external ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` send Ġand Ġreceive Ġwith Ġ-- msg - content - hashed Ġoption `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġ" a Content \ n " Ġ Ġ// Ġc . f . Ġsha 1 sum Ġ<<< a Content ĊĠĠĠĠĠĠĠ Ġval Ġmd Ġ= ĠMessage Digest . getInstance (" SHA - 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠBigInteger ( 1 , Ġmd . digest ( content . toByteArray ())). toString ( 1 6 ) ĊĠĠĠĠĠĠĠ Ġprint ( expected ) ĊĠĠĠĠĠĠĠ Ġassert No System Exit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsent Ġ= Ġmain ( array Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sender ", Ġ"-- log - msgs ", Ġ" dict ", Ġ"-- broker ", Ġbroker Url , Ġ"-- address ", Ġaddress , Ġ"-- count ", Ġ" 1 ", Ġ"-- msg - content ", Ġcontent , Ġ"-- msg - content - hashed ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceived Ġ= Ġmain ( array Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" receiver ", Ġ"-- log - msgs ", Ġ" dict ", Ġ"-- broker ", Ġbroker Url , Ġ"-- address ", Ġaddress , Ġ"-- count ", Ġ" 1 ", Ġ"-- msg - content - hashed ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( sent . map Ġ{ Ġit [" content "] Ġas ĠString Ġ}). contains Exactly Elements In ( listOf ( expected )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( received . map Ġ{ Ġit [" content "] Ġas ĠString Ġ}). contains Exactly Elements In ( listOf ( expected )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ