[8/8] stress-test: correct all remaining bugs.

Submitted by bansan85 on Dec. 13, 2017, 7:41 p.m.

Details

Message ID 20171213194139.19359-8-legarrec.vincent@gmail.com
State New
Headers show
Series "Series without cover letter" ( rev: 1 ) in Pixman

Not browsing as part of any series.

Commit Message

bansan85 Dec. 13, 2017, 7:41 p.m.
---
 test/stress-test.c | 20 +++++++++++++++-----
 test/utils-prng.c  | 24 +++++++++++++++++-------
 test/utils-prng.h  | 11 +++++------
 3 files changed, 37 insertions(+), 18 deletions(-)

Patch hide | download patch | download mbox

diff --git a/test/stress-test.c b/test/stress-test.c
index d997f1b..9626786 100644
--- a/test/stress-test.c
+++ b/test/stress-test.c
@@ -1020,6 +1020,7 @@  main (int argc, char **argv)
 	else if (strcmp (argv[i], "-f") == 0 && i + 1 < argc)
 	{
 	    FILE *file = fopen(argv[i + 1], "rb");
+	    size_t fread_len;
 
 	    if (!file)
 	    {
@@ -1032,11 +1033,18 @@  main (int argc, char **argv)
 	    size_data = ftell (file);
 
 	    /* Allocate and load memory */
-	    random_data = malloc (fileLen);
-	    fread (random_data, fileLen, 1, file);
+	    random_data = malloc (sizeof(char) * size_data);
+	    rewind (file);
+	    fread_len = fread (random_data, 1, size_data, file);
+	    if (fread_len != size_data)
+	    {
+		fprintf(stderr, "Failed to read %zu bytes in file %s : (%zu)\n",
+			size_data, argv[i + 1], fread_len);
+		exit (-1);
+	    }
 	    fclose (file);
 
-	    n_tests = 0;
+	    n_tests = 1;
 
 	    i++;
 	}
@@ -1047,8 +1055,8 @@  main (int argc, char **argv)
 
 	    printf ("Options:\n\n"
 		    "-n <number>        Number of tests to run\n"
-		    "-s <seed> 	        Seed of first test (ignored if PIXMAN_RANDOMIZE_TESTS is set)\n"
-		    "-f <file> 	        Use a file as random data. Not with -n and -s.\n"
+		    "-s <seed>          Seed of first test (ignored if PIXMAN_RANDOMIZE_TESTS is set)\n"
+		    "-f <file>          Use a file as random data. Not with -n and -s.\n"
 		    "-v                 Print out seeds\n"
 		    "-v <n>             Print out every n'th seed\n\n");
 
@@ -1076,5 +1084,7 @@  main (int argc, char **argv)
 	    run_test (seed + i, verbose, mod);
     }
 
+    free (random_data);
+
     return 0;
 }
diff --git a/test/utils-prng.c b/test/utils-prng.c
index 0981f12..bd59afe 100644
--- a/test/utils-prng.c
+++ b/test/utils-prng.c
@@ -31,7 +31,7 @@ 
 #include <xmmintrin.h>
 #endif
 
-const uint8_t *random_data;
+uint8_t *random_data;
 size_t size_data;
 size_t running_data;
 
@@ -69,14 +69,24 @@  void prng_srand_r (prng_t *x, uint32_t seed)
         x->b[3] = x->c[3] = x->d[3] = (seed = seed * 1103515245 + 12345);
         for (i = 0; i < 20; ++i)
             prng_rand_128_r (x, &dummy);
-        return;
     }
+    else
+    {
+        /* Hugly hack */
+        smallprng_srand_r (&x->p0, get_rand_data_32 ());
+        smallprng_srand_r ((smallprng_t *)&x->a, get_rand_data_32 ());
+        smallprng_srand_r ((smallprng_t *)&x->b, get_rand_data_32 ());
+        smallprng_srand_r ((smallprng_t *)&x->c, get_rand_data_32 ());
+        smallprng_srand_r ((smallprng_t *)&x->d, get_rand_data_32 ());
+    }
+    return;
+#else
+    smallprng_srand_r (&x->p0, get_rand_data_32 ());
+    smallprng_srand_r (&x->p1, get_rand_data_32 ());
+    smallprng_srand_r (&x->p2, get_rand_data_32 ());
+    smallprng_srand_r (&x->p3, get_rand_data_32 ());
+    smallprng_srand_r (&x->p4, get_rand_data_32 ());
 #endif
-    smallprng_srand_r (&x->p0, seed);
-    smallprng_srand_r (&x->p1, (seed = seed * 1103515245 + 12345));
-    smallprng_srand_r (&x->p2, (seed = seed * 1103515245 + 12345));
-    smallprng_srand_r (&x->p3, (seed = seed * 1103515245 + 12345));
-    smallprng_srand_r (&x->p4, (seed = seed * 1103515245 + 12345));
 }
 
 static force_inline void
diff --git a/test/utils-prng.h b/test/utils-prng.h
index cb36517..4f1ecf0 100644
--- a/test/utils-prng.h
+++ b/test/utils-prng.h
@@ -80,7 +80,7 @@ 
 /*****************************************************************************/
 
 /* Used if random data from file. */
-extern const uint8_t *random_data;
+extern uint8_t *random_data;
 extern size_t size_data;
 extern size_t running_data;
 
@@ -102,7 +102,6 @@  typedef struct
     smallprng_t p1, p2, p3, p4;
 #endif
     smallprng_t p0;
-#else
 } prng_t;
 
 typedef union
@@ -130,10 +129,10 @@  get_rand_data_32 ()
 {
     /* Do not use 4 get_rand_data_8 () in the same line
      * to be sure of the execution order. */
-    uint8_t un = get_rand_data_8();
-    uint8_t deux = get_rand_data_8();
-    uint8_t trois = get_rand_data_8();
-    uint8_t quatre = get_rand_data_8();
+    uint8_t un = get_rand_data_8 ();
+    uint8_t deux = get_rand_data_8 ();
+    uint8_t trois = get_rand_data_8 ();
+    uint8_t quatre = get_rand_data_8 ();
     return (un << 24) + (deux << 16) + (trois << 8) + (quatre);
 }