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