@Test public void dynamicRecordCursorReadsInUseRecords() { try ( AbstractDynamicStore store = newTestableDynamicStore() ) { DynamicRecord first = createDynamicRecord( 1, store, 0 ); DynamicRecord second = createDynamicRecord( 2, store, 0 ); DynamicRecord third = createDynamicRecord( 3, store, 10 ); store.setHighId( 3 ); first.setNextBlock( second.getId() ); store.updateRecord( first ); second.setNextBlock( third.getId() ); store.updateRecord( second ); Iterator<DynamicRecord> records = store.getRecords( 1, NORMAL ).iterator(); assertTrue( records.hasNext() ); assertEquals( first, records.next() ); assertTrue( records.hasNext() ); assertEquals( second, records.next() ); assertTrue( records.hasNext() ); assertEquals( third, records.next() ); assertFalse( records.hasNext() ); } }
@Test public void dynamicRecordCursorReadsNotInUseRecords() { try ( AbstractDynamicStore store = newTestableDynamicStore() ) { DynamicRecord first = createDynamicRecord( 1, store, 0 ); DynamicRecord second = createDynamicRecord( 2, store, 0 ); DynamicRecord third = createDynamicRecord( 3, store, 10 ); store.setHighId( 3 ); first.setNextBlock( second.getId() ); store.updateRecord( first ); second.setNextBlock( third.getId() ); store.updateRecord( second ); second.setInUse( false ); store.updateRecord( second ); Iterator<DynamicRecord> records = store.getRecords( 1, FORCE ).iterator(); assertTrue( records.hasNext() ); assertEquals( first, records.next() ); assertTrue( records.hasNext() ); DynamicRecord secondReadRecord = records.next(); assertEquals( second, secondReadRecord ); assertFalse( secondReadRecord.inUse() ); // because mode == FORCE we can still move through the chain assertTrue( records.hasNext() ); assertEquals( third, records.next() ); assertFalse( records.hasNext() ); } }