Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
2746d39c7f
commit
85087c70c7
9 files changed
+402
-1
No files matched your search
@@ -328,6 +328,8 @@ class ModelSerializationTest {
|
||||
assertNull(response.active_sessions)
|
||||
assertNull(response.auth_required)
|
||||
assertNull(response.gateway_platforms)
|
||||
assertNull(response.memory)
|
||||
assertNull(response.disk)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -353,6 +355,71 @@ class ModelSerializationTest {
|
||||
assertNull(iosPlatform.error_code)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testStatusResponseDeserialization_memoryAndDiskBlocks() {
|
||||
val jsonStr =
|
||||
"""
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"memory": {
|
||||
"pressure": "elevated",
|
||||
"gateway_rss_mb": 512,
|
||||
"system_total_mb": 8192,
|
||||
"system_available_mb": 900,
|
||||
"swap_used_mb": 2048,
|
||||
"sampled_at": "2026-08-14T19:00:00+00:00",
|
||||
"last_boot_unclean": true,
|
||||
"last_boot_suspected_oom": false,
|
||||
"boot_id": "2026-08-14T18:00:00+00:00"
|
||||
},
|
||||
"disk": {
|
||||
"pressure": "critical",
|
||||
"total_mb": 512000,
|
||||
"free_mb": 200,
|
||||
"used_percent": 99.9
|
||||
}
|
||||
}
|
||||
""".trimIndent()
|
||||
val response = json.decodeFromString<StatusResponse>(jsonStr)
|
||||
assertEquals("elevated", response.memory?.pressure)
|
||||
assertEquals(512, response.memory?.gateway_rss_mb)
|
||||
assertEquals(8192, response.memory?.system_total_mb)
|
||||
assertEquals(900, response.memory?.system_available_mb)
|
||||
assertEquals(2048, response.memory?.swap_used_mb)
|
||||
assertEquals(true, response.memory?.last_boot_unclean)
|
||||
assertEquals(false, response.memory?.last_boot_suspected_oom)
|
||||
assertEquals("2026-08-14T18:00:00+00:00", response.memory?.boot_id)
|
||||
assertEquals("critical", response.disk?.pressure)
|
||||
assertEquals(512000, response.disk?.total_mb)
|
||||
assertEquals(200, response.disk?.free_mb)
|
||||
assertEquals(99.9, response.disk?.used_percent ?: 0.0, 0.01)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testStatusResponseDeserialization_pressureUnknownDegrades() {
|
||||
val jsonStr =
|
||||
"""
|
||||
{
|
||||
"memory": {
|
||||
"pressure": "unknown",
|
||||
"gateway_rss_mb": null,
|
||||
"last_boot_unclean": false,
|
||||
"last_boot_suspected_oom": false
|
||||
},
|
||||
"disk": {
|
||||
"pressure": "unknown"
|
||||
}
|
||||
}
|
||||
""".trimIndent()
|
||||
val response = json.decodeFromString<StatusResponse>(jsonStr)
|
||||
assertEquals("unknown", response.memory?.pressure)
|
||||
assertNull(response.memory?.system_total_mb)
|
||||
assertEquals(false, response.memory?.last_boot_unclean)
|
||||
assertEquals("unknown", response.disk?.pressure)
|
||||
assertNull(response.disk?.total_mb)
|
||||
assertNull(response.disk?.free_mb)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testStatusResponseDeserialization_typeMismatchInGatewayPlatforms() {
|
||||
val jsonStr =
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
package com.m57.hermescontrol.ui.common
|
||||
|
||||
import com.m57.hermescontrol.data.model.DiskPressureStatus
|
||||
import com.m57.hermescontrol.data.model.MemoryPressureStatus
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertNull
|
||||
import org.junit.Test
|
||||
|
||||
class PressureBannerTest {
|
||||
private fun mem(
|
||||
pressure: String? = null,
|
||||
suspectedOom: Boolean? = null,
|
||||
) = MemoryPressureStatus(
|
||||
pressure = pressure,
|
||||
last_boot_suspected_oom = suspectedOom,
|
||||
)
|
||||
|
||||
private fun disk(pressure: String? = null) = DiskPressureStatus(pressure = pressure)
|
||||
|
||||
@Test
|
||||
fun noTrigger_whenOkUnknownOrNull() {
|
||||
assertNull(selectPressureTrigger(null, null))
|
||||
assertNull(selectPressureTrigger(mem("ok"), disk("ok")))
|
||||
assertNull(selectPressureTrigger(mem("unknown"), disk("unknown")))
|
||||
assertNull(selectPressureTrigger(mem(), disk()))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun diskCritical_outranksEverything() {
|
||||
assertEquals(
|
||||
PressureTrigger.DISK_CRITICAL,
|
||||
selectPressureTrigger(mem("critical"), disk("critical")),
|
||||
)
|
||||
assertEquals(
|
||||
PressureTrigger.DISK_CRITICAL,
|
||||
selectPressureTrigger(mem("critical", suspectedOom = true), disk("critical")),
|
||||
)
|
||||
assertEquals(
|
||||
PressureTrigger.DISK_CRITICAL,
|
||||
selectPressureTrigger(mem("elevated"), disk("critical")),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun memoryCritical_outranksOomAndElevated() {
|
||||
assertEquals(
|
||||
PressureTrigger.MEMORY_CRITICAL,
|
||||
selectPressureTrigger(mem("critical", suspectedOom = true), disk("elevated")),
|
||||
)
|
||||
assertEquals(
|
||||
PressureTrigger.MEMORY_CRITICAL,
|
||||
selectPressureTrigger(mem("critical"), disk("elevated")),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun oomRestart_shownEvenWhenPressureOk() {
|
||||
assertEquals(
|
||||
PressureTrigger.OOM_RESTART,
|
||||
selectPressureTrigger(mem("ok", suspectedOom = true), disk("ok")),
|
||||
)
|
||||
assertEquals(
|
||||
PressureTrigger.OOM_RESTART,
|
||||
selectPressureTrigger(mem("unknown", suspectedOom = true), disk("unknown")),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun oomRestart_outranksElevatedButNotCritical() {
|
||||
assertEquals(
|
||||
PressureTrigger.OOM_RESTART,
|
||||
selectPressureTrigger(mem("elevated", suspectedOom = true), disk("elevated")),
|
||||
)
|
||||
assertEquals(
|
||||
PressureTrigger.MEMORY_CRITICAL,
|
||||
selectPressureTrigger(mem("critical", suspectedOom = true), disk("elevated")),
|
||||
)
|
||||
assertEquals(
|
||||
PressureTrigger.DISK_CRITICAL,
|
||||
selectPressureTrigger(mem("elevated", suspectedOom = true), disk("critical")),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun diskElevated_outranksMemoryElevated() {
|
||||
assertEquals(
|
||||
PressureTrigger.DISK_ELEVATED,
|
||||
selectPressureTrigger(mem("elevated"), disk("elevated")),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun memoryElevated_shownWhenOnlyTrigger() {
|
||||
assertEquals(
|
||||
PressureTrigger.MEMORY_ELEVATED,
|
||||
selectPressureTrigger(mem("elevated"), disk("ok")),
|
||||
)
|
||||
assertEquals(
|
||||
PressureTrigger.DISK_ELEVATED,
|
||||
selectPressureTrigger(mem("ok"), disk("elevated")),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun oomFlagFalse_doesNotTrigger() {
|
||||
assertNull(selectPressureTrigger(mem("ok", suspectedOom = false), disk("ok")))
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user