What is fake on one platform can be actual page_size on some other platform. This testcase failed on ppc64 with 64K pagesize: gethugepagesizes (16M: 32): FAIL Line 397: Duplicate size 65536 at 0/2 gethugepagesizes (16M: 64): FAIL Line 397: Duplicate size 65536 at 0/2
Reason is that getpagesizes() adds pagesize to page sizes from gethugetpagesizes(). This testcase fakes sysfs data, so there is 64K hugepage size and then getpagesizes() adds base_size to that, which is also 64K. Signed-off-by: Jan Stancek <jstan...@redhat.com> --- tests/gethugepagesizes.c | 46 +++++++++++++++++++++++++++------------------- 1 files changed, 27 insertions(+), 19 deletions(-) diff --git a/tests/gethugepagesizes.c b/tests/gethugepagesizes.c index 860b9a5..9551b38 100644 --- a/tests/gethugepagesizes.c +++ b/tests/gethugepagesizes.c @@ -320,7 +320,8 @@ void validate_sizes(int line, long actual_sizes[], int actual, int main(int argc, char *argv[]) { - long expected_sizes[MAX], actual_sizes[MAX]; + int i, fakes_no; + long expected_sizes[MAX], actual_sizes[MAX], fake_sizes[MAX]; long base_size = sysconf(_SC_PAGESIZE); test_init(argc, argv); @@ -351,7 +352,14 @@ int main(int argc, char *argv[]) */ INIT_LIST(expected_sizes, HPAGE_KB * 1024, 1024 * 1024, 64 * 1024); - setup_fake_data(expected_sizes, 3); + fakes_no = 0; + for (i = 0; i < 3; i++) + /* don't include base_size in 'fake' hugepagesizes */ + if (base_size != expected_sizes[i]) { + fake_sizes[fakes_no] = expected_sizes[i]; + fakes_no++; + } + setup_fake_data(fake_sizes, fakes_no); /* * Check handling when /proc/meminfo indicates no huge page support @@ -382,30 +390,30 @@ int main(int argc, char *argv[]) sysfs_state = OVERRIDE_ON; kernel_default_hugepage_size_reset(); - INIT_LIST(expected_sizes, HPAGE_KB * 1024, 1024 * 1024, 64 * 1024); + memcpy(expected_sizes, fake_sizes, sizeof(fake_sizes)); /* ... make sure all sizes are returned without duplicates */ /* ... while making sure we do not overstep our limit */ - EXPECT_SIZES(gethugepagesizes, MAX, 3, expected_sizes); - EXPECT_SIZES(gethugepagesizes, 1, 3, expected_sizes); - EXPECT_SIZES(gethugepagesizes, 2, 3, expected_sizes); - EXPECT_SIZES(gethugepagesizes, 3, 3, expected_sizes); - EXPECT_SIZES(gethugepagesizes, 4, 3, expected_sizes); - - INIT_LIST(expected_sizes, - base_size, HPAGE_KB * 1024, 1024 * 1024, 64 * 1024); - EXPECT_SIZES(getpagesizes, MAX, 4, expected_sizes); - EXPECT_SIZES(getpagesizes, 1, 4, expected_sizes); - EXPECT_SIZES(getpagesizes, 2, 4, expected_sizes); - EXPECT_SIZES(getpagesizes, 3, 4, expected_sizes); - EXPECT_SIZES(getpagesizes, 4, 4, expected_sizes); - EXPECT_SIZES(getpagesizes, 5, 4, expected_sizes); + EXPECT_SIZES(gethugepagesizes, MAX, fakes_no, expected_sizes); + EXPECT_SIZES(gethugepagesizes, 1, fakes_no, expected_sizes); + EXPECT_SIZES(gethugepagesizes, 2, fakes_no, expected_sizes); + EXPECT_SIZES(gethugepagesizes, 3, fakes_no, expected_sizes); + EXPECT_SIZES(gethugepagesizes, 4, fakes_no, expected_sizes); + + memcpy(expected_sizes, fake_sizes, sizeof(fake_sizes)); + expected_sizes[fakes_no] = base_size; + EXPECT_SIZES(getpagesizes, MAX, fakes_no + 1, expected_sizes); + EXPECT_SIZES(getpagesizes, 1, fakes_no + 1, expected_sizes); + EXPECT_SIZES(getpagesizes, 2, fakes_no + 1, expected_sizes); + EXPECT_SIZES(getpagesizes, 3, fakes_no + 1, expected_sizes); + EXPECT_SIZES(getpagesizes, 4, fakes_no + 1, expected_sizes); + EXPECT_SIZES(getpagesizes, 5, fakes_no + 1, expected_sizes); /* ... we can check how many sizes are supported. */ - if (gethugepagesizes(NULL, 0) != 3) + if (gethugepagesizes(NULL, 0) != fakes_no) FAIL("Unable to check the number of supported sizes"); - if (getpagesizes(NULL, 0) != 4) + if (getpagesizes(NULL, 0) != fakes_no + 1) FAIL("Unable to check the number of supported sizes"); PASS(); -- 1.7.1 ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Libhugetlbfs-devel mailing list Libhugetlbfs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libhugetlbfs-devel