[PATCH] tests: use g_test_rand_int

Paolo Bonzini posted 1 patch 4 years, 4 months ago
Test asan failed
Test checkpatch failed
Test FreeBSD failed
Test docker-mingw@fedora failed
Test docker-clang@ubuntu failed
Test docker-quick@centos7 failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1576074210-52834-6-git-send-email-pbonzini@redhat.com
Maintainers: Fam Zheng <fam@euphon.net>, Jeff Cody <codyprime@gmail.com>, Kevin Wolf <kwolf@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Michael Roth <mdroth@linux.vnet.ibm.com>, Thomas Huth <thuth@redhat.com>, Max Reitz <mreitz@redhat.com>
There is a newer version of this series
block/vhdx.c         | 2 +-
block/vmdk.c         | 4 ++--
tests/ivshmem-test.c | 2 +-
tests/test-bitmap.c  | 8 ++++----
tests/test-qga.c     | 4 ++--
5 files changed, 10 insertions(+), 10 deletions(-)
[PATCH] tests: use g_test_rand_int
Posted by Paolo Bonzini 4 years, 4 months ago
g_test_rand_int provides a reproducible random integer number, using a
different number seed every time but allowing reproduction using the
--seed command line option.  It is thus better suited to tests than
g_random_int or random.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 block/vhdx.c         | 2 +-
 block/vmdk.c         | 4 ++--
 tests/ivshmem-test.c | 2 +-
 tests/test-bitmap.c  | 8 ++++----
 tests/test-qga.c     | 4 ++--
 5 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/block/vhdx.c b/block/vhdx.c
