📄 tests.h
字号:
/* * Copyright (C) 2007 Nokia Corporation. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Author: Adrian Hunter */#ifndef included_tests_tests_h__#define included_tests_tests_h__#include <stdint.h>/* Main macro for testing */#define CHECK(x) tests_test((x),__func__,__FILE__,__LINE__)/* The default directory in which tests are conducted */#define TESTS_DEFAULT_FILE_SYSTEM_MOUNT_DIR "/mnt/test_file_system"/* The default file system type to test */#define TESTS_DEFAULT_FILE_SYSTEM_TYPE "jffs2"/* Estimated size of an empty directory */#define TESTS_EMPTY_DIR_SIZE 128/* Function invoked by the CHECK macro */void tests_test(int test,const char *msg,const char *file,unsigned line);/* Handle common program options */int tests_get_args(int argc, char *argv[], const char *title, const char *desc, const char *opts);/* Return the number of files (or directories) in the given directory */unsigned tests_count_files_in_dir(const char *dir_name);/* Change to the file system mount directory, check that it is empty, matches the file system type, and is not the root file system */void tests_check_test_file_system(void);/* Get the free space for the file system of the current directory */uint64_t tests_get_free_space(void);/* Get the total space for the file system of the current directory */uint64_t tests_get_total_space(void);/* Write size random bytes into file descriptor fd at the current position, returning the number of bytes actually written */uint64_t tests_fill_file(int fd, uint64_t size);/* Write size random bytes into file descriptor fd at offset, returning the number of bytes actually written */uint64_t tests_write_filled_file(int fd, off_t offset, uint64_t size);/* Check that a file written using tests_fill_file() and/or tests_write_filled_file() and/or tests_create_file() contains the expected random data */void tests_check_filled_file_fd(int fd);/* Check that a file written using tests_fill_file() and/or tests_write_filled_file() and/or tests_create_file() contains the expected random data */void tests_check_filled_file(const char *file_name);/* Delete a file */void tests_delete_file(const char *file_name);/* Create a file of size file_size */uint64_t tests_create_file(const char *file_name, uint64_t file_size);/* Calculate: free_space * numerator / denominator */uint64_t tests_get_big_file_size(unsigned numerator, unsigned denominator);/* Create file "fragment_n" where n is the file_number, and unlink it */int tests_create_orphan(unsigned file_number);/* Write size bytes at offset to the file "fragment_n" where n is the file_number and file_number also determines the random data written i.e. seed for random numbers */unsigned tests_write_fragment_file(unsigned file_number, int fd, off_t offset, unsigned size);/* Write size bytes to the end of file descriptor fd using file_number to determine the random data written i.e. seed for random numbers */unsigned tests_fill_fragment_file(unsigned file_number, int fd, unsigned size);/* Write size bytes to the end of file "fragment_n" where n is the file_number and file_number also determines the random data written i.e. seed for random numbers */unsigned tests_append_to_fragment_file(unsigned file_number, unsigned size, int create);/* Write size bytes at offset to the file "fragment_n" where n is the file_number and file_number also determines the random data written i.e. seed for random numbers */unsigned tests_overwite_fragment_file( unsigned file_number, off_t offset, unsigned size);/* Delete file "fragment_n" where n is the file_number */void tests_delete_fragment_file(unsigned file_number);/* Check the random data in file "fragment_n" is what is expected */void tests_check_fragment_file_fd(unsigned file_number, int fd);/* Check the random data in file "fragment_n" is what is expected */void tests_check_fragment_file(unsigned file_number);/* Central point to decide whether to use fsync */void tests_maybe_sync(int fd);/* Return O_SYNC if ok to sync otherwise return 0 */int tests_maybe_sync_flag(void);/* Return random number from 0 to n - 1 */size_t tests_random_no(size_t n);/* Make a directory empty */void tests_clear_dir(const char *dir_name);/* Create an empty sub-directory or small file in the current directory */int64_t tests_create_entry(char *return_name);/* Remove a random file of empty sub-directory from the current directory */int64_t tests_remove_entry(void);/* Un-mount and re-mount test file system */void tests_remount(void);/* Un-mount test file system */void tests_unmount(void);/* Mount test file system */void tests_mount(void);/* Check whether the test file system is also the root file system */int tests_fs_is_rootfs(void);/* Try to make a directory empty */void tests_try_to_clear_dir(const char *dir_name);/* Check whether the test file system is also the current file system */int tests_fs_is_currfs(void);/* Concatenate a pid to a string in a signal safe way */void tests_cat_pid(char *buf, const char *name, pid_t pid);extern char *tests_file_system_mount_dir;extern char *tests_file_system_type;/* General purpose test parameter to specify some aspect of test size. May be used by different tests in different ways. Set by the -z, --size options. */extern int64_t tests_size_parameter;/* General purpose test parameter to specify some aspect of test repetition. May be used by different tests in different ways. Set by the -n, --repeat options. */extern int64_t tests_repeat_parameter;/* General purpose test parameter to specify some aspect of test sleeping. May be used by different tests in different ways. Set by the -p, --sleep options. */extern int64_t tests_sleep_parameter;/* General purpose test parameter to specify a file should be unlinked. May be used by different tests in different ways or not at all. */extern int tests_unlink_flag;/* General purpose test parameter to specify a file should be closed. May be used by different tests in different ways or not at all. */extern int tests_close_flag;/* General purpose test parameter to specify a file should be deleted. May be used by different tests in different ways or not at all. */extern int tests_delete_flag;/* General purpose test parameter to specify a file have a hole. May be used by different tests in different ways or not at all. */extern int tests_hole_flag;/* Program name from argv[0] */extern char *program_name;/* Maximum file name length of test file system (from statfs) */extern long tests_max_fname_len;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -