package Ġm ary k . ro cksdb Ċ Ċ import Ġm ary k . assertContains Ċ import Ġm ary k . assertContains Exactly Ċ import Ġm ary k . assert Content Equals Ċ import Ġm ary k . does Folder Exist Ċ import Ġm ary k . encode To ByteArray Ċ import Ġm ary k . ro cksdb . StatusCode . NotSupported Ċ import Ġm ary k . ro cksdb . util . create Test DB Folder Ċ import Ġkotlin . random . Random Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertNot Equals Ċ import Ġkotlin . test . assertNotNull Ċ import Ġkotlin . test . assertNull Ċ import Ġkotlin . test . assertTrue Ċ import Ġkotlin . test . fail Ċ Ċ class ĠR ocks DB Test Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġload R ocks DB Library () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Test Folder () Ġ= Ġcreate Test DB Folder (" R ocks DB Test ") ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġopen () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( create Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( db ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġopen _ opt () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġopt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Test Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( db ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġopen When Open () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Path Ġ= Ġcreate Test Folder () ĊĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( db Path ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( db Path ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Should Ġhave Ġthrown Ġan Ġexception Ġwhen Ġopening Ġthe Ġsame Ġdb Ġtwice ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠR ocks DB Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( StatusCode . IO Error , Ġe . getStatus ()?. getCode ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status Sub Code . None , Ġe . getStatus ()?. getSub Code ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( e . getStatus ()?. getState () !!. contains (" lock Ġ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Column Family () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcol 1 Name Ġ= Ġ" col 1 ". encode To ByteArray () ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Folder Ġ= Ġcreate Test Folder () ĊĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( test Folder ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Options (). use Ġ{ Ġcf Opts Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . create Column Family ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( col 1 Name , Ġcf Opts ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġcol 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( col 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( col 1 Name , Ġcol 1 . getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcf Handles Ġ= Ġmutable ListOf < Column Family Handle >() ĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Folder , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( default Column Family ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( col 1 Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcf Handles ĊĠĠĠĠĠĠĠ Ġ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcf Handles . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( cf Handles [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( col 1 Name , Ġcf Handles [ 1 ]. getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cf Handle Ġin Ġcf Handles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcf Handle . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Column F amilies () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcol 1 Name Ġ= Ġ" col 1 ". encode To ByteArray () ĊĠĠĠĠĠĠĠ Ġval Ġcol 2 Name Ġ= Ġ" col 2 ". encode To ByteArray () ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Folder Ġ= Ġcreate Test Folder () ĊĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( test Folder ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Options (). use Ġ{ Ġcf Opts Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcf Handles Ġ= Ġdb . create Column F amilies ( cf Opts , ĠlistOf ( col 1 Name , Ġcol 2 Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( cf Handles ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcf Handles . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( col 1 Name , Ġcf Handles [ 0 ]. getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( col 2 Name , Ġcf Handles [ 1 ]. getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cf Handle Ġin Ġcf Handles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcf Handle . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcf Handles Ġ= Ġmutable ListOf < Column Family Handle >() ĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Folder , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( default Column Family ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( col 1 Name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( col 2 Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcf Handles ĊĠĠĠĠĠĠĠ Ġ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġcf Handles . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( cf Handles [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( col 1 Name , Ġcf Handles [ 1 ]. getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( cf Handles [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( col 2 Name , Ġcf Handles [ 2 ]. getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cf Handle Ġin Ġcf Handles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcf Handle . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Column F amilies From Descriptors () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcol 1 Name Ġ= Ġ" col 1 ". encode To ByteArray () ĊĠĠĠĠĠĠĠ Ġval Ġcol 2 Name Ġ= Ġ" col 2 ". encode To ByteArray () ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Folder Ġ= Ġcreate Test Folder () ĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( test Folder ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Options (). use Ġ{ Ġcf Opts Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcf Handles Ġ= Ġdb . create Column F amilies ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( col 1 Name , Ġcf Opts ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( col 2 Name , Ġcf Opts ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( cf Handles ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcf Handles . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( col 1 Name , Ġcf Handles [ 0 ]. getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( col 2 Name , Ġcf Handles [ 1 ]. getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cf Handle Ġin Ġcf Handles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcf Handle . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcf Handles Ġ= Ġmutable ListOf < Column Family Handle >() ĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Folder , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( default Column Family ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( col 1 Name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( col 2 Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcf Handles ĊĠĠĠĠĠĠĠ Ġ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġcf Handles . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( cf Handles [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( col 1 Name , Ġcf Handles [ 1 ]. getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( cf Handles [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( col 2 Name , Ġcf Handles [ 2 ]. getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cf Handle Ġin Ġcf Handles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcf Handle . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġput () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( create Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWrite Options (). use Ġ{ Ġopt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 1 ". encode To ByteArray (), Ġ" value ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ( opt , Ġ" key 2 ". encode To ByteArray (), Ġ" 1 2 3 4 5 6 7 8 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals (" value ". encode To ByteArray (), Ġdb [" key 1 ". encode To ByteArray ()] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals (" 1 2 3 4 5 6 7 8 ". encode To ByteArray (), Ġdb [" key 2 ". encode To ByteArray ()] !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġput ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey 3 Ġ= Ġslice Segment (" key 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey 4 Ġ= Ġslice Segment (" key 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue 0 Ġ= Ġslice Segment (" value Ġ 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue 1 Ġ= Ġslice Segment (" value Ġ 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ( key 3 . data , Ġkey 3 . offset , Ġkey 3 . len , Ġvalue 0 . data , Ġvalue 0 . offset , Ġvalue 0 . len ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ( opt , Ġkey 4 . data , Ġkey 4 . offset , Ġkey 4 . len , Ġvalue 1 . data , Ġvalue 1 . offset , Ġvalue 1 . len ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcompare ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( value 0 . is Same Payload ( db . get ( key 3 . data , Ġkey 3 . offset , Ġkey 3 . len ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( value 1 . is Same Payload ( db . get ( key 4 . data , Ġkey 4 . offset , Ġkey 4 . len ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠSegment ( val Ġdata : ĠByteArray , Ġval Ġoffset : ĠInt , Ġval Ġlen : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġis Same Payload ( value : ĠByteArray ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . size Ġ!= Ġlen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġvalue . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data [ i Ġ+ Ġoffset ] Ġ!= Ġvalue [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget With Out Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( create Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 1 ". encode To ByteArray (), Ġ" value ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 2 ". encode To ByteArray (), Ġ" 1 2 3 4 5 6 7 8 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Value Ġ= ĠByteArray ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot Ġfound Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġget Result Ġ= Ġdb . get (" key NotFound ". encode To ByteArray (), Ġout Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ro cks DB NotFound , Ġget Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfound Ġvalue Ġwhich Ġfits Ġin Ġout Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Result Ġ= Ġdb . get (" key 1 ". encode To ByteArray (), Ġout Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Equals ( ro cks DB NotFound , Ġget Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( out Value , Ġ" value ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfound Ġvalue Ġwhich Ġfits Ġpartially ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Result Ġ= Ġdb . get (" key 2 ". encode To ByteArray (), Ġout Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Equals ( ro cks DB NotFound , Ġget Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( out Value , Ġ" 1 2 3 4 5 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget With Out Value Read Options () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( create Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRead Options (). use Ġ{ Ġr Opt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 1 ". encode To ByteArray (), Ġ" value ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 2 ". encode To ByteArray (), Ġ" 1 2 3 4 5 6 7 8 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Value Ġ= ĠByteArray ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot Ġfound Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġget Result Ġ= Ġdb . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Opt , Ġ" key NotFound ". encode To ByteArray (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ro cks DB NotFound , Ġget Result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfound Ġvalue Ġwhich Ġfits Ġin Ġout Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Result Ġ= Ġdb . get ( r Opt , Ġ" key 1 ". encode To ByteArray (), Ġout Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Equals ( ro cks DB NotFound , Ġget Result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( out Value , Ġ" value ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfound Ġvalue Ġwhich Ġfits Ġpartially ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Result Ġ= Ġdb . get ( r Opt , Ġ" key 2 ". encode To ByteArray (), Ġout Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Equals ( ro cks DB NotFound , Ġget Result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( out Value , Ġ" 1 2 3 4 5 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmulti Get As List () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( create Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRead Options (). use Ġ{ Ġr Opt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 1 ". encode To ByteArray (), Ġ" value ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 2 ". encode To ByteArray (), Ġ" 1 2 3 4 5 6 7 8 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlookup Keys Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" key 1 ". encode To ByteArray (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" key 2 ". encode To ByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresults Ġ= Ġdb . multi Get As List ( lookup Keys ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( results ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( lookup Keys . size , Ġresults . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains Exactly ( results , Ġ" value ". encode To ByteArray (), Ġ" 1 2 3 4 5 6 7 8 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtest Ġsame Ġmethod Ġwith ĠRead Options ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġdb . multi Get As List ( r Opt , Ġlookup Keys ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( results ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains ( results , Ġ" value ". encode To ByteArray (), Ġ" 1 2 3 4 5 6 7 8 ". encode To ByteArray ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremove Ġexisting Ġkey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlookup Keys . remove At ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġnon Ġexisting Ġkey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlookup Keys . add (" key 3 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġdb . multi Get As List ( lookup Keys ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( results ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains Exactly ( results , Ġ" value ". encode To ByteArray (), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtest Ġsame Ġcall Ġwith Ġread Options ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġdb . multi Get As List ( r Opt , Ġlookup Keys ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( results ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Contains ( results , Ġ" value ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdelete () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( create Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWrite Options (). use Ġ{ Ġw Opt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 1 ". encode To ByteArray (), Ġ" value ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 2 ". encode To ByteArray (), Ġ" 1 2 3 4 5 6 7 8 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals (" value ". encode To ByteArray (), Ġdb [" key 1 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals (" 1 2 3 4 5 6 7 8 ". encode To ByteArray (), Ġdb [" key 2 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . delete (" key 1 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . delete ( w Opt , Ġ" key 2 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( db [" key 1 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( db [" key 2 ". encode To ByteArray ()]) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey 3 Ġ= Ġslice Segment (" key 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey 4 Ġ= Ġslice Segment (" key 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 3 ". encode To ByteArray (), Ġ" key 3 Ġvalue ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 4 ". encode To ByteArray (), Ġ" key 4 Ġvalue ". encode To ByteArray ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . delete ( key 3 . data , Ġkey 3 . offset , Ġkey 3 . len ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . delete ( w Opt , Ġkey 4 . data , Ġkey 4 . offset , Ġkey 4 . len ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( db [" key 3 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( db [" key 4 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdelete Range () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen R ocks DB ( create Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 1 ". encode To ByteArray (), Ġ" value ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 2 ". encode To ByteArray (), Ġ" 1 2 3 4 5 6 7 8 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 3 ". encode To ByteArray (), Ġ" abcdef g ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 4 ". encode To ByteArray (), Ġ" xyz ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals (" value ". encode To ByteArray (), Ġdb [" key 1 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals (" 1 2 3 4 5 6 7 8 ". encode To ByteArray (), Ġdb [" key 2 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals (" abcdef g ". encode To ByteArray (), Ġdb [" key 3 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals (" xyz ". encode To ByteArray (), Ġdb [" key 4 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . delete Range (" key 2 ". encode To ByteArray (), Ġ" key 4 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals (" value ". encode To ByteArray (), Ġdb [" key 1 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( db [" key 2 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( db [" key 3 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals (" xyz ". encode To ByteArray (), Ġdb [" key 4 ". encode To ByteArray ()]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Int Property () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Create If Missing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Max Write Buffer Number ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Min Write Buffer Number To Merge ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġ}. use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Test Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrite Options (). set Disable WAL ( true ). use Ġ{ Ġw Opt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ( w Opt , Ġ" key 1 ". encode To ByteArray (), Ġ" value 1 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ( w Opt , Ġ" key 2 ". encode To ByteArray (), Ġ" value 2 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ( w Opt , Ġ" key 3 ". encode To ByteArray (), Ġ" value 3 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ( w Opt , Ġ" key 4 ". encode To ByteArray (), Ġ" value 4 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( db . getLong Property (" ro cksdb . num - entries - active - mem - table ") Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( db . getLong Property (" ro cksdb . cur - size - active - mem - table ") Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfull Compact Range () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Create If Missing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Disable Auto Comp actions ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Comp action Style ( Comp action Style . LEVEL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Num Levels ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Write BufferSize (( 1 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Level 0 File Num Comp action Trigger ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Target FileSize Base (( 2 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Target FileSize Multiplier ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Max Bytes For Level Base (( 5 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Max Bytes For Level Multiplier ( 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Disable Auto Comp actions ( false ) ĊĠĠĠĠĠĠĠ Ġ}. use Ġ{ Ġopt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Test Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfill Ġdatabase Ġwith Ġkey / value Ġpairs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠByteArray ( 1 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 1 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRandom . next Bytes ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ("$ i ". encode To ByteArray (), Ġb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . compact Range () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfull Compact Range Column Family () Ġ{ ĊĠĠĠĠĠĠĠ ĠDB Options (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Create If Missing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Create Missing Column F amilies ( true ) ĊĠĠĠĠĠĠĠ Ġ}. use Ġ{ Ġopt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Options (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Disable Auto Comp actions ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Comp action Style ( Comp action Style . LEVEL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Num Levels ( 4 ). set Write BufferSize (( 1 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Level 0 File Num Comp action Trigger ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Target FileSize Base (( 2 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Target FileSize Multiplier ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Max Bytes For Level Base (( 5 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Max Bytes For Level Multiplier ( 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Disable Auto Comp actions ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. use Ġ{ Ġnew _ cf _ opts Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Family Descriptors Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( default Column Family ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor (" new _ cf ". encode To ByteArray (), Ġnew _ cf _ opts ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġopen Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Family Handles Ġ= Ġmutable ListOf < Column Family Handle >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Test Folder (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Family Descriptors , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Family Handles ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfill Ġdatabase Ġwith Ġkey / value Ġpairs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠByteArray ( 1 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 1 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRandom . next Bytes ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Family Handles [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . toString (). encode To ByteArray (), Ġb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . compact Range ( column Family Handles [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( handle Ġin Ġcolumn Family Handles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcompact Range With Keys () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Create If Missing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Disable Auto Comp actions ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Comp action Style ( Comp action Style . LEVEL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Num Levels ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Write BufferSize (( 1 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Level 0 File Num Comp action Trigger ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Target FileSize Base (( 2 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Target FileSize Multiplier ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Max Bytes For Level Base (( 5 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Max Bytes For Level Multiplier ( 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Disable Auto Comp actions ( false ) ĊĠĠĠĠĠĠĠ Ġ}. use Ġ{ Ġopt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Test Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfill Ġdatabase Ġwith Ġkey / value Ġpairs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠByteArray ( 1 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 1 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRandom . next Bytes ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ( i . toString (). encode To ByteArray (), Ġb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . compact Range (" 0 ". encode To ByteArray (), Ġ" 2 0 1 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcompact Range With Keys Column Family () Ġ{ ĊĠĠĠĠĠĠĠ ĠDB Options (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Create If Missing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Create Missing Column F amilies ( true ) ĊĠĠĠĠĠĠĠ Ġ}. use Ġ{ Ġopt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Options (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Disable Auto Comp actions ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Comp action Style ( Comp action Style . LEVEL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Num Levels ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Write BufferSize (( 1 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Level 0 File Num Comp action Trigger ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Target FileSize Base (( 2 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Target FileSize Multiplier ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Max Bytes For Level Base (( 5 0 0 Ġshl Ġ 1 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Max Bytes For Level Multiplier ( 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Disable Auto Comp actions ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. use Ġ{ Ġnew _ cf _ opts Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Family Descriptors Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( default Column Family ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor (" new _ cf ". encode To ByteArray (), Ġnew _ cf _ opts ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġopen Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Family Handles Ġ= Ġmutable ListOf < Column Family Handle >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Test Folder (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Family Descriptors , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Family Handles ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfill Ġdatabase Ġwith Ġkey / value Ġpairs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠByteArray ( 1 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 1 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRandom . next Bytes ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Family Handles [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . toString (). encode To ByteArray (), Ġb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . compact Range ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Family Handles [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 ". encode To ByteArray (), Ġ" 2 0 1 ". encode To ByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( handle Ġin Ġcolumn Family Handles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpause Continue Background Work () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Test Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . pause Background Work () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . continue Background Work () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . pause Background Work () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . continue Background Work () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġenable Disable File De letions () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Test Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . disable File De letions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . enable File De letions ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . disable File De letions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . enable File De letions ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdestroy DB () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Path Ġ= Ġcreate Test Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġdb Path ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put (" key 1 ". encode To ByteArray (), Ġ" value ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( does Folder Exist ( db Path )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestroy R ocks DB ( db Path , Ġoptions ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( does Folder Exist ( db Path )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdestroy DB Fail If Open () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Path Ġ= Ġcreate Test Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġdb Path ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠF ails Ġas Ġthe Ġdb Ġis Ġopen Ġand Ġlocked . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With < R ocks DB Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestroy R ocks DB ( db Path , Ġoptions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġenable Auto Comp action () Ġ{ ĊĠĠĠĠĠĠĠ ĠDB Options (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcf Des cs Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( default Column Family ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcf Handles Ġ= Ġmutable ListOf < Column Family Handle >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġcreate Test Folder (), Ġcf Des cs , Ġcf Handles ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . enable Auto Comp action ( cf Handles ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cf Handle Ġin Ġcf Handles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcf Handle . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnumber Levels () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġcreate Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 7 , Ġdb . number Levels ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmax Mem Comp action Level () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġcreate Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġdb . max Mem Comp action Level ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlevel 0 Stop Write Trigger () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġcreate Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 6 , Ġdb . level 0 Stop Write Trigger ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetName () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Path Ġ= Ġcreate Test Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġdb Path ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( db Path , Ġdb . getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Env () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġcreate Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( db . get Env (), ĠgetDefault Env ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġflush W al () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġcreate Test Folder ()). use Ġ{ Ġdb Ġ-> Ġdb . flush W al ( true ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsync W al () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġcreate Test Folder ()). use Ġ{ Ġdb Ġ-> Ġdb . sync W al () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġset Preserve Deletes SequenceNumber () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Path Ġ= Ġcreate Test Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġdb Path ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( db . set Preserve Deletes SequenceNumber ( db . get Latest SequenceNumber ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdelete File () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġcreate Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . delete File ("/ 0 0 0 0 0 3 . log ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠR ocks DB Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWill Ġthrow Ġan Ġexception Ġon ĠNative Ġbecause Ġlog Ġis Ġnot Ġarchived ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( NotSupported , Ġe . getStatus ()?. getCode ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Column Family MetaData () Ġ{ ĊĠĠĠĠĠĠĠ ĠDB Options (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Create If Missing ( true ) ĊĠĠĠĠĠĠĠ Ġ}. use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcf Des cs Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Family Descriptor ( default Column Family ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcf Handles Ġ= Ġmutable ListOf < Column Family Handle >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġ"${ create Test Folder ()} column F amilies 4 ", Ġcf Des cs , Ġcf Handles ). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . put ( cf Handles [ 0 ], Ġ" key 1 ". encode To ByteArray (), Ġ" value 1 ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcf Metadata Ġ= Ġdb . getColumn Family MetaData ( cf Handles [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( cf Metadata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Content Equals ( cf Metadata . name (), Ġdefault Column Family ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 7 , Ġcf Metadata . levels (). size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cf Handle Ġin Ġcf Handles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcf Handle . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġverify Checksum () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġcreate Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . verify Checksum () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpromote L 0 () Ġ{ ĊĠĠĠĠĠĠĠ ĠOptions (). set Create If Missing ( true ). use Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen R ocks DB ( options , Ġcreate Test Folder ()). use Ġ{ Ġdb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . prom ote L 0 ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġslice Segment ( key : ĠString ): ĠSegment Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġraw Key Ġ= ĠByteArray ( key . length Ġ+ Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġkey Bytes Ġ= Ġkey . encode To ByteArray () ĊĠĠĠĠĠĠĠ Ġkey Bytes . copy Into ( raw Key , Ġ 2 , Ġ 0 , Ġkey Bytes . size ) ĊĠĠĠĠĠĠĠ Ġreturn ĠSegment ( raw Key , Ġ 2 , Ġkey . length ) ĊĠĠĠ Ġ} Ċ } Ċ