package Ġru . spl ite . replic ator . demo Ċ Ċ import Ġorg . assertj . core . api . Assertions Ċ import Ġru . spl ite . replic ator . log . Rep licated Log Store Ċ Ċ class ĠLog Store Assert ( private Ġval Ġlog Stores : ĠList < Rep licated Log Store >) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġhas Only Terms ( var arg Ġvalues : ĠLong ): ĠLog Store Assert Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Stores . forEach Ġ{ Ġlog Store Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertThat ( log Store . full Log Size ). isEqualTo ( values . size . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . forEach Indexed Ġ{ Ġindex , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertThat ( log Store . get LogEntry ByIndex ( index . to Long ()) ?. term ). isEqualTo ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġ< C > Ġhas Only Entries ( var arg Ġvalues : ĠC ): ĠLog Store Assert Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Stores . forEach Ġ{ Ġlog Store Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertThat ( log Store . full Log Size ). isEqualTo ( values . size . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . forEach Indexed Ġ{ Ġindex , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertThat ( log Store . get LogEntry ByIndex ( index . to Long ()) ?. command ). isEqualTo ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Commit ted Entries Size ( committed Size : ĠLong ): ĠLog Store Assert Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Stores . forEach Ġ{ Ġlog Store Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertThat ( log Store . last Commit Index ()?. plus ( 1 L ) Ġ?: Ġ 0 L ). isEqualTo ( committed Size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġis Commit ted Entries In Sync (): ĠLog Store Assert Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Commit Index : ĠLong ? Ġ= Ġlog Stores . first OrNull ()?. last Commit Index () ĊĊĠĠĠĠĠĠĠ Ġlog Stores . forEach Ġ{ Ġlog Store Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertThat ( log Store . last Commit Index ()). isEqualTo ( last Commit Index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Commit Index Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. last Commit Index ). forEach Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertThat ( log Stores . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . get LogEntry ByIndex ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toSet ()). has Size ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠRep licated Log Store . full Log Size : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis . last Log Index ()?. plus ( 1 L ) Ġ?: Ġ 0 L ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun ĠassertThat Logs ( var arg Ġlog Stores : ĠRep licated Log Store ): ĠLog Store Assert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLog Store Assert ( log Stores . toList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }