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);
}
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);
}
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);
}
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();
}
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());
}
Aggregations