index f02d261..36465d5 100644
--- a/block/vhdx.c
+++ b/block/vhdx.c
@@ -1504,7 +1504,7 @@ static int vhdx_create_new_headers(BlockBackend *blk, uint64_t image_size,
     hdr = g_new0(VHDXHeader, 1);
 
     hdr->signature       = VHDX_HEADER_SIGNATURE;
-    hdr->sequence_number = g_random_int();
+    hdr->sequence_number = g_test_rand_int();
     hdr->log_version     = 0;
     hdr->version         = 1;
     hdr->log_length      = log_size;
diff --git a/block/vmdk.c b/block/vmdk.c
index 20e909d..eba96bf 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -2037,7 +2037,7 @@ static int vmdk_pwritev(BlockDriverState *bs, uint64_t offset,
         /* update CID on the first write every time the virtual disk is
          * opened */
         if (!s->cid_updated) {
-            ret = vmdk_write_cid(bs, g_random_int());
+            ret = vmdk_write_cid(bs, g_test_rand_int());
             if (ret < 0) {
                 return ret;
             }
@@ -2499,7 +2499,7 @@ static int coroutine_fn vmdk_co_do_create(int64_t size,
 
     /* generate descriptor file */
     desc = g_strdup_printf(desc_template,
-                           g_random_int(),
+                           g_test_rand_int(),
                            parent_cid,
                            BlockdevVmdkSubformat_str(subformat),
                            parent_desc_line,
diff --git a/tests/ivshmem-test.c b/tests/ivshmem-test.c
index be9aa92..ecda256 100644
--- a/tests/ivshmem-test.c
+++ b/tests/ivshmem-test.c
@@ -443,7 +443,7 @@ static gchar *mktempshm(int size, int *fd)
     while (true) {
         gchar *name;
 
-        name = g_strdup_printf("/qtest-%u-%u", getpid(), g_random_int());
+        name = g_strdup_printf("/qtest-%u-%u", getpid(), g_test_rand_int());
         *fd = shm_open(name, O_CREAT|O_RDWR|O_EXCL,
                        S_IRWXU|S_IRWXG|S_IRWXO);
         if (*fd > 0) {
diff --git a/tests/test-bitmap.c b/tests/test-bitmap.c
index 087e02a..2f5b714 100644
--- a/tests/test-bitmap.c
+++ b/tests/test-bitmap.c
@@ -22,10 +22,10 @@ static void check_bitmap_copy_with_offset(void)
     bmap2 = bitmap_new(BMAP_SIZE);
     bmap3 = bitmap_new(BMAP_SIZE);
 
-    bmap1[0] = random();
-    bmap1[1] = random();
-    bmap1[2] = random();
-    bmap1[3] = random();
+    bmap1[0] = g_test_rand_int();
+    bmap1[1] = g_test_rand_int();
+    bmap1[2] = g_test_rand_int();
+    bmap1[3] = g_test_rand_int();
     total = BITS_PER_LONG * 4;
 
     /* Shift 115 bits into bmap2 */
diff --git a/tests/test-qga.c b/tests/test-qga.c
index 1ca49bb..d2b2435 100644
--- a/tests/test-qga.c
+++ b/tests/test-qga.c
@@ -143,7 +143,7 @@ static void qmp_assertion_message_error(const char     *domain,
 static void test_qga_sync_delimited(gconstpointer fix)
 {
     const TestFixture *fixture = fix;
-    guint32 v, r = g_random_int();
+    guint32 v, r = g_test_rand_int();
     unsigned char c;
     QDict *ret;
 
@@ -186,7 +186,7 @@ static void test_qga_sync_delimited(gconstpointer fix)
 static void test_qga_sync(gconstpointer fix)
 {
     const TestFixture *fixture = fix;
-    guint32 v, r = g_random_int();
+    guint32 v, r = g_test_rand_int();
     QDict *ret;
 
     /*
-- 
1.8.3.1


Re: [PATCH] tests: use g_test_rand_int
Posted by Thomas Huth 4 years, 4 months ago
On 11/12/2019 15.23, Paolo Bonzini wrote:
> g_test_rand_int provides a reproducible random integer number, using a
> different number seed every time but allowing reproduction using the
> --seed command line option.  It is thus better suited to tests than
> g_random_int or random.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  block/vhdx.c         | 2 +-
>  block/vmdk.c         | 4 ++--
>  tests/ivshmem-test.c | 2 +-
>  tests/test-bitmap.c  | 8 ++++----
>  tests/test-qga.c     | 4 ++--
>  5 files changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/block/vhdx.c b/block/vhdx.c
> index f02d261..36465d5 100644
> --- a/block/vhdx.c
> +++ b/block/vhdx.c
> @@ -1504,7 +1504,7 @@ static int vhdx_create_new_headers(BlockBackend *blk, uint64_t image_size,
>      hdr = g_new0(VHDXHeader, 1);
>  
>      hdr->signature       = VHDX_HEADER_SIGNATURE;
> -    hdr->sequence_number = g_random_int();
> +    hdr->sequence_number = g_test_rand_int();
>      hdr->log_version     = 0;
>      hdr->version         = 1;
>      hdr->log_length      = log_size;
> diff --git a/block/vmdk.c b/block/vmdk.c
> index 20e909d..eba96bf 100644
> --- a/block/vmdk.c
> +++ b/block/vmdk.c
> @@ -2037,7 +2037,7 @@ static int vmdk_pwritev(BlockDriverState *bs, uint64_t offset,
>          /* update CID on the first write every time the virtual disk is
>           * opened */
>          if (!s->cid_updated) {
> -            ret = vmdk_write_cid(bs, g_random_int());
> +            ret = vmdk_write_cid(bs, g_test_rand_int());
>              if (ret < 0) {
>                  return ret;
>              }
> @@ -2499,7 +2499,7 @@ static int coroutine_fn vmdk_co_do_create(int64_t size,
>  
>      /* generate descriptor file */
>      desc = g_strdup_printf(desc_template,
> -                           g_random_int(),
> +                           g_test_rand_int(),
>                             parent_cid,
>                             BlockdevVmdkSubformat_str(subformat),
>                             parent_desc_line,

Why do you also change this in block/ and not only in tests/ ?

 Thomas


Re: [PATCH] tests: use g_test_rand_int
Posted by Paolo Bonzini 4 years, 4 months ago
On 11/12/19 20:25, Thomas Huth wrote:
> On 11/12/2019 15.23, Paolo Bonzini wrote:
>> g_test_rand_int provides a reproducible random integer number, using a
>> different number seed every time but allowing reproduction using the
>> --seed command line option.  It is thus better suited to tests than
>> g_random_int or random.
>>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>>  block/vhdx.c         | 2 +-
>>  block/vmdk.c         | 4 ++--
>>  tests/ivshmem-test.c | 2 +-
>>  tests/test-bitmap.c  | 8 ++++----
>>  tests/test-qga.c     | 4 ++--
>>  5 files changed, 10 insertions(+), 10 deletions(-)
>>
>> diff --git a/block/vhdx.c b/block/vhdx.c
>> index f02d261..36465d5 100644
>> --- a/block/vhdx.c
>> +++ b/block/vhdx.c
>> @@ -1504,7 +1504,7 @@ static int vhdx_create_new_headers(BlockBackend *blk, uint64_t image_size,
>>      hdr = g_new0(VHDXHeader, 1);
>>  
>>      hdr->signature       = VHDX_HEADER_SIGNATURE;
>> -    hdr->sequence_number = g_random_int();
>> +    hdr->sequence_number = g_test_rand_int();
>>      hdr->log_version     = 0;
>>      hdr->version         = 1;
>>      hdr->log_length      = log_size;
>> diff --git a/block/vmdk.c b/block/vmdk.c
>> index 20e909d..eba96bf 100644
>> --- a/block/vmdk.c
>> +++ b/block/vmdk.c
>> @@ -2037,7 +2037,7 @@ static int vmdk_pwritev(BlockDriverState *bs, uint64_t offset,
>>          /* update CID on the first write every time the virtual disk is
>>           * opened */
>>          if (!s->cid_updated) {
>> -            ret = vmdk_write_cid(bs, g_random_int());
>> +            ret = vmdk_write_cid(bs, g_test_rand_int());
>>              if (ret < 0) {
>>                  return ret;
>>              }
>> @@ -2499,7 +2499,7 @@ static int coroutine_fn vmdk_co_do_create(int64_t size,
>>  
>>      /* generate descriptor file */
>>      desc = g_strdup_printf(desc_template,
>> -                           g_random_int(),
>> +                           g_test_rand_int(),
>>                             parent_cid,
>>                             BlockdevVmdkSubformat_str(subformat),
>>                             parent_desc_line,
> 
> Why do you also change this in block/ and not only in tests/ ?

Because today was not my day. :/

Paolo