/*
* https://webfolder.io/license.html
*/
package io.webfolder.cdp.sample;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import io.webfolder.cdp.Example;
import io.webfolder.cdp.Launcher;
import io.webfolder.cdp.command.Tracing;
import io.webfolder.cdp.event.Events;
import io.webfolder.cdp.event.tracing.DataCollected;
import io.webfolder.cdp.listener.EventListener;
import io.webfolder.cdp.session.Session;
import io.webfolder.cdp.session.SessionFactory;
import io.webfolder.cdp.type.constant.TracingTransferMode;
import io.webfolder.cdp.type.tracing.StreamFormat;
import io.webfolder.cdp.type.tracing.TracingBackend;
@Example
public class Profiling {
public static void main(String[] args) {
Launcher launcher = new Launcher();
try (SessionFactory factory = launcher.launch();
Session session = factory.create()) {
Tracing tracing = session.getCommand().getTracing();
tracing.start("*", // * => trace all types of categories
"sampling-frequency=10000",
500D,
TracingTransferMode.ReportEvents,
StreamFormat.Json,
null,
null,
null,
TracingBackend.Auto);
session.navigate("https://webfolder.io/");
session.waitDocumentReady();
CountDownLatch tracingLatch = new CountDownLatch(1);
session.addEventListener(new EventListener() {
@Override
public void onEvent(Events event, Object value) {
if (Events.TracingDataCollected.equals(event)) {
DataCollected dataCollected = (DataCollected) value;
//
// Tracing Event is not part of the published DevTools protocol as of version 1.1
//
// See http://chromedriver.chromium.org/logging/performance-log for more details
//
for (Map<String, Object> next : dataCollected.getValue()) {
System.out.println("Tracing Event: " + next);
}
} else if (Events.TracingTracingComplete.equals(event)) {
tracingLatch.countDown();
}
}
});
tracing.end();
tracingLatch.await();
System.out.println("Tracing ended");
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
launcher.kill();
}
}
}