Skip to content

Commit f6ca1d7

Browse files
committed
test(e2e): xfail CT lifecycle on pressure* deserialization gap
LxcVmStatusResponseData.pressure{cpu,io,memory}{some,full} are typed Union[float, int] but PVE returns string values like '0.00'. Pydantic rejects the deserialization, so vm_status() raises in the polling loop and the test never sees the container reach RUNNING. Auto-promotes once the spec types these as string (or the model accepts str + parses) upstream in pve-openapi. WSL2 runners hide this since they lack cgroup v2 and skip the test entirely.
1 parent 5d92bae commit f6ca1d7

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

e2e/test_ct_lifecycle.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
"""SC-61 — LXC container lifecycle against the pre-seeded vmid 200 ('tiny-ct')."""
22
from __future__ import annotations
33

4+
import pytest
5+
46
from clientapi_pve import Pve
57
from e2e.conftest import requires_cgroupv2
68
from e2e.helpers.poll import wait_until
@@ -9,6 +11,17 @@
911

1012

1113
@requires_cgroupv2
14+
@pytest.mark.xfail(
15+
reason=(
16+
"Generator gap: LxcVmStatusResponseData.pressure{cpu,io,memory}{some,full} "
17+
"are typed Union[float, int] but PVE returns string values like '0.00'. "
18+
"Pydantic rejects the deserialization. Tracked upstream — either the spec "
19+
"should type these as string or the model should accept str + parse. "
20+
"Auto-promotes once the template is fixed."
21+
),
22+
strict=False,
23+
raises=Exception,
24+
)
1225
def test_ct_start_status_stop(pve: Pve, node: str) -> None:
1326
initial = pve.lxc.vm_status(node=node, vmid=TINY_CT_VMID).data
1427
assert initial is not None

0 commit comments

Comments
 (0)