Search in sources :

Example 1 with ValueMerger

use of org.neo4j.index.internal.gbptree.ValueMerger in project neo4j by neo4j.

the class IdRangeMarkerTest method realMergerMock.

private static ValueMerger realMergerMock() {
    ValueMerger merger = mock(ValueMerger.class);
    when(merger.merge(any(), any(), any(), any())).thenAnswer(invocation -> IdRangeMerger.DEFAULT.merge(invocation.getArgument(0), invocation.getArgument(1), invocation.getArgument(2), invocation.getArgument(3)));
    return merger;
}
Also used : ValueMerger(org.neo4j.index.internal.gbptree.ValueMerger)

Example 2 with ValueMerger

use of org.neo4j.index.internal.gbptree.ValueMerger in project neo4j by neo4j.

the class IdRangeMarkerTest method shouldNotCreateEntryOnFirstRemoval.

@Test
void shouldNotCreateEntryOnFirstRemoval() throws IOException {
    // when
    ValueMerger merger = mock(ValueMerger.class);
    try (IdRangeMarker marker = instantiateMarker(mock(Lock.class), merger)) {
        marker.markUsed(0);
    }
    // then
    verifyNoMoreInteractions(merger);
    try (Seeker<IdRangeKey, IdRange> seek = tree.seek(new IdRangeKey(0), new IdRangeKey(Long.MAX_VALUE), NULL)) {
        assertFalse(seek.next());
    }
}
Also used : ValueMerger(org.neo4j.index.internal.gbptree.ValueMerger) Lock(java.util.concurrent.locks.Lock) Test(org.junit.jupiter.api.Test)

Example 3 with ValueMerger

use of org.neo4j.index.internal.gbptree.ValueMerger in project neo4j by neo4j.

the class IdRangeMarkerTest method shouldMergeAdditionIntoExistingEntry.

@Test
void shouldMergeAdditionIntoExistingEntry() throws IOException {
    // given
    try (IdRangeMarker marker = instantiateMarker(mock(Lock.class), mock(ValueMerger.class))) {
        marker.markDeleted(0);
    }
    // when
    ValueMerger merger = realMergerMock();
    try (IdRangeMarker marker = instantiateMarker(mock(Lock.class), merger)) {
        marker.markDeleted(1);
    }
    // then
    verify(merger).merge(any(), any(), any(), any());
    try (Seeker<IdRangeKey, IdRange> seek = tree.seek(new IdRangeKey(0), new IdRangeKey(1), NULL)) {
        assertTrue(seek.next());
        assertEquals(0, seek.key().getIdRangeIdx());
        assertEquals(IdRange.IdState.DELETED, seek.value().getState(0));
        assertEquals(IdRange.IdState.DELETED, seek.value().getState(1));
        assertEquals(IdRange.IdState.USED, seek.value().getState(2));
    }
}
Also used : ValueMerger(org.neo4j.index.internal.gbptree.ValueMerger) Lock(java.util.concurrent.locks.Lock) Test(org.junit.jupiter.api.Test)

Example 4 with ValueMerger

use of org.neo4j.index.internal.gbptree.ValueMerger in project neo4j by neo4j.

the class IdRangeMarkerTest method shouldCreateEntryOnFirstAddition.

@Test
void shouldCreateEntryOnFirstAddition() throws IOException {
    // given
    ValueMerger merger = mock(ValueMerger.class);
    // when
    try (IdRangeMarker marker = instantiateMarker(mock(Lock.class), merger)) {
        marker.markDeleted(0);
    }
    // then
    verifyNoMoreInteractions(merger);
    try (Seeker<IdRangeKey, IdRange> seek = tree.seek(new IdRangeKey(0), new IdRangeKey(1), NULL)) {
        assertTrue(seek.next());
        assertEquals(0, seek.key().getIdRangeIdx());
    }
}
Also used : ValueMerger(org.neo4j.index.internal.gbptree.ValueMerger) Lock(java.util.concurrent.locks.Lock) Test(org.junit.jupiter.api.Test)

Aggregations

ValueMerger (org.neo4j.index.internal.gbptree.ValueMerger)4 Lock (java.util.concurrent.locks.Lock)3 Test (org.junit.jupiter.api.Test)3