mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
sysctl: Add a selftest for handling empty dirs
Basic test to ensure that empty directories can be registered and that they in turn can serve as a base dir for other registrations. Add one test to the sysctl selftest module. It first registers an empty directory under "empty_add" and then uses that as a base to register another empty dir. The sysctl bash script then checks that "empty_add" is present and that there an empty directory within it. Signed-off-by: Joel Granados <j.granados@samsung.com> Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
This commit is contained in:
parent
315552310c
commit
777740779e
@ -35,6 +35,8 @@ static struct {
|
||||
struct ctl_table_header *test_h_setup_node;
|
||||
struct ctl_table_header *test_h_mnt;
|
||||
struct ctl_table_header *test_h_mnterror;
|
||||
struct ctl_table_header *empty_add;
|
||||
struct ctl_table_header *empty;
|
||||
} sysctl_test_headers;
|
||||
|
||||
struct test_sysctl_data {
|
||||
@ -220,6 +222,25 @@ static int test_sysctl_run_register_mount_point(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct ctl_table test_table_empty[] = { };
|
||||
|
||||
static int test_sysctl_run_register_empty(void)
|
||||
{
|
||||
/* Tets that an empty dir can be created */
|
||||
sysctl_test_headers.empty_add
|
||||
= register_sysctl("debug/test_sysctl/empty_add", test_table_empty);
|
||||
if (!sysctl_test_headers.empty_add)
|
||||
return -ENOMEM;
|
||||
|
||||
/* Test that register on top of an empty dir works */
|
||||
sysctl_test_headers.empty
|
||||
= register_sysctl("debug/test_sysctl/empty_add/empty", test_table_empty);
|
||||
if (!sysctl_test_headers.empty)
|
||||
return -ENOMEM;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init test_sysctl_init(void)
|
||||
{
|
||||
int err;
|
||||
@ -233,6 +254,10 @@ static int __init test_sysctl_init(void)
|
||||
goto out;
|
||||
|
||||
err = test_sysctl_run_register_mount_point();
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
err = test_sysctl_run_register_empty();
|
||||
|
||||
out:
|
||||
return err;
|
||||
@ -248,6 +273,10 @@ static void __exit test_sysctl_exit(void)
|
||||
unregister_sysctl_table(sysctl_test_headers.test_h_mnt);
|
||||
if (sysctl_test_headers.test_h_mnterror)
|
||||
unregister_sysctl_table(sysctl_test_headers.test_h_mnterror);
|
||||
if (sysctl_test_headers.empty)
|
||||
unregister_sysctl_table(sysctl_test_headers.empty);
|
||||
if (sysctl_test_headers.empty_add)
|
||||
unregister_sysctl_table(sysctl_test_headers.empty_add);
|
||||
}
|
||||
|
||||
module_exit(test_sysctl_exit);
|
||||
|
@ -35,6 +35,7 @@ ALL_TESTS="$ALL_TESTS 0007:1:1:boot_int:1"
|
||||
ALL_TESTS="$ALL_TESTS 0008:1:1:match_int:1"
|
||||
ALL_TESTS="$ALL_TESTS 0009:1:1:unregister_error:0"
|
||||
ALL_TESTS="$ALL_TESTS 0010:1:1:mnt/mnt_error:0"
|
||||
ALL_TESTS="$ALL_TESTS 0011:1:1:empty_add:0"
|
||||
|
||||
function allow_user_defaults()
|
||||
{
|
||||
@ -828,6 +829,27 @@ sysctl_test_0010()
|
||||
return 0
|
||||
}
|
||||
|
||||
sysctl_test_0011()
|
||||
{
|
||||
TARGET="${SYSCTL}/$(get_test_target 0011)"
|
||||
echo -n "Testing empty dir handling in ${TARGET} ... "
|
||||
if [ ! -d ${TARGET} ]; then
|
||||
echo -e "FAIL\nCould not create ${TARGET}" >&2
|
||||
rc=1
|
||||
test_rc
|
||||
fi
|
||||
|
||||
TARGET2="${TARGET}/empty"
|
||||
if [ ! -d ${TARGET2} ]; then
|
||||
echo -e "FAIL\nCould not create ${TARGET2}" >&2
|
||||
rc=1
|
||||
test_rc
|
||||
fi
|
||||
|
||||
echo "OK"
|
||||
return 0
|
||||
}
|
||||
|
||||
list_tests()
|
||||
{
|
||||
echo "Test ID list:"
|
||||
@ -846,6 +868,7 @@ list_tests()
|
||||
echo "0008 x $(get_test_count 0008) - tests sysctl macro values match"
|
||||
echo "0009 x $(get_test_count 0009) - tests sysct unregister"
|
||||
echo "0010 x $(get_test_count 0010) - tests sysct mount point"
|
||||
echo "0011 x $(get_test_count 0011) - tests empty directories"
|
||||
}
|
||||
|
||||
usage()
|
||||
|
Loading…
Reference in New Issue
Block a user