1#!/bin/sh 2 3echo "Running tdb feature tests" 4 5mv $LDB_URL $LDB_URL.2 6 7checkcount() { 8 count=$1 9 expression="$2" 10 n=`$VALGRIND ldbsearch$EXEEXT "$expression" | grep '^dn' | wc -l` 11 if [ $n != $count ]; then 12 echo "Got $n but expected $count for $expression" 13 $VALGRIND ldbsearch$EXEEXT "$expression" 14 exit 1 15 fi 16 echo "OK: $count $expression" 17} 18 19echo "Testing case sensitive search" 20cat <<EOF | $VALGRIND ldbadd$EXEEXT || exit 1 21dn: cn=t1,cn=TEST 22objectClass: testclass 23test: foo 24EOF 25checkcount 1 '(test=foo)' 26checkcount 0 '(test=FOO)' 27checkcount 0 '(test=FO*)' 28 29echo "Making case insensitive" 30cat <<EOF | $VALGRIND ldbmodify$EXEEXT || exit 1 31dn: @ATTRIBUTES 32changetype: add 33add: test 34test: CASE_INSENSITIVE 35EOF 36 37echo $ldif | $VALGRIND ldbmodify$EXEEXT || exit 1 38checkcount 1 '(test=foo)' 39checkcount 1 '(test=FOO)' 40checkcount 1 '(test=fo*)' 41 42echo "adding i" 43cat <<EOF | $VALGRIND ldbmodify$EXEEXT || exit 1 44dn: cn=t1,cn=TEST 45changetype: modify 46add: i 47i: 0x100 48EOF 49checkcount 1 '(i=0x100)' 50checkcount 0 '(i=256)' 51 52echo "marking i as INTEGER" 53cat <<EOF | $VALGRIND ldbmodify$EXEEXT || exit 1 54dn: @ATTRIBUTES 55changetype: modify 56add: i 57i: INTEGER 58EOF 59checkcount 1 '(i=0x100)' 60checkcount 1 '(i=256)' 61 62echo "adding j" 63cat <<EOF | $VALGRIND ldbmodify$EXEEXT || exit 1 64dn: cn=t1,cn=TEST 65changetype: modify 66add: j 67j: 0x100 68EOF 69checkcount 1 '(j=0x100)' 70checkcount 0 '(j=256)' 71 72echo "Adding wildcard attribute" 73cat <<EOF | $VALGRIND ldbmodify$EXEEXT || exit 1 74dn: @ATTRIBUTES 75changetype: modify 76add: * 77*: INTEGER 78EOF 79checkcount 1 '(j=0x100)' 80checkcount 1 '(j=256)' 81 82echo "Testing class search" 83checkcount 0 '(objectClass=otherclass)' 84checkcount 1 '(objectClass=testclass)' 85 86echo "Adding index" 87cat <<EOF | $VALGRIND ldbadd$EXEEXT || exit 1 88dn: @INDEXLIST 89@IDXATTR: i 90@IDXATTR: test 91EOF 92checkcount 1 '(i=0x100)' 93checkcount 1 '(i=256)' 94checkcount 0 '(i=-256)' 95checkcount 1 '(test=foo)' 96checkcount 1 '(test=FOO)' 97checkcount 1 '(test=*f*o)' 98 99echo "making test case sensitive" 100cat <<EOF | $VALGRIND ldbmodify$EXEEXT || exit 1 101dn: @ATTRIBUTES 102changetype: modify 103replace: test 104test: NONE 105EOF 106checkcount 1 '(test=foo)' 107checkcount 0 '(test=FOO)' 108checkcount 1 '(test=f*o*)' 109 110checkone() { 111 count=$1 112 base="$2" 113 expression="$3" 114 n=`$VALGRIND ldbsearch$EXEEXT -s one -b "$base" "$expression" | grep '^dn' | wc -l` 115 if [ $n != $count ]; then 116 echo "Got $n but expected $count for $expression" 117 $VALGRIND ldbsearch$EXEEXT -s one -b "$base" "$expression" 118 exit 1 119 fi 120 echo "OK: $count $expression" 121} 122 123echo "Removing wildcard attribute" 124cat <<EOF | $VALGRIND ldbmodify$EXEEXT || exit 1 125dn: @ATTRIBUTES 126changetype: modify 127delete: * 128*: INTEGER 129EOF 130 131echo "Adding one level indexes" 132cat <<EOF | $VALGRIND ldbmodify$EXEEXT || exit 1 133dn: @INDEXLIST 134changetype: modify 135add: @IDXONE 136@IDXONE: 1 137EOF 138 139echo "Testing one level indexed search" 140cat <<EOF | $VALGRIND ldbadd$EXEEXT || exit 1 141dn: cn=one,cn=t1,cn=TEST 142objectClass: oneclass 143cn: one 144test: one 145EOF 146checkone 1 "cn=t1,cn=TEST" '(test=one)' 147cat <<EOF | $VALGRIND ldbadd$EXEEXT || exit 1 148dn: cn=two,cn=t1,cn=TEST 149objectClass: oneclass 150cn: two 151test: one 152 153dn: cn=three,cn=t1,cn=TEST 154objectClass: oneclass 155cn: three 156test: one 157EOF 158checkone 3 "cn=t1,cn=TEST" '(test=one)' 159checkone 1 "cn=t1,cn=TEST" '(cn=two)' 160 161