Search in sources :

Example 6 with ProgressListener

use of org.neo4j.internal.helpers.progress.ProgressListener in project neo4j by neo4j.

the class ProgressTrackingOutputStreamTest method shouldTrackOffsetByteArrayWrites.

@Test
void shouldTrackOffsetByteArrayWrites() throws IOException {
    // given
    OutputStream actual = mock(OutputStream.class);
    ProgressListener progressListener = mock(ProgressListener.class);
    ProgressTrackingOutputStream.Progress progress = new ProgressTrackingOutputStream.Progress(progressListener, 0);
    int length = 5;
    try (ProgressTrackingOutputStream out = new ProgressTrackingOutputStream(actual, progress)) {
        // when
        out.write(new byte[length * 2], 2, length);
    }
    progress.done();
    // then
    verify(progressListener).add(length);
    verify(progressListener).done();
    verifyNoMoreInteractions(progressListener);
}
Also used : ProgressListener(org.neo4j.internal.helpers.progress.ProgressListener) OutputStream(java.io.OutputStream) Test(org.junit.jupiter.api.Test)

Example 7 with ProgressListener

use of org.neo4j.internal.helpers.progress.ProgressListener in project neo4j by neo4j.

the class ProgressTrackingOutputStreamTest method shouldTrackSingleByteWrites.

@Test
void shouldTrackSingleByteWrites() throws IOException {
    // given
    OutputStream actual = mock(OutputStream.class);
    ProgressListener progressListener = mock(ProgressListener.class);
    ProgressTrackingOutputStream.Progress progress = new ProgressTrackingOutputStream.Progress(progressListener, 0);
    try (ProgressTrackingOutputStream out = new ProgressTrackingOutputStream(actual, progress)) {
        // when
        out.write(10);
    }
    progress.done();
    // then
    verify(progressListener).add(1);
    verify(progressListener).done();
    verifyNoMoreInteractions(progressListener);
}
Also used : ProgressListener(org.neo4j.internal.helpers.progress.ProgressListener) OutputStream(java.io.OutputStream) Test(org.junit.jupiter.api.Test)

Example 8 with ProgressListener

use of org.neo4j.internal.helpers.progress.ProgressListener in project neo4j by neo4j.

the class ProgressTrackingOutputStreamTest method shouldTrackOffsetAfterRewind.

@Test
void shouldTrackOffsetAfterRewind() throws IOException {
    // given
    OutputStream actual = mock(OutputStream.class);
    ProgressListener progressListener = mock(ProgressListener.class);
    ProgressTrackingOutputStream.Progress progress = new ProgressTrackingOutputStream.Progress(progressListener, 0);
    try (ProgressTrackingOutputStream out = new ProgressTrackingOutputStream(actual, progress)) {
        out.write(new byte[20]);
        // when
        // i.e. the next 5 bytes we don't track
        progress.rewindTo(15);
        // now there should be 2 untracked bytes left
        out.write(new byte[3]);
        // this one should report 7
        out.write(new byte[9]);
    }
    progress.done();
    // then
    InOrder inOrder = inOrder(progressListener);
    inOrder.verify(progressListener).add(20);
    inOrder.verify(progressListener).add(7);
    inOrder.verify(progressListener).done();
    verifyNoMoreInteractions(progressListener);
}
Also used : InOrder(org.mockito.InOrder) ProgressListener(org.neo4j.internal.helpers.progress.ProgressListener) OutputStream(java.io.OutputStream) Test(org.junit.jupiter.api.Test)

Example 9 with ProgressListener

use of org.neo4j.internal.helpers.progress.ProgressListener in project neo4j by neo4j.

the class EncodingIdMapperTest method shouldCopeWithCollisionsBasedOnDifferentInputIds.

@Test
public void shouldCopeWithCollisionsBasedOnDifferentInputIds() {
    // GIVEN
    EncodingIdMapper.Monitor monitor = mock(EncodingIdMapper.Monitor.class);
    Encoder encoder = mock(Encoder.class);
    when(encoder.encode(any())).thenReturn(12345L);
    IdMapper mapper = mapper(encoder, Radix.STRING, monitor);
    PropertyValueLookup ids = values("10", "9");
    for (int i = 0; i < 2; i++) {
        mapper.put(ids.lookupProperty(i, NULL), i, Group.GLOBAL);
    }
    // WHEN
    ProgressListener progress = mock(ProgressListener.class);
    Collector collector = mock(Collector.class);
    mapper.prepare(ids, collector, progress);
    // THEN
    verifyNoMoreInteractions(collector);
    verify(monitor).numberOfCollisions(2);
    assertEquals(0L, mapper.get("10", Group.GLOBAL));
    assertEquals(1L, mapper.get("9", Group.GLOBAL));
    // 7 times since SPLIT+SORT+DETECT+RESOLVE+SPLIT+SORT,DEDUPLICATE
    verify(progress, times(7)).started(anyString());
    verify(progress, times(7)).done();
}
Also used : ProgressListener(org.neo4j.internal.helpers.progress.ProgressListener) PropertyValueLookup(org.neo4j.internal.batchimport.PropertyValueLookup) Collector(org.neo4j.internal.batchimport.input.Collector) IdMapper(org.neo4j.internal.batchimport.cache.idmapping.IdMapper) Test(org.junit.Test)

Example 10 with ProgressListener

use of org.neo4j.internal.helpers.progress.ProgressListener in project neo4j by neo4j.

the class EncodingIdMapperTest method tracePageCacheAccessOnCollisions.

