| /* |
| * Copyright (c) 2020 Intel Corporation. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include "test_fs.h" |
| /* amount of file system */ |
| #define NUM_FS 2 |
| #define TEST_FS_NAND1 "/NAND:" |
| #define TEST_FS_NAND2 "/MMCBLOCK:" |
| |
| static struct test_fs_data test_data; |
| |
| static struct fs_mount_t test_fs_mnt_1 = { |
| .type = TEST_FS_1, |
| .mnt_point = TEST_FS_NAND1, |
| .fs_data = &test_data, |
| }; |
| |
| static struct fs_mount_t test_fs_mnt_2 = { |
| .type = TEST_FS_2, |
| .mnt_point = TEST_FS_NAND2, |
| .fs_data = &test_data, |
| }; |
| |
| static int test_fs_init(void) |
| { |
| if (fs_register(TEST_FS_1, &temp_fs)) { |
| return -EINVAL; |
| } |
| |
| /* Attempt to re-register a file system */ |
| if (fs_register(TEST_FS_1, &temp_fs) != -EALREADY) { |
| return -EINVAL; |
| } |
| |
| if (fs_mount(&test_fs_mnt_1)) { |
| return -EINVAL; |
| } |
| |
| if (fs_register(TEST_FS_2, &temp_fs)) { |
| return -EINVAL; |
| } |
| |
| if (fs_mount(&test_fs_mnt_2)) { |
| return -EINVAL; |
| } |
| |
| return 0; |
| } |
| |
| static int test_fs_readmount(void) |
| { |
| int ret; |
| int mnt_nbr = 0; |
| const char *mnt_name; |
| |
| do { |
| ret = fs_readmount(&mnt_nbr, &mnt_name); |
| if (ret < 0) { |
| break; |
| } |
| |
| |
| } while (true); |
| |
| if (mnt_nbr == NUM_FS) { |
| return 0; |
| } |
| |
| return TC_FAIL; |
| } |
| |
| static int test_fs_deinit(void) |
| { |
| /* NULL parameter */ |
| if (fs_unregister(TEST_FS_1, NULL) == 0) { |
| return -EINVAL; |
| } |
| |
| if (fs_unregister(TEST_FS_1, &temp_fs)) { |
| return -EINVAL; |
| } |
| |
| if (fs_unmount(&test_fs_mnt_1)) { |
| return -EINVAL; |
| } |
| |
| if (fs_unregister(TEST_FS_2, &temp_fs)) { |
| return -EINVAL; |
| } |
| |
| if (fs_unmount(&test_fs_mnt_2)) { |
| return -EINVAL; |
| } |
| return 0; |
| } |
| |
| static int test_fs_external(void) |
| { |
| /* There is no way to statically determine whether a file |
| * system is unsupported, but */ |
| if (fs_register(FS_TYPE_EXTERNAL_BASE, &temp_fs) != -ENOSPC) { |
| return TC_FAIL; |
| } |
| |
| if (fs_unregister(FS_TYPE_EXTERNAL_BASE, &temp_fs) != -EINVAL) { |
| return TC_FAIL; |
| } |
| |
| return 0; |
| } |
| |
| /** |
| * @brief Multi file systems register and unregister |
| * |
| * @details |
| * Register and unregister two file systems to test the system support |
| * multiple file system simultaneously |
| * |
| *@addtogroup filesystem_api |
| *@{ |
| */ |
| |
| ZTEST(fs_api_register_mount, test_fs_register) |
| { |
| zassert_true(test_fs_init() == 0, "Failed to register filesystems"); |
| zassert_true(test_fs_readmount() == 0, "Failed to readmount"); |
| zassert_true(test_fs_external() == 0, "Supported other file system"); |
| zassert_true(test_fs_deinit() == 0, "Failed to unregister filesystems"); |
| } |
| |
| /** |
| * @} |
| */ |