tests: Use --configfile instead of -s
[samba.git] / testprogs / blackbox / upgradeprovision-oldrelease.sh
1 #!/bin/sh
2
3 if [ $# -lt 1 ]; then
4 cat <<EOF
5 Usage: dbcheck.sh PREFIX RELEASE
6 EOF
7 exit 1;
8 fi
9
10 PREFIX_ABS="$1"
11 RELEASE="$2"
12 shift 2
13
14 failed=0
15
16 . `dirname $0`/subunit.sh
17 . `dirname $0`/common_test_fns.inc
18
19 release_dir="$SRCDIR_ABS/source4/selftest/provisions/${RELEASE}"
20
21 LDBDEL_BIN=ldbdel
22 if [ -x "$BINDIR/ldbdel" ]; then
23         LDBDEL_BIN=$BINDIR/ldbdel
24 fi
25
26 samba_tdbrestore="tdbrestore"
27 if [ -x "$BINDIR/tdbrestore" ]; then
28     samba_tdbrestore="$BINDIR/tdbrestore"
29 fi
30
31 samba_undump="$SRCDIR_ABS/source4/selftest/provisions/undump.sh"
32 if [ ! -x $samba_undump ] || [ ! -d $release_dir ]; then
33     subunit_start_test "${RELEASE}"
34     subunit_skip_test "${RELEASE}" <<EOF
35 no test provision
36 EOF
37
38     subunit_start_test "remove_dns_user"
39     subunit_skip_test "remove_dns_user" <<EOF
40 no test provision
41 EOF
42
43     subunit_start_test "upgradeprovision"
44     subunit_skip_test "upgradeprovision" <<EOF
45 no test provision
46 EOF
47     subunit_start_test "upgradeprovision_full"
48     subunit_skip_test "upgradeprovision_full" <<EOF
49 no test provision
50 EOF
51     subunit_start_test "reindex"
52     subunit_skip_test "reindex" <<EOF
53 no test provision
54 EOF
55     subunit_start_test "dbcheck"
56     subunit_skip_test "dbcheck" <<EOF
57 no test provision
58 EOF
59     subunit_start_test "dbcheck_clean"
60     subunit_skip_test "dbcheck_clean" <<EOF
61 no test provision
62 EOF
63     # So far, only releases before 4.0.0rc6 need a dbcheck if upgradeprovision has already been run
64     if [ x$RELEASE != x"release-4-0-0" ]; then
65         subunit_start_test "dbcheck_full"
66         subunit_skip_test "dbcheck_full" <<EOF
67 no test provision
68 EOF
69     fi
70     subunit_start_test "dbcheck_full_clean"
71     subunit_skip_test "dbcheck_full_clean" <<EOF
72 no test provision
73 EOF
74     subunit_start_test "dbcheck_full_clean_well_known_acls"
75     subunit_skip_test "dbcheck_full_clean_well_known_acls" <<EOF
76 no test provision
77 EOF
78     subunit_start_test "samba_dnsupgrade"
79     subunit_skip_test "samba_dnsupgrade" <<EOF
80 no test provision
81 EOF
82     subunit_start_test "referenceprovision"
83     subunit_skip_test "referenceprovision" <<EOF
84 no test provision
85 EOF
86     subunit_start_test "ldapcmp"
87     subunit_skip_test "ldapcmp" <<EOF
88 no test provision
89 EOF
90     subunit_start_test "ldapcmp_full"
91     subunit_skip_test "ldapcmp_full" <<EOF
92 no test provision
93 EOF
94     subunit_start_test "ldapcmp_sd"
95     subunit_skip_test "ldapcmp_sd" <<EOF
96 no test provision
97 EOF
98     subunit_start_test "ldapcmp_full_sd"
99     subunit_skip_test "ldapcmp_full_sd" <<EOF
100 no test provision
101 EOF
102
103     exit 0
104 fi
105
106 undump() {
107     $samba_undump $release_dir $PREFIX_ABS/${RELEASE}_upgrade $samba_tdbrestore
108     $samba_undump $release_dir $PREFIX_ABS/${RELEASE}_upgrade_full $samba_tdbrestore
109
110     cp -a $release_dir/private/*.keytab $PREFIX_ABS/${RELEASE}_upgrade/private/
111     cp -a $release_dir/sysvol $PREFIX_ABS/${RELEASE}_upgrade/
112     mkdir $PREFIX_ABS/${RELEASE}_upgrade/etc/
113     sed -e "s|@@PREFIX@@|$PREFIX_ABS/${RELEASE}_upgrade|g" $release_dir/etc/smb.conf.template \
114      >  $PREFIX_ABS/${RELEASE}_upgrade/etc/smb.conf
115
116     cp -a $release_dir/private/*.keytab $PREFIX_ABS/${RELEASE}_upgrade_full/private/
117     cp -a $release_dir/sysvol $PREFIX_ABS/${RELEASE}_upgrade_full/
118     mkdir $PREFIX_ABS/${RELEASE}_upgrade_full/etc/
119     sed -e "s|@@PREFIX@@|$PREFIX_ABS/${RELEASE}_upgrade_full|g" $release_dir/etc/smb.conf.template \
120      >  $PREFIX_ABS/${RELEASE}_upgrade_full/etc/smb.conf
121 }
122
123 remove_dns_user() {
124     if [ x$RELEASE != x"release-4-0-0" ]; then
125        # This is done, because otherwise the upgrdeprovision will not run without --full
126        ${LDBDEL_BIN} -H tdb://$PREFIX_ABS/${RELEASE}_upgrade/private/sam.ldb cn=dns,cn=users,dc=${RELEASE},dc=samba,dc=corp
127     fi
128 }
129
130 reindex() {
131        $PYTHON $BINDIR/samba-tool dbcheck --reindex -H tdb://$PREFIX_ABS/${RELEASE}_upgrade/private/sam.ldb $@
132 }
133
134 # This should 'fail', because it returns the number of modified records
135 dbcheck() {
136        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}_upgrade/private/sam.ldb $@
137 }
138
139 dbcheck_clean() {
140        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}_upgrade/private/sam.ldb $@
141 }
142
143 # This should 'fail', because it returns the number of modified records
144 dbcheck_full() {
145        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}_upgrade_full/private/sam.ldb $@
146 }
147
148 dbcheck_full_clean() {
149        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}_upgrade_full/private/sam.ldb $@
150 }
151
152 # This checks that after the upgrade, the well known ACLs are correct, so this reset should not want to do anything
153 dbcheck_full_clean_well_known_acls() {
154        $PYTHON $BINDIR/samba-tool dbcheck --reset-well-known-acls --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}_upgrade_full/private/sam.ldb $@
155 }
156
157 upgradeprovision() {
158         # bring the really old Samba schema in line with a more recent 2008R2 schema
159         $PYTHON $BINDIR/samba_upgradeprovision --configfile="$PREFIX_ABS/${RELEASE}_upgrade/etc/smb.conf" --debugchange
160
161         # on top of this, also apply 2008R2 changes we accidentally missed in the past
162         $PYTHON $BINDIR/samba-tool domain schemaupgrade -H tdb://$PREFIX_ABS/${RELEASE}_upgrade/private/sam.ldb --ldf-file=samba-4.7-missing-for-schema45.ldif,fix-forest-rev.ldf
163
164         # add missing domain prep for 2008R2
165         $PYTHON $BINDIR/samba-tool domain functionalprep -H tdb://$PREFIX_ABS/${RELEASE}_upgrade/private/sam.ldb --domain --function-level 2008_R2
166 }
167
168 upgradeprovision_full() {
169         # add missing domain prep for 2008R2
170         $PYTHON $BINDIR/samba-tool domain functionalprep -H tdb://$PREFIX_ABS/${RELEASE}_upgrade_full/private/sam.ldb --domain --function-level 2008_R2
171
172         $PYTHON $BINDIR/samba_upgradeprovision --configfile="$PREFIX_ABS/${RELEASE}_upgrade_full/etc/smb.conf" --full --debugchange
173 }
174
175 samba_upgradedns() {
176         $PYTHON $BINDIR/samba_upgradedns --dns-backend=SAMBA_INTERNAL --configfile="$PREFIX_ABS/${RELEASE}_upgrade_full/etc/smb.conf"
177 }
178
179 referenceprovision() {
180         $PYTHON $BINDIR/samba-tool domain provision --server-role="dc" --domain=SAMBA --host-name=ares --realm=${RELEASE}.samba.corp --targetdir=$PREFIX_ABS/${RELEASE}_upgrade_reference --use-ntvfs --host-ip=127.0.0.1 --host-ip6=::1 --function-level=2003 --base-schema=2008_R2_old
181 }
182
183 ldapcmp() {
184     if [ x$RELEASE != x"alpha13" ]; then
185          $PYTHON $BINDIR/samba-tool ldapcmp tdb://$PREFIX_ABS/${RELEASE}_upgrade_reference/private/sam.ldb tdb://$PREFIX_ABS/${RELEASE}_upgrade/private/sam.ldb --two --skip-missing-dn --filter=dnsRecord,displayName,msDS-SupportedEncryptionTypes
186     fi
187 }
188
189 ldapcmp_full() {
190         $PYTHON $BINDIR/samba-tool ldapcmp tdb://$PREFIX_ABS/${RELEASE}_upgrade_reference/private/sam.ldb tdb://$PREFIX_ABS/${RELEASE}_upgrade_full/private/sam.ldb --two --filter=dNSProperty,dnsRecord,cn,displayName,versionNumber,systemFlags,msDS-HasInstantiatedNCs --skip-missing-dn
191 }
192
193 ldapcmp_sd() {
194         $PYTHON $BINDIR/samba-tool ldapcmp tdb://$PREFIX_ABS/${RELEASE}_upgrade_reference/private/sam.ldb tdb://$PREFIX_ABS/${RELEASE}_upgrade/private/sam.ldb --two --sd --skip-missing-dn
195 }
196
197 ldapcmp_full_sd() {
198         $PYTHON $BINDIR/samba-tool ldapcmp tdb://$PREFIX_ABS/${RELEASE}_upgrade_reference/private/sam.ldb tdb://$PREFIX_ABS/${RELEASE}_upgrade_full/private/sam.ldb --two --sd --skip-missing-dn
199 }
200
201 remove_directory $PREFIX_ABS/${RELEASE}_upgrade
202 remove_directory $PREFIX_ABS/${RELEASE}_upgrade_full
203 remove_directory $PREFIX_ABS/${RELEASE}_upgrade_reference
204
205 testit $RELEASE undump || failed=`expr $failed + 1`
206 testit "remove_dns_user" remove_dns_user || failed=`expr $failed + 1`
207 testit "upgradeprovision" upgradeprovision || failed=`expr $failed + 1`
208 testit "upgradeprovision_full" upgradeprovision_full || failed=`expr $failed + 1`
209 testit "reindex" reindex || failed=`expr $failed + 1`
210 testit_expect_failure "dbcheck" dbcheck || failed=`expr $failed + 1`
211 testit_expect_failure "dbcheck_full" dbcheck_full || failed=`expr $failed + 1`
212 testit "dbcheck_clean" dbcheck_clean || failed=`expr $failed + 1`
213 testit "dbcheck_full_clean" dbcheck_full_clean || failed=`expr $failed + 1`
214 testit "dbcheck_full_clean_well_known_acls" dbcheck_full_clean_well_known_acls || failed=`expr $failed + 1`
215 testit "referenceprovision" referenceprovision || failed=`expr $failed + 1`
216 testit "samba_upgradedns" samba_upgradedns || failed=`expr $failed + 1`
217 testit "ldapcmp" ldapcmp || failed=`expr $failed + 1`
218 testit "ldapcmp_sd" ldapcmp_sd || failed=`expr $failed + 1`
219 testit "ldapcmp_full_sd" ldapcmp_full_sd || failed=`expr $failed + 1`
220
221 remove_directory $PREFIX_ABS/${RELEASE}_upgrade
222 remove_directory $PREFIX_ABS/${RELEASE}_upgrade_full
223 remove_directory $PREFIX_ABS/${RELEASE}_upgrade_reference
224
225 exit $failed