From 54d94d21b87fc736eceb642babe1cc7e7d2f51d5 Mon Sep 17 00:00:00 2001 From: anjianjun Date: Fri, 30 Jul 2021 16:58:59 +0800 Subject: [PATCH] testing/fstest:Support test fs with parameter Signed-off-by: anjianjun --- testing/fstest/README.md | 6 ++++ testing/fstest/fstest_main.c | 55 +++++++++++++++++++++++++++++++++--- 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/testing/fstest/README.md b/testing/fstest/README.md index 458b150bd..34d03be31 100644 --- a/testing/fstest/README.md +++ b/testing/fstest/README.md @@ -17,3 +17,9 @@ for the SPIFFS file system. - `CONFIG_TESTING_FSTEST_MOUNTPT` – Path where the file system is mounted. - `CONFIG_TESTING_FSTEST_NLOOPS` – Number of test loops. default `100`. - `CONFIG_TESTING_FSTEST_VERBOSE` – Verbose output. + +EXAMPLE + fstest -m /mnt -n 10 – Test /mnt 10 times + fstest -h – Get help message + fstest – Test path define by `CONFIG_TESTING_FSTEST_MOUNTPT` + `CONFIG_TESTING_FSTEST_NLOOPS` times diff --git a/testing/fstest/fstest_main.c b/testing/fstest/fstest_main.c index 9e7987a28..9506900de 100644 --- a/testing/fstest/fstest_main.c +++ b/testing/fstest/fstest_main.c @@ -102,7 +102,8 @@ struct fstest_filedesc_s static uint8_t g_fileimage[CONFIG_TESTING_FSTEST_MAXFILE]; static struct fstest_filedesc_s g_files[CONFIG_TESTING_FSTEST_MAXOPEN]; -static const char g_mountdir[] = CONFIG_TESTING_FSTEST_MOUNTPT "/"; +static char g_mountdir[CONFIG_TESTING_FSTEST_MAXNAME] = + CONFIG_TESTING_FSTEST_MOUNTPT "/"; static int g_nfiles; static int g_ndeleted; static int g_nfailed; @@ -925,14 +926,14 @@ static int fstest_directory(void) /* Open the directory */ - dirp = opendir(CONFIG_TESTING_FSTEST_MOUNTPT); + dirp = opendir(g_mountdir); if (!dirp) { /* Failed to open the directory */ printf("ERROR: Failed to open directory '%s': %d\n", - CONFIG_TESTING_FSTEST_MOUNTPT, errno); + g_mountdir, errno); return ERROR; } @@ -959,6 +960,19 @@ static int fstest_directory(void) return OK; } +/**************************************************************************** + * Show help Message + ****************************************************************************/ + +static void show_useage(void) +{ + printf("Usage : fstest [OPTION [ARG]] ...\n"); + printf("-h show this help statement\n"); + printf("-n num of test loop e.g. [%d]\n", CONFIG_TESTING_FSTEST_NLOOPS); + printf("-m mount point tobe test e.g. [%s]\n", + CONFIG_TESTING_FSTEST_MOUNTPT); +} + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -972,10 +986,43 @@ int main(int argc, FAR char *argv[]) struct statfs buf; unsigned int i; int ret; + int loop_num; + int option; /* Seed the random number generated */ srand(0x93846); + loop_num = CONFIG_TESTING_FSTEST_NLOOPS; + strcpy(g_mountdir, CONFIG_TESTING_FSTEST_MOUNTPT); + + /* Opt Parse */ + + while ((option = getopt(argc, argv, ":m:hn:")) != -1) + { + switch (option) + { + case 'm': + strcpy(g_mountdir, optarg); + break; + case 'h': + show_useage(); + exit(0); + case 'n': + loop_num = atoi(optarg); + break; + case ':': + printf("Error: Missing required argument\n"); + exit(1); + case '?': + printf("Error: Unrecognized option\n"); + exit(1); + } + } + + if (g_mountdir[strlen(g_mountdir)-1] != '/') + { + strcat(g_mountdir, "/"); + } /* Set up memory monitoring */ @@ -990,7 +1037,7 @@ int main(int argc, FAR char *argv[]) #if CONFIG_TESTING_FSTEST_NLOOPS == 0 for (i = 0; ; i++) #else - for (i = 1; i <= CONFIG_TESTING_FSTEST_NLOOPS; i++) + for (i = 1; i <= loop_num; i++) #endif { /* Write a files to the file system until either (1) all of the open