Logger logs harness seed and test execution keys in hex representation.
authorMarkus Kauppila <markus.kauppila@gmail.com>
Mon, 25 Jul 2011 19:33:32 +0300
changeset 5783 236ed35e4b34
parent 5782 3e6c6c39f908
child 5784 676f4613ee14
Logger logs harness seed and test execution keys in hex representation.
test/test-automation/fuzzer/fuzzer.c
test/test-automation/fuzzer/fuzzer.h
test/test-automation/logger.h
test/test-automation/logger_helpers.c
test/test-automation/logger_helpers.h
test/test-automation/plain_logger.c
test/test-automation/plain_logger.h
test/test-automation/runner.c
test/test-automation/style.xsl
test/test-automation/testdummy/testdummy.c
test/test-automation/xml_logger.c
test/test-automation/xml_logger.h
--- a/test/test-automation/fuzzer/fuzzer.c	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/fuzzer/fuzzer.c	Mon Jul 25 19:33:32 2011 +0300
@@ -50,7 +50,7 @@
 
 	utl_crc32Calc(&crcContext, md5Context.digest, sizeof(md5Context.digest), &result);
 
-	return result;
+	return abs(result); // makes sure that the key is positive
 }
 
 void
@@ -135,7 +135,7 @@
 
 	int counter = 0;
 	for( ; counter < size; ++counter) {
-		char character = (char) RandomPositiveIntegerInRange(1, 127);
+		char character = (char) RandomIntegerInRange(1, 127);
 		string[counter] = character;
 	}
 
--- a/test/test-automation/fuzzer/fuzzer.h	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/fuzzer/fuzzer.h	Mon Jul 25 19:33:32 2011 +0300
@@ -55,6 +55,18 @@
 
 
 /*!
+ * todo add markup
+ */
+int RandomUint8BoundaryValue();
+
+
+/*!
+ * todo add markup
+ */
+int RandomInt8BoundaryValue();
+
+
+/*!
  * Returns integer in range [min, max]. Min and max
  * value can be negative values as long as min is smaller than max.
  * Min and max also can't be the same value.
@@ -91,18 +103,6 @@
 
 
 /*!
- * todo add markup
- */
-int RandomUint8BoundaryValue();
-
-
-/*!
- * todo add markup
- */
-int RandomInt8BoundaryValue();
-
-
-/*!
  * Generates execution key (used for random seed) for a test
  *
  * \param runSeed Seed of the harness
--- a/test/test-automation/logger.h	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/logger.h	Mon Jul 25 19:33:32 2011 +0300
@@ -28,7 +28,7 @@
  * logging interface. See the headers of implementations (plain_logger.h or
  * xml_logger.h) for more information.
  */
-typedef	void (*RunStartedFp)(int parameterCount, char *runnerParameters[], time_t eventTime, void *data);
+typedef	void (*RunStartedFp)(int parameterCount, char *runnerParameters[], char *runSeed, time_t eventTime, void *data);
 typedef	void (*RunEndedFp)(int testCount, int suiteCount, int testPassCount, int testFailCount,
                            int testSkippedCount, time_t endTime, double totalRuntime);
 
