s3-selftest: Don't log to stdout, use logfiles instead.
[nivanova/samba-autobuild/.git] / selftest / target / Samba3.pm
index bf27f36a50a2ac53b913d5da6eaff327da47bd35..90873b8f7dd292b0195c4ab56fda54785e5248e8 100644 (file)
@@ -228,6 +228,7 @@ sub check_or_start($$$$$) {
 
                $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD};
                $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP};
+               $ENV{NSS_WRAPPER_WINBIND_SO_PATH} = $env_vars->{NSS_WRAPPER_WINBIND_SO_PATH};
 
                if ($nmbd ne "yes") {
                        $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub {
@@ -251,7 +252,7 @@ sub check_or_start($$$$$) {
                        @preargs = split(/ /, $ENV{NMBD_VALGRIND});
                }
 
-               exec(@preargs, $self->binpath("nmbd"), "-F", "-S", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start nmbd: $!");
+               exec(@preargs, $self->binpath("nmbd"), "-F", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start nmbd: $!");
        }
        write_pid($env_vars, "nmbd", $pid);
        print "DONE\n";
@@ -269,6 +270,7 @@ sub check_or_start($$$$$) {
 
                $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD};
                $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP};
+               $ENV{NSS_WRAPPER_WINBIND_SO_PATH} = $env_vars->{NSS_WRAPPER_WINBIND_SO_PATH};
 
                if ($winbindd ne "yes") {
                        $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub {
@@ -292,7 +294,7 @@ sub check_or_start($$$$$) {
                        @preargs = split(/ /, $ENV{WINBINDD_VALGRIND});
                }
 
-               exec(@preargs, $self->binpath("winbindd"), "-F", "-S", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start winbindd: $!");
+               exec(@preargs, $self->binpath("winbindd"), "-F", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start winbindd: $!");
        }
        write_pid($env_vars, "winbindd", $pid);
        print "DONE\n";
@@ -310,6 +312,7 @@ sub check_or_start($$$$$) {
 
                $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD};
                $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP};
+               $ENV{NSS_WRAPPER_WINBIND_SO_PATH} = $env_vars->{NSS_WRAPPER_WINBIND_SO_PATH};
 
                if ($smbd ne "yes") {
                        $SIG{USR1} = $SIG{ALRM} = $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub {
@@ -330,7 +333,7 @@ sub check_or_start($$$$$) {
                if(defined($ENV{SMBD_VALGRIND})) {
                        @preargs = split(/ /,$ENV{SMBD_VALGRIND});
                }
-               exec(@preargs, $self->binpath("smbd"), "-F", "-S", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start smbd: $!");
+               exec(@preargs, $self->binpath("smbd"), "-F", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start smbd: $!");
        }
        write_pid($env_vars, "smbd", $pid);
        print "DONE\n";
@@ -409,6 +412,9 @@ sub provision($$$$$$)
        my $lockdir="$prefix_abs/lockdir";
        push(@dirs,$lockdir);
 
+       my $eventlogdir="$prefix_abs/lockdir/eventlog";
+       push(@dirs,$eventlogdir);
+
        my $logdir="$prefix_abs/logs";
        push(@dirs,$logdir);
 
@@ -433,6 +439,41 @@ sub provision($$$$$$)
        my $nss_wrapper_passwd = "$privatedir/passwd";
        my $nss_wrapper_group = "$privatedir/group";
 
+       my $mod_printer_pl = "$ENV{PERL} $RealBin/../source3/script/tests/printing/modprinter.pl";
+
+       my @eventlog_list = ("dns server", "application");
+
+       ##
+       ## calculate uids and gids
+       ##
+
+       my ($max_uid, $max_gid);
+       my ($uid_nobody, $uid_root);
+       my ($gid_nobody, $gid_nogroup, $gid_root);
+
+       if ($unix_uid < 0xffff - 2) {
+               $max_uid = 0xffff;
+       } else {
+               $max_uid = $unix_uid;
+       }
+
+       $uid_root = $max_uid - 1;
+       $uid_nobody = $max_uid - 2;
+
+       if ($unix_gids[0] < 0xffff - 3) {
+               $max_gid = 0xffff;
+       } else {
+               $max_gid = $unix_gids[0];
+       }
+
+       $gid_nobody = $max_gid - 1;
+       $gid_nogroup = $max_gid - 2;
+       $gid_root = $max_gid - 3;
+
+       ##
+       ## create conffile
+       ##
+
        open(CONF, ">$conffile") or die("Unable to open $conffile");
        print CONF "
 [global]
@@ -458,9 +499,18 @@ sub provision($$$$$$)
 
        time server = yes
 
-       add user script = $nss_wrapper_pl --path $nss_wrapper_passwd --type passwd --action add --name %u
-       add machine script = $nss_wrapper_pl --path $nss_wrapper_passwd --type passwd --action add --name %u
-       delete user script = $nss_wrapper_pl --path $nss_wrapper_passwd --type passwd --action delete --name %u
+       add user script =               $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action add --name %u --gid $gid_nogroup
+       add group script =              $nss_wrapper_pl --group_path  $nss_wrapper_group  --type group  --action add --name %g
+       add machine script =            $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action add --name %u --gid $gid_nogroup
+       add user to group script =      $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type member --action add --member %u --name %g --group_path $nss_wrapper_group
+       delete user script =            $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action delete --name %u
+       delete group script =           $nss_wrapper_pl --group_path  $nss_wrapper_group  --type group  --action delete --name %g
+       delete user from group script = $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type member --action delete --member %u --name %g --group_path $nss_wrapper_group
+
+       addprinter command =            $mod_printer_pl -a -s $conffile --
+       deleteprinter command =         $mod_printer_pl -d -s $conffile --
+
+       eventlog list = application \"dns server\"
 
        kernel oplocks = no
        kernel change notify = no
@@ -472,6 +522,8 @@ sub provision($$$$$$)
        winbindd:socket dir = $wbsockdir
        idmap uid = 100000-200000
        idmap gid = 100000-200000
+       winbind enum users = yes
+       winbind enum groups = yes
 
 #      min receivefile size = 4000
 
@@ -483,6 +535,16 @@ sub provision($$$$$$)
        create mask = 755
        vfs objects = $bindir_abs/xattr_tdb.so $bindir_abs/streams_depot.so
 
+       printing = vlp
+       print command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb print %p %s
+       lpq command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb lpq %p
+       lp rm command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb lprm %p %j
+       lp pause command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb lppause %p %j
+       lp resume command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb lpresume %p %j
+       queue pause command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb queuepause %p
+       queue resume command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb queueresume %p
+       lpq cache time = 0
+
        # Begin extra options
        $extra_options
        # End extra options
@@ -506,14 +568,6 @@ sub provision($$$$$$)
 [print1]
        copy = tmp
        printable = yes
-       printing = vlp
-       print command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb print %p %s
-       lpq command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb lpq %p
-       lp rm command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb lprm %p %j
-       lp pause command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb lppause %p %j
-       lp resume command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb lpresume %p %j
-       queue pause command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb queuepause %p
-       queue resume command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb queueresume %p
 
 [print2]
        copy = print1
@@ -529,19 +583,31 @@ sub provision($$$$$$)
        ##
 
        open(PASSWD, ">$nss_wrapper_passwd") or die("Unable to open $nss_wrapper_passwd");
-       print PASSWD "nobody:x:65534:65533:nobody gecos:$prefix_abs:/bin/false
-root:x:65533:65532:root gecos:$prefix_abs:/bin/false
+       print PASSWD "nobody:x:$uid_nobody:$gid_nobody:nobody gecos:$prefix_abs:/bin/false
 $unix_name:x:$unix_uid:$unix_gids[0]:$unix_name gecos:$prefix_abs:/bin/false
 ";
+       if ($unix_uid != 0) {
+               print PASSWD "root:x:$uid_root:$gid_root:root gecos:$prefix_abs:/bin/false";
+       }
        close(PASSWD);
 
        open(GROUP, ">$nss_wrapper_group") or die("Unable to open $nss_wrapper_group");
-       print GROUP "nobody:x:65533:
-nogroup:x:65534:nobody
+       print GROUP "nobody:x:$gid_nobody:
+nogroup:x:$gid_nogroup:nobody
 $unix_name-group:x:$unix_gids[0]:
 ";
+       if ($unix_gids[0] != 0) {
+               print GROUP "root:x:$gid_root:";
+       }
+
        close(GROUP);
 
+       foreach my $evlog (@eventlog_list) {
+               my $evlogtdb = "$eventlogdir/$evlog.tdb";
+               open(EVENTLOG, ">$evlogtdb") or die("Unable to open $evlogtdb");
+               close(EVENTLOG);
+       }
+
        $ENV{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd;
        $ENV{NSS_WRAPPER_GROUP} = $nss_wrapper_group;
 
@@ -574,6 +640,7 @@ $unix_name-group:x:$unix_gids[0]:
        $ret{SOCKET_WRAPPER_DEFAULT_IFACE} = $swiface;
        $ret{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd;
        $ret{NSS_WRAPPER_GROUP} = $nss_wrapper_group;
+       $ret{NSS_WRAPPER_WINBIND_SO_PATH} = $ENV{NSS_WRAPPER_WINBIND_SO_PATH};
 
        return \%ret;
 }