feat(ground-suite): redesign observability console
This commit is contained in:
1 parent
c67d553076
commit
153b0bf262
12 files changed
+1145
-507
No files matched your search
@@ -93,10 +93,72 @@ void main() {
|
||||
expect(state.parserDropCount, 0);
|
||||
expect(state.semanticDropCount, 0);
|
||||
});
|
||||
|
||||
test(
|
||||
'bounds diagnostics while telemetry stays outside the timeline',
|
||||
() async {
|
||||
final port = _ControlledDataPort();
|
||||
final container = ProviderContainer(
|
||||
overrides: [vehicleDataPortProvider.overrideWithValue(port)],
|
||||
);
|
||||
addTearDown(container.dispose);
|
||||
|
||||
container.read(observabilityControllerProvider);
|
||||
await Future<void>.delayed(Duration.zero);
|
||||
|
||||
port.events.add(
|
||||
ObservationReceived(
|
||||
ErrorEvent(
|
||||
receivedAt: DateTime.utc(2026, 8, 10),
|
||||
path: 'kaptan_drivers::lidar_lite_v3::error::Error::TransferFault',
|
||||
),
|
||||
),
|
||||
);
|
||||
port.events.add(
|
||||
ObservationReceived(
|
||||
HeartbeatEvent(
|
||||
receivedAt: DateTime.utc(2026, 8, 10, 0, 0, 1),
|
||||
systemId: 7,
|
||||
componentId: 42,
|
||||
armed: false,
|
||||
vehicleState: 'Standby',
|
||||
),
|
||||
),
|
||||
);
|
||||
for (var index = 0; index < 501; index++) {
|
||||
port.events.add(
|
||||
ObservationReceived(
|
||||
TelemetryEvent(
|
||||
receivedAt: DateTime.utc(2026, 8, 10, 0, 0, index % 60),
|
||||
kind: TelemetryKind.rawImu,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
for (var index = 0; index < 500; index++) {
|
||||
port.events.add(
|
||||
ObservationReceived(
|
||||
LogEvent(
|
||||
receivedAt: DateTime.utc(2026, 8, 10, 0, 1, index % 60),
|
||||
level: MavSeverity.info,
|
||||
message: 'Diagnostic $index',
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
final state = container.read(observabilityControllerProvider);
|
||||
expect(state.events, hasLength(500));
|
||||
expect(state.localTimelineEvictionCount, 1);
|
||||
expect(state.events.whereType<ErrorEvent>(), hasLength(1));
|
||||
expect(state.lastHeartbeat?.systemId, 7);
|
||||
expect(state.observedTelemetryKinds, contains(TelemetryKind.rawImu));
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
class _ControlledDataPort implements VehicleDataPort {
|
||||
final events = StreamController<VehicleDataUpdate>();
|
||||
final events = StreamController<VehicleDataUpdate>(sync: true);
|
||||
|
||||
@override
|
||||
bool get isReplay => false;
|
||||
|
||||
Reference in new issue
Block a user