--- a/test/test-automation/logger_helpers.c	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/logger_helpers.c	Mon Jul 25 19:33:32 2011 +0300
@@ -4,7 +4,7 @@
 #include "logger_helpers.h"
 
 /*!
- * Helper functions. Turns the given integer in to a string
+ * Helper function. Turns the given integer in to a string
  *
  * Note: uses static buffer internally, so the return value
  * isn't valid after the next call of this function. If you
@@ -23,7 +23,27 @@
 }
 
 /*!
- * Helper functions. Turns the given double value in to a string
+ * Helper function. Turns the given integer in to a string in
+ * hex format.
+ *
+ * Note: uses static buffer internally, so the return value
+ * isn't valid after the next call of this function. If you
+ * want to retain the return value, make a copy of it
+ *
+ *  \param integer The converted integer
+ *  \returns Given integer as string in hex fomat
+ */
+char *IntToHexString(const int integer) {
+	static char buffer[256]; // malloc might work better
+	memset(buffer, 0, sizeof(buffer));
+
+	SDL_snprintf(buffer, sizeof(buffer), "%X", integer);
+
+	return buffer;
+}
+
+/*!
+ * Helper function. Turns the given double value in to a string
  *
  * Note: uses static buffer internally, so the return value
  * isn't valid after the next call of this function. If you
--- a/test/test-automation/logger_helpers.h	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/logger_helpers.h	Mon Jul 25 19:33:32 2011 +0300
@@ -5,6 +5,8 @@
 
 char *IntToString(const int integer);
 
+char *IntToHexString(const int integer);
+
 char *DoubleToString(const double decimal);
 
 char *TimestampToString(const time_t timestamp);
--- a/test/test-automation/plain_logger.c	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/plain_logger.c	Mon Jul 25 19:33:32 2011 +0300
@@ -37,10 +37,11 @@
 }
 
 void
-PlainRunStarted(int parameterCount, char *runnerParameters[], time_t eventTime,
-				void *data)
+PlainRunStarted(int parameterCount, char *runnerParameters[], char *runSeed,
+			    time_t eventTime, void *data)
 {
 	Output(indentLevel, "Test run started at %s", TimestampToString(eventTime));
+	Output(indentLevel, "Fuzzer seed is %s", runSeed);
 	Output(indentLevel, "Runner parameters: ");
 
 	int counter = 0;
@@ -83,7 +84,7 @@
 PlainTestStarted(const char *testName, const char *suiteName,
 				const char *testDescription, int execKey, time_t startTime)
 {
-	Output(indentLevel++, "Executing test: %s (in %s). Execution key: %d", testName, suiteName, execKey);
+	Output(indentLevel++, "Executing test: %s (in %s). Exec key: %X", testName, suiteName, execKey);
 }
 
 void
--- a/test/test-automation/plain_logger.h	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/plain_logger.h	Mon Jul 25 19:33:32 2011 +0300
@@ -8,12 +8,13 @@
  *
  * \param parameterCount How many parameters were given
  * \param runnerParameters What parameters were given to the runner
+ * \param runSeed Fuzzer seed of the harness
  * \param eventTime When the execution started
  * \param data Any additional data logger needs
  *
  */
