Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause
2 : : * Copyright (C) 2019 Intel Corporation.
3 : : * All rights reserved.
4 : : */
5 : :
6 : : #include "spdk/stdinc.h"
7 : : #include "spdk_internal/cunit.h"
8 : : #include "spdk/env.h"
9 : : #include "spdk_internal/mock.h"
10 : :
11 : : #include "bdev/bdev_zone.c"
12 : :
13 : 18 : DEFINE_STUB_V(bdev_io_init, (struct spdk_bdev_io *bdev_io,
14 : : struct spdk_bdev *bdev, void *cb_arg,
15 : : spdk_bdev_io_completion_cb cb));
16 : :
17 : 18 : DEFINE_STUB_V(bdev_io_submit, (struct spdk_bdev_io *bdev_io));
18 : :
19 : : /* Construct zone_io_operation structure */
20 : : struct zone_io_operation {
21 : : struct spdk_bdev_desc *desc;
22 : : struct spdk_io_channel *ch;
23 : : struct iovec iov;
24 : : union {
25 : : struct {
26 : : uint64_t zone_id;
27 : : size_t num_zones;
28 : : enum spdk_bdev_zone_action zone_action;
29 : : void *buf;
30 : : struct spdk_bdev_zone_info *info_;
31 : : } zone_mgmt;
32 : : struct {
33 : : void *md_buf;
34 : : struct iovec *iovs;
35 : : int iovcnt;
36 : : uint64_t num_blocks;
37 : : uint64_t offset_blocks;
38 : : uint64_t start_lba;
39 : : } bdev;
40 : : };
41 : : spdk_bdev_io_completion_cb cb;
42 : : void *cb_arg;
43 : : enum spdk_bdev_io_type io_type;
44 : : };
45 : :
46 : : /* Global variables */
47 : : struct zone_io_operation *g_zone_op = NULL;
48 : : static struct spdk_bdev *g_bdev = NULL;
49 : : static struct spdk_bdev_io *g_bdev_io = NULL;
50 : : static struct spdk_bdev_zone_info g_zone_info = {0};
51 : : static enum spdk_bdev_zone_action g_zone_action = SPDK_BDEV_ZONE_OPEN;
52 : : static enum spdk_bdev_zone_action g_unexpected_zone_action = SPDK_BDEV_ZONE_CLOSE;
53 : : static enum spdk_bdev_io_type g_io_type = SPDK_BDEV_IO_TYPE_GET_ZONE_INFO;
54 : :
55 : : static uint64_t g_expected_zone_id;
56 : : static uint64_t g_expected_num_zones;
57 : : static uint64_t g_unexpected_zone_id;
58 : : static uint64_t g_unexpected_num_zones;
59 : : static uint64_t g_num_blocks;
60 : : static uint64_t g_unexpected_num_blocks;
61 : : static uint64_t g_start_lba;
62 : : static uint64_t g_unexpected_start_lba;
63 : : static uint64_t g_bdev_blocklen;
64 : : static uint64_t g_unexpected_bdev_blocklen;
65 : : static int g_unexpected_iovcnt;
66 : : static void *g_md_buf;
67 : : static void *g_unexpected_md_buf;
68 : : static void *g_buf;
69 : : static void *g_unexpected_buf;
70 : :
71 : : static int
72 : 3 : test_setup(void)
73 : : {
74 : : /* Initiate expected and unexpected value here */
75 : 3 : g_expected_zone_id = 0x1000;
76 : 3 : g_expected_num_zones = 1024;
77 : 3 : g_unexpected_zone_id = 0xFFFF;
78 : 3 : g_unexpected_num_zones = 0;
79 : 3 : g_num_blocks = 4096 * 1024;
80 : 3 : g_unexpected_num_blocks = 0;
81 : 3 : g_start_lba = 4096;
82 : 3 : g_unexpected_start_lba = 0;
83 : 3 : g_bdev_blocklen = 4096;
84 : 3 : g_unexpected_bdev_blocklen = 0;
85 : 3 : g_unexpected_iovcnt = 1000;
86 : 3 : g_md_buf = (void *)0xEFDCFEDE;
87 : 3 : g_unexpected_md_buf = (void *)0xFECDEFDC;
88 : 3 : g_buf = (void *)0xFEEDBEEF;
89 : 3 : g_unexpected_buf = (void *)0xDEADBEEF;
90 : :
91 : 3 : return 0;
92 : : }
93 : :
94 : : static int
95 : 3 : test_cleanup(void)
96 : : {
97 : 3 : return 0;
98 : : }
99 : :
100 : : static void
101 : 18 : start_operation(void)
102 : : {
103 : 18 : g_zone_op = calloc(1, sizeof(struct zone_io_operation));
104 [ - + ]: 18 : SPDK_CU_ASSERT_FATAL(g_zone_op != NULL);
105 : :
106 [ + + ]: 18 : switch (g_io_type) {
107 : 12 : case SPDK_BDEV_IO_TYPE_ZONE_APPEND:
108 : 12 : g_zone_op->bdev.iovs = &g_zone_op->iov;
109 : 12 : g_zone_op->bdev.iovs[0].iov_base = g_unexpected_buf;
110 : 12 : g_zone_op->bdev.iovs[0].iov_len = g_unexpected_num_blocks * g_unexpected_bdev_blocklen;
111 : 12 : g_zone_op->bdev.iovcnt = g_unexpected_iovcnt;
112 : 12 : g_zone_op->bdev.md_buf = g_unexpected_md_buf;
113 : 12 : g_zone_op->bdev.num_blocks = g_unexpected_num_blocks;
114 : 12 : g_zone_op->bdev.offset_blocks = g_unexpected_zone_id;
115 : 12 : g_zone_op->bdev.start_lba = g_unexpected_start_lba;
116 : 12 : break;
117 : 6 : default:
118 : 6 : g_zone_op->bdev.iovcnt = 0;
119 : 6 : g_zone_op->zone_mgmt.zone_id = g_unexpected_zone_id;
120 : 6 : g_zone_op->zone_mgmt.num_zones = g_unexpected_num_zones;
121 : 6 : g_zone_op->zone_mgmt.zone_action = g_unexpected_zone_action;
122 : 6 : g_zone_op->zone_mgmt.buf = g_unexpected_buf;
123 : 6 : break;
124 : : }
125 : 18 : }
126 : :
127 : : static void
128 : 18 : stop_operation(void)
129 : : {
130 : 18 : free(g_bdev_io);
131 : 18 : free(g_bdev);
132 : 18 : free(g_zone_op);
133 : 18 : g_bdev_io = NULL;
134 : 18 : g_bdev = NULL;
135 : 18 : g_zone_op = NULL;
136 : 18 : }
137 : :
138 : : struct spdk_bdev_io *
139 : 18 : bdev_channel_get_io(struct spdk_bdev_channel *channel)
140 : : {
141 : : struct spdk_bdev_io *bdev_io;
142 : :
143 : 18 : bdev_io = calloc(1, sizeof(struct spdk_bdev_io));
144 [ - + ]: 18 : SPDK_CU_ASSERT_FATAL(bdev_io != NULL);
145 : :
146 : 18 : bdev_io->internal.ch = channel;
147 : 18 : bdev_io->type = g_io_type;
148 : :
149 : 18 : CU_ASSERT(g_zone_op != NULL);
150 : :
151 [ + + - ]: 18 : switch (g_io_type) {
152 : 6 : case SPDK_BDEV_IO_TYPE_GET_ZONE_INFO:
153 : : case SPDK_BDEV_IO_TYPE_ZONE_MANAGEMENT:
154 : 6 : bdev_io->u.bdev.iovcnt = 0;
155 : 6 : bdev_io->u.zone_mgmt.zone_id = g_zone_op->zone_mgmt.zone_id;
156 : 6 : bdev_io->u.zone_mgmt.num_zones = g_zone_op->zone_mgmt.num_zones;
157 : 6 : bdev_io->u.zone_mgmt.zone_action = g_zone_op->zone_mgmt.zone_action;
158 : 6 : bdev_io->u.zone_mgmt.buf = g_zone_op->zone_mgmt.buf;
159 : 6 : break;
160 : 12 : case SPDK_BDEV_IO_TYPE_ZONE_APPEND:
161 : 12 : bdev_io->u.bdev.iovs = g_zone_op->bdev.iovs;
162 : 12 : bdev_io->u.bdev.iovs[0].iov_base = g_zone_op->bdev.iovs[0].iov_base;
163 : 12 : bdev_io->u.bdev.iovs[0].iov_len = g_zone_op->bdev.iovs[0].iov_len;
164 : 12 : bdev_io->u.bdev.iovcnt = g_zone_op->bdev.iovcnt;
165 : 12 : bdev_io->u.bdev.md_buf = g_zone_op->bdev.md_buf;
166 : 12 : bdev_io->u.bdev.num_blocks = g_zone_op->bdev.num_blocks;
167 : 12 : bdev_io->u.bdev.offset_blocks = g_zone_op->bdev.offset_blocks;
168 : 12 : break;
169 : 0 : default:
170 : 0 : CU_ASSERT(0);
171 : : }
172 : :
173 : 18 : g_bdev_io = bdev_io;
174 : :
175 : 18 : return bdev_io;
176 : : }
177 : :
178 : : int
179 : 18 : spdk_bdev_open_ext(const char *bdev_name, bool write, spdk_bdev_event_cb_t event_cb,
180 : : void *event_ctx, struct spdk_bdev_desc **_desc)
181 : : {
182 : 18 : *_desc = (void *)0x1;
183 : 18 : return 0;
184 : : }
185 : :
186 : : struct spdk_io_channel *
187 : 18 : spdk_bdev_get_io_channel(struct spdk_bdev_desc *desc)
188 : : {
189 : 18 : return (struct spdk_io_channel *)0x1;
190 : : }
191 : :
192 : : void
193 : 0 : spdk_put_io_channel(struct spdk_io_channel *ch)
194 : : {
195 : 0 : CU_ASSERT(ch == (void *)1);
196 : 0 : }
197 : :
198 : : struct spdk_bdev *
199 : 18 : spdk_bdev_desc_get_bdev(struct spdk_bdev_desc *desc)
200 : : {
201 : : struct spdk_bdev *bdev;
202 : :
203 : 18 : bdev = calloc(1, sizeof(struct spdk_bdev));
204 [ - + ]: 18 : SPDK_CU_ASSERT_FATAL(bdev != NULL);
205 : :
206 [ + + ]: 18 : if (g_io_type == SPDK_BDEV_IO_TYPE_ZONE_APPEND) {
207 : 12 : bdev->blocklen = g_bdev_blocklen;
208 : : }
209 : :
210 : 18 : g_bdev = bdev;
211 : :
212 : 18 : return bdev;
213 : : }
214 : :
215 : : static void
216 : 3 : test_get_zone_size(void)
217 : : {
218 : 3 : struct spdk_bdev bdev = {};
219 : : uint64_t get_zone_size;
220 : :
221 : 3 : bdev.zone_size = 1024 * 4096;
222 : :
223 : 3 : get_zone_size = spdk_bdev_get_zone_size(&bdev);
224 : 3 : CU_ASSERT(get_zone_size == 1024 * 4096);
225 : 3 : }
226 : :
227 : : static void
228 : 3 : test_get_num_zones(void)
229 : : {
230 : 3 : struct spdk_bdev bdev = {};
231 : : uint64_t get_num_zones;
232 : :
233 : 3 : bdev.blockcnt = 1024 * 1024 * 1024;
234 : 3 : bdev.zone_size = 1024 * 4096;
235 : :
236 : 3 : get_num_zones = spdk_bdev_get_num_zones(&bdev);
237 : 3 : CU_ASSERT(get_num_zones == 256);
238 : 3 : }
239 : :
240 : : static void
241 : 3 : test_get_zone_id(void)
242 : : {
243 : 3 : struct spdk_bdev bdev = {};
244 : : uint64_t get_zone_id;
245 : :
246 : 3 : bdev.blockcnt = 1024 * 1024 * 1024;
247 : 3 : bdev.zone_size = 1024 * 4096;
248 : :
249 : 3 : get_zone_id = spdk_bdev_get_zone_id(&bdev, 0x800032);
250 : 3 : CU_ASSERT(get_zone_id == 0x800000);
251 : 3 : }
252 : :
253 : : static void
254 : 3 : test_get_max_zone_append_size(void)
255 : : {
256 : 3 : struct spdk_bdev bdev = {};
257 : : uint32_t get_max_zone_append_size;
258 : :
259 : 3 : bdev.max_zone_append_size = 32;
260 : :
261 : 3 : get_max_zone_append_size = spdk_bdev_get_max_zone_append_size(&bdev);
262 : 3 : CU_ASSERT(get_max_zone_append_size == 32);
263 : 3 : }
264 : :
265 : : static void
266 : 3 : test_get_max_open_zones(void)
267 : : {
268 : 3 : struct spdk_bdev bdev = {};
269 : : uint32_t get_max_open_zones;
270 : :
271 : 3 : bdev.max_open_zones = 8192;
272 : :
273 : 3 : get_max_open_zones = spdk_bdev_get_max_open_zones(&bdev);
274 : 3 : CU_ASSERT(get_max_open_zones == 8192);
275 : 3 : }
276 : :
277 : : static void
278 : 3 : test_get_max_active_zones(void)
279 : : {
280 : 3 : struct spdk_bdev bdev = {};
281 : : uint32_t get_max_active_zones;
282 : :
283 : 3 : bdev.max_active_zones = 9216;
284 : :
285 : 3 : get_max_active_zones = spdk_bdev_get_max_active_zones(&bdev);
286 : 3 : CU_ASSERT(get_max_active_zones == 9216);
287 : 3 : }
288 : :
289 : : static void
290 : 3 : test_get_optimal_open_zones(void)
291 : : {
292 : 3 : struct spdk_bdev bdev = {};
293 : : uint32_t get_optimal_open_zones;
294 : :
295 : 3 : bdev.optimal_open_zones = 4096;
296 : :
297 : 3 : get_optimal_open_zones = spdk_bdev_get_optimal_open_zones(&bdev);
298 : 3 : CU_ASSERT(get_optimal_open_zones == 4096);
299 : 3 : }
300 : :
301 : : static void
302 : 3 : test_bdev_io_get_append_location(void)
303 : : {
304 : 3 : struct spdk_bdev_io bdev_io = {};
305 : : uint64_t get_offset_blocks;
306 : :
307 : 3 : bdev_io.u.bdev.offset_blocks = 1024 * 10;
308 : :
309 : 3 : get_offset_blocks = spdk_bdev_io_get_append_location(&bdev_io);
310 : 3 : CU_ASSERT(get_offset_blocks == 1024 * 10);
311 : 3 : }
312 : :
313 : : static void
314 : 3 : test_zone_get_operation(void)
315 : : {
316 : 3 : test_get_zone_size();
317 : 3 : test_get_num_zones();
318 : 3 : test_get_zone_id();
319 : 3 : test_get_max_zone_append_size();
320 : 3 : test_get_max_open_zones();
321 : 3 : test_get_max_active_zones();
322 : 3 : test_get_optimal_open_zones();
323 : 3 : }
324 : :
325 : : #define DECLARE_VIRTUAL_BDEV_START() \
326 : : struct spdk_bdev bdev; \
327 : : struct spdk_io_channel *ch; \
328 : : struct spdk_bdev_desc *desc = NULL; \
329 : : int rc; \
330 : : memset(&bdev, 0, sizeof(bdev)); \
331 : : bdev.name = "bdev_zone_ut"; \
332 : : rc = spdk_bdev_open_ext(bdev.name, true, NULL, NULL, &desc); \
333 : : CU_ASSERT(rc == 0); \
334 : : SPDK_CU_ASSERT_FATAL(desc != NULL); \
335 : : ch = spdk_bdev_get_io_channel(desc); \
336 : : CU_ASSERT(ch != NULL);\
337 : :
338 : : static void
339 : 3 : test_bdev_zone_get_info(void)
340 : : {
341 [ - + ]: 3 : DECLARE_VIRTUAL_BDEV_START();
342 : :
343 : 3 : g_zone_info.zone_id = g_expected_zone_id;
344 : 3 : g_io_type = SPDK_BDEV_IO_TYPE_GET_ZONE_INFO;
345 : :
346 : 3 : start_operation();
347 : :
348 : 3 : rc = spdk_bdev_get_zone_info(desc, ch, g_expected_zone_id, g_expected_num_zones, &g_zone_info, NULL,
349 : : NULL);
350 : 3 : CU_ASSERT(rc == 0);
351 : 3 : CU_ASSERT(g_bdev_io->type == SPDK_BDEV_IO_TYPE_GET_ZONE_INFO);
352 : 3 : CU_ASSERT(g_bdev_io->u.zone_mgmt.zone_id == g_expected_zone_id);
353 : 3 : CU_ASSERT(g_bdev_io->u.zone_mgmt.num_zones == g_expected_num_zones);
354 : 3 : CU_ASSERT(g_bdev_io->u.zone_mgmt.buf == &g_zone_info);
355 : :
356 : 3 : stop_operation();
357 : 3 : }
358 : :
359 : : static void
360 : 3 : test_bdev_zone_management(void)
361 : : {
362 [ - + ]: 3 : DECLARE_VIRTUAL_BDEV_START();
363 : :
364 : 3 : g_zone_info.zone_id = g_expected_zone_id;
365 : 3 : g_io_type = SPDK_BDEV_IO_TYPE_ZONE_MANAGEMENT;
366 : :
367 : 3 : start_operation();
368 : :
369 : 3 : rc = spdk_bdev_zone_management(desc, ch, g_expected_zone_id, g_zone_action, NULL,
370 : : NULL);
371 : 3 : CU_ASSERT(rc == 0);
372 : 3 : CU_ASSERT(g_bdev_io->type == SPDK_BDEV_IO_TYPE_ZONE_MANAGEMENT);
373 : 3 : CU_ASSERT(g_bdev_io->u.zone_mgmt.zone_id == g_expected_zone_id);
374 : 3 : CU_ASSERT(g_bdev_io->u.zone_mgmt.zone_action == g_zone_action);
375 : 3 : CU_ASSERT(g_bdev_io->u.zone_mgmt.num_zones == 1);
376 : :
377 : 3 : stop_operation();
378 : 3 : }
379 : :
380 : : static void
381 : 3 : test_bdev_zone_append(void)
382 : : {
383 [ - + ]: 3 : DECLARE_VIRTUAL_BDEV_START();
384 : :
385 : 3 : g_io_type = SPDK_BDEV_IO_TYPE_ZONE_APPEND;
386 : :
387 : 3 : start_operation();
388 : :
389 : 3 : rc = spdk_bdev_zone_append(desc, ch, g_buf, g_start_lba, g_num_blocks, NULL, NULL);
390 : :
391 : 3 : CU_ASSERT(rc == 0);
392 : 3 : CU_ASSERT(g_bdev_io->internal.desc == desc);
393 : 3 : CU_ASSERT(g_bdev_io->type == SPDK_BDEV_IO_TYPE_ZONE_APPEND);
394 : 3 : CU_ASSERT(g_bdev_io->u.bdev.iovs[0].iov_base == g_buf);
395 : 3 : CU_ASSERT(g_bdev_io->u.bdev.iovs[0].iov_len == g_num_blocks * g_bdev_blocklen);
396 : 3 : CU_ASSERT(g_bdev_io->u.bdev.iovcnt == 1);
397 : 3 : CU_ASSERT(g_bdev_io->u.bdev.md_buf == NULL);
398 : 3 : CU_ASSERT(g_bdev_io->u.bdev.num_blocks == g_num_blocks);
399 : 3 : CU_ASSERT(g_bdev_io->u.bdev.offset_blocks == g_expected_zone_id);
400 : :
401 : 3 : stop_operation();
402 : 3 : }
403 : :
404 : : static void
405 : 3 : test_bdev_zone_append_with_md(void)
406 : : {
407 [ - + ]: 3 : DECLARE_VIRTUAL_BDEV_START();
408 : :
409 : 3 : g_io_type = SPDK_BDEV_IO_TYPE_ZONE_APPEND;
410 : :
411 : 3 : start_operation();
412 : :
413 : 3 : rc = spdk_bdev_zone_append_with_md(desc, ch, g_buf, g_md_buf, g_start_lba, g_num_blocks, NULL,
414 : : NULL);
415 : :
416 : 3 : CU_ASSERT(rc == 0);
417 : 3 : CU_ASSERT(g_bdev_io->internal.desc == desc);
418 : 3 : CU_ASSERT(g_bdev_io->type == SPDK_BDEV_IO_TYPE_ZONE_APPEND);
419 : 3 : CU_ASSERT(g_bdev_io->u.bdev.iovs[0].iov_base == g_buf);
420 : 3 : CU_ASSERT(g_bdev_io->u.bdev.iovs[0].iov_len == g_num_blocks * g_bdev_blocklen);
421 : 3 : CU_ASSERT(g_bdev_io->u.bdev.iovcnt == 1);
422 : 3 : CU_ASSERT(g_bdev_io->u.bdev.md_buf == g_md_buf);
423 : 3 : CU_ASSERT(g_bdev_io->u.bdev.num_blocks == g_num_blocks);
424 : 3 : CU_ASSERT(g_bdev_io->u.bdev.offset_blocks == g_expected_zone_id);
425 : :
426 : 3 : stop_operation();
427 : 3 : }
428 : :
429 : : static void
430 : 3 : test_bdev_zone_appendv(void)
431 : : {
432 [ - + ]: 3 : DECLARE_VIRTUAL_BDEV_START();
433 : :
434 : 3 : g_io_type = SPDK_BDEV_IO_TYPE_ZONE_APPEND;
435 : :
436 : 3 : start_operation();
437 : :
438 : 3 : rc = spdk_bdev_zone_appendv(desc, ch, g_zone_op->bdev.iovs, g_unexpected_iovcnt, g_start_lba,
439 : : g_num_blocks, NULL, NULL);
440 : :
441 : 3 : CU_ASSERT(rc == 0);
442 : 3 : CU_ASSERT(g_bdev_io->internal.desc == desc);
443 : 3 : CU_ASSERT(g_bdev_io->type == SPDK_BDEV_IO_TYPE_ZONE_APPEND);
444 : 3 : CU_ASSERT(g_bdev_io->u.bdev.iovs == g_zone_op->bdev.iovs);
445 : 3 : CU_ASSERT(g_bdev_io->u.bdev.iovcnt == g_unexpected_iovcnt);
446 : 3 : CU_ASSERT(g_bdev_io->u.bdev.md_buf == NULL);
447 : 3 : CU_ASSERT(g_bdev_io->u.bdev.num_blocks == g_num_blocks);
448 : 3 : CU_ASSERT(g_bdev_io->u.bdev.offset_blocks == g_expected_zone_id);
449 : :
450 : 3 : stop_operation();
451 : 3 : }
452 : :
453 : : static void
454 : 3 : test_bdev_zone_appendv_with_md(void)
455 : : {
456 [ - + ]: 3 : DECLARE_VIRTUAL_BDEV_START();
457 : :
458 : 3 : g_io_type = SPDK_BDEV_IO_TYPE_ZONE_APPEND;
459 : :
460 : 3 : start_operation();
461 : :
462 : 3 : rc = spdk_bdev_zone_appendv_with_md(desc, ch, g_zone_op->bdev.iovs, g_unexpected_iovcnt, g_md_buf,
463 : : g_start_lba, g_num_blocks, NULL, NULL);
464 : :
465 : 3 : CU_ASSERT(rc == 0);
466 : 3 : CU_ASSERT(g_bdev_io->internal.desc == desc);
467 : 3 : CU_ASSERT(g_bdev_io->type == SPDK_BDEV_IO_TYPE_ZONE_APPEND);
468 : 3 : CU_ASSERT(g_bdev_io->u.bdev.iovs == g_zone_op->bdev.iovs);
469 : 3 : CU_ASSERT(g_bdev_io->u.bdev.iovcnt == g_unexpected_iovcnt);
470 : 3 : CU_ASSERT(g_bdev_io->u.bdev.md_buf == g_md_buf);
471 : 3 : CU_ASSERT(g_bdev_io->u.bdev.num_blocks == g_num_blocks);
472 : 3 : CU_ASSERT(g_bdev_io->u.bdev.offset_blocks == g_expected_zone_id);
473 : :
474 : 3 : stop_operation();
475 : 3 : }
476 : :
477 : : int
478 : 3 : main(int argc, char **argv)
479 : : {
480 : 3 : CU_pSuite suite = NULL;
481 : : unsigned int num_failures;
482 : :
483 : 3 : CU_initialize_registry();
484 : :
485 : 3 : suite = CU_add_suite("zone", test_setup, test_cleanup);
486 : 3 : CU_ADD_TEST(suite, test_zone_get_operation);
487 : 3 : CU_ADD_TEST(suite, test_bdev_zone_get_info);
488 : 3 : CU_ADD_TEST(suite, test_bdev_zone_management);
489 : 3 : CU_ADD_TEST(suite, test_bdev_zone_append);
490 : 3 : CU_ADD_TEST(suite, test_bdev_zone_append_with_md);
491 : 3 : CU_ADD_TEST(suite, test_bdev_zone_appendv);
492 : 3 : CU_ADD_TEST(suite, test_bdev_zone_appendv_with_md);
493 : 3 : CU_ADD_TEST(suite, test_bdev_io_get_append_location);
494 : :
495 : 3 : num_failures = spdk_ut_run_tests(argc, argv, NULL);
496 : 3 : CU_cleanup_registry();
497 : 3 : return num_failures;
498 : : }
|