266 lines
11 KiB
C
266 lines
11 KiB
C
/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <----
|
|
|
|
Copyright (c) 2014-2015 Datalight, Inc.
|
|
All Rights Reserved Worldwide.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; use version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but "AS-IS," 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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
/* Businesses and individuals that for commercial or other reasons cannot
|
|
comply with the terms of the GPLv2 license may obtain a commercial license
|
|
before incorporating Reliance Edge into proprietary software for
|
|
distribution in any form. Visit http://www.datalight.com/reliance-edge for
|
|
more information.
|
|
*/
|
|
/** @file
|
|
@brief Prototypes for Reliance Edge test entry points.
|
|
*/
|
|
#ifndef REDTESTS_H
|
|
#define REDTESTS_H
|
|
|
|
#include <redtypes.h>
|
|
#include "redtestutils.h"
|
|
#include "redver.h"
|
|
|
|
/* This macro is only defined by the error injection project.
|
|
*/
|
|
#ifdef REDCONF_ERROR_INJECTION
|
|
#include <rederrinject.h>
|
|
#endif
|
|
|
|
#define FSSTRESS_SUPPORTED \
|
|
( ((RED_KIT == RED_KIT_GPL) || (RED_KIT == RED_KIT_SANDBOX)) \
|
|
&& (REDCONF_OUTPUT == 1) && (REDCONF_READ_ONLY == 0) && (REDCONF_PATH_SEPARATOR == '/') \
|
|
&& (REDCONF_API_POSIX == 1) && (REDCONF_API_POSIX_UNLINK == 1) && (REDCONF_API_POSIX_MKDIR == 1) \
|
|
&& (REDCONF_API_POSIX_RMDIR == 1) && (REDCONF_API_POSIX_RENAME == 1) && (REDCONF_API_POSIX_LINK == 1) \
|
|
&& (REDCONF_API_POSIX_FTRUNCATE == 1) && (REDCONF_API_POSIX_READDIR == 1))
|
|
|
|
#define FSE_STRESS_TEST_SUPPORTED \
|
|
( ((RED_KIT == RED_KIT_COMMERCIAL) || (RED_KIT == RED_KIT_SANDBOX)) \
|
|
&& (REDCONF_OUTPUT == 1) && (REDCONF_READ_ONLY == 0) && (REDCONF_API_FSE == 1) \
|
|
&& (REDCONF_API_FSE_FORMAT == 1) && (REDCONF_API_FSE_TRANSMASKSET == 1) && (REDCONF_API_FSE_TRANSMASKGET == 1) \
|
|
&& (REDCONF_API_FSE_TRUNCATE == 1))
|
|
|
|
#define POSIX_API_TEST_SUPPORTED \
|
|
( ((RED_KIT == RED_KIT_COMMERCIAL) || (RED_KIT == RED_KIT_SANDBOX)) \
|
|
&& (REDCONF_OUTPUT == 1) && (REDCONF_READ_ONLY == 0) && (REDCONF_API_POSIX == 1) \
|
|
&& (REDCONF_API_POSIX_FORMAT == 1) && (REDCONF_API_POSIX_UNLINK == 1))
|
|
|
|
#define FSE_API_TEST_SUPPORTED \
|
|
( ((RED_KIT == RED_KIT_COMMERCIAL) || (RED_KIT == RED_KIT_SANDBOX)) \
|
|
&& (REDCONF_OUTPUT == 1) && (REDCONF_READ_ONLY == 0) && (REDCONF_API_FSE == 1) \
|
|
&& (REDCONF_API_FSE_FORMAT == 1))
|
|
|
|
#define STOCH_POSIX_TEST_SUPPORTED \
|
|
( ((RED_KIT == RED_KIT_COMMERCIAL) || (RED_KIT == RED_KIT_SANDBOX)) \
|
|
&& (REDCONF_OUTPUT == 1) && (REDCONF_READ_ONLY == 0) && (REDCONF_API_POSIX == 1) \
|
|
&& (REDCONF_API_POSIX_FORMAT == 1) && (REDCONF_API_POSIX_READDIR == 1) \
|
|
&& (REDCONF_API_POSIX_MKDIR == 1) && (REDCONF_API_POSIX_RMDIR == 1) && (REDCONF_API_POSIX_UNLINK == 1) \
|
|
&& (REDCONF_API_POSIX_RENAME == 1))
|
|
|
|
#define FSIOTEST_SUPPORTED \
|
|
( ((RED_KIT == RED_KIT_COMMERCIAL) || (RED_KIT == RED_KIT_SANDBOX)) \
|
|
&& (REDCONF_OUTPUT == 1) && (REDCONF_API_POSIX == 1))
|
|
|
|
#define BDEVTEST_SUPPORTED \
|
|
( ((RED_KIT == RED_KIT_COMMERCIAL) || (RED_KIT == RED_KIT_SANDBOX)) \
|
|
&& (REDCONF_OUTPUT == 1) && (REDCONF_READ_ONLY == 0))
|
|
|
|
#define DISKFULL_TEST_SUPPORTED \
|
|
( ((RED_KIT == RED_KIT_COMMERCIAL) || (RED_KIT == RED_KIT_SANDBOX)) \
|
|
&& (REDCONF_OUTPUT == 1) && (REDCONF_READ_ONLY == 0) && (REDCONF_API_POSIX == 1) \
|
|
&& (REDCONF_API_POSIX_FORMAT == 1) && (REDCONF_API_POSIX_FTRUNCATE == 1))
|
|
|
|
|
|
typedef enum
|
|
{
|
|
PARAMSTATUS_OK, /* Parameters were good; continue. */
|
|
PARAMSTATUS_BAD, /* Parameters were bad; stop. */
|
|
PARAMSTATUS_HELP /* Help request; not an error, but stop. */
|
|
} PARAMSTATUS;
|
|
|
|
|
|
#if FSSTRESS_SUPPORTED
|
|
typedef struct
|
|
{
|
|
bool fNoCleanup; /**< --no-cleanup */
|
|
uint32_t ulLoops; /**< --loops */
|
|
uint32_t ulNops; /**< --nops */
|
|
bool fNamePad; /**< --namepad */
|
|
uint32_t ulSeed; /**< --seed */
|
|
bool fVerbose; /**< --verbose */
|
|
} FSSTRESSPARAM;
|
|
|
|
PARAMSTATUS FsstressParseParams(int argc, char *argv[], FSSTRESSPARAM *pParam, uint8_t *pbVolNum, const char **ppszDevice);
|
|
void FsstressDefaultParams(FSSTRESSPARAM *pParam);
|
|
int FsstressStart(const FSSTRESSPARAM *pParam);
|
|
#endif
|
|
|
|
#if STOCH_POSIX_TEST_SUPPORTED
|
|
typedef struct
|
|
{
|
|
const char *pszVolume; /**< Volume path prefix. */
|
|
uint32_t ulIterations; /**< --iterations */
|
|
uint32_t ulFileListMax; /**< --files */
|
|
uint32_t ulDirListMax; /**< --dirs */
|
|
uint32_t ulOpenFileListMax; /**< --open-files */
|
|
uint32_t ulOpenDirListMax; /**< --open-dirs */
|
|
uint32_t ulRandomSeed; /**< --seed */
|
|
} STOCHPOSIXPARAM;
|
|
|
|
PARAMSTATUS RedStochPosixParseParams(int argc, char *argv[], STOCHPOSIXPARAM *pParam, uint8_t *pbVolNum, const char **ppszDevice);
|
|
void RedStochPosixDefaultParams(STOCHPOSIXPARAM *pParam);
|
|
int RedStochPosixStart(const STOCHPOSIXPARAM *pParam);
|
|
#endif
|
|
|
|
#if FSE_STRESS_TEST_SUPPORTED
|
|
typedef struct
|
|
{
|
|
uint8_t bVolNum; /**< Volume number. */
|
|
uint32_t ulFileCount; /**< --files */
|
|
uint32_t ulMaxFileSize; /**< --max */
|
|
uint32_t ulMaxOpSize; /**< --buffer-size */
|
|
uint32_t ulNops; /**< --nops */
|
|
uint32_t ulLoops; /**< --loops */
|
|
uint32_t ulSampleRate; /**< --sample-rate */
|
|
uint64_t ullSeed; /**< --seed */
|
|
} FSESTRESSPARAM;
|
|
|
|
PARAMSTATUS FseStressParseParams(int argc, char *argv[], FSESTRESSPARAM *pParam, uint8_t *pbVolNum, const char **ppszDevice);
|
|
void FseStressDefaultParams(FSESTRESSPARAM *pParam);
|
|
int FseStressStart(const FSESTRESSPARAM *pParam);
|
|
#endif
|
|
|
|
#if POSIX_API_TEST_SUPPORTED
|
|
typedef struct
|
|
{
|
|
const char *pszVolume; /**< Volume path prefix. */
|
|
bool fQuick; /**< --quick */
|
|
bool fQuitOnFailure; /**< --quit-on-failure */
|
|
bool fDebugErrors; /**< --debug */
|
|
} POSIXTESTPARAM;
|
|
|
|
PARAMSTATUS RedPosixTestParseParams(int argc, char *argv[], POSIXTESTPARAM *pParam, uint8_t *pbVolNum, const char **ppszDevice);
|
|
void RedPosixTestDefaultParams(POSIXTESTPARAM *pParam);
|
|
int RedPosixTestStart(const POSIXTESTPARAM *pParam);
|
|
#endif
|
|
|
|
|
|
#if POSIX_API_TEST_SUPPORTED
|
|
typedef struct
|
|
{
|
|
const char *pszVolume; /**< Volume path prefix. */
|
|
bool fQuick; /**< --quick */
|
|
bool fVerbose; /**< --verbose */
|
|
bool fQuitOnFailure; /**< --quit-on-failure */
|
|
bool fDebugErrors; /**< --debug */
|
|
} OSAPITESTPARAM;
|
|
|
|
PARAMSTATUS RedOsApiTestParseParams(int argc, char *argv[], OSAPITESTPARAM *pParam, const char **ppszDevice);
|
|
void RedOsApiTestDefaultParams(OSAPITESTPARAM *pParam);
|
|
int RedOsApiTestStart(const OSAPITESTPARAM *pParam);
|
|
#endif
|
|
|
|
|
|
#if FSE_API_TEST_SUPPORTED
|
|
typedef struct
|
|
{
|
|
uint8_t bVolNum; /**< Volume number. */
|
|
bool fQuitOnFailure; /**< --quit-on-failure */
|
|
bool fDebugErrors; /**< --debug */
|
|
} FSETESTPARAM;
|
|
|
|
PARAMSTATUS RedFseTestParseParams(int argc, char *argv[], FSETESTPARAM *pParam, uint8_t *pbVolNum, const char **ppszDevice);
|
|
void RedFseTestDefaultParams(FSETESTPARAM *pParam);
|
|
int RedFseTestStart(const FSETESTPARAM *pParam);
|
|
#endif
|
|
|
|
#if FSIOTEST_SUPPORTED
|
|
typedef enum
|
|
{
|
|
TESTFS_RELEDGE, /* Datalight Reliance Edge */
|
|
TESTFS_FATFS, /* ChaN's FatFs */
|
|
TESTFS_FATSL /* FreeRTOS+FAT SL */
|
|
} TESTFS;
|
|
|
|
typedef struct
|
|
{
|
|
TESTFS testfs; /**< --fs */
|
|
const char *pszVolume; /**< Volume path prefix. */
|
|
bool fSeqRead; /**< --seq=r */
|
|
bool fSeqWrite; /**< --seq=w */
|
|
bool fSeqRewrite; /**< --seq=e */
|
|
bool fRandomRead; /**< --rand=r */
|
|
bool fRandomWrite; /**< --rand=w */
|
|
bool fMixedWrite; /**< --mixed */
|
|
bool fScanTest; /**< --scan */
|
|
uint32_t ulFSBlockSize; /**< --block-size */
|
|
uint32_t ulMaxFileSize; /**< --max */
|
|
uint32_t ulRandomReadPasses; /**< --rand-pass=r:w (r part) */
|
|
uint32_t ulRandomWritePasses; /**< --rand-pass=r:w (w part) */
|
|
uint32_t ulMixedWritePasses; /**< --mixed-pass */
|
|
int32_t iFlushOnWriteRatio; /**< --rand-fow */
|
|
uint32_t ulBufferMin; /**< --start */
|
|
uint32_t ulBufferSize; /**< --buffer-size */
|
|
bool fWriteVerify; /**< --verify */
|
|
uint32_t ulSampleRate; /**< --sample-rate */
|
|
uint32_t ulScanCount; /**< --scan-files */
|
|
uint64_t ullSeed; /**< --seed */
|
|
} FSIOTESTPARAM;
|
|
|
|
PARAMSTATUS FSIOTestParseParams(int argc, char *argv[], FSIOTESTPARAM *pParam, uint8_t *pbVolNum, const char **ppszDevice);
|
|
void FSIOTestDefaultParams(FSIOTESTPARAM *pParam);
|
|
int FSIOTestStart(const FSIOTESTPARAM *pParam);
|
|
#endif
|
|
|
|
#if BDEVTEST_SUPPORTED
|
|
typedef struct
|
|
{
|
|
uint8_t bDrvNum; /**< Volume number (for sector size/count). */
|
|
bool fSeqWrite; /**< --seq:w */
|
|
bool fSeqRead; /**< --seq:r */
|
|
bool fRandWrite; /**< --rand:w */
|
|
bool fRandRead; /**< --rand:r */
|
|
uint32_t ulSampleSecs; /**< --sample-rate */
|
|
uint32_t ulPasses; /**< --passes */
|
|
uint32_t ulMinIOSectors; /**< --count=min[:max] (min part) */
|
|
uint32_t ulMaxIOSectors; /**< --count=min[:max] (max part) */
|
|
uint32_t ulMaxSizeKB; /**< --max */
|
|
uint32_t ulTestSeconds; /**< --time */
|
|
bool fVerify; /**< --verify */
|
|
bool fAsyncWrites; /**< --async */
|
|
uint64_t ullSeed; /**< --seed */
|
|
} BDEVTESTPARAM;
|
|
|
|
PARAMSTATUS BDevTestParseParams(int argc, char *argv[], BDEVTESTPARAM *pParam, uint8_t *pbVolNum, const char **ppszDevice);
|
|
void BDevTestDefaultParams(BDEVTESTPARAM *pParam);
|
|
int BDevTestStart(const BDEVTESTPARAM *pParam);
|
|
#endif
|
|
|
|
#if DISKFULL_TEST_SUPPORTED
|
|
typedef struct
|
|
{
|
|
const char *pszVolume; /**< Volume path prefix. */
|
|
bool fQuitOnFailure; /**< --quit-on-failure */
|
|
bool fDebugErrors; /**< --debug */
|
|
} DISKFULLTESTPARAM;
|
|
|
|
PARAMSTATUS DiskFullTestParseParams(int argc, char *argv[], DISKFULLTESTPARAM *pParam, uint8_t *pbVolNum, const char **ppszDevice);
|
|
void DiskFullTestDefaultParams(DISKFULLTESTPARAM *pParam);
|
|
int DiskFullTestStart(const DISKFULLTESTPARAM *pParam);
|
|
#endif
|
|
|
|
|
|
#endif
|
|
|