Re: Add TAP test for auth_delay extension

Поиск
Список
Период
Сортировка
От Michael Paquier
Тема Re: Add TAP test for auth_delay extension
Дата
Msg-id Yq1BWrIET9oG9acy@paquier.xyz
обсуждение исходный текст
Ответ на Re: Add TAP test for auth_delay extension  (Dong Wook Lee <sh95119@gmail.com>)
Ответы Re: Add TAP test for auth_delay extension  (Dong Wook Lee <sh95119@gmail.com>)
Список pgsql-hackers
On Sat, Jun 18, 2022 at 11:06:02AM +0900, Dong Wook Lee wrote:
> I have written a test for the auth_delay extension before,
> but if it is okay, can you review it?

+# check enter wrong password
+my $t0 = [gettimeofday];
+test_login($node, 'user_role', "wrongpass", 2);
+my $elapsed = tv_interval($t0, [gettimeofday]);
+ok($elapsed >= $delay_milliseconds / 1000, "auth_delay $elapsed seconds");
+
+# check enter correct password
+my $t0 = [gettimeofday];
+test_login($node, 'user_role', "pass", 0);
+my $elapsed = tv_interval($t0, [gettimeofday]);
+ok($elapsed < $delay_milliseconds / 1000, "auth_delay $elapsed seconds");

On a slow machine, I suspect that the second test is going to be
unstable as it would fail if the login attempt (that succeeds) takes
more than $delay_milliseconds.  You could increase more
delay_milliseconds to leverage that, but it would make the first test
slower for nothing on faster machines in the case where the
authentication attempt has failed.  I guess that you could leverage
that by using a large value for delay_milliseconds in the second test,
because we are never going to wait.  For the first test, you could on
the contrary use a much lower value, still on slow machines it may not
test what the code path of auth_delay you are willing to test.

As a whole, I am not sure that this is really worth spending cycles on
when running check-world or similar, and the code of the extension is
trivial.
--
Michael

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Dong Wook Lee
Дата:
Сообщение: Re: Add TAP test for auth_delay extension
Следующее
От: Michael Paquier
Дата:
Сообщение: Re: libpq: Remove redundant null pointer checks before free()