benchmark mode added test
This commit is contained in:
@@ -17,6 +17,7 @@ import {
|
||||
Select,
|
||||
Space,
|
||||
Spin,
|
||||
Switch,
|
||||
Tag,
|
||||
Tooltip,
|
||||
Typography,
|
||||
@@ -62,8 +63,13 @@ export default function SnifferManager(props: SnifferManagerProps): ReactElement
|
||||
setIsModalOpen(false);
|
||||
};
|
||||
|
||||
const handleStartSubmit = async (values: { target?: string; bridgeCaptureMode?: 'tc_ebpf' | 'af_packet' }) => {
|
||||
const handleStartSubmit = async (values: {
|
||||
target?: string;
|
||||
bridgeCaptureMode?: 'tc_ebpf' | 'af_packet';
|
||||
benchmarkMode?: boolean;
|
||||
}) => {
|
||||
const target = values.target;
|
||||
const benchmarkMode = Boolean(values.benchmarkMode);
|
||||
if (!target) {
|
||||
notification.warning({ message: 'Warning', description: 'Please select a target to start capture on.' });
|
||||
return;
|
||||
@@ -72,12 +78,14 @@ export default function SnifferManager(props: SnifferManagerProps): ReactElement
|
||||
try {
|
||||
const payload =
|
||||
startMode === 'interface'
|
||||
? { interface: target }
|
||||
: { bridge: target, bridge_capture_mode: values.bridgeCaptureMode ?? bridgeCaptureMode };
|
||||
? { interface: target, benchmark_mode: benchmarkMode }
|
||||
: { bridge: target, bridge_capture_mode: values.bridgeCaptureMode ?? bridgeCaptureMode, benchmark_mode: benchmarkMode };
|
||||
const result = await startSniffer(payload);
|
||||
notification.success({
|
||||
message: 'Capture started',
|
||||
description: `Capture started on ${target} via ${result.capture_mode} (session ${result.session_id})`,
|
||||
description: `Capture started on ${target} via ${result.capture_mode}${
|
||||
result.benchmark_mode ? ' in benchmark mode' : ''
|
||||
} (session ${result.session_id})`,
|
||||
});
|
||||
await props.refreshAll();
|
||||
setIsModalOpen(false);
|
||||
@@ -241,6 +249,7 @@ export default function SnifferManager(props: SnifferManagerProps): ReactElement
|
||||
{status.capture_mode === 'af_packet' ? 'AF_PACKET' : 'tc/eBPF'}
|
||||
</Tag>
|
||||
)}
|
||||
{status.benchmark_mode && <Tag color="gold">benchmark</Tag>}
|
||||
</Space>
|
||||
}
|
||||
description={<Text type="secondary">interface: {name}</Text>}
|
||||
@@ -260,7 +269,12 @@ export default function SnifferManager(props: SnifferManagerProps): ReactElement
|
||||
confirmLoading={props.loading}
|
||||
okText="Start"
|
||||
>
|
||||
<Form form={form} layout="vertical" onFinish={handleStartSubmit} initialValues={{ target: undefined }}>
|
||||
<Form
|
||||
form={form}
|
||||
layout="vertical"
|
||||
onFinish={handleStartSubmit}
|
||||
initialValues={{ target: undefined, benchmarkMode: false }}
|
||||
>
|
||||
<Form.Item label="Mode" name="mode">
|
||||
<Radio.Group
|
||||
value={startMode}
|
||||
@@ -323,6 +337,19 @@ export default function SnifferManager(props: SnifferManagerProps): ReactElement
|
||||
</Radio.Group>
|
||||
</Form.Item>
|
||||
)}
|
||||
|
||||
<Form.Item
|
||||
label="Benchmark Mode"
|
||||
name="benchmarkMode"
|
||||
valuePropName="checked"
|
||||
extra={
|
||||
startMode === 'bridge' && bridgeCaptureMode === 'tc_ebpf'
|
||||
? 'Keeps tc/eBPF raw export and JSON emission, but skips backend parsing, telemetry merge, DB persistence, DPI enrichment, and live packet publishing.'
|
||||
: 'Receives packets for measurement, but skips packet parsing, packet tracking, DB persistence, DPI enrichment, and live packet publishing.'
|
||||
}
|
||||
>
|
||||
<Switch checkedChildren="Benchmark" unCheckedChildren="Normal" />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
</Modal>
|
||||
</div>
|
||||
|
||||
@@ -6,6 +6,7 @@ export interface SnifferStartRequest {
|
||||
bridge?: string;
|
||||
interface?: string;
|
||||
bridge_capture_mode?: 'tc_ebpf' | 'af_packet';
|
||||
benchmark_mode?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -17,6 +18,7 @@ export interface SnifferStartResponse {
|
||||
target: string;
|
||||
target_type: 'bridge' | 'interface';
|
||||
capture_mode: 'tc_ebpf' | 'af_packet';
|
||||
benchmark_mode?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -47,6 +49,7 @@ export interface InterfaceSnifferStatus {
|
||||
session_id?: string | null;
|
||||
session_label?: string | null;
|
||||
capture_mode?: 'tc_ebpf' | 'af_packet' | null;
|
||||
benchmark_mode?: boolean | null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user