]> git.sur5r.net Git - openldap/blob - tests/scripts/test042-valsort
Happy New Year
[openldap] / tests / scripts / test042-valsort
1 #! /bin/sh
2 # $OpenLDAP$
3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 ##
5 ## Copyright 2004-2018 The OpenLDAP Foundation.
6 ## All rights reserved.
7 ##
8 ## Redistribution and use in source and binary forms, with or without
9 ## modification, are permitted only as authorized by the OpenLDAP
10 ## Public License.
11 ##
12 ## A copy of this license is available in the file LICENSE in the
13 ## top-level directory of the distribution or, alternatively, at
14 ## <http://www.OpenLDAP.org/license.html>.
15
16 echo "running defines.sh"
17 . $SRCDIR/scripts/defines.sh
18
19 if test $VALSORT = valsortno; then 
20         echo "Valsort overlay not available, test skipped"
21         exit 0
22 fi 
23
24 mkdir -p $TESTDIR $DBDIR1
25
26 $SLAPPASSWD -g -n >$CONFIGPWF
27 echo "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >$TESTDIR/configpw.conf
28
29 echo "Running slapadd to build slapd database..."
30 . $CONFFILTER $BACKEND $MONITORDB < $VALSORTCONF > $CONF1
31 $SLAPADD -f $CONF1 -l $LDIFVALSORT
32 RC=$?
33 if test $RC != 0 ; then
34         echo "slapadd failed ($RC)!"
35         exit $RC
36 fi
37
38 echo "Starting slapd on TCP/IP port $PORT1..."
39 $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
40 PID=$!
41 if test $WAIT != 0 ; then
42     echo PID $PID
43     read foo
44 fi
45 KILLPIDS="$PID"
46
47 sleep 1
48
49 echo "Testing slapd sorted values operations..."
50 for i in 0 1 2 3 4 5; do
51         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
52                 'objectclass=*' > /dev/null 2>&1
53         RC=$?
54         if test $RC = 0 ; then
55                 break
56         fi
57         echo "Waiting 5 seconds for slapd to start..."
58         sleep 5
59 done
60
61 if test $RC != 0 ; then
62         echo "ldapsearch failed ($RC)!"
63         test $KILLSERVERS != no && kill -HUP $KILLPIDS
64         exit $RC
65 fi
66
67 echo "Testing ascending and weighted sort"
68
69 FILTER="objectClass=*"
70 $LDAPSEARCH -b "$VALSORTBASEDN" -h $LOCALHOST -p $PORT1 \
71         "$FILTER" > $SEARCHOUT 2>&1
72
73 RC=$?
74 if test $RC != 0 ; then
75         echo "ldapsearch failed ($RC)!"
76         test $KILLSERVERS != no && kill -HUP $KILLPIDS
77         exit $RC
78 fi
79
80 echo "Filtering ldapsearch results..."
81 $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
82 echo "Filtering expected ldif..."
83 $LDIFFILTER < $VALSORTOUT1 > $LDIFFLT
84 echo "Comparing filter output..."
85 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
86
87 if test $? != 0 ; then
88         echo "Comparison failed"
89         test $KILLSERVERS != no && kill -HUP $KILLPIDS
90         exit 1
91 fi
92
93 echo "Reconfiguring slapd to test valsort descending"
94
95 $LDAPMODIFY -x -D cn=config -h $LOCALHOST -p $PORT1 -y $CONFIGPWF > \
96         $TESTOUT 2>&1 << EOMODS
97 version: 1
98 dn: olcOverlay={0}valsort,olcDatabase={1}$BACKEND,cn=config
99 changetype: modify
100 replace: olcValSortAttr
101 olcValSortAttr: employeeType "ou=users,o=valsort" weighted alpha-descend
102 olcValSortAttr: ou "ou=users,o=valsort" weighted
103 olcValSortAttr: mailPreferenceOption "ou=users,o=valsort" numeric-descend
104 olcValSortAttr: departmentNumber "ou=users,o=valsort" alpha-descend
105 olcValSortAttr: sn "ou=users,o=valsort" alpha-descend
106
107 EOMODS
108
109 RC=$?
110 if test $RC != 0 ; then
111     echo "ldapmodify failed ($RC)!"
112     test $KILLSERVERS != no && kill -HUP $KILLPIDS
113     exit $RC
114 fi
115
116 echo "Testing descending and weighted sort"
117
118 $LDAPSEARCH -b "$VALSORTBASEDN" -h $LOCALHOST -p $PORT1 \
119         "$FILTER" > $SEARCHOUT 2>&1
120
121 RC=$?
122 if test $RC != 0 ; then
123         echo "ldapsearch failed ($RC)!"
124         test $KILLSERVERS != no && kill -HUP $KILLPIDS
125         exit $RC
126 fi
127
128 echo "Filtering ldapsearch results..."
129 $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
130 echo "Filtering expected ldif..."
131 $LDIFFILTER < $VALSORTOUT2 > $LDIFFLT
132 echo "Comparing filter output..."
133 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
134
135 if test $? != 0 ; then
136         echo "Comparison failed"
137         test $KILLSERVERS != no && kill -HUP $KILLPIDS
138         exit 1
139 fi
140
141 echo "Adding a valsort record with weighted ou..."
142
143 $LDAPADD -D "$VALSORTDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
144         > /dev/null << EOTVALSORT1
145 dn: uid=dave,ou=users,o=valsort
146 objectClass: OpenLDAPperson
147 uid: dave
148 sn: nothere
149 cn: dave
150 businessCategory: otest
151 carLicense: TEST
152 departmentNumber: 42
153 displayName: Dave
154 employeeNumber: 69
155 employeeType: {1}contractor
156 givenName: Dave
157 ou: {1}Test
158 ou: {3}Okay
159 ou: {2}Is
160 EOTVALSORT1
161
162 RC=$?
163 if test $RC != 0 ; then
164         echo "ldapadd failed ($RC)!"
165         test $KILLSERVERS != no && kill -HUP $KILLPIDS
166         exit $RC
167 fi
168
169 #echo ----------------------
170 #$LDAPSEARCH -b "o=valsort" -h $LOCALHOST -p $PORT1
171
172 echo "Adding a non-weighted valsort record with ou..."
173
174 $LDAPADD -D "$VALSORTDN" -h $LOCALHOST -p $PORT1 -w $PASSWD > \
175          $TESTOUT 2>&1 << EOTVALSORT2
176 dn: uid=bill,ou=users,o=valsort
177 objectClass: OpenLDAPperson
178 uid: bill
179 sn: johnson
180 cn: bill
181 businessCategory: rtest
182 carLicense: ABC123
183 departmentNumber: 42
184 displayName: Bill
185 employeeNumber: 5150
186 employeeType: {1}contractor
187 givenName: Bill
188 ou: Test
189 ou: Okay
190 ou: Is
191 EOTVALSORT2
192
193 RC=$?
194 if test $RC != 19 ; then
195         echo "valsort check failed ($RC)!"
196         test $KILLSERVERS != no && kill -HUP $KILLPIDS
197         exit -1
198 fi
199
200 $LDAPSEARCH -b "$VALSORTBASEDN" -h $LOCALHOST -p $PORT1 \
201         "$FILTER" > $SEARCHOUT 2>&1
202
203 RC=$?
204 if test $RC != 0 ; then
205         echo "ldapsearch failed ($RC)!"
206         test $KILLSERVERS != no && kill -HUP $KILLPIDS
207         exit $RC
208 fi
209
210 echo "Filtering ldapsearch results..."
211 $LDIFFILTER -s ldif=e < $SEARCHOUT > $SEARCHFLT
212 echo "Filtering expected ldif..."
213 $LDIFFILTER -s ldif=e < $VALSORTOUT3 > $LDIFFLT
214 echo "Comparing filter output..."
215 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
216
217 if test $? != 0 ; then
218         echo "Comparison failed"
219         test $KILLSERVERS != no && kill -HUP $KILLPIDS
220         exit 1
221 fi
222
223 test $KILLSERVERS != no && kill -HUP $KILLPIDS
224
225 test $KILLSERVERS != no && wait
226
227 echo ">>>>> Test succeeded"
228
229 exit 0