s3-selftest actually wait for smbclient to connect
authorAndrew Bartlett <abartlet@samba.org>
Thu, 7 Apr 2011 03:07:23 +0000 (13:07 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 7 Apr 2011 04:35:36 +0000 (14:35 +1000)
This means that we actually have a working smbd.  The previous code didn't know if it worked or not, and so created flaky tests.

Andrew Bartlett

selftest/target/Samba3.pm

index 9b9bec30a2785d5d41660e235c8215e1849d32f7..9a3be7d72fa6238537d11da65b262c0dbc89eabe 100644 (file)
@@ -858,11 +858,23 @@ sub wait_for_start($$)
        system($self->binpath("nmblookup") ." $envvars->{CONFIGURATION} -U 127.255.255.255 __SAMBA__");
        system($self->binpath("nmblookup") ." $envvars->{CONFIGURATION} -U $envvars->{SERVER_IP} $envvars->{SERVER}");
        system($self->binpath("nmblookup") ." $envvars->{CONFIGURATION} $envvars->{SERVER}");
+
        # make sure smbd is also up set
        print "wait for smbd\n";
-       system($self->binpath("smbclient") ." $envvars->{CONFIGURATION} -L $envvars->{SERVER_IP} -U% -p 139 | head -2");
-       system($self->binpath("smbclient") ." $envvars->{CONFIGURATION} -L $envvars->{SERVER_IP} -U% -p 139 | head -2");
 
+       my $count = 0;
+       my $ret;
+       do {
+           $ret = system($self->binpath("smbclient") ." $envvars->{CONFIGURATION} -L $envvars->{SERVER} -U% -p 139");
+           if ($ret != 0) {
+               sleep(2);
+           }
+           $count++
+       } while ($ret != 0 && $count < 10);
+       if ($count == 10) {
+           print "SMBD failed to start up in a reasonable time (20sec)\n";
+           exit 1;
+       }
        # Ensure we have domain users mapped.
        system($self->binpath("net") ." $envvars->{CONFIGURATION} groupmap add rid=513 unixgroup=domusers type=domain");