5 Usage: dbcheck-links.sh PREFIX RELEASE
14 . `dirname $0`/subunit.sh
16 release_dir=`dirname $0`/../../source4/selftest/provisions/$RELEASE
19 if [ -x "$BINDIR/ldbadd" ]; then
20 ldbadd="$BINDIR/ldbadd"
24 if [ -x "$BINDIR/ldbmodify" ]; then
25 ldbmodify="$BINDIR/ldbmodify"
29 if [ -x "$BINDIR/ldbdel" ]; then
30 ldbdel="$BINDIR/ldbdel"
34 if [ -x "$BINDIR/ldbsearch" ]; then
35 ldbsearch="$BINDIR/ldbsearch"
39 if [ -x "$BINDIR/ldbrename" ]; then
40 ldbrename="$BINDIR/ldbrename"
44 if test -x $BINDIR/tdbrestore;
46 `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE $BINDIR/tdbrestore
48 `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE
53 tmpfile=$PREFIX_ABS/$RELEASE/expected-dbcheck-link-output.txt.tmp
54 tmpldif1=$PREFIX_ABS/$RELEASE/expected-dbcheck-output2.txt.tmp1
56 TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb -s base -b '' | grep highestCommittedUSN > $tmpldif1
58 $PYTHON $BINDIR/samba-tool dbcheck -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb --fix --yes > $tmpfile
59 if [ "$?" != "1" ]; then
62 diff $tmpfile $release_dir/expected-dbcheck-link-output.txt
63 if [ "$?" != "0" ]; then
67 tmpldif2=$PREFIX_ABS/$RELEASE/expected-dbcheck-output2.txt.tmp2
68 TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb -s base -b '' | grep highestCommittedUSN > $tmpldif2
70 diff $tmpldif1 $tmpldif2
71 if [ "$?" != "0" ]; then
77 tmpldif1=$PREFIX_ABS/$RELEASE/expected-dbcheck-output2.txt.tmp1
79 TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb -s base -b '' | grep highestCommittedUSN > $tmpldif1
81 $PYTHON $BINDIR/samba-tool dbcheck -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb
82 if [ "$?" != "0" ]; then
85 tmpldif2=$PREFIX_ABS/$RELEASE/expected-dbcheck-output2.txt.tmp2
86 TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb -s base -b '' | grep highestCommittedUSN > $tmpldif2
88 diff $tmpldif1 $tmpldif2
89 if [ "$?" != "0" ]; then
95 ldif=$release_dir/add-dangling-forwardlink-user.ldif
96 TZ=UTC $ldbadd -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif
97 if [ "$?" != "0" ]; then
101 ldif=$release_dir/add-initially-normal-link.ldif
102 TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif
103 if [ "$?" != "0" ]; then
108 ldif=$release_dir/delete-only-backlink.ldif
109 TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb.d/DC%3DRELEASE-4-5-0-PRE1,DC%3DSAMBA,DC%3DCORP.ldb $ldif
110 if [ "$?" != "0" ]; then
115 add_dangling_backlink() {
116 ldif=$release_dir/add-dangling-backlink-user.ldif
117 TZ=UTC $ldbadd -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif
118 if [ "$?" != "0" ]; then
122 ldif=$release_dir/add-dangling-backlink.ldif
123 TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb.d/DC%3DRELEASE-4-5-0-PRE1,DC%3DSAMBA,DC%3DCORP.ldb $ldif
124 if [ "$?" != "0" ]; then
129 add_two_more_users() {
130 ldif=$release_dir/add-two-more-users.ldif
131 TZ=UTC $ldbadd -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif
132 if [ "$?" != "0" ]; then
137 add_four_more_links() {
138 ldif=$release_dir/add-four-more-links.ldif
139 TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif
140 if [ "$?" != "0" ]; then
146 ldif=$release_dir/remove-one-more-link.ldif
147 TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif
148 if [ "$?" != "0" ]; then
154 ldif=$release_dir/remove-one-more-user.ldif
155 TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif
156 if [ "$?" != "0" ]; then
162 TZ=UTC $ldbrename -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb 'cn=user1,cn=users,DC=release-4-5-0-pre1,DC=samba,DC=corp' 'cn=user1x,cn=users,DC=release-4-5-0-pre1,DC=samba,DC=corp'
163 if [ "$?" != "0" ]; then
168 check_expected_after_links() {
169 tmpldif=$PREFIX_ABS/$RELEASE/expected-links-after-link-dbcheck.ldif.tmp
170 TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb '(|(cn=swimmers)(cn=leaders)(cn=helpers))' -s sub -b DC=release-4-5-0-pre1,DC=samba,DC=corp --show-deleted --sorted member > $tmpldif
171 diff $tmpldif $release_dir/expected-links-after-link-dbcheck.ldif
172 if [ "$?" != "0" ]; then
177 check_expected_after_deleted_links() {
178 tmpldif=$PREFIX_ABS/$RELEASE/expected-deleted-links-after-link-dbcheck.ldif.tmp
179 TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb '(|(cn=swimmers)(cn=leaders)(cn=helpers))' -s sub -b DC=release-4-5-0-pre1,DC=samba,DC=corp --show-deleted --reveal --sorted member > $tmpldif
180 diff $tmpldif $release_dir/expected-deleted-links-after-link-dbcheck.ldif
181 if [ "$?" != "0" ]; then
186 check_expected_after_objects() {
187 tmpldif=$PREFIX_ABS/$RELEASE/expected-objects-after-link-dbcheck.ldif.tmp
188 TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb '(|(samaccountname=fred)(samaccountname=ddg)(samaccountname=usg)(samaccountname=user1)(samaccountname=user1x)(samaccountname=user2))' -s sub -b DC=release-4-5-0-pre1,DC=samba,DC=corp --show-deleted --reveal --sorted samAccountName | grep sAMAccountName > $tmpldif
189 diff $tmpldif $release_dir/expected-objects-after-link-dbcheck.ldif
190 if [ "$?" != "0" ]; then
196 ldif=$release_dir/dangling-one-way-link.ldif
197 TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif
198 if [ "$?" != "0" ]; then
203 if [ -d $release_dir ]; then
204 testit $RELEASE undump
205 testit "add_two_more_users" add_two_more_users
206 testit "add_four_more_links" add_four_more_links
207 testit "remove_one_link" remove_one_link
208 testit "remove_one_user" remove_one_user
209 testit "move_one_user" move_one_user
210 testit "add_dangling_link" add_dangling_link
211 testit "add_dangling_backlink" add_dangling_backlink
212 testit "dbcheck" dbcheck
213 testit "dbcheck_clean" dbcheck_clean
214 testit "check_expected_after_deleted_links" check_expected_after_deleted_links
215 testit "check_expected_after_links" check_expected_after_links
216 testit "check_expected_after_objects" check_expected_after_objects
217 testit "dangling_one_way" dangling_one_way
218 testit "dbcheck_clean" dbcheck_clean
220 subunit_start_test $RELEASE
221 subunit_skip_test $RELEASE <<EOF
225 subunit_start_test "tombstones_expunge"
226 subunit_skip_test "tombstones_expunge" <<EOF
231 if [ -d $PREFIX_ABS/${RELEASE} ]; then
232 rm -fr $PREFIX_ABS/${RELEASE}