[devel] Q: энтропия на сборочнице [bolt-0.9.1-alt1: Sisyphus/i586 test rebuild failed]

Dmitry V. Levin ldv на altlinux.org
Пн Мар 1 20:56:20 MSK 2021


On Mon, Mar 01, 2021 at 06:10:32PM +0100, Konstantin Lepikhov wrote:
> Привет!
> 
> Давно мучает меня эта "ошибка" пересборки
> 
> Код теста:
> 
> static void
> test_strv_permute (TestRng *tt, gconstpointer user_data)
> {
>   g_auto(GStrv) tst = NULL;
>   const char *ref[] = {"a", "b", "c", "d", NULL};
>   char *empty[] = {NULL};
>   guint N;
>   guint k = 0;
> 
>   bolt_strv_permute (NULL);
>   bolt_strv_permute (empty);
> 
>   g_assert_cmpuint (bolt_strv_length (empty), ==, 0U);
> 
>   tst = g_strdupv ((char **) ref);
> 
>   /* there are 4! = 24 possible permutations, do it
>    * at least N = 4! and pick a rather large threshold
>    * instead of a larger N */
>   N = (4 * 3 * 2 * 1);
> 
>   for (guint i = 0; i < N; i++)
>     {
>       bolt_strv_permute (tst);
>       if (bolt_strv_equal ((char **) ref, (char **) tst))
>         k++;
>     }
> 
>   g_debug ("permutation-test: %u of %u were equal", k, N);
>   g_assert_cmpuint (k, <, 5);
> }
> 
> ...
> 
> У меня есть смутные подозрения, что в какой-то момент в сборочнице
> кончается энтропия и начинается фигня

Это что, неустранимо вероятностный тест, который, если его запускать
достаточно много раз, обязательно упадёт?  А где он добывает себе
рандомизацию?


-- 
ldv


Подробная информация о списке рассылки Devel