r12777: use TEST_DATA_PREFIX if available
[jelmer/samba4-debian.git] / source / lib / ldb / tests / test-generic.sh
index 02325b83561fdbda2fac7b4d5959dfb22dbb9ba3..9060fe0f5465073359e610ce39673efbec5ca9d2 100755 (executable)
 echo "LDB_URL: $LDB_URL"
 
 echo "Adding base elements"
-$VALGRIND bin/ldbadd tests/test.ldif || exit 1
+$VALGRIND ldbadd $LDBDIR/tests/test.ldif || exit 1
 
 echo "Modifying elements"
-$VALGRIND bin/ldbmodify tests/test-modify.ldif || exit 1
+$VALGRIND ldbmodify $LDBDIR/tests/test-modify.ldif || exit 1
 
 echo "Showing modified record"
-$VALGRIND bin/ldbsearch '(uid=uham)'  || exit 1
+$VALGRIND ldbsearch '(uid=uham)'  || exit 1
 
 echo "Rename entry"
 OLDDN="cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST"
 NEWDN="cn=Hampster Ursula,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST"
-$VALGRIND bin/ldbrename "$OLDDN" "$NEWDN"  || exit 1
+$VALGRIND ldbrename "$OLDDN" "$NEWDN"  || exit 1
 
 echo "Showing renamed record"
-$VALGRIND bin/ldbsearch '(uid=uham)' || exit 1
+$VALGRIND ldbsearch '(uid=uham)' || exit 1
 
 echo "Starting ldbtest"
-time $VALGRIND bin/ldbtest --num-records 1000 --num-searches 10  || exit 1
+time $VALGRIND ldbtest --num-records 100 --num-searches 10  || exit 1
 
 echo "Adding index"
-$VALGRIND bin/ldbadd tests/test-index.ldif  || exit 1
+$VALGRIND ldbadd $LDBDIR/tests/test-index.ldif  || exit 1
 
 echo "Adding attributes"
-$VALGRIND bin/ldbadd tests/test-wrong_attributes.ldif  || exit 1
+$VALGRIND ldbadd $LDBDIR/tests/test-wrong_attributes.ldif  || exit 1
 
 echo "testing indexed search"
-$VALGRIND bin/ldbsearch '(uid=uham)'  || exit 1
-$VALGRIND bin/ldbsearch '(&(objectclass=person)(objectclass=person)(objectclass=top))' || exit 1
-$VALGRIND bin/ldbsearch '(&(uid=uham)(uid=uham))'  || exit 1
-$VALGRIND bin/ldbsearch '(|(uid=uham)(uid=uham))'  || exit 1
-$VALGRIND bin/ldbsearch '(|(uid=uham)(uid=uham)(objectclass=OpenLDAPperson))'  || exit 1
-$VALGRIND bin/ldbsearch '(&(uid=uham)(uid=uham)(!(objectclass=xxx)))'  || exit 1
-$VALGRIND bin/ldbsearch '(&(objectclass=person)(uid=uham)(!(uid=uhamxx)))' uid \* \+ dn  || exit 1
-$VALGRIND bin/ldbsearch '(&(uid=uham)(uid=uha*)(title=*))' uid || exit 1
-$VALGRIND bin/ldbsearch '((' uid && exit 1
-$VALGRIND bin/ldbsearch '(objectclass=)' uid || exit 1
-$VALGRIND bin/ldbsearch -b 'cn=Hampster Ursula,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST' -s base "" sn || exit 1
+$VALGRIND ldbsearch '(uid=uham)'  || exit 1
+$VALGRIND ldbsearch '(&(objectclass=person)(objectclass=person)(objectclass=top))' || exit 1
+$VALGRIND ldbsearch '(&(uid=uham)(uid=uham))'  || exit 1
+$VALGRIND ldbsearch '(|(uid=uham)(uid=uham))'  || exit 1
+$VALGRIND ldbsearch '(|(uid=uham)(uid=uham)(objectclass=OpenLDAPperson))'  || exit 1
+$VALGRIND ldbsearch '(&(uid=uham)(uid=uham)(!(objectclass=xxx)))'  || exit 1
+$VALGRIND ldbsearch '(&(objectclass=person)(uid=uham)(!(uid=uhamxx)))' uid \* \+ dn  || exit 1
+$VALGRIND ldbsearch '(&(uid=uham)(uid=uha*)(title=*))' uid || exit 1
+
+# note that the "((" is treated as an attribute not an expression
+# this matches the openldap ldapsearch behaviour of looking for a '='
+# to see if the first argument is an expression or not
+$VALGRIND ldbsearch '((' uid || exit 1
+$VALGRIND ldbsearch '(objectclass=)' uid || exit 1
+$VALGRIND ldbsearch -b 'cn=Hampster Ursula,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST' -s base "" sn || exit 1
+
+echo "Test wildcard match"
+$VALGRIND ldbadd $LDBDIR/tests/test-wildcard.ldif  || exit 1
+$VALGRIND ldbsearch '(cn=test*multi)'  || exit 1
+$VALGRIND ldbsearch '(cn=*test*multi*)'  || exit 1
+$VALGRIND ldbsearch '(cn=*test_multi)'  || exit 1
+$VALGRIND ldbsearch '(cn=test_multi*)'  || exit 1
+$VALGRIND ldbsearch '(cn=test*multi*test*multi)'  || exit 1
+$VALGRIND ldbsearch '(cn=test*multi*test*multi*multi_*)' || exit 1
 
 echo "Starting ldbtest indexed"
