Skip to content

Commit d8c380c

Browse files
committed
testnode: add tests for loop_device_count config
1 parent bf6b582 commit d8c380c

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

ceph_devstack/resources/ceph/containers.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,10 @@ def __init__(self, name: str = ""):
180180
self.index = 0
181181
if "_" in self.name:
182182
self.index = int(self.name.split("_")[-1])
183-
self.osd_count = config["containers"]["testnode"].get("osd_count", 1)
184-
self.devices = [self.device_name(i) for i in range(self.osd_count)]
183+
self.loop_device_count = config["containers"]["testnode"].get(
184+
"loop_device_count", 1
185+
)
186+
self.devices = [self.device_name(i) for i in range(self.loop_device_count)]
185187

186188
@property
187189
def loop_img_dir(self):
@@ -321,7 +323,7 @@ async def remove_loop_device(self, device: str):
321323
os.remove(loop_img_name)
322324

323325
def device_name(self, index: int):
324-
return f"/dev/loop{self.osd_count * self.index + index}"
326+
return f"/dev/loop{self.loop_device_count * self.index + index}"
325327

326328
def device_image(self, device: str):
327329
return f"{self.name}-{device.lstrip('/dev/loop')}"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[containers.testnode]
2+
loop_device_count = 4
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from pathlib import Path
2+
3+
import pytest
4+
5+
from ceph_devstack.resources.ceph import TestNode
6+
from ceph_devstack import config
7+
8+
9+
class TestTestnode:
10+
@pytest.fixture(scope="class")
11+
def cls(self) -> type[TestNode]:
12+
return TestNode
13+
14+
def test_testnode_loop_device_count_default_to_one(self, cls):
15+
testnode = cls("testnode_1")
16+
assert testnode.loop_device_count == 1
17+
18+
def test_testnode_create_cmd_includes_related_devices(self, cls):
19+
config.load(Path(__file__).parent.joinpath("fixtures", "testnode-config.toml"))
20+
testnode = cls("testnode_1")
21+
create_cmd = testnode.create_cmd
22+
assert "--device=/dev/loop4" in create_cmd
23+
assert "--device=/dev/loop5" in create_cmd
24+
assert "--device=/dev/loop6" in create_cmd
25+
assert "--device=/dev/loop7" in create_cmd
26+
27+
def test_testnode_devices_is_based_on_loop_device_count_config(self, cls):
28+
testnode = cls("testnode_1")
29+
assert testnode.loop_device_count == 4
30+
assert testnode.devices == [
31+
"/dev/loop4",
32+
"/dev/loop5",
33+
"/dev/loop6",
34+
"/dev/loop7",
35+
]

0 commit comments

Comments
 (0)