zeek/testing/btest/javascript/suspend-continue.js
Patrick Kelley 8fd444092b initial
2025-05-07 15:35:15 -04:00

40 lines
1.3 KiB
JavaScript

/*
* @TEST-DOC: Demo suspend and continue processing from JavaScript
* @TEST-REQUIRES: $SCRIPTS/have-javascript
* @TEST-EXEC: zeek -b -Cr $TRACES/http/get.trace base/protocols/http %INPUT > out
* @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out
*/
zeek.on('zeek_init', () => {
const nt = zeek.invoke('network_time');
console.log(`${nt} suspend_processing`);
zeek.invoke('suspend_processing');
const suspended_at = Date.now();
// Schedule a JavaScript timer (running based on wallclock)
// to continue execution in 333 msec.
setTimeout(() => {
const nt = zeek.invoke('network_time');
const continued_at = Date.now();
const delayed_ms = continued_at - suspended_at;
const delayed_enough = delayed_ms > 300;
console.log(`${nt} continue_processing (delayed_enough=${delayed_enough})`);
zeek.invoke('continue_processing');
}, 333);
});
zeek.on('http_request', (c, method, orig_URI, escaped_URI, version) => {
const nt = zeek.invoke('network_time');
console.log(`${nt} http_request ${c.uid} ${method} ${orig_URI} ${version}`);
});
zeek.on('Pcap::file_done', (path) => {
const nt = zeek.invoke('network_time');
console.log(`${nt} Pcap::file_done ${path}`);
});
zeek.on('zeek_done', () => {
const nt = zeek.invoke('network_time');
console.log(`${nt} zeek_done`);
});