Lines Matching full:test
2 /* I/O iterator tests. This can only test kernel-backed iterator types.
15 #include <kunit/test.h>
47 static void *__init iov_kunit_create_buffer(struct kunit *test, in iov_kunit_create_buffer() argument
55 pages = kunit_kcalloc(test, npages, sizeof(struct page *), GFP_KERNEL); in iov_kunit_create_buffer()
56 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pages); in iov_kunit_create_buffer()
62 KUNIT_ASSERT_EQ(test, got, npages); in iov_kunit_create_buffer()
66 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buffer); in iov_kunit_create_buffer()
68 kunit_add_action_or_reset(test, iov_kunit_unmap, buffer); in iov_kunit_create_buffer()
72 static void __init iov_kunit_load_kvec(struct kunit *test, in iov_kunit_load_kvec() argument
84 KUNIT_ASSERT_GE(test, pr->to, pr->from); in iov_kunit_load_kvec()
85 KUNIT_ASSERT_LE(test, pr->to, bufsize); in iov_kunit_load_kvec()
90 KUNIT_ASSERT_LE(test, size, bufsize); in iov_kunit_load_kvec()
96 * Test copying to a ITER_KVEC-type iterator.
98 static void __init iov_kunit_copy_to_kvec(struct kunit *test) in iov_kunit_copy_to_kvec() argument
111 scratch = iov_kunit_create_buffer(test, &spages, npages); in iov_kunit_copy_to_kvec()
115 buffer = iov_kunit_create_buffer(test, &bpages, npages); in iov_kunit_copy_to_kvec()
118 iov_kunit_load_kvec(test, &iter, READ, kvec, ARRAY_SIZE(kvec), in iov_kunit_copy_to_kvec()
124 KUNIT_EXPECT_EQ(test, copied, size); in iov_kunit_copy_to_kvec()
125 KUNIT_EXPECT_EQ(test, iter.count, 0); in iov_kunit_copy_to_kvec()
126 KUNIT_EXPECT_EQ(test, iter.nr_segs, 0); in iov_kunit_copy_to_kvec()
137 KUNIT_EXPECT_EQ_MSG(test, buffer[i], scratch[i], "at i=%x", i); in iov_kunit_copy_to_kvec()
146 * Test copying from a ITER_KVEC-type iterator.
148 static void __init iov_kunit_copy_from_kvec(struct kunit *test) in iov_kunit_copy_from_kvec() argument
161 buffer = iov_kunit_create_buffer(test, &bpages, npages); in iov_kunit_copy_from_kvec()
165 scratch = iov_kunit_create_buffer(test, &spages, npages); in iov_kunit_copy_from_kvec()
168 iov_kunit_load_kvec(test, &iter, WRITE, kvec, ARRAY_SIZE(kvec), in iov_kunit_copy_from_kvec()
174 KUNIT_EXPECT_EQ(test, copied, size); in iov_kunit_copy_from_kvec()
175 KUNIT_EXPECT_EQ(test, iter.count, 0); in iov_kunit_copy_from_kvec()
176 KUNIT_EXPECT_EQ(test, iter.nr_segs, 0); in iov_kunit_copy_from_kvec()
192 KUNIT_EXPECT_EQ_MSG(test, scratch[i], buffer[i], "at i=%x", i); in iov_kunit_copy_from_kvec()
216 static void __init iov_kunit_load_bvec(struct kunit *test, in iov_kunit_load_bvec() argument
230 KUNIT_ASSERT_LT(test, pr->page, npages); in iov_kunit_load_bvec()
231 KUNIT_ASSERT_LT(test, pr->page * PAGE_SIZE, bufsize); in iov_kunit_load_bvec()
232 KUNIT_ASSERT_GE(test, pr->from, 0); in iov_kunit_load_bvec()
233 KUNIT_ASSERT_GE(test, pr->to, pr->from); in iov_kunit_load_bvec()
234 KUNIT_ASSERT_LE(test, pr->to, PAGE_SIZE); in iov_kunit_load_bvec()
255 * Test copying to a ITER_BVEC-type iterator.
257 static void __init iov_kunit_copy_to_bvec(struct kunit *test) in iov_kunit_copy_to_bvec() argument
270 scratch = iov_kunit_create_buffer(test, &spages, npages); in iov_kunit_copy_to_bvec()
274 buffer = iov_kunit_create_buffer(test, &bpages, npages); in iov_kunit_copy_to_bvec()
277 iov_kunit_load_bvec(test, &iter, READ, bvec, ARRAY_SIZE(bvec), in iov_kunit_copy_to_bvec()
283 KUNIT_EXPECT_EQ(test, copied, size); in iov_kunit_copy_to_bvec()
284 KUNIT_EXPECT_EQ(test, iter.count, 0); in iov_kunit_copy_to_bvec()
285 KUNIT_EXPECT_EQ(test, iter.nr_segs, 0); in iov_kunit_copy_to_bvec()
300 KUNIT_EXPECT_EQ_MSG(test, buffer[i], scratch[i], "at i=%x", i); in iov_kunit_copy_to_bvec()
309 * Test copying from a ITER_BVEC-type iterator.
311 static void __init iov_kunit_copy_from_bvec(struct kunit *test) in iov_kunit_copy_from_bvec() argument
324 buffer = iov_kunit_create_buffer(test, &bpages, npages); in iov_kunit_copy_from_bvec()
328 scratch = iov_kunit_create_buffer(test, &spages, npages); in iov_kunit_copy_from_bvec()
331 iov_kunit_load_bvec(test, &iter, WRITE, bvec, ARRAY_SIZE(bvec), in iov_kunit_copy_from_bvec()
337 KUNIT_EXPECT_EQ(test, copied, size); in iov_kunit_copy_from_bvec()
338 KUNIT_EXPECT_EQ(test, iter.count, 0); in iov_kunit_copy_from_bvec()
339 KUNIT_EXPECT_EQ(test, iter.nr_segs, 0); in iov_kunit_copy_from_bvec()
357 KUNIT_EXPECT_EQ_MSG(test, scratch[i], buffer[i], "at i=%x", i); in iov_kunit_copy_from_bvec()
373 static void __init iov_kunit_load_xarray(struct kunit *test, in iov_kunit_load_xarray() argument
384 KUNIT_ASSERT_FALSE(test, xa_is_err(x)); in iov_kunit_load_xarray()
390 static struct xarray *iov_kunit_create_xarray(struct kunit *test) in iov_kunit_create_xarray() argument
396 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xarray); in iov_kunit_create_xarray()
397 kunit_add_action_or_reset(test, iov_kunit_destroy_xarray, xarray); in iov_kunit_create_xarray()
402 * Test copying to a ITER_XARRAY-type iterator.
404 static void __init iov_kunit_copy_to_xarray(struct kunit *test) in iov_kunit_copy_to_xarray() argument
417 xarray = iov_kunit_create_xarray(test); in iov_kunit_copy_to_xarray()
419 scratch = iov_kunit_create_buffer(test, &spages, npages); in iov_kunit_copy_to_xarray()
423 buffer = iov_kunit_create_buffer(test, &bpages, npages); in iov_kunit_copy_to_xarray()
426 iov_kunit_load_xarray(test, &iter, READ, xarray, bpages, npages); in iov_kunit_copy_to_xarray()
431 KUNIT_ASSERT_LE(test, pr->to, bufsize); in iov_kunit_copy_to_xarray()
436 KUNIT_EXPECT_EQ(test, copied, size); in iov_kunit_copy_to_xarray()
437 KUNIT_EXPECT_EQ(test, iter.count, 0); in iov_kunit_copy_to_xarray()
438 KUNIT_EXPECT_EQ(test, iter.iov_offset, size); in iov_kunit_copy_to_xarray()
451 KUNIT_EXPECT_EQ_MSG(test, buffer[i], scratch[i], "at i=%x", i); in iov_kunit_copy_to_xarray()
460 * Test copying from a ITER_XARRAY-type iterator.
462 static void __init iov_kunit_copy_from_xarray(struct kunit *test) in iov_kunit_copy_from_xarray() argument
475 xarray = iov_kunit_create_xarray(test); in iov_kunit_copy_from_xarray()
477 buffer = iov_kunit_create_buffer(test, &bpages, npages); in iov_kunit_copy_from_xarray()
481 scratch = iov_kunit_create_buffer(test, &spages, npages); in iov_kunit_copy_from_xarray()
484 iov_kunit_load_xarray(test, &iter, READ, xarray, bpages, npages); in iov_kunit_copy_from_xarray()
489 KUNIT_ASSERT_LE(test, pr->to, bufsize); in iov_kunit_copy_from_xarray()
494 KUNIT_EXPECT_EQ(test, copied, size); in iov_kunit_copy_from_xarray()
495 KUNIT_EXPECT_EQ(test, iter.count, 0); in iov_kunit_copy_from_xarray()
496 KUNIT_EXPECT_EQ(test, iter.iov_offset, size); in iov_kunit_copy_from_xarray()
514 KUNIT_EXPECT_EQ_MSG(test, scratch[i], buffer[i], "at i=%x", i); in iov_kunit_copy_from_xarray()
523 * Test the extraction of ITER_KVEC-type iterators.
525 static void __init iov_kunit_extract_pages_kvec(struct kunit *test) in iov_kunit_extract_pages_kvec() argument
539 buffer = iov_kunit_create_buffer(test, &bpages, npages); in iov_kunit_extract_pages_kvec()
541 iov_kunit_load_kvec(test, &iter, READ, kvec, ARRAY_SIZE(kvec), in iov_kunit_extract_pages_kvec()
555 KUNIT_EXPECT_GE(test, len, 0); in iov_kunit_extract_pages_kvec()
558 KUNIT_EXPECT_GE(test, (ssize_t)offset0, 0); in iov_kunit_extract_pages_kvec()
559 KUNIT_EXPECT_LT(test, offset0, PAGE_SIZE); in iov_kunit_extract_pages_kvec()
560 KUNIT_EXPECT_LE(test, len, size); in iov_kunit_extract_pages_kvec()
561 KUNIT_EXPECT_EQ(test, iter.count, size - len); in iov_kunit_extract_pages_kvec()
572 KUNIT_ASSERT_GE(test, part, 0); in iov_kunit_extract_pages_kvec()
580 KUNIT_ASSERT_LT(test, ix, npages); in iov_kunit_extract_pages_kvec()
582 KUNIT_EXPECT_PTR_EQ(test, pagelist[i], p); in iov_kunit_extract_pages_kvec()
583 KUNIT_EXPECT_EQ(test, offset0, from % PAGE_SIZE); in iov_kunit_extract_pages_kvec()
586 KUNIT_ASSERT_GE(test, len, 0); in iov_kunit_extract_pages_kvec()
592 if (test->status == KUNIT_FAILURE) in iov_kunit_extract_pages_kvec()
597 KUNIT_EXPECT_EQ(test, size, 0); in iov_kunit_extract_pages_kvec()
598 KUNIT_EXPECT_EQ(test, iter.count, 0); in iov_kunit_extract_pages_kvec()
603 * Test the extraction of ITER_BVEC-type iterators.
605 static void __init iov_kunit_extract_pages_bvec(struct kunit *test) in iov_kunit_extract_pages_bvec() argument
618 iov_kunit_create_buffer(test, &bpages, npages); in iov_kunit_extract_pages_bvec()
619 iov_kunit_load_bvec(test, &iter, READ, bvec, ARRAY_SIZE(bvec), in iov_kunit_extract_pages_bvec()
633 KUNIT_EXPECT_GE(test, len, 0); in iov_kunit_extract_pages_bvec()
636 KUNIT_EXPECT_GE(test, (ssize_t)offset0, 0); in iov_kunit_extract_pages_bvec()
637 KUNIT_EXPECT_LT(test, offset0, PAGE_SIZE); in iov_kunit_extract_pages_bvec()
638 KUNIT_EXPECT_LE(test, len, size); in iov_kunit_extract_pages_bvec()
639 KUNIT_EXPECT_EQ(test, iter.count, size - len); in iov_kunit_extract_pages_bvec()
650 KUNIT_ASSERT_GE(test, part, 0); in iov_kunit_extract_pages_bvec()
658 KUNIT_ASSERT_LT(test, ix, npages); in iov_kunit_extract_pages_bvec()
660 KUNIT_EXPECT_PTR_EQ(test, pagelist[i], p); in iov_kunit_extract_pages_bvec()
661 KUNIT_EXPECT_EQ(test, offset0, from % PAGE_SIZE); in iov_kunit_extract_pages_bvec()
664 KUNIT_ASSERT_GE(test, len, 0); in iov_kunit_extract_pages_bvec()
670 if (test->status == KUNIT_FAILURE) in iov_kunit_extract_pages_bvec()
675 KUNIT_EXPECT_EQ(test, size, 0); in iov_kunit_extract_pages_bvec()
676 KUNIT_EXPECT_EQ(test, iter.count, 0); in iov_kunit_extract_pages_bvec()
681 * Test the extraction of ITER_XARRAY-type iterators.
683 static void __init iov_kunit_extract_pages_xarray(struct kunit *test) in iov_kunit_extract_pages_xarray() argument
696 xarray = iov_kunit_create_xarray(test); in iov_kunit_extract_pages_xarray()
698 iov_kunit_create_buffer(test, &bpages, npages); in iov_kunit_extract_pages_xarray()
699 iov_kunit_load_xarray(test, &iter, READ, xarray, bpages, npages); in iov_kunit_extract_pages_xarray()
704 KUNIT_ASSERT_LE(test, pr->to, bufsize); in iov_kunit_extract_pages_xarray()
716 KUNIT_EXPECT_GE(test, len, 0); in iov_kunit_extract_pages_xarray()
719 KUNIT_EXPECT_LE(test, len, size); in iov_kunit_extract_pages_xarray()
720 KUNIT_EXPECT_EQ(test, iter.count, size - len); in iov_kunit_extract_pages_xarray()
724 KUNIT_EXPECT_GE(test, (ssize_t)offset0, 0); in iov_kunit_extract_pages_xarray()
725 KUNIT_EXPECT_LT(test, offset0, PAGE_SIZE); in iov_kunit_extract_pages_xarray()
732 KUNIT_ASSERT_GE(test, part, 0); in iov_kunit_extract_pages_xarray()
734 KUNIT_ASSERT_LT(test, ix, npages); in iov_kunit_extract_pages_xarray()
736 KUNIT_EXPECT_PTR_EQ(test, pagelist[i], p); in iov_kunit_extract_pages_xarray()
737 KUNIT_EXPECT_EQ(test, offset0, from % PAGE_SIZE); in iov_kunit_extract_pages_xarray()
740 KUNIT_ASSERT_GE(test, len, 0); in iov_kunit_extract_pages_xarray()
746 if (test->status == KUNIT_FAILURE) in iov_kunit_extract_pages_xarray()
750 KUNIT_EXPECT_EQ(test, size, 0); in iov_kunit_extract_pages_xarray()
751 KUNIT_EXPECT_EQ(test, iter.count, 0); in iov_kunit_extract_pages_xarray()
752 KUNIT_EXPECT_EQ(test, iter.iov_offset, pr->to - pr->from); in iov_kunit_extract_pages_xarray()