-void PlainRunStarted(int parameterCount, char *runnerParameters[], time_t eventTime,
-					 void *data);
+void PlainRunStarted(int parameterCount, char *runnerParameters[], char *runSeed,
+					 time_t eventTime, void *data);
 
 /*!
  * Prints out information about ending the test run.
--- a/test/test-automation/runner.c	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/runner.c	Mon Jul 25 19:33:32 2011 +0300
@@ -1052,7 +1052,6 @@
 
 	// print: Testing against SDL version fuu (rev: bar) if verbose == true
 
-
 	char *testSuiteName = NULL;
 	int suiteCounter = 0;
 
@@ -1081,7 +1080,7 @@
 		return 0;
 	}
 
-	RunStarted(argc, argv, time(0), loggerData);
+	RunStarted(argc, argv, runSeed, time(0), loggerData);
 
 	if(execute_inproc && universal_timeout_enabled) {
 		Log(time(0), "Test timeout is not supported with in-proc execution.");
--- a/test/test-automation/style.xsl	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/style.xsl	Mon Jul 25 19:33:32 2011 +0300
@@ -169,8 +169,8 @@
   <h1>Test Report</h1>
   <div>
     <span class="title">Start time: </span><xsl:value-of select="testlog/startTime"/><br/>
-    <!-- and ended at <xsl:value-of select="testlog/endTime"/>.<br/>-->
     <span class="title">Total runtime: </span><xsl:value-of select="testlog/totalRuntime"/> seconds.<br/>
+    <span class="title">Fuzz seed: </span><xsl:value-of select="testlog/seed"/><br/>
     <span class="title">Harness parameters: </span>
 	<span xml:space="preserve">
       <xsl:for-each select="testlog/parameters/parameter">
@@ -184,7 +184,6 @@
       <span>Tests in total: </span> <xsl:value-of select="testlog/numTests"/> (passed: <xsl:value-of select="testlog/numPassedTests"/>, failed: <xsl:value-of select="testlog/numFailedTests"/>, skipped: <xsl:value-of select="testlog/numSkippedTests"/>)
     </div>
   </div>
-
   <div>
 	<br/>
 	<span class="bigtitle">Test Results</span><br/>
@@ -214,6 +213,7 @@
 			  	 (<xsl:value-of select="resultDescription"/>)  
 			  </span>
 			</xsl:if>
+			- exec-key: <xsl:value-of select="executionKey"/>
 			(Total runtime: <xsl:value-of select="totalRuntime"/> seconds)<br/>
 			Description: <span class="description"> <xsl:value-of select="description"/> </span><br/>
 		      <span class="switch show-asserts" uid="{generate-id(assertSummary)}">[Show Assert Summary]</span><br/>
@@ -242,6 +242,7 @@
 </body>
 </html>
 
+
 </xsl:template>
 </xsl:stylesheet>
 
--- a/test/test-automation/testdummy/testdummy.c	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/testdummy/testdummy.c	Mon Jul 25 19:33:32 2011 +0300
@@ -91,7 +91,7 @@
 {
 	AssertEquals(5, 5, "Assert message");
 
-	for(; 1 ;) {
+	for(; 0 ;) {
 		Log(0, "uint8: %d", RandomUint8BoundaryValue());
 		Log(0, "int8: %d", RandomInt8BoundaryValue());
 
@@ -100,7 +100,7 @@
 	for(; 0 ;) {
 		int min = -5;
 		int max = 5;
-		int random =  RandomPositiveIntegerInRange(min, max);
+		int random =  RandomIntegerInRange(min, max);
 		if(random < min || random > max ) {
 			AssertFail("Generated incorrect integer");
 		}
--- a/test/test-automation/xml_logger.c	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/xml_logger.c	Mon Jul 25 19:33:32 2011 +0300
@@ -35,6 +35,7 @@
 const char *parametersElementName = "parameters";
 const char *parameterElementName = "parameter";
 const char *startTimeElementName = "startTime";
+const char *seedElementName = "seed";
 const char *execKeyElementName = "executionKey";
 const char *numSuitesElementName = "numSuites";
 const char *numTestElementName = "numTests";
@@ -109,14 +110,15 @@
 }
 
 void
-XMLRunStarted(int parameterCount, char *runnerParameters[], time_t eventTime,
-			 void *data)
+XMLRunStarted(int parameterCount, char *runnerParameters[], char *runSeed,
+			 time_t eventTime, void *data)
 {
 	char *xslStylesheet = (char *)data;
 
 	char *output = XMLOpenDocument(documentRoot, xslStylesheet);
 	XMLOutputter(indentLevel++, YES, output);
 
+	// log harness parameters
 	output = XMLOpenElement(parametersElementName);
 	XMLOutputter(indentLevel++, YES, output);
 
@@ -137,6 +139,17 @@
 	output = XMLCloseElement(parametersElementName);
 	XMLOutputter(--indentLevel, YES, output);
 
+	// log seed
+	output = XMLOpenElement(seedElementName);
+	XMLOutputter(indentLevel++, NO, output);
+
+	output = XMLAddContent(runSeed);
+	XMLOutputter(indentLevel, NO, output);
+
+	output = XMLCloseElement(seedElementName);
+	XMLOutputter(--indentLevel, YES, output);
+
+	// log start time
 	output = XMLOpenElement(startTimeElementName);
 	XMLOutputter(indentLevel++, NO, output);
 
@@ -340,7 +353,7 @@
 	output = XMLOpenElement(execKeyElementName);
 	XMLOutputter(indentLevel++, NO, output);
 
-	output = XMLAddContent(IntToString(execKey));
+	output = XMLAddContent(IntToHexString(execKey));
 	XMLOutputter(indentLevel, NO, output);
 
 	output = XMLCloseElement(execKeyElementName);
--- a/test/test-automation/xml_logger.h	Mon Jul 25 18:51:57 2011 +0300
+++ b/test/test-automation/xml_logger.h	Mon Jul 25 19:33:32 2011 +0300
@@ -8,10 +8,12 @@
  *
  * \param parameterCount How many parameters were given
  * \param runnerParameters What parameters were given to the runner
+ * \param runSeed Fuzzer seed of the harness
  * \param eventTime When the execution started
  * \param data Any additional data logger needs
  */
-void XMLRunStarted(int parameterCount, char *runnerParameters[], time_t eventTime, void *data);
+void XMLRunStarted(int parameterCount, char *runnerParameters[], char *runSeed,
+					time_t eventTime, void *data);
 
 /*!
  * Prints out information about ending the test run in XML