]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Test: better random u64 generator
authorMaria Matejka <mq@ucw.cz>
Tue, 9 Jul 2019 12:34:26 +0000 (14:34 +0200)
committerMaria Matejka <mq@ucw.cz>
Tue, 9 Jul 2019 12:37:14 +0000 (14:37 +0200)
test/birdtest.c
test/birdtest.h

index 823b02ff616c78564c0b75279888b7edd833f9d5..d503890a135eefda19c4a60a009f340221e6580e 100644 (file)
@@ -43,23 +43,17 @@ int bt_result;                      /* Overall program run result */
 int bt_suite_result;           /* One suit result */
 char bt_out_fmt_buf[1024];     /* Temporary memory buffer for output of testing function */
 
-long int
-bt_random(void)
-{
-  /* Seeded in bt_init() */
-  long int rand_low, rand_high;
-
-  rand_low = random();
-  rand_high = random();
-  return (rand_low & 0xffff) | ((rand_high & 0xffff) << 16);
-}
+u64 bt_random_state[] = {
+  0x80241f302bd4d95d, 0xd10ba2e910f772b, 0xea188c9046f507c5, 0x4c4c581f04e6da05,
+  0x53d9772877c1b647, 0xab8ce3eb466de6c5, 0xad02844c8a8e865f, 0xe8cc78080295065d
+};
 
 void
 bt_init(int argc, char *argv[])
 {
   int c;
 
-  srandom(BT_RANDOM_SEED);
+  initstate(BT_RANDOM_SEED, (char *) bt_random_state, sizeof(bt_random_state));
 
   bt_verbose = 0;
   bt_filename = argv[0];
index 4443bfc1c865a62124063748b6cad76455e81ec6..b2d572d0d8bcfbcaa2e79622af22b8744fc68860 100644 (file)
@@ -33,7 +33,8 @@ extern const char *bt_test_id;
 void bt_init(int argc, char *argv[]);
 int  bt_exit_value(void);
 int bt_test_suite_base(int (*test_fn)(const void *), const char *test_id, const void *test_fn_argument, int forked, int timeout, const char *dsc, ...);
-long int bt_random(void);
+static inline u64 bt_random(void)
+{ return ((u64) random() & 0xffffffff) | ((u64) random() << 32); }
 
 void bt_log_suite_result(int result, const char *fmt, ...);
 void bt_log_suite_case_result(int result, const char *fmt, ...);
@@ -41,7 +42,7 @@ void bt_log_suite_case_result(int result, const char *fmt, ...);
 #define BT_TIMEOUT                     5       /* Default timeout in seconds */
 #define BT_FORKING                     1       /* Forking is enabled in default */
 
-#define BT_RANDOM_SEED                         982451653
+#define BT_RANDOM_SEED                         0x5097d2bb
 
 #define BT_BUFFER_SIZE                         10000