mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
fix: truncate traceroute chart x-values to whole seconds to prevent Vico crash (#5122)
This commit is contained in:
parent
743851b0b5
commit
3c7e1266f8
2 changed files with 14 additions and 1 deletions
|
|
@ -112,7 +112,7 @@ internal fun resolveTraceroutePoints(requests: List<MeshLog>, results: List<Mesh
|
|||
val requestPacketId = request.fromRadio.packet?.id
|
||||
val result = results.find { it.fromRadio.packet?.decoded?.request_id == requestPacketId }
|
||||
val route = result?.fromRadio?.packet?.fullRouteDiscovery
|
||||
val timeSeconds = request.received_date.toDouble() / MS_PER_SEC
|
||||
val timeSeconds = (request.received_date / MS_PER_SEC).toDouble()
|
||||
|
||||
val forwardHops = route?.let { maxOf(0, it.route.size - 2) }
|
||||
val returnHops = route?.let { if (it.route_back.isNotEmpty()) maxOf(0, it.route_back.size - 2) else null }
|
||||
|
|
|
|||
|
|
@ -241,6 +241,19 @@ class TracerouteChartTest {
|
|||
assertNull(point.returnHops)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun timeSeconds_truncatesSubSecondPrecision() {
|
||||
// received_date with sub-second remainder (e.g. 1000 seconds + 456 ms)
|
||||
val requestTime = 1000L * MS_PER_SEC + 456L
|
||||
val requests = listOf(makeRequest(id = 1, receivedDateMillis = requestTime))
|
||||
val results = emptyList<MeshLog>()
|
||||
|
||||
val point = resolveTraceroutePoints(requests, results).first()
|
||||
|
||||
// Must truncate to whole seconds to avoid Vico "x-values are too precise" crash
|
||||
assertEquals(1000.0, point.timeSeconds)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun returnHops_computedWhenRouteBackAvailable() {
|
||||
val requests = listOf(makeRequest(id = 1, receivedDateMillis = 1000L * MS_PER_SEC))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue