Home | History | Annotate | Line # | Download | only in scripts
      1 #! /bin/sh
      2 # $OpenLDAP$
      3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4 ##
      5 ## Copyright 1998-2024 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 mkdir -p $TESTDIR $DBDIR1
     20 
     21 echo "Running slapadd to build slapd database..."
     22 . $CONFFILTER $BACKEND < $CONF > $ADDCONF
     23 $SLAPADD -f $ADDCONF -l $LDIFORDERED
     24 RC=$?
     25 if test $RC != 0 ; then
     26 	echo "slapadd failed ($RC)!"
     27 	exit $RC
     28 fi
     29 
     30 echo "Starting slapd on TCP/IP port $PORT1..."
     31 . $CONFFILTER $BACKEND < $CONF > $CONF1
     32 $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
     33 PID=$!
     34 if test $WAIT != 0 ; then
     35     echo PID $PID
     36     read foo
     37 fi
     38 KILLPIDS="$PID"
     39 
     40 sleep 1
     41 
     42 echo "Using ldapsearch to retrieve all the entries..."
     43 for i in 0 1 2 3 4 5; do
     44 	$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 > $SEARCHOUT 2>&1
     45 	RC=$?
     46 	if test $RC = 0 ; then
     47 		break
     48 	fi
     49 	echo "Waiting 5 seconds for slapd to start..."
     50 	sleep 5
     51 done
     52 
     53 if test $RC != 0 ; then
     54 	echo "ldapsearch failed ($RC)!"
     55 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     56 	exit $RC
     57 fi
     58 
     59 echo "Filtering ldapsearch results..."
     60 $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
     61 echo "Filtering original ldif used to create database..."
     62 $LDIFFILTER < $LDIF > $LDIFFLT
     63 echo "Comparing filter output..."
     64 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
     65 
     66 if test $? != 0 ; then
     67 	echo "comparison failed - database was not created correctly"
     68 	echo $SEARCHFLT $LDIFFLT
     69 	$DIFF $SEARCHFLT $LDIFFLT
     70 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     71 	exit 1
     72 fi
     73 
     74 if test $BACKEND = ldif ; then
     75 	echo "Skipping test of unordered slapadd (unsupported in ldif backend)"
     76 else
     77 
     78 kill -HUP $KILLPIDS
     79 wait
     80 rm -f $DBDIR1/*
     81 
     82 BASE2="ou=test,dc=example,dc=com"
     83 sed -e "s;$BASEDN;$BASE2;" $ADDCONF > ${ADDCONF}2
     84 mv ${ADDCONF}2 $ADDCONF
     85 sed -e "s;$BASEDN;$BASE2;" $CONF1 > ${CONF1}2
     86 mv ${CONF1}2 $CONF1
     87 echo "Running slapadd with unordered LDIF..."
     88 $SLAPADD -f $ADDCONF -l $LDIFUNORDERED
     89 RC=$?
     90 if test $RC != 0 ; then
     91 	echo "slapadd failed ($RC)!"
     92 	exit $RC
     93 fi
     94 
     95 echo "Starting slapd on TCP/IP port $PORT1..."
     96 $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
     97 PID=$!
     98 if test $WAIT != 0 ; then
     99     echo PID $PID
    100     read foo
    101 fi
    102 KILLPIDS="$PID"
    103 
    104 sleep 1
    105 
    106 echo "Using ldapsearch to retrieve all the entries..."
    107 for i in 0 1 2 3 4 5; do
    108 	$LDAPSEARCH -b "$BASE2" -H $URI1 > $SEARCHOUT 2>&1
    109 	RC=$?
    110 	if test $RC = 0 ; then
    111 		break
    112 	fi
    113 	echo "Waiting 5 seconds for slapd to start..."
    114 	sleep 5
    115 done
    116 
    117 if test $RC != 0 ; then
    118 	echo "ldapsearch failed ($RC)!"
    119 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    120 	exit $RC
    121 fi
    122 
    123 echo "Filtering ldapsearch results..."
    124 $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    125 echo "Filtering original ldif used to create database..."
    126 $LDIFFILTER < $LDIFREORDERED > $LDIFFLT
    127 echo "Comparing filter output..."
    128 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
    129 
    130 if test $? != 0 ; then
    131 	echo "comparison failed - database was not created correctly"
    132 	echo $SEARCHFLT $LDIFFLT
    133 	$DIFF $SEARCHFLT $LDIFFLT
    134 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    135 	exit 1
    136 fi
    137 
    138 fi
    139 
    140 test $KILLSERVERS != no && kill -HUP $KILLPIDS
    141 
    142 echo ">>>>> Test succeeded"
    143 
    144 test $KILLSERVERS != no && wait
    145 
    146 exit 0
    147