package Ġnet . cord a . node . services . network Ċ Ċ import Ġnet . cord a . core . identity . C ord a X 5 0 0 Name Ċ import Ġnet . cord a . core . node . NodeInfo Ċ import Ġnet . cord a . core . utilities . Network Host And Port Ċ import Ġnet . cord a . node . internal . schemas . NodeInfo Schema V 1 Ċ import Ġnet . cord a . node . services . identity . InMemory Identity Service Ċ import Ġnet . cord a . node api . internal . DEV _ ROOT _ CA Ċ import Ġnet . cord a . node api . internal . persistence . Database Config Ċ import Ġnet . cord a . testing . core .* Ċ import Ġnet . cord a . testing . internal . Testing Named Cache Factory Ċ import Ġnet . cord a . testing . internal . configure Database Ċ import Ġnet . cord a . testing . node . Mock Services . Companion . make Test DataSource Properties Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . assertj . core . api . Assertions . assertThat IllegalArgumentException Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ class ĠPersistent Network Map Cache Test Ġ{ ĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠA LIC E Ġ= ĠTest Identity ( AL ICE _ NAME , Ġ 7 0 ) ĊĠĠĠĠĠĠĠ Ġval ĠB OB Ġ= ĠTest Identity ( BO B _ NAME , Ġ 8 0 ) ĊĠĠĠĠĠĠĠ Ġval ĠCHAR LI E Ġ= ĠTest Identity ( CHAR LI E _ NAME , Ġ 9 0 ) ĊĊĠĠĠĠĠĠĠ Ġval ĠLONG _ X 5 0 0 _ NAME Ġ= ĠC ord a X 5 0 0 Name ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Name Ġ= Ġ" AB 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorganisation Unit Ġ= Ġ" AB 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorganisation Ġ= Ġ" Long ĠPl c ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal ity Ġ= Ġ" AB 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġ" AB 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry = Ġ" IT ") ĊĠĠĠĠĠĠĠ Ġval ĠLONG _ PL C Ġ= ĠTest Identity ( LONG _ X 5 0 0 _ NAME , Ġ 9 5 ) ĊĠĠĠĠĠĠĠ Ġval ĠL ON GER _ PL C Ġ= ĠTest Identity ( LONG _ X 5 0 0 _ NAME . copy ( organisation Ġ= Ġ" Long er ĠPl c "), Ġ 9 6 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġtest Serialization Ġ= ĠSerialization Environment Rule () ĊĊĠĠĠ Ġprivate Ġvar Ġport Counter Ġ= Ġ 1 0 0 0 ĊĠĠĠ Ġprivate Ġval Ġdatabase Ġ= Ġconfigure Database ( make Test DataSource Properties (), ĠDatabase Config (), Ġ{ Ġnull Ġ}, Ġ{ Ġnull Ġ}) ĊĠĠĠ Ġprivate Ġval Ġchar lie Net Map Cache Ġ= ĠPersistent Network Map Cache ( Testing Named Cache Factory (), Ġdatabase , ĠIn Memory Identity Service ( trust Root Ġ= ĠDEV _ ROOT _ CA . certificate )) ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġclean Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Node () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalice Ġ= Ġcreate NodeInfo ( listOf ( AL ICE )) ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( alice ) ĊĠĠĠĠĠĠĠ Ġval Ġfrom Db Ġ= Ġdatabase . transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . createQuery ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" from Ġ${ NodeInfo Schema V 1 . Persistent NodeInfo :: class . java . name }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNode Info Schema V 1 . Persistent NodeInfo :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). result List . map Ġ{ Ġit . to NodeInfo () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( from Db ). contains Only ( alice ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` unknown Ġlegal Ġname `() Ġ{ ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( create NodeInfo ( listOf ( AL ICE ))) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . get Nodes By Legal Name ( D UMMY _ NOT ARY _ NAME )). isEmpty () ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . getNode By Legal Name ( D UMMY _ NOT ARY _ NAME )). isNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . get Peer By Legal Name ( D UMMY _ NOT ARY _ NAME )). isNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . get Peer Certificate By Legal Name ( D UMMY _ NOT ARY _ NAME )). isNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` nodes Ġin Ġdistributed Ġservice `() Ġ{ ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( create NodeInfo ( listOf ( AL ICE ))) ĊĊĠĠĠĠĠĠĠ Ġval Ġdistributed Identity Ġ= ĠTest Identity ( D UMMY _ NOT ARY _ NAME ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdist Service Node Infos Ġ= Ġ( 1 .. 2 ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnode Info Ġ= Ġcreate NodeInfo ( ident ities Ġ= ĠlistOf ( Test Identity . fresh (" Org -$ it "), Ġdistributed Identity )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( node Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Info ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . get Nodes By Legal Name ( D UMMY _ NOT ARY _ NAME )). contains Only Elements Of ( dist Service Node Infos ) ĊĠĠĠĠĠĠĠ ĠassertThat IllegalArgumentException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Thrown By Ġ{ Ġchar lie Net Map Cache . getNode By Legal Name ( D UMMY _ NOT ARY _ NAME ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Message Containing ( D UMMY _ NOT ARY _ NAME . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Ġnodes Ġby Ġow ning Ġkey Ġand Ġby Ġname `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalice Ġ= Ġcreate NodeInfo ( listOf ( AL ICE )) ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( alice ) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . get Nodes By Legal Identity Key ( AL ICE . publicKey )). contains Only ( alice ) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . getNode By Legal Name ( AL ICE . name )). isEqualTo ( alice ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Ġnodes Ġby Ġaddress `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalice Ġ= Ġcreate NodeInfo ( listOf ( AL ICE )) ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( alice ) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . getNode By Address ( alice . addresses [ 0 ])). isEqualTo ( alice ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` insert Ġtwo Ġnode Ġinfos Ġwith Ġthe Ġsame Ġhost Ġand Ġport `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalice Ġ= Ġcreate NodeInfo ( listOf ( AL ICE )) ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( alice ) ĊĠĠĠĠĠĠĠ Ġval Ġbob Ġ= Ġcreate NodeInfo ( listOf ( BO B ), Ġaddress Ġ= Ġalice . addresses [ 0 ]) ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( bob ) ĊĠĠĠĠĠĠĠ Ġval Ġnode Infos Ġ= Ġchar lie Net Map Cache . all Nodes . filter Ġ{ Ġalice . addresses [ 0 ] Ġin Ġit . addresses Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( node Infos ). has Size ( 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` negative Ġtest Ġ- Ġattempt Ġto Ġinsert Ġinvalid Ġnode Ġinfo `() Ġ{ ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( create NodeInfo ( listOf ( LONG _ PL C ))) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . all Nodes ). has Size ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` negative Ġtest Ġ- Ġattempt Ġto Ġupdate Ġexisting Ġnode Ġwith Ġinvalid Ġnode Ġinfo `() Ġ{ ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( create NodeInfo ( listOf ( AL ICE ))) ĊĠĠĠĠĠĠĠ Ġval Ġalice Update Ġ= ĠTest Identity ( LONG _ X 5 0 0 _ NAME , ĠA LIC E . key Pair ) ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( create NodeInfo ( listOf ( alice Update ))) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . all Nodes ). has Size ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . getNode By Legal Name ( AL ICE _ NAME )). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . getNode By Legal Name ( LONG _ X 5 0 0 _ NAME )). isNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` negative Ġtest Ġ- Ġinsert Ġtwo Ġvalid Ġnode Ġinfos Ġand Ġone Ġinvalid Ġone `() Ġ{ ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Nodes ( listOf ( create NodeInfo ( listOf ( AL ICE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate NodeInfo ( listOf ( BO B )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate NodeInfo ( listOf ( LONG _ PL C )))) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . all Nodes ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . all Nodes . flatMap Ġ{ Ġit . legal Id entities Ġ}). isEqualTo ( listOf ( AL ICE . party , ĠB OB . party )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` negative Ġtest Ġ- Ġinsert Ġthree Ġvalid Ġnode Ġinfos Ġand Ġtwo Ġinvalid Ġones `() Ġ{ ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Nodes ( listOf ( create NodeInfo ( listOf ( LONG _ PL C )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate NodeInfo ( listOf ( AL ICE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate NodeInfo ( listOf ( BO B )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate NodeInfo ( listOf ( CHAR LI E )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate NodeInfo ( listOf ( LON GER _ PL C )))) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . all Nodes ). has Size ( 3 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . all Nodes . flatMap Ġ{ Ġit . legal Id entities Ġ}). isEqualTo ( listOf ( AL ICE . party , ĠB OB . party , ĠCHAR LI E . party )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` negative Ġtest Ġ- Ġinsert Ġone Ġvalid Ġnode Ġinfo Ġthen Ġattempt Ġto Ġadd Ġone Ġinvalid Ġnode Ġinfo Ġand Ġupdate Ġthe Ġexisting Ġvalid Ġnode info `() Ġ{ ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Node ( create NodeInfo ( listOf ( AL ICE ))) ĊĠĠĠĠĠĠĠ Ġval Ġalice Update Ġ= ĠTest Identity ( LONG _ X 5 0 0 _ NAME , ĠA LIC E . key Pair ) ĊĠĠĠĠĠĠĠ Ġchar lie Net Map Cache . add Nodes ( listOf ( create NodeInfo ( listOf ( alice Update )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate NodeInfo ( listOf ( LON GER _ PL C )), Ġcreate NodeInfo ( listOf ( BO B )))) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . all Nodes ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . getNode By Legal Name ( AL ICE _ NAME )). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( char lie Net Map Cache . getNode By Legal Name ( BO B _ NAME )). isNotNull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate NodeInfo ( ident ities : ĠList < Test Identity >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress : ĠNetwork Host And Port Ġ= ĠNetwork Host And Port (" localhost ", Ġport Counter ++ )): ĠNode Info Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNode Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddresses Ġ= ĠlistOf ( address ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlegal Id entities And Certs Ġ= Ġident ities . map Ġ{ Ġit . identity Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplatform Version Ġ= Ġ 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserial Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