use of org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor in project jackrabbit-oak by apache.
the class IOTracerRunner method collectDepthFirstTrace.
public void collectDepthFirstTrace(@Nonnull String segmentStore, boolean mmap, int segmentCacheSize, @Nonnull String path, int depth, @Nonnull String output) throws IOException, InvalidFileStoreVersionException {
checkNotNull(segmentStore);
checkNotNull(path);
checkNotNull(output);
try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(output, true)))) {
Function<IOMonitor, FileStore> factory = ioMonitor -> newFileStore(fileStoreBuilder(new File(segmentStore)).withMemoryMapping(mmap).withSegmentCacheSize(segmentCacheSize).withIOMonitor(ioMonitor));
IOTracer ioTracer = newIOTracer(factory, out, DepthFirstTrace.CONTEXT_SPEC);
ioTracer.collectTrace(new DepthFirstTrace(depth, path, ioTracer::setContext));
}
}
use of org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor in project jackrabbit-oak by apache.
the class IOTracerRunner method collectBreadthFirstTrace.
public void collectBreadthFirstTrace(@Nonnull String segmentStore, boolean mmap, int segmentCacheSize, @Nonnull String path, int depth, @Nonnull String output) throws IOException, InvalidFileStoreVersionException {
checkNotNull(segmentStore);
checkNotNull(path);
checkNotNull(output);
try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(output, true)))) {
Function<IOMonitor, FileStore> factory = ioMonitor -> newFileStore(fileStoreBuilder(new File(segmentStore)).withMemoryMapping(mmap).withSegmentCacheSize(segmentCacheSize).withIOMonitor(ioMonitor));
IOTracer ioTracer = newIOTracer(factory, out, BreadthFirstTrace.CONTEXT_SPEC);
ioTracer.collectTrace(new BreadthFirstTrace(depth, path, ioTracer::setContext));
}
}
use of org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor in project jackrabbit-oak by apache.
the class IOTracerTest method collectDepthFirstTrace.
@Test
public void collectDepthFirstTrace() throws IOException, InvalidFileStoreVersionException {
try (StringWriter out = new StringWriter()) {
Function<IOMonitor, FileStore> factory = this::createFileStore;
IOTracer ioTracer = newIOTracer(factory, out, DepthFirstTrace.CONTEXT_SPEC);
ioTracer.collectTrace(new DepthFirstTrace(2, "/", ioTracer::setContext));
try (BufferedReader reader = new BufferedReader(new StringReader(out.toString()))) {
Optional<String> header = reader.lines().findFirst();
List<String[]> entries = reader.lines().map(line -> line.split(",")).collect(toList());
assertTrue(header.isPresent());
assertEquals("timestamp,file,segmentId,length,elapsed,depth,count,path", header.get());
long now = currentTimeMillis();
assertTrue("The timestamps of all entries must be in the past", entries.stream().map(// ts
row -> parseLong(row[0])).allMatch(ts -> ts <= now));
assertEquals("Expected depths 0 and 1", ImmutableSet.of(0, 1), entries.stream().map(// depth
row -> parseInt(row[5])).distinct().collect(toSet()));
assertEquals("Expected max 10 nodes", Optional.of(true), entries.stream().map(// count
row -> parseInt(row[6])).max(Comparator.naturalOrder()).map(max -> max <= 10));
}
}
}
use of org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor in project jackrabbit-oak by apache.
the class IOTracerTest method collectBreadthFirstTrace.
@Test
public void collectBreadthFirstTrace() throws IOException, InvalidFileStoreVersionException {
try (StringWriter out = new StringWriter()) {
Function<IOMonitor, FileStore> factory = this::createFileStore;
IOTracer ioTracer = newIOTracer(factory, out, BreadthFirstTrace.CONTEXT_SPEC);
ioTracer.collectTrace(new BreadthFirstTrace(2, "/", ioTracer::setContext));
try (BufferedReader reader = new BufferedReader(new StringReader(out.toString()))) {
Optional<String> header = reader.lines().findFirst();
List<String[]> entries = reader.lines().map(line -> line.split(",")).collect(toList());
assertTrue(header.isPresent());
assertEquals("timestamp,file,segmentId,length,elapsed,depth,count", header.get());
long now = currentTimeMillis();
assertTrue("The timestamps of all entries must be in the past", entries.stream().map(// ts
row -> parseLong(row[0])).allMatch(ts -> ts <= now));
assertEquals("Expected depths 0, 1 and 2", ImmutableSet.of(0, 1, 2), entries.stream().map(// depth
row -> parseInt(row[5])).distinct().collect(toSet()));
assertEquals("Expected max 10 nodes", Optional.of(true), entries.stream().map(// count
row -> parseInt(row[6])).max(Comparator.naturalOrder()).map(max -> max <= 10));
}
}
}
Aggregations