@Test
public void tracePageCacheAccessOnCollisions() {
    EncodingIdMapper.Monitor monitor = mock(EncodingIdMapper.Monitor.class);
    Encoder encoder = mock(Encoder.class);
    when(encoder.encode(any())).thenReturn(12345L);
    var pageCacheTracer = new DefaultPageCacheTracer();
    IdMapper mapper = mapper(encoder, Radix.STRING, monitor, pageCacheTracer);
    PropertyValueLookup ids = (nodeId, cursorContext) -> {
        cursorContext.getCursorTracer().beginPin(false, 1, null).done();
        return nodeId + "";
    };
    int expectedCollisions = 2;
    for (int i = 0; i < expectedCollisions; i++) {
        mapper.put(ids.lookupProperty(i, NULL), i, Group.GLOBAL);
    }
    ProgressListener progress = mock(ProgressListener.class);
    Collector collector = mock(Collector.class);
    mapper.prepare(ids, collector, progress);
    verifyNoMoreInteractions(collector);
    verify(monitor).numberOfCollisions(expectedCollisions);
    assertEquals(expectedCollisions, pageCacheTracer.pins());
    assertEquals(expectedCollisions, pageCacheTracer.unpins());
}
Also used : ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) ArgumentMatchers.anyLong(org.mockito.ArgumentMatchers.anyLong) NO_MONITOR(org.neo4j.internal.batchimport.cache.idmapping.string.EncodingIdMapper.NO_MONITOR) NumberArrayFactories(org.neo4j.internal.batchimport.cache.NumberArrayFactories) Collector(org.neo4j.internal.batchimport.input.Collector) CursorContext(org.neo4j.io.pagecache.context.CursorContext) RunWith(org.junit.runner.RunWith) Parameters(org.junit.runners.Parameterized.Parameters) Groups(org.neo4j.internal.batchimport.input.Groups) Random(java.util.Random) DefaultPageCacheTracer(org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer) AtomicReference(java.util.concurrent.atomic.AtomicReference) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) RandomRule(org.neo4j.test.rule.RandomRule) Mockito.verifyNoMoreInteractions(org.mockito.Mockito.verifyNoMoreInteractions) MutableLong(org.apache.commons.lang3.mutable.MutableLong) IdMapper(org.neo4j.internal.batchimport.cache.idmapping.IdMapper) PageCacheTracer(org.neo4j.io.pagecache.tracing.PageCacheTracer) NULL(org.neo4j.io.pagecache.context.CursorContext.NULL) Assert.fail(org.junit.Assert.fail) Math.toIntExact(java.lang.Math.toIntExact) ProgressListener(org.neo4j.internal.helpers.progress.ProgressListener) NONE(org.neo4j.internal.helpers.progress.ProgressListener.NONE) Parameterized(org.junit.runners.Parameterized) LongFunction(java.util.function.LongFunction) PropertyValueLookup(org.neo4j.internal.batchimport.PropertyValueLookup) Collection(java.util.Collection) Set(java.util.Set) Test(org.junit.Test) Mockito.times(org.mockito.Mockito.times) UUID(java.util.UUID) Mockito.when(org.mockito.Mockito.when) Mockito.verify(org.mockito.Mockito.verify) AtomicLong(java.util.concurrent.atomic.AtomicLong) Factory(org.neo4j.function.Factory) GLOBAL(org.neo4j.internal.batchimport.input.Group.GLOBAL) List(java.util.List) INSTANCE(org.neo4j.memory.EmptyMemoryTracker.INSTANCE) Rule(org.junit.Rule) Group(org.neo4j.internal.batchimport.input.Group) Assert.assertFalse(org.junit.Assert.assertFalse) Race(org.neo4j.test.Race) Assert.assertEquals(org.junit.Assert.assertEquals) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) Mockito.mock(org.mockito.Mockito.mock) PrimitiveLongCollections.count(org.neo4j.collection.PrimitiveLongCollections.count) ProgressListener(org.neo4j.internal.helpers.progress.ProgressListener) PropertyValueLookup(org.neo4j.internal.batchimport.PropertyValueLookup) Collector(org.neo4j.internal.batchimport.input.Collector) IdMapper(org.neo4j.internal.batchimport.cache.idmapping.IdMapper) DefaultPageCacheTracer(org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer) Test(org.junit.Test)

Aggregations

ProgressListener (org.neo4j.internal.helpers.progress.ProgressListener)15 CursorContext (org.neo4j.io.pagecache.context.CursorContext)7 Test (org.junit.jupiter.api.Test)6 OutputStream (java.io.OutputStream)4 IntObjectHashMap (org.eclipse.collections.impl.map.mutable.primitive.IntObjectHashMap)3 Test (org.junit.Test)3 CacheAccess (org.neo4j.consistency.checking.cache.CacheAccess)3 IdMapper (org.neo4j.internal.batchimport.cache.idmapping.IdMapper)3 Collector (org.neo4j.internal.batchimport.input.Collector)3 Value (org.neo4j.values.storable.Value)3 ThrowingRunnable (org.neo4j.consistency.checker.ParallelExecution.ThrowingRunnable)2 PropertyValueLookup (org.neo4j.internal.batchimport.PropertyValueLookup)2 EntityTokenRange (org.neo4j.kernel.impl.index.schema.EntityTokenRange)2 DynamicRecord (org.neo4j.kernel.impl.store.record.DynamicRecord)2 NodeRecord (org.neo4j.kernel.impl.store.record.NodeRecord)2 RelationshipRecord (org.neo4j.kernel.impl.store.record.RelationshipRecord)2 Math.toIntExact (java.lang.Math.toIntExact)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 HashSet (java.util.HashSet)1