Fix LDAP test instability.
authorThomas Munro <tmunro@postgresql.org>
Thu, 25 Jul 2019 22:01:18 +0000 (10:01 +1200)
committerThomas Munro <tmunro@postgresql.org>
Thu, 25 Jul 2019 22:01:18 +0000 (10:01 +1200)
After starting slapd, wait until it can accept a connection before
beginning the real test work.  This avoids occasional test failures.
Back-patch to 11, where the LDAP tests arrived.

Author: Thomas Munro
Reviewed-by: Michael Paquier
Discussion: https://postgr.es/m/20190719033013.GI1859%40paquier.xyz

src/test/ldap/t/001_auth.pl

index 6c02f2530b67e7284eb7eb72ae7e04b11689735b..84a3300d964f676c1e87bb6ee7dde61239677902 100644 (file)
@@ -120,6 +120,22 @@ END
 append_to_file($ldap_pwfile, $ldap_rootpw);
 chmod 0600, $ldap_pwfile or die;
 
+# wait until slapd accepts requests
+my $retries = 0;
+while (1)
+{
+   last
+     if (
+       system_log(
+           "ldapsearch", "-h", $ldap_server, "-p",
+           $ldap_port,   "-s", "base",       "-b",
+           $ldap_basedn, "-D", $ldap_rootdn, "-y",
+           $ldap_pwfile, "-n", "'objectclass=*'") == 0);
+   die "cannot connect to slapd" if ++$retries >= 300;
+   note "waiting for slapd to accept requests...";
+   Time::HiRes::usleep(1000000);
+}
+
 $ENV{'LDAPURI'}    = $ldap_url;
 $ENV{'LDAPBINDDN'} = $ldap_rootdn;
 $ENV{'LDAPCONF'}   = $ldap_conf;