summaryrefslogtreecommitdiffstats
path: root/tests/slapd.sh.in
blob: c68740d302c10896fd7782260f48f452fed60237 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/sh
SLAPD=@SLAPD@
TESTDIR=@abs_srcdir@
BTESTDIR=@abs_builddir@
STATEDIR=@abs_builddir@/state

YP="@abs_builddir@/clients/yp -p @test_nisport@"
export YP
LDIFSORT="@abs_builddir@/clients/ldifsort"
export LDIFSORT
VALGRIND="valgrind --leak-check=full --log-file=valgrind.log --num-callers=50"

PORT=@test_ldapport@
export PORT
PW=password
export PW
add() {
	ldapadd -h localhost -p $PORT -x -D "cn=Directory Manager" -w $PW "$@"
}
modify() {
	ldapmodify -h localhost -p $PORT -x -D "cn=Directory Manager" -w $PW "$@"
}
modrdn() {
	ldapmodrdn -h localhost -p $PORT -x -D "cn=Directory Manager" -w $PW "$@"
}
delete() {
	ldapdelete -h localhost -p $PORT -x -D "cn=Directory Manager" -w $PW "$@"
}
search() {
	ldapsearch -h localhost -p $PORT -x -D "cn=Directory Manager" -w $PW "$@"
}
compare() {
	ldapcompare -h localhost -p $PORT -x -D "cn=Directory Manager" -w $PW "$@"
}
export -f add modify modrdn delete search compare

stopslapd() {
	if test -s $STATEDIR/pid ; then
		pid=`cat $STATEDIR/pid`
		kill -s HUP $pid 2> /dev/null
		sleep 1
		if kill -s 0 $pid 2> /dev/null ; then
			kill $pid 2> /dev/null
			sleep 1
			if kill -s 0 $pid 2> /dev/null ; then
				kill -s 9 $pid 2> /dev/null
				sleep 1
			fi
		fi
		if ! kill -s 0 $pid 2> /dev/null ; then
			rm -f $STATEDIR/pid
		fi
	fi
}
startslapd() {
	stopslapd
	rm -rf $STATEDIR/db
	local subdir=
	for subdir in bak db/userRoot ldif lock log tmp run ; do
		test -d $STATEDIR/$subdir || mkdir -p $STATEDIR/$subdir
	done
	test -s $BTESTDIR/config/schema/00core.ldif || ln -s -t $BTESTDIR/config $TESTDIR/config/schema
	cat $BTESTDIR/config/dse.ldif.initial > $BTESTDIR/config/dse.ldif
	if test -n "$1" && test -s "$1" ; then
		cat "$1" >> $BTESTDIR/config/dse.ldif
	fi
	if test -x $TESTDIR/$TEST/edit-dse-config.sh ; then
		if ! $TESTDIR/$TEST/edit-dse-config.sh $BTESTDIR/config/dse.ldif ; then
			echo ERROR: failed to edit dse.ldif before starting server.
			exit 1
		fi
	fi
	@NIS_PLUGIN_CONTINUE_WITHOUT_PORTMAP_ENV@=1 \
	@TRACE_CMD@ \
	$SLAPD -D $BTESTDIR/config -i $STATEDIR/pid -w $STATEDIR/pid
	if ! add -f $BTESTDIR/config/userRoot.ldif > /dev/null 2> /dev/null ; then
		local i
		local max=30
		for i in `seq $max` ; do
			sleep 1
			if add -f $TESTDIR/config/userRoot.ldif > /dev/null 2> /dev/null ; then
				break
			fi
		done
		if test $i -eq $max ; then
			echo ERROR: failed to add default entry set to server.
			exit 1
		fi
	fi
	if test -n "$2" && test -s "$2" ; then
		if ! add -f "$2" > /dev/null 2> /dev/null ; then
			echo ERROR: failed to add test-specific entries to server.
			exit 1
		fi
	fi
}