mirror of
https://github.com/facebook/zstd.git
synced 2025-07-30 22:23:13 +03:00
added --memtest=# command to fuzzer
to jump directly to relevant test section
This commit is contained in:
@ -139,7 +139,7 @@ static void FUZ_freeDebug(void* counter, void* address)
|
|||||||
|
|
||||||
static void FUZ_displayMallocStats(mallocCounter_t count)
|
static void FUZ_displayMallocStats(mallocCounter_t count)
|
||||||
{
|
{
|
||||||
DISPLAYLEVEL(3, "peak:%u KB, nbMallocs:%u, total:%u KB \n",
|
DISPLAYLEVEL(3, "peak:%6u KB, nbMallocs:%2u, total:%6u KB \n",
|
||||||
(U32)(count.peakMalloc >> 10),
|
(U32)(count.peakMalloc >> 10),
|
||||||
count.nbMalloc,
|
count.nbMalloc,
|
||||||
(U32)(count.totalMalloc >> 10));
|
(U32)(count.totalMalloc >> 10));
|
||||||
@ -153,7 +153,7 @@ static void FUZ_displayMallocStats(mallocCounter_t count)
|
|||||||
exit(1); \
|
exit(1); \
|
||||||
} }
|
} }
|
||||||
|
|
||||||
static int FUZ_mallocTests(unsigned seed, double compressibility)
|
static int FUZ_mallocTests(unsigned seed, double compressibility, unsigned part)
|
||||||
{
|
{
|
||||||
size_t const inSize = 64 MB + 16 MB + 4 MB + 1 MB + 256 KB + 64 KB; /* 85.3 MB */
|
size_t const inSize = 64 MB + 16 MB + 4 MB + 1 MB + 256 KB + 64 KB; /* 85.3 MB */
|
||||||
size_t const outSize = ZSTD_compressBound(inSize);
|
size_t const outSize = ZSTD_compressBound(inSize);
|
||||||
@ -171,6 +171,7 @@ static int FUZ_mallocTests(unsigned seed, double compressibility)
|
|||||||
RDG_genBuffer(inBuffer, inSize, compressibility, 0. /*auto*/, seed);
|
RDG_genBuffer(inBuffer, inSize, compressibility, 0. /*auto*/, seed);
|
||||||
|
|
||||||
/* simple compression tests */
|
/* simple compression tests */
|
||||||
|
if (part <= 1)
|
||||||
{ int compressionLevel;
|
{ int compressionLevel;
|
||||||
for (compressionLevel=1; compressionLevel<=6; compressionLevel++) {
|
for (compressionLevel=1; compressionLevel<=6; compressionLevel++) {
|
||||||
mallocCounter_t malcount = INIT_MALLOC_COUNTER;
|
mallocCounter_t malcount = INIT_MALLOC_COUNTER;
|
||||||
@ -183,6 +184,7 @@ static int FUZ_mallocTests(unsigned seed, double compressibility)
|
|||||||
} }
|
} }
|
||||||
|
|
||||||
/* streaming compression tests */
|
/* streaming compression tests */
|
||||||
|
if (part <= 2)
|
||||||
{ int compressionLevel;
|
{ int compressionLevel;
|
||||||
for (compressionLevel=1; compressionLevel<=6; compressionLevel++) {
|
for (compressionLevel=1; compressionLevel<=6; compressionLevel++) {
|
||||||
mallocCounter_t malcount = INIT_MALLOC_COUNTER;
|
mallocCounter_t malcount = INIT_MALLOC_COUNTER;
|
||||||
@ -199,6 +201,7 @@ static int FUZ_mallocTests(unsigned seed, double compressibility)
|
|||||||
} }
|
} }
|
||||||
|
|
||||||
/* advanced MT API test */
|
/* advanced MT API test */
|
||||||
|
if (part <= 3)
|
||||||
{ U32 nbThreads;
|
{ U32 nbThreads;
|
||||||
for (nbThreads=1; nbThreads<=4; nbThreads++) {
|
for (nbThreads=1; nbThreads<=4; nbThreads++) {
|
||||||
int compressionLevel;
|
int compressionLevel;
|
||||||
@ -218,6 +221,7 @@ static int FUZ_mallocTests(unsigned seed, double compressibility)
|
|||||||
} } }
|
} } }
|
||||||
|
|
||||||
/* advanced MT streaming API test */
|
/* advanced MT streaming API test */
|
||||||
|
if (part <= 4)
|
||||||
{ U32 nbThreads;
|
{ U32 nbThreads;
|
||||||
for (nbThreads=1; nbThreads<=4; nbThreads++) {
|
for (nbThreads=1; nbThreads<=4; nbThreads++) {
|
||||||
int compressionLevel;
|
int compressionLevel;
|
||||||
@ -1442,6 +1446,19 @@ static unsigned readU32FromChar(const char** stringPtr)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** longCommandWArg() :
|
||||||
|
* check if *stringPtr is the same as longCommand.
|
||||||
|
* If yes, @return 1 and advances *stringPtr to the position which immediately follows longCommand.
|
||||||
|
* @return 0 and doesn't modify *stringPtr otherwise.
|
||||||
|
*/
|
||||||
|
static unsigned longCommandWArg(const char** stringPtr, const char* longCommand)
|
||||||
|
{
|
||||||
|
size_t const comSize = strlen(longCommand);
|
||||||
|
int const result = !strncmp(*stringPtr, longCommand, comSize);
|
||||||
|
if (result) *stringPtr += comSize;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, const char** argv)
|
int main(int argc, const char** argv)
|
||||||
{
|
{
|
||||||
U32 seed = 0;
|
U32 seed = 0;
|
||||||
@ -1465,6 +1482,8 @@ int main(int argc, const char** argv)
|
|||||||
/* Handle commands. Aggregated commands are allowed */
|
/* Handle commands. Aggregated commands are allowed */
|
||||||
if (argument[0]=='-') {
|
if (argument[0]=='-') {
|
||||||
|
|
||||||
|
if (longCommandWArg(&argument, "--memtest=")) { memTestsOnly = readU32FromChar(&argument); continue; }
|
||||||
|
|
||||||
if (!strcmp(argument, "--memtest")) { memTestsOnly=1; continue; }
|
if (!strcmp(argument, "--memtest")) { memTestsOnly=1; continue; }
|
||||||
if (!strcmp(argument, "--no-big-tests")) { bigTests=0; continue; }
|
if (!strcmp(argument, "--no-big-tests")) { bigTests=0; continue; }
|
||||||
|
|
||||||
@ -1539,7 +1558,7 @@ int main(int argc, const char** argv)
|
|||||||
|
|
||||||
if (memTestsOnly) {
|
if (memTestsOnly) {
|
||||||
g_displayLevel = MAX(3, g_displayLevel);
|
g_displayLevel = MAX(3, g_displayLevel);
|
||||||
return FUZ_mallocTests(seed, ((double)proba) / 100);
|
return FUZ_mallocTests(seed, ((double)proba) / 100, memTestsOnly);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nbTests < testNb) nbTests = testNb;
|
if (nbTests < testNb) nbTests = testNb;
|
||||||
|
Reference in New Issue
Block a user