r21700: Run mktestsetup as an external program. This guarantees that it can be used...
[ira/wip.git] / source / script / tests / mktestsetup.sh
1 #!/bin/sh
2 # Build a test environment for running Samba
3
4 if [ $# -lt 1 ]
5 then
6         echo "$0 PREFIX"
7         exit 1
8 fi
9
10 PREFIX=$1
11
12 if test -z "$SHARE_BACKEND"; then
13         SHARE_BACKEND=classic
14 fi
15
16 if test -z "$SMBD_LOGLEVEL"; then
17         SMBD_LOGLEVEL=1
18 fi
19
20 DOMAIN=SAMBADOMAIN
21 USERNAME=administrator
22 REALM=SAMBA.EXAMPLE.COM
23 DNSNAME="samba.example.com"
24 BASEDN="dc=samba,dc=example,dc=com"
25 PASSWORD=penguin
26 AUTH="-U$USERNAME%$PASSWORD"
27 SRCDIR=`pwd`
28 ROOT=$USER
29 SERVER=localhost
30 NETBIOSNAME=localtest
31 if test -z "$ROOT"; then
32     ROOT=$LOGNAME
33 fi
34 if test -z "$ROOT"; then
35     ROOT=`whoami`
36 fi
37
38 oldpwd=`pwd`
39 srcdir=`dirname $0`/../..
40 mkdir -p $PREFIX || exit $?
41 cd $PREFIX
42 PREFIX_ABS=`pwd`
43 cd $oldpwd
44
45 TEST_DATA_PREFIX=$PREFIX_ABS
46
47 TMPDIR=$PREFIX_ABS/tmp
48 ETCDIR=$PREFIX_ABS/etc
49 PIDDIR=$PREFIX_ABS/pid
50 CONFFILE=$ETCDIR/smb.conf
51 KRB5_CONFIG=$ETCDIR/krb5.conf
52 PRIVATEDIR=$PREFIX_ABS/private
53 NCALRPCDIR=$PREFIX_ABS/ncalrpc
54 LOCKDIR=$PREFIX_ABS/lockdir
55
56 WINBINDD_SOCKET_DIR=$PREFIX_ABS/winbind_socket
57 CONFIGURATION="--configfile=$CONFFILE"
58 LDAPDIR=$PREFIX_ABS/ldap
59
60 rm -rf $PREFIX/*
61 mkdir -p $PRIVATEDIR $ETCDIR $PIDDIR $NCALRPCDIR $LOCKDIR $TMPDIR $LDAPDIR/db $LDAPDIR/db/bdb-logs $LDAPDIR/db/tmp
62
63 if [ -z "$VALGRIND" ]; then
64     nativeiconv="true"
65 else
66     nativeiconv="false"
67 fi
68
69 cat >$CONFFILE<<EOF
70 [global]
71         iconv:native = $nativeiconv
72         netbios name = $NETBIOSNAME
73         netbios aliases = $SERVER
74         workgroup = $DOMAIN
75         realm = $REALM
76         private dir = $PRIVATEDIR
77         pid directory = $PIDDIR
78         ncalrpc dir = $NCALRPCDIR
79         lock dir = $LOCKDIR
80         share backend = $SHARE_BACKEND
81         setup directory = $SRCDIR/setup
82         js include = $SRCDIR/scripting/libjs
83         winbindd socket directory = $WINBINDD_SOCKET_DIR
84         name resolve order = bcast
85         interfaces = 127.0.0.1/8
86         tls dh params file = $DHFILE
87         panic action = $SRCDIR/script/gdb_backtrace %PID% %PROG%
88         wins support = yes
89         server role = domain controller
90         max xmit = 32K
91         server max protocol = SMB2
92         notify:inotify = false
93         ldb:nosync = true
94         torture:subunitdir = $SRCDIR/bin/torture
95         torture:basedir = $TEST_DATA_PREFIX
96
97         system:anonymous = true
98 #We don't want to pass our self-tests if the PAC code is wrong
99         gensec:require_pac = true
100
101         log level = $SMBD_LOGLEVEL
102
103 [tmp]
104         path = $TMPDIR
105         read only = no
106         ntvfs handler = posix
107         posix:sharedelay = 100000
108         posix:eadb = $LOCKDIR/eadb.tdb
109
110 [cifs]
111         read only = no
112         ntvfs handler = cifs
113         cifs:server = $SERVER
114         cifs:user = $USERNAME
115         cifs:password = $PASSWORD
116         cifs:domain = $DOMAIN
117         cifs:share = tmp
118
119 [simple]
120         path = $TMPDIR
121         read only = no
122         ntvfs handler = simple
123
124 [cifsposixtestshare]
125         copy = simple
126         ntvfs handler = cifsposix   
127 EOF
128
129 ## Override default share.ldb file
130 rm -f $PRIVATEDIR/share.ldb
131 cat >$PRIVATEDIR/share.ldif<<EOF
132 ### Shares basedn
133 dn: @INDEXLIST
134 @IDXATTR: name
135
136 dn: @ATTRIBUTES
137 cn: CASE_INSENSITIVE
138 dc: CASE_INSENSITIVE
139 name: CASE_INSENSITIVE
140 dn: CASE_INSENSITIVE
141 objectClass: CASE_INSENSITIVE
142
143 dn: CN=Shares
144 objectClass: top
145 objectClass: organizationalUnit
146 cn: Shares
147
148 ### Default IPC$ Share
149 dn: CN=IPC$,CN=Shares
150 objectClass: top
151 objectClass: share
152 cn: IPC$
153 name: IPC$
154 type: IPC
155 path: /tmp
156 comment: Remote IPC
157 max-connections: -1
158 available: True
159 readonly: True
160 browseable: False
161 ntvfs-handler: default
162
163 ### Default ADMIN$ Share
164 dn: CN=ADMIN$,CN=Shares
165 objectClass: top
166 objectClass: share
167 cn: ADMIN$
168 name: ADMIN$
169 type: DISK
170 path: /tmp
171 comment: Remote Admin
172 max-connections: -1
173 available: True
174 readonly: True
175 browseable: False
176 ntvfs-handler: default
177
178 dn: CN=tmp,CN=Shares
179 objectClass: top
180 objectClass: share
181 cn: tmp
182 name: tmp
183 type: DISK
184 path: $TMPDIR
185 comment: Temp Dir for Tests
186 readonly: False
187 ntvfs-handler: posix
188 posix-sharedelay: 100000
189 posix-eadb: $LOCKDIR/eadb.tdb
190
191 dn: CN=cifs,CN=Shares
192 objectClass: top
193 objectClass: share
194 cn: cifs
195 name: cifs
196 type: DISK
197 readonly: False
198 ntvfs-handler: cifs
199 cifs-server: $SERVER
200 cifs-user: $USERNAME
201 cifs-password: $PASSWORD
202 cifs-domain: $DOMAIN
203 cifs-share: tmp
204 EOF
205
206 $srcdir/bin/ldbadd -H $PRIVATEDIR/share.ldb < $PRIVATEDIR/share.ldif >/dev/null || exit 1
207
208 cat >$KRB5_CONFIG<<EOF
209 [libdefaults]
210  default_realm = SAMBA.EXAMPLE.COM
211  dns_lookup_realm = false
212  dns_lookup_kdc = false
213  ticket_lifetime = 24h
214  forwardable = yes
215
216 [realms]
217  SAMBA.EXAMPLE.COM = {
218   kdc = 127.0.0.1:88
219   admin_server = 127.0.0.1:88
220   default_domain = samba.example.com
221  }
222
223 [appdefaults]
224         pkinit_anchors = FILE:$CAFILE
225
226 [kdc]
227         enable-pkinit = true
228         pkinit_identity = FILE:$KDCCERTFILE,$KEYFILE
229         pkinit_anchors = FILE:$CAFILE
230
231 [domain_realm]
232  .samba.example.com = SAMBA.EXAMPLE.COM
233 EOF
234
235 . `dirname $0`/mk-keyblobs.sh
236
237 #Ensure the config file is valid before we start
238 $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt >/dev/null 2>&1 || {
239     echo "">&2
240     echo "Failed to create configuration!" >&2
241     $srcdir/bin/testparm $CONFIGURATION  >&2
242     exit 1
243 }
244
245 ( $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt --parameter-name="netbios name" --section-name=global 2> /dev/null | grep -i ^$NETBIOSNAME ) >/dev/null 2>&1 || {
246     echo "$?" >&2
247     $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt --parameter-name="netbios name" --section-name=global --suppress-prompt 2> /dev/null | grep -i ^$NETBIOSNAME >&2
248     echo "Failed to create configuration!" >&2
249     exit 1
250 }
251
252 PROVISION_OPTIONS="$CONFIGURATION --host-name=$NETBIOSNAME --host-ip=127.0.0.1"
253 PROVISION_OPTIONS="$PROVISION_OPTIONS --quiet --domain $DOMAIN --realm $REALM"
254 PROVISION_OPTIONS="$PROVISION_OPTIONS --adminpass $PASSWORD --root=$ROOT"
255 PROVISION_OPTIONS="$PROVISION_OPTIONS --simple-bind-dn=cn=Manager,$BASEDN --password=$PASSWORD --root=$ROOT"
256 $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS >&2
257
258 . `dirname $0`/mk-openldap.sh
259
260 test -z "$FEDORA_DS_PREFIX" || {
261     . `dirname $0`/mk-fedora-ds.sh
262 }
263
264 cat >$PRIVATEDIR/wins_config.ldif<<EOF
265 dn: name=TORTURE_6,CN=PARTNERS
266 objectClass: wreplPartner
267 name: TORTURE_6
268 address: 127.0.0.6
269 pullInterval: 0
270 pushChangeCount: 0
271 type: 0x3
272 EOF
273
274 $srcdir/bin/ldbadd -H $PRIVATEDIR/wins_config.ldb < $PRIVATEDIR/wins_config.ldif >/dev/null || exit 1
275
276 echo "KRB5_CONFIG=$KRB5_CONFIG"
277 echo "PREFIX_ABS=$PREFIX_ABS"
278 echo "TEST_DATA_PREFIX=$TEST_DATA_PREFIX"
279 echo "CONFIGURATION=$CONFIGURATION"
280 echo "CONFFILE=$CONFFILE"
281 echo "SLAPD_CONF=$SLAPD_CONF"
282 echo "PIDDIR=$PIDDIR"
283 echo "AUTH=$AUTH"
284 echo "SERVER=$SERVER"
285 echo "NETBIOSNAME=$NETBIOSNAME"
286 echo "LDAP_URI=$LDAP_URI"
287 echo "LDAP_URI_ESCAPE=$LDAP_URI_ESCAPE"
288 echo "FEDORA_DS_INF=$FEDORA_DS_INF"
289 echo "DOMAIN=$DOMAIN"
290 echo "USERNAME=$USERNAME"
291 echo "REALM=$REALM"
292 echo "DNSNAME=$DNSNAME"
293 echo "BASEDN=$BASEDN"
294 echo "PASSWORD=$PASSWORD"
295 echo "SRCDIR=$SRCDIR"
296 echo "PREFIX=$PREFIX"
297 echo "SMBD_LOGLEVEL=$SMBD_LOGLEVEL"
298 echo "LDAPDIR=$LDAPDIR"