Commit 77405acd authored by Markus Kauppila's avatar Markus Kauppila

Fixed harness seed generation based on CR.

Fixed a bug from SetUpLogger() function.
parent be0b32e4
...@@ -38,7 +38,7 @@ typedef struct LoggerData { ...@@ -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 @@ ...@@ -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]; ...@@ -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; ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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() ...@@ -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() ...@@ -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() ...@@ -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() ...@@ -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[]) ...@@ -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[]) ...@@ -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[]) ...@@ -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) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment