@ -5,7 +5,6 @@
package org.rocksdb.test ;
import org.rocksdb.RocksDB ;
import org.rocksdb.RocksDBException ;
import org.rocksdb.WriteBatch ;
@ -13,9 +12,9 @@ import java.io.IOException;
import java.util.ArrayList ;
import java.util.Arrays ;
import java.util.List ;
import org.junit.ClassRule ;
import org.junit.Test ;
import org.rocksdb.WriteOptions ;
import static org.assertj.core.api.Assertions.assertThat ;
@ -27,7 +26,9 @@ public class WriteBatchHandlerTest {
@Test
public void writeBatchHandler ( ) throws IOException , RocksDBException {
WriteBatch batch = null ;
CapturingWriteBatchHandler handler = null ;
try {
// setup test data
final List < Tuple < Action , Tuple < byte [ ] , byte [ ] > > > testEvents = new ArrayList < > ( ) ;
testEvents . add ( new Tuple < > ( Action . DELETE ,
@ -46,10 +47,10 @@ public class WriteBatchHandlerTest {
new Tuple < byte [ ] , byte [ ] > ( "k3" . getBytes ( ) , null ) ) ) ;
// load test data to the write batch
final WriteBatch batch = new WriteBatch ( ) ;
for ( final Tuple < Action , Tuple < byte [ ] , byte [ ] > > testEvent : testEvents ) {
batch = new WriteBatch ( ) ;
for ( final Tuple < Action , Tuple < byte [ ] , byte [ ] > > testEvent : testEvents ) {
final Tuple < byte [ ] , byte [ ] > data = testEvent . value ;
switch ( testEvent . key ) {
switch ( testEvent . key ) {
case PUT :
batch . put ( data . key , data . value ) ;
@ -70,38 +71,41 @@ public class WriteBatchHandlerTest {
}
// attempt to read test data back from the WriteBatch by iterating with a handler
final CapturingWriteBatchHandler handler = new CapturingWriteBatchHandler ( ) ;
handler = new CapturingWriteBatchHandler ( ) ;
batch . iterate ( handler ) ;
// compare the results to the test data
final List < Tuple < Action , Tuple < byte [ ] , byte [ ] > > > actualEvents = handler . getEvents ( ) ;
assertThat ( testEvents . size ( ) ) . isSameAs ( actualEvents . size ( ) ) ;
for ( int i = 0 ; i < testEvents . size ( ) ; i + + ) {
for ( int i = 0 ; i < testEvents . size ( ) ; i + + ) {
assertThat ( equals ( testEvents . get ( i ) , actualEvents . get ( i ) ) ) . isTrue ( ) ;
}
System . out . println ( "Passed WriteBatchHandler Test" ) ;
} finally {
if ( handler ! = null ) {
handler . dispose ( ) ;
}
if ( batch ! = null ) {
batch . dispose ( ) ;
}
}
}
private static boolean equals ( final Tuple < Action , Tuple < byte [ ] , byte [ ] > > expected ,
final Tuple < Action , Tuple < byte [ ] , byte [ ] > > actual ) {
if ( ! expected . key . equals ( actual . key ) ) {
if ( ! expected . key . equals ( actual . key ) ) {
return false ;
}
final Tuple < byte [ ] , byte [ ] > expectedData = expected . value ;
final Tuple < byte [ ] , byte [ ] > actualData = actual . value ;
if ( equals ( expectedData . key , actualData . key ) ) {
return equals ( expectedData . value , actualData . value ) ;
} else {
return false ;
}
return equals ( expectedData . key , actualData . key )
& & equals ( expectedData . value , actualData . value ) ;
}
private static boolean equals ( byte [ ] expected , byte [ ] actual ) {
if ( expected ! = null ) {
if ( expected ! = null ) {
return Arrays . equals ( expected , actual ) ;
} else {
return actual = = null ;