Added randomly generated harness seed.

This commit is contained in:
Markus Kauppila 2011-07-27 18:37:47 +03:00
parent e769714114
commit b4a88b8bef
2 changed files with 55 additions and 4 deletions

View file

@ -74,6 +74,8 @@ static int xsl_enabled = 0;
static int universal_timeout_enabled = 0;
//! Flag for enabling verbose logging
static int enable_verbose_logger = 0;
//! Flag for using user supplied run seed
static int userRunSeed = 0;
//!< Size of the test and suite name buffers
@ -94,15 +96,20 @@ int universal_timeout = -1;
//! Default directory of the test suites
#define DEFAULT_TEST_DIRECTORY "tests/"
char *globalExecKey = NULL;
char *runSeed = "seed";
//! Fuzzer seed for the harness
char *runSeed = NULL;
//! Variable is used to pass the generated execution key to a test
char *globalExecKey = NULL;
//! Execution key that user supplied via command options
char *userExecKey = NULL;
//! How man time a test will be invocated
int testInvocationCount = 1;
// \todo move this upper!! (and add comments)
// \todo add comments
int totalTestFailureCount = 0, totalTestPassCount = 0, totalTestSkipCount = 0;
int testFailureCount = 0, testPassCount = 0, testSkipCount = 0;
@ -804,6 +811,40 @@ HandleChildProcessReturnValue(int stat_lock)
}
/*!
* Generates a random run seed for the harness.
*
* \param length The length of the generated seed
*
* \returns The generated seed
*/
char *
GenerateRunSeed(const int length)
{
if(length <= 0) {
fprintf(stderr, "Error: lenght of harness seed can't be less than zero\n");
return NULL;
}
char *seed = SDL_malloc(length * sizeof(8));
if(seed == NULL) {
fprintf(stderr, "Error: malloc for run seed failed\n");
return NULL;
}
RND_CTX randomContext;
utl_randomInitTime(&randomContext);
int counter = 0;
for( ; counter < length; ++counter) {
int number = abs(utl_random(&randomContext));
seed[counter] = (char) (number % (127-34)) + 34;
}
return seed;
}
/*!
* Sets up the logger.
*
@ -943,6 +984,8 @@ ParseOptions(int argc, char *argv[])
universal_timeout = atoi(timeoutString);
}
else if(SDL_strcmp(arg, "--seed") == 0) {
userRunSeed = 1;
if( (i + 1) < argc) {
runSeed = argv[++i];
} else {
@ -1077,6 +1120,14 @@ main(int argc, char *argv[])
char *extension = "dylib";
#endif
if(userRunSeed == 0) {
runSeed = GenerateRunSeed(16);
if(runSeed == NULL) {
fprintf(stderr, "Error: Generating harness seed failed\n");
return 1;
}
}
LoggerData *loggerData = SetUpLogger();
const Uint32 startTicks = SDL_GetTicks();