]> git.sur5r.net Git - openldap/commitdiff
ITS#5893
authorQuanah Gibson-Mount <quanah@openldap.org>
Tue, 10 Feb 2009 18:13:05 +0000 (18:13 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Tue, 10 Feb 2009 18:13:05 +0000 (18:13 +0000)
CHANGES
tests/progs/slapd-bind.c
tests/progs/slapd-common.c
tests/progs/slapd-common.h
tests/progs/slapd-read.c
tests/progs/slapd-search.c
tests/scripts/test036-meta-concurrency
tests/scripts/test039-glue-ldap-concurrency

diff --git a/CHANGES b/CHANGES
index 64958cc8315deaa41495cd0b060dc15ce70639bb..22b28e2653fb1030d719117ab671dcffb4d63212 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -65,6 +65,7 @@ OpenLDAP 2.4.14 Engineering
        Added contrib/passwd sha2 support (ITS#5660)
        Build Environment
                Fixed test006 appending to log file (ITS#5910)
+               Fixed test036,test039 behavior on error (ITS#5893)
                Fixed test048 sed pathname substitution (ITS#5910)
                Fixed test049,test050 to work on windows (ITS#5842)
                Updated test017,test018,test019 to cover more cases (ITS#5883)
index 0f73fd6ca4ce812989236032ff48d6971156f2b5..1b597f27f04b1063528a535992e2ee259bb15943 100644 (file)
@@ -249,13 +249,17 @@ main( int argc, char **argv )
        uri = tester_uri( uri, host, port );
 
        for ( i = 0; i < outerloops; i++ ) {
+               int rc;
+
                if ( base != NULL ) {
-                       do_base( uri, dn, &pass, base, filter, pwattr, loops,
+                       rc = do_base( uri, dn, &pass, base, filter, pwattr, loops,
                                force, chaserefs, noinit, delay, -1, NULL );
                } else {
-                       do_bind( uri, dn, &pass, loops,
+                       rc = do_bind( uri, dn, &pass, loops,
                                force, chaserefs, noinit, NULL, -1, NULL );
                }
+               if ( rc == LDAP_SERVER_DOWN )
+                       break;
        }
 
        exit( EXIT_SUCCESS );
@@ -339,12 +343,12 @@ do_bind( char *uri, char *dn, struct berval *pass, int maxloop,
 
                rc = ldap_sasl_bind_s( ld, dn, LDAP_SASL_SIMPLE, pass, NULL, NULL, NULL );
                if ( rc ) {
-                       unsigned first = tester_ignore_err( rc );
+                       int first = tester_ignore_err( rc );
 
                        /* if ignore.. */
                        if ( first ) {
                                /* only log if first occurrence */
-                               if ( force < 2 || first == 1 ) {
+                               if ( ( force < 2 && first > 0 ) || abs(first) == 1 ) {
                                        tester_ldap_error( ld, "ldap_sasl_bind_s", NULL );
                                }
                                rc = LDAP_SUCCESS;
index 5b7845b66e13f2fa78456e3683f242be839d9b77..06e1060efbd68a1faa3cee32f68e5c3c61c5581a 100644 (file)
@@ -40,8 +40,8 @@ tester_t progtype;
 
 #define        TESTER_SERVER_LAST      (LDAP_OTHER + 1)
 #define TESTER_CLIENT_LAST     (- LDAP_REFERRAL_LIMIT_EXCEEDED + 1)
-static unsigned ignore_server[ TESTER_SERVER_LAST ];
-static unsigned ignore_client[ TESTER_CLIENT_LAST ];
+static int ignore_server[ TESTER_SERVER_LAST ];
+static int ignore_client[ TESTER_CLIENT_LAST ];
 
 static struct {
        char    *name;
@@ -126,8 +126,7 @@ static struct {
 static int
 tester_ignore_str2err( const char *err )
 {
-       int             i;
-       unsigned        ignore = 1;
+       int             i, ignore = 1;
 
        if ( strcmp( err, "ALL" ) == 0 ) {
                for ( i = 0; ignore_str2err[ i ].name != NULL; i++ ) {
@@ -147,6 +146,10 @@ tester_ignore_str2err( const char *err )
        if ( err[ 0 ] == '!' ) {
                ignore = 0;
                err++;
+
+       } else if ( err[ 0 ] == '*' ) {
+               ignore = -1;
+               err++;
        }
 
        for ( i = 0; ignore_str2err[ i ].name != NULL; i++ ) {
@@ -183,24 +186,30 @@ tester_ignore_str2errlist( const char *err )
        return 0;
 }
 
-unsigned
+int
 tester_ignore_err( int err )
 {
-       unsigned        rc = 1;
+       int rc = 1;
 
        if ( err > 0 ) {
                if ( err < TESTER_SERVER_LAST ) {
                        rc = ignore_server[ err ];
-                       if ( rc ) {
+                       if ( rc > 0 ) {
                                ignore_server[ err ]++;
+
+                       } else if ( rc < 0 ) {
+                               ignore_server[ err ]--;
                        }
                }
 
        } else if ( err < 0 ) {
                if ( -err < TESTER_CLIENT_LAST ) {
                        rc = ignore_client[ -err ];
-                       if ( rc ) {
+                       if ( rc > 0 ) {
                                ignore_client[ -err ]++;
+
+                       } else if ( rc < 0 ) {
+                               ignore_server[ err ]--;
                        }
                }
        }
index 36002d7110088fb62afed1a2f3f07096db2a3b1e..454f2488135b3b98ca22aa82f7b26ff02d1d0194 100644 (file)
@@ -37,7 +37,7 @@ extern void tester_error( const char *msg );
 extern void tester_perror( const char *fname, const char *msg );
 extern void tester_ldap_error( LDAP *ld, const char *fname, const char *msg );
 extern int tester_ignore_str2errlist( const char *err );
-extern unsigned tester_ignore_err( int err );
+extern int tester_ignore_err( int err );
 
 extern pid_t           pid;
 
index fee720524c2194ebc743fc035133c73ba55cb16f..35dcbe6f3aa9650001259e4cf9b7c5283e50ffd9 100644 (file)
@@ -389,7 +389,7 @@ retry:;
                }
 
                if ( rc ) {
-                       unsigned        first = tester_ignore_err( rc );
+                       int             first = tester_ignore_err( rc );
                        char            buf[ BUFSIZ ];
 
                        snprintf( buf, sizeof( buf ), "ldap_search_ext_s(%s)", entry );
@@ -397,7 +397,7 @@ retry:;
                        /* if ignore.. */
                        if ( first ) {
                                /* only log if first occurrence */
-                               if ( force < 2 || first == 1 ) {
+                               if ( ( force < 2 && first > 0 ) || abs(first) == 1 ) {
                                        tester_ldap_error( ld, buf, NULL );
                                }
                                continue;
index 76e52d282052423bafa38fe6437ad1212d49ee75..6b15ab4ecc2c894775b29e8b73d170c8fb00e122 100644 (file)
@@ -443,11 +443,11 @@ retry:;
                }
 
                if ( rc ) {
-                       unsigned first = tester_ignore_err( rc );
+                       int first = tester_ignore_err( rc );
                        /* if ignore.. */
                        if ( first ) {
                                /* only log if first occurrence */
-                               if ( force < 2 || first == 1 ) {
+                               if ( ( force < 2 && first > 0 ) || abs(first) == 1 ) {
                                        tester_ldap_error( ld, "ldap_search_ext_s", NULL );
                                }
                                continue;
index 7fb3ccacb3af77529cdf299093bb35ea6a4d4e7f..4e83b83a8f13e64b33ca063a81dfb8d0f6fdb763 100755 (executable)
@@ -195,8 +195,8 @@ $MONITORDATA "$MONITORDB" "$TESTDIR/$DATADIR" "$TESTDIR"
 
 echo "Using tester for concurrent server access..."
 $SLAPDTESTER -P "$PROGDIR" -d "$TESTDIR" -h $LOCALHOST -p $PORT3 \
-       -D "cn=Manager,$METABASEDN" -w $PASSWD -l $TESTLOOPS -r 20 -FF \
-       -i '!REFERRAL'
+       -D "cn=Manager,$METABASEDN" -w $PASSWD -l $TESTLOOPS -r 20 \
+       -i '!REFERRAL' -i '*INVALID_CREDENTIALS'
 RC=$?
 
 if test $RC != 0 ; then
index 9f29960a30b6b133cc7ef5ef23bd0023bb764e0f..9a97619d5b61bd9aabd26a2bc350ae6a4eed0670 100755 (executable)
@@ -184,8 +184,8 @@ $MONITORDATA "$MONITORDB" "$TESTDIR/$DATADIR" "$TESTDIR"
 echo "Using tester for concurrent server access..."
 $SLAPDTESTER -P "$PROGDIR" -d "$TESTDIR" -h $LOCALHOST -p $PORT3 \
        -D "cn=Manager,$METABASEDN" -w $PASSWD \
-       -l $TESTLOOPS -L $TESTOLOOPS -r 20 -FF \
-       -i '!REFERRAL'
+       -l $TESTLOOPS -L $TESTOLOOPS -r 20 \
+       -i '!REFERRAL' -i '*INVALID_CREDENTIALS'
 RC=$?
 
 if test $RC != 0 ; then