blob: 9c68047d93637bea77e59725cbb034b74e33d4a8 (
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#!/bin/sh
if [ $# -lt 1 ]; then
cat <<EOF
Usage: $0 PREFIX
EOF
exit 1
fi
PREFIX_ABS="$1"
shift 1
failed=0
. $(dirname $0)/subunit.sh
. $(dirname $0)/common_test_fns.inc
RELEASE="release-4-8-0-pre1"
release_dir="$SRCDIR_ABS/source4/selftest/provisions/$RELEASE"
OLD_RELEASE="release-4-1-0rc3"
old_release_dir="$SRCDIR_ABS/source4/selftest/provisions/$OLD_RELEASE"
samba_tdbrestore="tdbrestore"
if [ -x "$BINDIR/tdbrestore" ]; then
samba_tdbrestore="$BINDIR/tdbrestore"
fi
samba_undump="$SRCDIR_ABS/source4/selftest/provisions/undump.sh"
if [ ! -x $samba_undump ] || [ ! -d $release_dir ] || [ ! -d $old_release_dir ]; then
subunit_start_test $RELEASE
subunit_skip_test $RELEASE <<EOF
no test provision
EOF
subunit_start_test "functional_prep"
subunit_skip_test "functional_prep" <<EOF
no test provision
EOF
subunit_start_test "functional_prep_old"
subunit_skip_test "functional_prep_old" <<EOF
no test provision
EOF
exit 0
fi
cleanup_output_directories()
{
remove_directory $PREFIX_ABS/2012R2_schema
remove_directory $PREFIX_ABS/$RELEASE
remove_directory $PREFIX_ABS/$OLD_RELEASE
}
undump()
{
$samba_undump $release_dir $PREFIX_ABS/$RELEASE $samba_tdbrestore
}
undump_old()
{
$samba_undump $old_release_dir $PREFIX_ABS/$OLD_RELEASE $samba_tdbrestore
}
PROVISION_OPTS="--use-ntvfs --host-ip6=::1 --host-ip=127.0.0.1"
provision_2012r2()
{
$PYTHON $BINDIR/samba-tool domain provision $PROVISION_OPTS --domain=REALM --realm=REALM.COM --targetdir=$PREFIX_ABS/2012R2_schema --base-schema=2012_R2 --host-name=FLPREP
}
ldapcmp_ignore()
{
# At some point we will need to ignore, but right now, it should be perfect
IGNORE_ATTRS=$1
$PYTHON $BINDIR/samba-tool ldapcmp tdb://$PREFIX_ABS/$2/private/sam.ldb tdb://$PREFIX_ABS/$3/private/sam.ldb --two --skip-missing-dn --filter msDS-SupportedEncryptionTypes,servicePrincipalName
}
ldapcmp()
{
# Our functional prep doesn't set these values as they were not provided
# These are XML schema based enumerations which are used for claims
ldapcmp_ignore "msDS-ClaimPossibleValues" "$RELEASE" "2012R2_schema"
}
functional_prep()
{
$PYTHON $BINDIR/samba-tool domain functionalprep -H tdb://$PREFIX_ABS/2012R2_schema/private/sam.ldb --function-level=2012_R2
}
functional_prep_old()
{
$PYTHON $BINDIR/samba-tool domain functionalprep -H tdb://$PREFIX_ABS/$OLD_RELEASE/private/sam.ldb --function-level=2012_R2
}
steal_roles()
{
# Must steal schema master and infrastructure roles first
$PYTHON $BINDIR/samba-tool fsmo seize --role=schema -H tdb://$PREFIX_ABS/$OLD_RELEASE/private/sam.ldb --force
$PYTHON $BINDIR/samba-tool fsmo seize --role=infrastructure -H tdb://$PREFIX_ABS/$OLD_RELEASE/private/sam.ldb --force
}
schema_upgrade()
{
$PYTHON $BINDIR/samba-tool domain schemaupgrade -H tdb://$PREFIX_ABS/$OLD_RELEASE/private/sam.ldb --schema=2012_R2
}
# double-check we cleaned up from the last test run
cleanup_output_directories
testit $RELEASE undump || failed=$(expr $failed + 1)
# Provision a DC based on 2012R2 schema
testit "provision_2012R2_schema" provision_2012r2 || failed=$(expr $failed + 1)
# Perform functional prep up to 2012 R2 level
testit "functional_prep" functional_prep || failed=$(expr $failed + 1)
# check that the databases are now the same
testit "check_databases_same" ldapcmp || failed=$(expr $failed + 1)
testit $OLD_RELEASE undump_old || failed=$(expr $failed + 1)
testit "steal_roles" steal_roles || failed=$(expr $failed + 1)
testit "schema_upgrade" schema_upgrade || failed=$(expr $failed + 1)
testit "functional_prep_old" functional_prep_old || failed=$(expr $failed + 1)
cleanup_output_directories
exit $failed
|