ha-supervisor/tests/dbus_service_mocks/rauc.py

212 lines
7.9 KiB
Python

"""Mock of rauc dbus service."""
from dbus_fast import Variant
from dbus_fast.service import PropertyAccess, dbus_property, signal
from .base import DBusServiceMock, dbus_method
BUS_NAME = "de.pengutronix.rauc"
def setup(object_path: str | None = None) -> DBusServiceMock:
"""Create dbus mock object."""
return Rauc()
# pylint: disable=invalid-name
class Rauc(DBusServiceMock):
"""Rauc mock.
gdbus introspect --system --dest de.pengutronix.rauc --object-path /
"""
object_path = "/"
interface = "de.pengutronix.rauc.Installer"
@dbus_property(access=PropertyAccess.READ)
def Operation(self) -> "s":
"""Return operation."""
return "idle"
@dbus_property(access=PropertyAccess.READ)
def LastError(self) -> "s":
"""Return last error."""
return ""
@dbus_property(access=PropertyAccess.READ)
def Progress(self) -> "(isi)":
"""Return progress."""
return [0, "", 0]
@dbus_property(access=PropertyAccess.READ)
def Compatible(self) -> "s":
"""Return compatible."""
return "haos-odroid-n2"
@dbus_property(access=PropertyAccess.READ)
def Variant(self) -> "s":
"""Return variant."""
return ""
@dbus_property(access=PropertyAccess.READ)
def BootSlot(self) -> "s":
"""Return boot slot."""
return "B"
@signal()
def Completed(self) -> "i":
"""Signal completed."""
return 0
@dbus_method()
def Install(self, source: "s"):
"""Install source."""
self.Completed()
@dbus_method()
def InstallBundle(self, source: "s", arg: "a{sv}"):
"""Install source bundle."""
self.Completed()
@dbus_method()
def Mark(self, state: "s", slot_identifier: "s") -> "ss":
"""Mark slot."""
return ["kernel.1", "marked slot kernel.1 as good"]
@dbus_method()
def GetPrimary(self) -> "s":
"""Get primary slot."""
return "kernel.0"
@dbus_method()
def GetSlotStatus(self) -> "a(sa{sv})":
"""Get slot status."""
return [
(
"kernel.0",
{
"activated.count": Variant("u", 9),
"activated.timestamp": Variant("s", "2022-08-23T21:03:22Z"),
"boot-status": Variant("s", "good"),
"bundle.compatible": Variant("s", "haos-odroid-n2"),
"sha256": Variant(
"s",
"c624db648b8401fae37ee5bb1a6ec90bdf4183aef364b33314a73c7198e49d5b",
),
"state": Variant("s", "inactive"),
"size": Variant("t", 10371072),
"installed.count": Variant("u", 9),
"class": Variant("s", "kernel"),
"device": Variant("s", "/dev/disk/by-partlabel/hassos-kernel0"),
"type": Variant("s", "raw"),
"bootname": Variant("s", "A"),
"bundle.version": Variant("s", "9.0.dev20220818"),
"installed.timestamp": Variant("s", "2022-08-23T21:03:16Z"),
"status": Variant("s", "ok"),
},
),
(
"boot.0",
{
"bundle.compatible": Variant("s", "haos-odroid-n2"),
"sha256": Variant(
"s",
"a5019b335f33be2cf89c96bb2d0695030adb72c1d13d650a5bbe1806dd76d6cc",
),
"state": Variant("s", "inactive"),
"size": Variant("t", 25165824),
"installed.count": Variant("u", 19),
"class": Variant("s", "boot"),
"device": Variant("s", "/dev/disk/by-partlabel/hassos-boot"),
"type": Variant("s", "vfat"),
"status": Variant("s", "ok"),
"bundle.version": Variant("s", "9.0.dev20220824"),
"installed.timestamp": Variant("s", "2022-08-25T21:11:46Z"),
},
),
(
"rootfs.0",
{
"bundle.compatible": Variant("s", "haos-odroid-n2"),
"parent": Variant("s", "kernel.0"),
"state": Variant("s", "inactive"),
"size": Variant("t", 117456896),
"sha256": Variant(
"s",
"7d908b4d578d072b1b0f75de8250fd97b6e119bff09518a96fffd6e4aec61721",
),
"class": Variant("s", "rootfs"),
"device": Variant("s", "/dev/disk/by-partlabel/hassos-system0"),
"type": Variant("s", "raw"),
"status": Variant("s", "ok"),
"bundle.version": Variant("s", "9.0.dev20220818"),
"installed.timestamp": Variant("s", "2022-08-23T21:03:21Z"),
"installed.count": Variant("u", 9),
},
),
(
"spl.0",
{
"bundle.compatible": Variant("s", "haos-odroid-n2"),
"sha256": Variant(
"s",
"9856a94df1d6abbc672adaf95746ec76abd3a8191f9d08288add6bb39e63ef45",
),
"state": Variant("s", "inactive"),
"size": Variant("t", 8388608),
"installed.count": Variant("u", 19),
"class": Variant("s", "spl"),
"device": Variant("s", "/dev/disk/by-partlabel/hassos-boot"),
"type": Variant("s", "raw"),
"status": Variant("s", "ok"),
"bundle.version": Variant("s", "9.0.dev20220824"),
"installed.timestamp": Variant("s", "2022-08-25T21:11:51Z"),
},
),
(
"kernel.1",
{
"activated.count": Variant("u", 10),
"activated.timestamp": Variant("s", "2022-08-25T21:11:52Z"),
"boot-status": Variant("s", "good"),
"bundle.compatible": Variant("s", "haos-odroid-n2"),
"sha256": Variant(
"s",
"f57e354b8bd518022721e71fafaf278972af966d8f6cbefb4610db13785801c8",
),
"state": Variant("s", "booted"),
"size": Variant("t", 10371072),
"installed.count": Variant("u", 10),
"class": Variant("s", "kernel"),
"device": Variant("s", "/dev/disk/by-partlabel/hassos-kernel1"),
"type": Variant("s", "raw"),
"bootname": Variant("s", "B"),
"bundle.version": Variant("s", "9.0.dev20220824"),
"installed.timestamp": Variant("s", "2022-08-25T21:11:46Z"),
"status": Variant("s", "ok"),
},
),
(
"rootfs.1",
{
"bundle.compatible": Variant("s", "haos-odroid-n2"),
"parent": Variant("s", "kernel.1"),
"state": Variant("s", "active"),
"size": Variant("t", 117456896),
"sha256": Variant(
"s",
"55936b64d391954ae1aed24dd1460e191e021e78655470051fa7939d12fff68a",
),
"class": Variant("s", "rootfs"),
"device": Variant("s", "/dev/disk/by-partlabel/hassos-system1"),
"type": Variant("s", "raw"),
"status": Variant("s", "ok"),
"bundle.version": Variant("s", "9.0.dev20220824"),
"installed.timestamp": Variant("s", "2022-08-25T21:11:51Z"),
"installed.count": Variant("u", 10),
},
),
]