-time $VALGRIND bin/ldbtest --num-records 1000 --num-searches 5000  || exit 1
+time $VALGRIND ldbtest --num-records 100 --num-searches 500  || exit 1
 
 echo "Testing one level search"
-count=`$VALGRIND bin/ldbsearch -b 'ou=Groups,o=University of Michigan,c=TEST' -s one 'objectclass=*' none |grep ^dn | wc -l`
-if [ "$count" != 3 ]; then
+count=`$VALGRIND ldbsearch -b 'ou=Groups,o=University of Michigan,c=TEST' -s one 'objectclass=*' none |grep '^dn' | wc -l`
+if [ $count != 3 ]; then
     echo returned $count records - expected 3
     exit 1
 fi
 
+echo "Testing compare"
+count=`$VALGRIND ldbsearch '(cn>=t)' cn | grep '^dn' | wc -l`
+if [ $count != 2 ]; then
+    echo returned $count records - expected 2
+    exit 1
+fi
+
+count=`$VALGRIND ldbsearch '(cn<=t)' cn | grep '^dn' | wc -l`
+if [ $count != 13 ]; then
+    echo returned $count records - expected 13
+    exit 1
+fi
+
 echo "Testing binary file attribute value"
-$VALGRIND bin/ldbmodify tests/photo.ldif || exit 1
+$VALGRIND ldbmodify $LDBDIR/tests/photo.ldif || exit 1
+
+checkcount() {
+    count=$1
+    scope=$2
+    basedn=$3
+    expression="$4"
+    n=`bin/ldbsearch -s "$scope" -b "$basedn" "$expression" | grep '^dn' | wc -l`
+    if [ $n != $count ]; then
+       echo "Got $n but expected $count for $expression"
+       bin/ldbsearch "$expression"
+       exit 1
+    fi
+    echo "OK: $count $expression"
+}
+
+checkcount 0 'base' '' '(uid=uham)'
+checkcount 0 'one' '' '(uid=uham)'
+
+checkcount 1 'base' 'cn=Hampster Ursula,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST' '(uid=uham)'
+checkcount 1 'one' 'ou=Alumni Association,ou=People,o=University of Michigan,c=TEST' '(uid=uham)'
+