Fixed harness seed generation based on CR.
Fixed a bug from SetUpLogger() function.
This commit is contained in:
parent
be0b32e441
commit
77405acdd9
2 changed files with 40 additions and 38 deletions
|
@ -38,7 +38,7 @@ typedef struct LoggerData {
|
||||||
//!< Logging level of the logger (such as VERBOSE)
|
//!< Logging level of the logger (such as VERBOSE)
|
||||||
Level level;
|
Level level;
|
||||||
//!< Some custom data that a logger needs
|
//!< Some custom data that a logger needs
|
||||||
void *custom;
|
char *custom;
|
||||||
} LoggerData;
|
} LoggerData;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
|
|
||||||
#include "fuzzer/fuzzer.h"
|
#include "fuzzer/fuzzer.h"
|
||||||
|
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "SDL_test.h"
|
#include "SDL_test.h"
|
||||||
|
@ -94,6 +93,7 @@ char testcase_name_substring[NAME_BUFFER_SIZE];
|
||||||
|
|
||||||
//! Name for user-supplied XSL style sheet name
|
//! Name for user-supplied XSL style sheet name
|
||||||
char xsl_stylesheet_name[NAME_BUFFER_SIZE];
|
char xsl_stylesheet_name[NAME_BUFFER_SIZE];
|
||||||
|
|
||||||
//! User-suppled timeout value for tests
|
//! User-suppled timeout value for tests
|
||||||
int universal_timeout = -1;
|
int universal_timeout = -1;
|
||||||
|
|
||||||
|
@ -106,11 +106,9 @@ int universal_timeout = -1;
|
||||||
//! Default directory of the test suites
|
//! Default directory of the test suites
|
||||||
#define DEFAULT_LOG_FILENAME "runner"
|
#define DEFAULT_LOG_FILENAME "runner"
|
||||||
|
|
||||||
|
|
||||||
//! Fuzzer seed for the harness
|
//! Fuzzer seed for the harness
|
||||||
char *runSeed = NULL;
|
char *runSeed = NULL;
|
||||||
|
|
||||||
|
|
||||||
//! Variable is used to pass the generated execution key to a test
|
//! Variable is used to pass the generated execution key to a test
|
||||||
int globalExecKey = 0;
|
int globalExecKey = 0;
|
||||||
|
|
||||||
|
@ -845,7 +843,8 @@ HandleChildProcessReturnValue(int stat_lock)
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Generates a random run seed for the harness.
|
* Generates a random run seed for the harness. Seed
|
||||||
|
* can contain characters 0-9A-Z
|
||||||
*
|
*
|
||||||
* \param length The length of the generated seed
|
* \param length The length of the generated seed
|
||||||
*
|
*
|
||||||
|
@ -859,7 +858,7 @@ GenerateRunSeed(const int length)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *seed = SDL_malloc(length * sizeof(8));
|
char *seed = SDL_malloc((length + 1) * sizeof(char));
|
||||||
if(seed == NULL) {
|
if(seed == NULL) {
|
||||||
fprintf(stderr, "Error: malloc for run seed failed\n");
|
fprintf(stderr, "Error: malloc for run seed failed\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -870,19 +869,13 @@ GenerateRunSeed(const int length)
|
||||||
utl_randomInitTime(&randomContext);
|
utl_randomInitTime(&randomContext);
|
||||||
|
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
for( ; counter < length; ++counter) {
|
for( ; counter < length - 1; ++counter) {
|
||||||
int number = abs(utl_random(&randomContext));
|
int number = abs(utl_random(&randomContext));
|
||||||
char ch = (char) (number % (122 - 48)) + 48;
|
char ch = (char) (number % (91 - 48)) + 48;
|
||||||
|
|
||||||
// Skip all the special characters so the run seed
|
|
||||||
// can be used to form a valid filename.
|
|
||||||
// A lot more characters are skipped than necessary.
|
|
||||||
if(ch >= 58 && ch <= 64) {
|
if(ch >= 58 && ch <= 64) {
|
||||||
ch = 65;
|
ch = 65;
|
||||||
}
|
}
|
||||||
if(ch >= 91 && ch <= 96) {
|
|
||||||
ch = 97;
|
|
||||||
}
|
|
||||||
|
|
||||||
seed[counter] = ch;
|
seed[counter] = ch;
|
||||||
}
|
}
|
||||||
|
@ -897,10 +890,10 @@ GenerateRunSeed(const int length)
|
||||||
*
|
*
|
||||||
* \return Logger data structure (that needs be deallocated)
|
* \return Logger data structure (that needs be deallocated)
|
||||||
*/
|
*/
|
||||||
void *
|
LoggerData *
|
||||||
SetUpLogger()
|
SetUpLogger()
|
||||||
{
|
{
|
||||||
LoggerData *loggerData = SDL_malloc(sizeof(loggerData));
|
LoggerData *loggerData = SDL_malloc(sizeof(LoggerData));
|
||||||
if(loggerData == NULL) {
|
if(loggerData == NULL) {
|
||||||
fprintf(stderr, "Error: Logger data structure not allocated.");
|
fprintf(stderr, "Error: Logger data structure not allocated.");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -913,7 +906,9 @@ SetUpLogger()
|
||||||
loggerData->stdoutEnabled = 1;
|
loggerData->stdoutEnabled = 1;
|
||||||
loggerData->filename = NULL;
|
loggerData->filename = NULL;
|
||||||
} else {
|
} else {
|
||||||
const char *extension = (xml_enabled ? "xml": "log");
|
loggerData->stdoutEnabled = 0;
|
||||||
|
|
||||||
|
const char *extension = (xml_enabled ? "xml" : "log");
|
||||||
|
|
||||||
/* Combine and create directory for log file */
|
/* Combine and create directory for log file */
|
||||||
// log_directory + log_basename + seed + . + type
|
// log_directory + log_basename + seed + . + type
|
||||||
|
@ -927,7 +922,8 @@ SetUpLogger()
|
||||||
mkdir(log_directory, mode);
|
mkdir(log_directory, mode);
|
||||||
|
|
||||||
// couple of extras bytes for '/', '-', '.' and '\0' at the end
|
// couple of extras bytes for '/', '-', '.' and '\0' at the end
|
||||||
const int length = directoryLength + basenameLength +seedLength +extensionLength + 4;
|
const int length = directoryLength + basenameLength + seedLength
|
||||||
|
+ extensionLength + 4;
|
||||||
char *filename = SDL_malloc(length);
|
char *filename = SDL_malloc(length);
|
||||||
if(filename == NULL) {
|
if(filename == NULL) {
|
||||||
SDL_free(loggerData);
|
SDL_free(loggerData);
|
||||||
|
@ -935,12 +931,27 @@ SetUpLogger()
|
||||||
fprintf(stderr, "Error: Failed to allocate memory for filename of log");
|
fprintf(stderr, "Error: Failed to allocate memory for filename of log");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
memset(filename, 0, length);
|
||||||
|
|
||||||
SDL_snprintf(filename, length, "%s/%s-%s.%s", log_directory, log_basename, runSeed, extension);
|
SDL_snprintf(filename, length, "%s/%s-%s.%s", log_directory, log_basename,
|
||||||
|
runSeed, extension);
|
||||||
|
|
||||||
loggerData->filename = filename;
|
loggerData->filename = filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(xml_enabled) {
|
||||||
|
char *sheet = NULL;
|
||||||
|
if(xsl_enabled) {
|
||||||
|
sheet = "style.xsl"; // default style sheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(custom_xsl_enabled) {
|
||||||
|
sheet = xsl_stylesheet_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
loggerData->custom = sheet;
|
||||||
|
}
|
||||||
|
|
||||||
if(xml_enabled) {
|
if(xml_enabled) {
|
||||||
RunStarted = XMLRunStarted;
|
RunStarted = XMLRunStarted;
|
||||||
RunEnded = XMLRunEnded;
|
RunEnded = XMLRunEnded;
|
||||||
|
@ -956,17 +967,6 @@ SetUpLogger()
|
||||||
AssertSummary = XMLAssertSummary;
|
AssertSummary = XMLAssertSummary;
|
||||||
|
|
||||||
Log = XMLLog;
|
Log = XMLLog;
|
||||||
|
|
||||||
char *sheet = NULL;
|
|
||||||
if(xsl_enabled) {
|
|
||||||
sheet = "style.xsl"; // default style sheet;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(custom_xsl_enabled) {
|
|
||||||
sheet = xsl_stylesheet_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
loggerData->custom = sheet;
|
|
||||||
} else {
|
} else {
|
||||||
RunStarted = PlainRunStarted;
|
RunStarted = PlainRunStarted;
|
||||||
RunEnded = PlainRunEnded;
|
RunEnded = PlainRunEnded;
|
||||||
|
@ -1236,6 +1236,8 @@ main(int argc, char *argv[])
|
||||||
memset(selected_test_name, 0, NAME_BUFFER_SIZE);
|
memset(selected_test_name, 0, NAME_BUFFER_SIZE);
|
||||||
memset(selected_suite_name, 0, NAME_BUFFER_SIZE);
|
memset(selected_suite_name, 0, NAME_BUFFER_SIZE);
|
||||||
memset(testcase_name_substring, 0, NAME_BUFFER_SIZE);
|
memset(testcase_name_substring, 0, NAME_BUFFER_SIZE);
|
||||||
|
memset(xsl_stylesheet_name, 0, NAME_BUFFER_SIZE);
|
||||||
|
|
||||||
|
|
||||||
ParseOptions(argc, argv);
|
ParseOptions(argc, argv);
|
||||||
|
|
||||||
|
@ -1248,14 +1250,6 @@ main(int argc, char *argv[])
|
||||||
char *extension = "dylib";
|
char *extension = "dylib";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(userRunSeed == 0) {
|
|
||||||
runSeed = GenerateRunSeed(16);
|
|
||||||
if(runSeed == NULL) {
|
|
||||||
fprintf(stderr, "Error: Generating harness seed failed\n");
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const Uint32 startTicks = SDL_GetTicks();
|
const Uint32 startTicks = SDL_GetTicks();
|
||||||
|
|
||||||
TestSuiteReference *suites = ScanForTestSuites(DEFAULT_TEST_DIRECTORY, extension);
|
TestSuiteReference *suites = ScanForTestSuites(DEFAULT_TEST_DIRECTORY, extension);
|
||||||
|
@ -1283,6 +1277,14 @@ main(int argc, char *argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(userRunSeed == 0) {
|
||||||
|
runSeed = GenerateRunSeed(16);
|
||||||
|
if(runSeed == NULL) {
|
||||||
|
fprintf(stderr, "Error: Generating harness seed failed\n");
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LoggerData *loggerData = SetUpLogger();
|
LoggerData *loggerData = SetUpLogger();
|
||||||
|
|
||||||
if(log_stdout_enabled == 0) {
|
if(log_stdout_enabled == 0) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue