/** Ċ Ġ* ĠCopyright Ġ 2 0 1 0 Ġ- Ġ 2 0 1 9 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġ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 . Ċ Ġ*/ Ċ package Ġjet brains . ex od us . log . replication Ċ Ċ import Ġjet brains . ex od us . env . replication . Replication Delta Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ Ċ open Ġclass ĠEmpty Log Replication Test Ġ: ĠRep lication Base Test () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġappend Ġchanges Ġin Ġone Ġfile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġ( source Log , Ġtarget Log ) Ġ= Ġnew Logs () ĊĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġ 1 0 L ĊĠĠĠĠĠĠĠ ĠwriteTo Log ( source Log , Ġcount ) ĊĠĠĠĠĠĠĠ Ġdebug Dump () ĊĊĠĠĠĠĠĠĠ Ġval Ġsource Files Ġ= Ġsource Log . tip . all Files ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġsource Files . size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġhigh Address Ġ= Ġsource Log . high Address ĊĠĠĠĠĠĠĠ Ġtarget Log . append Log ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRep lication Delta ( 1 , Ġ 0 , Ġhigh Address , Ġsource Log . file Length Bound , Ġsource Files ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsource Log . close () ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġlog Ġwith Ġcache ĊĠĠĠĠĠĠĠ Ġcheck Log ( target Log , Ġhigh Address , Ġcount ) ĊĊĠĠĠĠĠĠĠ Ġtarget Log Ġ= Ġtarget Log Dir . create Log ( file Size Ġ= Ġ 4 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache PageSize Ġ= Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġlog Ġwithout Ġcache ĊĠĠĠĠĠĠĠ Ġcheck Log ( target Log , Ġhigh Address , Ġcount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġappend Ġchanges Ġin Ġfew Ġfiles `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġ( source Log , Ġtarget Log ) Ġ= Ġnew Logs () ĊĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġ 1 0 0 0 L ĊĠĠĠĠĠĠĠ ĠwriteTo Log ( source Log , Ġcount ) ĊĠĠĠĠĠĠĠ Ġdebug Dump () ĊĊĠĠĠĠĠĠĠ Ġval Ġsource Files Ġ= Ġsource Log . tip . all Files ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( source Files . size Ġ> Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġhigh Address Ġ= Ġsource Log . high Address ĊĠĠĠĠĠĠĠ Ġtarget Log . append Log ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRep lication Delta ( 1 , Ġ 0 , Ġhigh Address , Ġsource Log . file Length Bound , Ġsource Files ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsource Log . close () ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġlog Ġwith Ġcache ĊĠĠĠĠĠĠĠ Ġcheck Log ( target Log , Ġhigh Address , Ġcount ) ĊĊĠĠĠĠĠĠĠ Ġtarget Log Ġ= Ġtarget Log Dir . create Log ( file Size Ġ= Ġ 4 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache PageSize Ġ= Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġlog Ġwithout Ġcache ĊĠĠĠĠĠĠĠ Ġcheck Log ( target Log , Ġhigh Address , Ġcount ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