[FFmpeg-devel] [PATCH] avutil/tests: Improved code coverage for random_seed

Hendrik Leppkes h.leppkes at gmail.com
Wed Dec 28 20:12:25 EET 2016


On Wed, Dec 28, 2016 at 7:08 PM, Hendrik Leppkes <h.leppkes at gmail.com> wrote:
> On Fri, Dec 23, 2016 at 1:12 AM, Thomas Turner <thomastdt at googlemail.com> wrote:
>> Signed-off-by: Thomas Turner <thomastdt at googlemail.com>
>> ---
>>  libavutil/tests/random_seed.c | 34 +++++++++++++++++++++-------------
>>  tests/ref/fate/random_seed    |  1 +
>>  2 files changed, 22 insertions(+), 13 deletions(-)
>>
>> diff --git a/libavutil/tests/random_seed.c b/libavutil/tests/random_seed.c
>> index ebe9b3e..fcd68bc 100644
>> --- a/libavutil/tests/random_seed.c
>> +++ b/libavutil/tests/random_seed.c
>> @@ -23,24 +23,32 @@
>>
>>  #undef printf
>>  #define N 256
>> +#define F 2
>>  #include <stdio.h>
>>
>> +typedef uint32_t (*random_seed_ptr_t)(void);
>> +
>>  int main(void)
>>  {
>> -    int i, j, retry;
>> +    int i, j, rsf, retry;
>>      uint32_t seeds[N];
>> +    random_seed_ptr_t random_seed[F] = {av_get_random_seed, get_generic_seed};
>>
>> -    for (retry=0; retry<3; retry++){
>> -        for (i=0; i<N; i++){
>> -            seeds[i] = av_get_random_seed();
>> -            for (j=0; j<i; j++)
>> -                if (seeds[j] == seeds[i])
>> -                    goto retry;
>> +    for (rsf=0; rsf<F; ++rsf){
>> +        for (retry=0; retry<3; retry++){
>> +            for (i=0; i<N; i++){
>> +                seeds[i] = random_seed[rsf]();
>> +                for (j=0; j<i; j++)
>> +                    if (seeds[j] == seeds[i])
>> +                        goto retry;
>> +            }
>> +            printf("seeds OK\n");
>> +            goto next;
>> +            retry:;
>>          }
>> -        printf("seeds OK\n");
>> -        return 0;
>> -        retry:;
>> +        printf("rsf %d: FAIL at %d with %X\n", rsf, j, seeds[j]);
>> +        return 1;
>> +        next:;
>>      }
>> -    printf("FAIL at %d with %X\n", j, seeds[j]);
>> -    return 1;
>> -}
>> +    return 0;
>> + }
>> \ No newline at end of file
>> diff --git a/tests/ref/fate/random_seed b/tests/ref/fate/random_seed
>> index 2b5b3af..ef0eef2 100644
>> --- a/tests/ref/fate/random_seed
>> +++ b/tests/ref/fate/random_seed
>> @@ -1 +1,2 @@
>>  seeds OK
>> +seeds OK
>> --
>> 1.9.1
>
> The new test sporadically fails on msvc x86_64 for some reason. What
> does it actually mean when it fails, ie. what does this thing test?
>

Specifically, it always fails with rsf 1, which seems to be
get_generic_seed  - but windows has a special crypto seed provider,
get_generic_seed is never used. Making fate fail for some inaccuracy
in the clock in code thats never used is a bit annoying.

- Hendrik


More information about the ffmpeg-devel mailing list