Skip to content

Commit 3f2110d

Browse files
committed
Fix Python tests for r8
1 parent dcecba7 commit 3f2110d

File tree

5 files changed

+218
-92
lines changed

5 files changed

+218
-92
lines changed

tests/client-dbus/tests/udev/_utils.py

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,18 @@ def random_string(length):
7676
return f'stratis_{"".join(random.choice(string.ascii_uppercase) for _ in range(length))}'
7777

7878

79+
# pylint: disable=too-many-statements
7980
def create_pool(
8081
name, devices, *, key_description=None, clevis_info=None, overprovision=True
8182
):
8283
"""
8384
Creates a stratis pool.
8485
:param name: Name of pool
8586
:param devices: Devices to use for pool
86-
:param key_description: optional key description
87-
:type key_description: str or NoneType
87+
:param key_description: optional key descriptions and token slots
88+
:type key_description: list of tuples
8889
:param clevis_info: clevis information, pin and config
89-
:type clevis_info: pair of str * (bool, str)
90+
:type clevis_info: list of tuples
9091
:return: result of pool create if operation succeeds
9192
:rtype: bool * str * list of str
9293
:raises RuntimeError: if pool is not created
@@ -98,9 +99,18 @@ def create_legacy_pool():
9899
if len(get_pools(name)) == 0:
99100
cmdline = [_LEGACY_POOL, name] + devices
100101
if key_description is not None:
101-
cmdline.extend(["--key-desc", key_description])
102+
if len(key_description) > 1:
103+
raise RuntimeError(
104+
"Can only provide one key description to legacy pools"
105+
)
106+
(kd, _) = key_description[0]
107+
cmdline.extend(["--key-desc", kd])
102108
if clevis_info is not None:
103-
(pin, (tang_url, thp)) = clevis_info
109+
if len(clevis_info) > 1:
110+
raise RuntimeError(
111+
"Can only provide one Clevis info to legacy pools"
112+
)
113+
(pin, (tang_url, thp), _) = clevis_info[0]
104114
cmdline.extend(["--clevis", pin])
105115
if pin == "tang":
106116
cmdline.extend(["--tang-url", tang_url])
@@ -136,12 +146,26 @@ def create_legacy_pool():
136146
return (newly_created, (pool_object_path, bd_object_paths))
137147

138148
def create_v2_pool():
139-
if clevis_info is None:
140-
clevis_arg = None
141-
else:
142-
(pin, (tang_url, thp)) = clevis_info
149+
dbus_key_descriptions = []
150+
for kd, slot in key_description if key_description is not None else []:
151+
if slot is None:
152+
dbus_slot = (False, 0)
153+
else:
154+
dbus_slot = (True, slot)
155+
156+
dbus_key_descriptions.append((dbus_slot, kd))
157+
158+
dbus_clevis_infos = []
159+
for pin, (tang_url, thp), slot in (
160+
clevis_info if clevis_info is not None else []
161+
):
162+
if slot is None:
163+
dbus_slot = (False, 0)
164+
else:
165+
dbus_slot = (True, slot)
166+
143167
if pin == "tang":
144-
clevis_arg = (
168+
(pin, config) = (
145169
"tang",
146170
json.dumps(
147171
{"url": tang_url, "stratis:tang:trust_url": True}
@@ -150,19 +174,19 @@ def create_v2_pool():
150174
),
151175
)
152176
else:
153-
clevis_arg = None
177+
raise RuntimeError(
178+
"Currently only Tang is supported for Clevis in the test infrastructure"
179+
)
180+
181+
dbus_clevis_infos.append((dbus_slot, pin, config))
154182

155183
(result, exit_code, error_str) = Manager.Methods.CreatePool(
156184
get_object(TOP_OBJECT),
157185
{
158186
"name": name,
159187
"devices": devices,
160-
"key_desc": (
161-
(False, "") if key_description is None else (True, key_description)
162-
),
163-
"clevis_info": (
164-
(False, ("", "")) if clevis_arg is None else (True, clevis_arg)
165-
),
188+
"key_desc": dbus_key_descriptions,
189+
"clevis_info": dbus_clevis_infos,
166190
"journal_size": (False, 0),
167191
"tag_spec": (False, ""),
168192
"allocate_superblock": (False, False),

tests/client-dbus/tests/udev/test_bind.py

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,17 @@ def test_binding_and_adding(self):
5757
with OptionalKeyServiceContextManager(key_spec=[(key_description, key)]):
5858
pool_name = random_string(5)
5959
(_, (pool_object_path, _)) = create_pool(
60-
pool_name, initial_devnodes, key_description=key_description
60+
pool_name, initial_devnodes, key_description=[(key_description, None)]
6161
)
6262
self.wait_for_pools(1)
6363

6464
(_, exit_code, message) = Pool.Methods.BindClevis(
6565
get_object(pool_object_path),
66-
{"pin": "tang", "json": self._CLEVIS_CONFIG_STR},
66+
{
67+
"pin": "tang",
68+
"json": self._CLEVIS_CONFIG_STR,
69+
"token_slot": (False, 0),
70+
},
6771
)
6872

6973
self.assertEqual(exit_code, StratisdErrors.OK, message)
@@ -88,13 +92,17 @@ def test_binding_unbinding_adding(self):
8892
with OptionalKeyServiceContextManager(key_spec=[(key_description, key)]):
8993
pool_name = random_string(5)
9094
(_, (pool_object_path, _)) = create_pool(
91-
pool_name, initial_devnodes, key_description=key_description
95+
pool_name, initial_devnodes, key_description=[(key_description, None)]
9296
)
9397
self.wait_for_pools(1)
9498

9599
(_, exit_code, message) = Pool.Methods.BindClevis(
96100
get_object(pool_object_path),
97-
{"pin": "tang", "json": self._CLEVIS_CONFIG_STR},
101+
{
102+
"pin": "tang",
103+
"json": self._CLEVIS_CONFIG_STR,
104+
"token_slot": (False, 0),
105+
},
98106
)
99107

100108
self.assertEqual(exit_code, StratisdErrors.OK, message)
@@ -126,13 +134,17 @@ def test_swap_binding(self):
126134
with OptionalKeyServiceContextManager(key_spec=[(key_description, key)]):
127135
pool_name = random_string(5)
128136
(_, (pool_object_path, _)) = create_pool(
129-
pool_name, initial_devnodes, key_description=key_description
137+
pool_name, initial_devnodes, key_description=[(key_description, None)]
130138
)
131139
self.wait_for_pools(1)
132140

133141
(_, exit_code, message) = Pool.Methods.BindClevis(
134142
get_object(pool_object_path),
135-
{"pin": "tang", "json": self._CLEVIS_CONFIG_STR},
143+
{
144+
"pin": "tang",
145+
"json": self._CLEVIS_CONFIG_STR,
146+
"token_slot": (False, 0),
147+
},
136148
)
137149

138150
self.assertEqual(exit_code, StratisdErrors.OK, message)
@@ -164,12 +176,15 @@ def test_swap_binding_2(self):
164176
with OptionalKeyServiceContextManager(key_spec=[(key_description, key)]):
165177
pool_name = random_string(5)
166178
(_, (pool_object_path, _)) = create_pool(
167-
pool_name, initial_devnodes, clevis_info=("tang", (_TANG_URL, None))
179+
pool_name,
180+
initial_devnodes,
181+
clevis_info=[("tang", (_TANG_URL, None), None)],
168182
)
169183
self.wait_for_pools(1)
170184

171185
(_, exit_code, message) = Pool.Methods.BindKeyring(
172-
get_object(pool_object_path), {"key_desc": key_description}
186+
get_object(pool_object_path),
187+
{"key_desc": key_description, "token_slot": (False, 0)},
173188
)
174189

175190
self.assertEqual(exit_code, StratisdErrors.OK, message)
@@ -201,12 +216,14 @@ def test_rebind_with_clevis(self):
201216
pool_name = random_string(5)
202217

203218
(_, (pool_object_path, _)) = create_pool(
204-
pool_name, initial_devnodes, clevis_info=("tang", (_TANG_URL, None))
219+
pool_name,
220+
initial_devnodes,
221+
clevis_info=[("tang", (_TANG_URL, None), None)],
205222
)
206223
self.wait_for_pools(1)
207224

208225
(_, exit_code, message) = Pool.Methods.RebindClevis(
209-
get_object(pool_object_path), {}
226+
get_object(pool_object_path), {"token_slot": (False, 0)}
210227
)
211228

212229
self.assertEqual(exit_code, StratisdErrors.OK, message)
@@ -239,12 +256,13 @@ def test_rebind_with_new_key_description(self):
239256
with OptionalKeyServiceContextManager(key_spec=keys):
240257
pool_name = random_string(5)
241258
(_, (pool_object_path, _)) = create_pool(
242-
pool_name, initial_devnodes, key_description=keys[0][0]
259+
pool_name, initial_devnodes, key_description=[(keys[0][0], None)]
243260
)
244261
self.wait_for_pools(1)
245262

246263
(_, exit_code, message) = Pool.Methods.RebindKeyring(
247-
get_object(pool_object_path), {"key_desc": keys[1][0]}
264+
get_object(pool_object_path),
265+
{"key_desc": keys[1][0], "token_slot": (False, 0)},
248266
)
249267

250268
self.assertEqual(exit_code, StratisdErrors.OK, message)

tests/client-dbus/tests/udev/test_predict.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ def test_prediction_encrypted(self):
302302
(key_description, key) = ("key_spec", "data")
303303
with OptionalKeyServiceContextManager(key_spec=[(key_description, key)]):
304304
pool_name = random_string(5)
305-
create_pool(pool_name, devnodes, key_description=key_description)
305+
create_pool(pool_name, devnodes, key_description=[(key_description, None)])
306306
self.wait_for_pools(1)
307307
self._test_prediction(pool_name)
308308

tests/client-dbus/tests/udev/test_revert.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def test_revert(self): # pylint: disable=too-many-locals
158158
{
159159
"id": pool_name,
160160
"id_type": "name",
161-
"unlock_method": (False, ""),
161+
"unlock_method": (False, (False, 0)),
162162
"key_fd": (False, 0),
163163
},
164164
)
@@ -276,7 +276,7 @@ def test_revert_snapshot_chain(self): # pylint: disable=too-many-locals
276276
{
277277
"id": pool_name,
278278
"id_type": "name",
279-
"unlock_method": (False, ""),
279+
"unlock_method": (False, (False, 0)),
280280
"key_fd": (False, 0),
281281
},
282282
)

0 commit comments

Comments
 (0)