[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