Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mm/damon/tests/core-kunit: add damos_commit_dests() test

Add a new unit test for damos_commit_dests().

Link: https://lkml.kernel.org/r/20251111184415.141757-10-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: Brendan Higgins <brendan.higgins@linux.dev>
Cc: David Gow <davidgow@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

SeongJae Park and committed by
Andrew Morton
eec573b8 c1cefda7

+97
+97
mm/damon/tests/core-kunit.h
··· 692 692 KUNIT_EXPECT_EQ(test, dst.weight_age, src.weight_age); 693 693 } 694 694 695 + static int damos_test_help_dests_setup(struct damos_migrate_dests *dests, 696 + unsigned int *node_id_arr, unsigned int *weight_arr, 697 + size_t nr_dests) 698 + { 699 + size_t i; 700 + 701 + dests->node_id_arr = kmalloc_array(nr_dests, 702 + sizeof(*dests->node_id_arr), GFP_KERNEL); 703 + if (!dests->node_id_arr) 704 + return -ENOMEM; 705 + dests->weight_arr = kmalloc_array(nr_dests, 706 + sizeof(*dests->weight_arr), GFP_KERNEL); 707 + if (!dests->weight_arr) { 708 + kfree(dests->node_id_arr); 709 + dests->node_id_arr = NULL; 710 + return -ENOMEM; 711 + } 712 + 713 + for (i = 0; i < nr_dests; i++) { 714 + dests->node_id_arr[i] = node_id_arr[i]; 715 + dests->weight_arr[i] = weight_arr[i]; 716 + } 717 + dests->nr_dests = nr_dests; 718 + return 0; 719 + } 720 + 721 + static void damos_test_help_dests_free(struct damos_migrate_dests *dests) 722 + { 723 + kfree(dests->node_id_arr); 724 + kfree(dests->weight_arr); 725 + } 726 + 727 + static void damos_test_commit_dests_for(struct kunit *test, 728 + unsigned int *dst_node_id_arr, unsigned int *dst_weight_arr, 729 + size_t dst_nr_dests, 730 + unsigned int *src_node_id_arr, unsigned int *src_weight_arr, 731 + size_t src_nr_dests) 732 + { 733 + struct damos_migrate_dests dst = {}, src = {}; 734 + int i, err; 735 + bool skip = true; 736 + 737 + err = damos_test_help_dests_setup(&dst, dst_node_id_arr, 738 + dst_weight_arr, dst_nr_dests); 739 + if (err) 740 + kunit_skip(test, "dests setup fail"); 741 + err = damos_test_help_dests_setup(&src, src_node_id_arr, 742 + src_weight_arr, src_nr_dests); 743 + if (err) { 744 + damos_test_help_dests_free(&dst); 745 + kunit_skip(test, "src setup fail"); 746 + } 747 + err = damos_commit_dests(&dst, &src); 748 + if (err) 749 + goto out; 750 + skip = false; 751 + 752 + KUNIT_EXPECT_EQ(test, dst.nr_dests, src_nr_dests); 753 + for (i = 0; i < dst.nr_dests; i++) { 754 + KUNIT_EXPECT_EQ(test, dst.node_id_arr[i], src_node_id_arr[i]); 755 + KUNIT_EXPECT_EQ(test, dst.weight_arr[i], src_weight_arr[i]); 756 + } 757 + 758 + out: 759 + damos_test_help_dests_free(&dst); 760 + damos_test_help_dests_free(&src); 761 + if (skip) 762 + kunit_skip(test, "skip"); 763 + } 764 + 765 + static void damos_test_commit_dests(struct kunit *test) 766 + { 767 + damos_test_commit_dests_for(test, 768 + (unsigned int[]){1, 2, 3}, (unsigned int[]){2, 3, 4}, 769 + 3, 770 + (unsigned int[]){4, 5, 6}, (unsigned int[]){5, 6, 7}, 771 + 3); 772 + damos_test_commit_dests_for(test, 773 + (unsigned int[]){1, 2}, (unsigned int[]){2, 3}, 774 + 2, 775 + (unsigned int[]){4, 5, 6}, (unsigned int[]){5, 6, 7}, 776 + 3); 777 + damos_test_commit_dests_for(test, 778 + NULL, NULL, 0, 779 + (unsigned int[]){4, 5, 6}, (unsigned int[]){5, 6, 7}, 780 + 3); 781 + damos_test_commit_dests_for(test, 782 + (unsigned int[]){1, 2, 3}, (unsigned int[]){2, 3, 4}, 783 + 3, 784 + (unsigned int[]){4, 5}, (unsigned int[]){5, 6}, 2); 785 + damos_test_commit_dests_for(test, 786 + (unsigned int[]){1, 2, 3}, (unsigned int[]){2, 3, 4}, 787 + 3, 788 + NULL, NULL, 0); 789 + } 790 + 695 791 static void damos_test_commit_filter_for(struct kunit *test, 696 792 struct damos_filter *dst, struct damos_filter *src) 697 793 { ··· 1076 980 KUNIT_CASE(damos_test_commit_quota_goal), 1077 981 KUNIT_CASE(damos_test_commit_quota_goals), 1078 982 KUNIT_CASE(damos_test_commit_quota), 983 + KUNIT_CASE(damos_test_commit_dests), 1079 984 KUNIT_CASE(damos_test_commit_filter), 1080 985 KUNIT_CASE(damos_test_filter_out), 1081 986 KUNIT_CASE(damon_test_feed_loop_next_input),