summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
Diffstat (limited to 'source4')
-rw-r--r--source4/script/tests/Samba4.pm58
-rwxr-xr-xsource4/script/tests/mk-openldap.sh2
-rwxr-xr-xsource4/script/tests/mktestdc.sh2
-rwxr-xr-xsource4/script/tests/selftest.pl111
-rwxr-xr-xsource4/script/tests/test_binding_string.sh33
-rwxr-xr-xsource4/script/tests/test_blackbox.sh18
-rwxr-xr-xsource4/script/tests/test_echo.sh27
-rwxr-xr-xsource4/script/tests/test_ejs.sh21
-rwxr-xr-xsource4/script/tests/test_ldap.sh25
-rwxr-xr-xsource4/script/tests/test_local.sh7
-rwxr-xr-xsource4/script/tests/test_nbt.sh17
-rwxr-xr-xsource4/script/tests/test_net.sh15
-rwxr-xr-xsource4/script/tests/test_posix.sh14
-rwxr-xr-xsource4/script/tests/test_quick.sh18
-rwxr-xr-xsource4/script/tests/test_rpc.sh17
-rwxr-xr-xsource4/script/tests/test_rpc_quick.sh15
-rwxr-xr-xsource4/script/tests/test_session_key.sh24
-rwxr-xr-xsource4/script/tests/test_simple.sh18
-rwxr-xr-xsource4/script/tests/tests_all.sh22
-rwxr-xr-xsource4/script/tests/tests_quick.sh10
20 files changed, 186 insertions, 288 deletions
diff --git a/source4/script/tests/Samba4.pm b/source4/script/tests/Samba4.pm
index fa20ccbdaf..ac3dc653b8 100644
--- a/source4/script/tests/Samba4.pm
+++ b/source4/script/tests/Samba4.pm
@@ -16,10 +16,14 @@ sub new($$$$) {
return $self;
}
-sub slapd_start($$$)
+sub slapd_start($$)
{
my $count = 0;
- my ($self, $conf, $uri) = @_;
+ my ($self, $env_vars) = @_;
+
+ my $conf = $env_vars->{SLAPD_CONF};
+ my $uri = $env_vars->{LDAP_URI};
+
# running slapd in the background means it stays in the same process group, so it can be
# killed by timelimit
if (defined($ENV{FEDORA_DS_PREFIX})) {
@@ -33,7 +37,7 @@ sub slapd_start($$$)
while (system("$self->{bindir}/ldbsearch -H $uri -s base -b \"\" supportedLDAPVersion > /dev/null") != 0) {
$count++;
if ($count > 10) {
- $self->slapd_stop();
+ $self->slapd_stop($env_vars);
return 0;
}
sleep(1);
@@ -41,13 +45,13 @@ sub slapd_start($$$)
return 1;
}
-sub slapd_stop($)
+sub slapd_stop($$)
{
- my ($self) = @_;
- if (defined($ENV{FEDORA_DS_PREFIX})) {
- system("$ENV{LDAPDIR}/slapd-samba4/stop-slapd");
+ my ($self, $envvars) = @_;
+ if (defined($envvars->{FEDORA_DS_PREFIX})) {
+ system("$envvars->{LDAPDIR}/slapd-samba4/stop-slapd");
} else {
- open(IN, "<$ENV{PIDDIR}/slapd.pid") or
+ open(IN, "<$envvars->{PIDDIR}/slapd.pid") or
die("unable to open slapd pid file");
kill 9, <IN>;
close(IN);
@@ -61,7 +65,7 @@ sub check_or_start($$$$)
# Start slapd before smbd
if ($self->{ldap}) {
- $self->slapd_start($ENV{SLAPD_CONF}, $ENV{LDAP_URI}) or
+ $self->slapd_start($env_vars) or
die("couldn't start slapd");
print "LDAP PROVISIONING...";
@@ -132,9 +136,9 @@ sub wait_for_start($$)
system("bin/nmblookup $testenv_vars->{CONFIGURATION} -U $testenv_vars->{SERVER} $testenv_vars->{NETBIOSNAME}");
}
-sub provision($$$)
+sub provision($$)
{
- my ($self, $environment, $prefix) = @_;
+ my ($self, $prefix) = @_;
my %ret = ();
print "PROVISIONING...";
open(IN, "$RealBin/mktestdc.sh $prefix|") or die("Unable to setup");
@@ -156,9 +160,9 @@ sub provision_ldap($)
die("LDAP PROVISIONING failed: $self->{bindir}/smbscript $self->{setupdir}/provision $ENV{PROVISION_OPTIONS} \"$ENV{PROVISION_ACI}\" --ldap-backend=$ENV{LDAP_URI}");
}
-sub stop($)
+sub teardown_env($$)
{
- my ($self) = @_;
+ my ($self, $envvars) = @_;
close(DATA);
@@ -166,22 +170,33 @@ sub stop($)
my $failed = $? >> 8;
- if (-f "$ENV{PIDDIR}/smbd.pid" ) {
- open(IN, "<$ENV{PIDDIR}/smbd.pid") or die("unable to open smbd pid file");
+ if (-f "$envvars->{PIDDIR}/smbd.pid" ) {
+ open(IN, "<$envvars->{PIDDIR}/smbd.pid") or die("unable to open smbd pid file");
kill 9, <IN>;
close(IN);
}
- $self->slapd_stop() if ($self->{ldap});
+ $self->slapd_stop($envvars) if ($self->{ldap});
return $failed;
}
-sub setup_env($$$)
+sub setup_env($$$$)
{
- my ($self, $name, $path, $socket_wrapper_dir) = @_;
+ my ($self, $envname, $path, $socket_wrapper_dir) = @_;
+
+ if ($envname eq "dc") {
+ return $self->setup_dc("$path/dc", $socket_wrapper_dir);
+ } else {
+ die("Samba4 can't provide environment $envname");
+ }
+}
+
+sub setup_dc($$$)
+{
+ my ($self, $path, $socket_wrapper_dir) = @_;
- my $env = $self->provision($name, $path);
+ my $env = $self->provision($path);
$self->check_or_start($env, $socket_wrapper_dir,
($ENV{SMBD_MAX_TIME} or 5400));
@@ -191,4 +206,9 @@ sub setup_env($$$)
return $env;
}
+sub stop($)
+{
+ my ($self) = @_;
+}
+
1;
diff --git a/source4/script/tests/mk-openldap.sh b/source4/script/tests/mk-openldap.sh
index b580d75417..a70db73c74 100755
--- a/source4/script/tests/mk-openldap.sh
+++ b/source4/script/tests/mk-openldap.sh
@@ -99,7 +99,7 @@ rm -f $MODCONF
touch $MODCONF
slaptest -u -f $SLAPD_CONF >&2 || {
- echo "enabling slapd modules" >&2
+ # echo "enabling slapd modules" >&2
cat > $MODCONF <<EOF
modulepath /usr/lib/ldap
moduleload back_bdb
diff --git a/source4/script/tests/mktestdc.sh b/source4/script/tests/mktestdc.sh
index fc495e7b57..bbf2e2b395 100755
--- a/source4/script/tests/mktestdc.sh
+++ b/source4/script/tests/mktestdc.sh
@@ -24,7 +24,6 @@ REALM=SAMBA.EXAMPLE.COM
DNSNAME="samba.example.com"
BASEDN="dc=samba,dc=example,dc=com"
PASSWORD=penguin
-AUTH="-U$USERNAME%$PASSWORD"
SRCDIR=`pwd`
ROOT=$USER
SERVER=localhost
@@ -274,7 +273,6 @@ echo "KRB5_CONFIG=$KRB5_CONFIG"
echo "PREFIX_ABS=$PREFIX_ABS"
echo "SLAPD_CONF=$SLAPD_CONF"
echo "PIDDIR=$PIDDIR"
-echo "AUTH=$AUTH"
echo "SERVER=$SERVER"
echo "NETBIOSNAME=$NETBIOSNAME"
echo "LDAP_URI=$LDAP_URI"
diff --git a/source4/script/tests/selftest.pl b/source4/script/tests/selftest.pl
index e056077b82..bb9510a00b 100755
--- a/source4/script/tests/selftest.pl
+++ b/source4/script/tests/selftest.pl
@@ -132,6 +132,7 @@ my $opt_verbose = 0;
my $opt_testenv = 0;
my $opt_ldap = undef;
my $opt_analyse_cmd = undef;
+my $opt_resetup_env = undef;
my $srcdir = ".";
my $builddir = ".";
@@ -233,7 +234,7 @@ sub run_test_plain($$$$)
my ($name, $cmd, $i, $totalsuites) = @_;
my $err = "";
if ($#$suitesfailed+1 > 0) { $err = ", ".($#$suitesfailed+1)." errors"; }
- printf "[$i/$totalsuites in " . (time() - $start)."s$err] $name\n";
+ print "[$i/$totalsuites in " . (time() - $start)."s$err] $name\n";
open(RESULT, "$cmd 2>&1|");
my $expected_ret = 1;
my $open_tests = {};
@@ -335,6 +336,7 @@ my $result = GetOptions (
'testenv' => \$opt_testenv,
'ldap' => \$opt_ldap,
'analyse-cmd=s' => \$opt_analyse_cmd,
+ 'resetup-environment' => \$opt_resetup_env,
);
exit(1) if (not $result);
@@ -434,28 +436,44 @@ my $interfaces = join(',', ("127.0.0.6/8",
"127.0.0.10/8",
"127.0.0.11/8"));
-my $testenv_vars = $target->setup_env("dc", "$prefix/dc", $socket_wrapper_dir);
-
my $conffile = "$prefix/client.conf";
-my $abs_srcdir = cwd();
-open(CF, ">$conffile");
-print CF "[global]\n";
-if (defined($ENV{VALGRIND})) {
- print CF "\ticonv:native = true\n";
-} else {
- print CF "\ticonv:native = false\n";
-}
-print CF
+
+sub write_clientconf($$)
+{
+ my ($conffile, $vars) = @_;
+
+ my $abs_srcdir = cwd();
+
+ open(CF, ">$conffile");
+ print CF "[global]\n";
+ if (defined($ENV{VALGRIND})) {
+ print CF "\ticonv:native = true\n";
+ } else {
+ print CF "\ticonv:native = false\n";
+ }
+ print CF
" netbios name = localtest
netbios aliases = localhost
- workgroup = $testenv_vars->{DOMAIN}
- realm = $testenv_vars->{REALM}
- pid directory = $testenv_vars->{PIDDIR}
- ncalrpc dir = $testenv_vars->{NCALRPCDIR}
+";
+ if (defined($vars->{DOMAIN})) {
+ print CF "\tworkgroup = $vars->{DOMAIN}\n";
+ }
+ if (defined($vars->{REALM})) {
+ print CF "\trealm = $vars->{REALM}\n";
+ }
+ if (defined($vars->{PIDDIR})) {
+ print CF "\tpid directory = $vars->{PIDDIR}\n";
+ }
+ if (defined($vars->{NCALRPCDIR})) {
+ print CF "\tncalrpc dir = $vars->{NCALRPCDIR}\n";
+ }
+ if (defined($vars->{WINBINDD_SOCKET_DIR})) {
+ print CF "\twinbindd socket directory = $vars->{WINBINDD_SOCKET_DIR}\n";
+ }
+ print CF "
js include = $abs_srcdir/scripting/libjs
- winbindd socket directory = $testenv_vars->{WINBINDD_SOCKET_DIR}
name resolve order = bcast
- interfaces = 127.0.0.1/8
+ interfaces = $interfaces
panic action = $abs_srcdir/script/gdb_backtrace \%PID\% \%PROG\%
max xmit = 32K
notify:inotify = false
@@ -465,10 +483,11 @@ print CF
torture:basedir = ./st
gensec:require_pac = true
";
-close(CF);
+ close(CF);
+}
+
my @torture_options = ();
-push (@torture_options, "--option=interfaces=$interfaces");
push (@torture_options, "--configfile=$conffile");
# ensure any one smbtorture call doesn't run too long
push (@torture_options, "--maximum-runtime=$torture_maxtime");
@@ -480,15 +499,12 @@ push (@torture_options, "--option=torture:quick=yes") if ($opt_quick);
$ENV{TORTURE_OPTIONS} = join(' ', @torture_options);
print "OPTIONS $ENV{TORTURE_OPTIONS}\n";
-foreach ("PASSWORD", "DOMAIN", "SERVER", "USERNAME", "NETBIOSNAME") {
- $ENV{$_} = $testenv_vars->{$_};
-}
-
my @todo = ();
my $testsdir = "$srcdir/script/tests";
$ENV{CONFIGURATION} = "--configfile=$conffile";
+
if ($opt_quick) {
open(IN, "$testsdir/tests_quick.sh|");
} else {
@@ -514,14 +530,44 @@ my $suitestotal = $#todo + 1;
my $i = 0;
$| = 1;
-# The Kerberos tests fail if this variable is set.
-delete $ENV{DOMAIN};
+my %running_envs = ();
-$ENV{KRB5_CONFIG} = $testenv_vars->{KRB5_CONFIG};
+sub setup_env($)
+{
+ my ($envname) = @_;
+ my $testenv_vars;
+ if (defined($running_envs{$envname})) {
+ $testenv_vars = $running_envs{$envname};
+ } elsif ($envname eq "none") {
+ $testenv_vars = {};
+ } else {
+ $testenv_vars = $target->setup_env($envname, $prefix, $socket_wrapper_dir);
+ }
+ write_clientconf($conffile, $testenv_vars);
+ foreach ("PASSWORD", "DOMAIN", "SERVER", "USERNAME", "NETBIOSNAME",
+ "KRB5_CONFIG") {
+ if (defined($testenv_vars->{$_})) {
+ $ENV{$_} = $testenv_vars->{$_};
+ } else {
+ delete $ENV{$_};
+ }
+ }
+
+ $running_envs{$envname} = $testenv_vars;
+ return $testenv_vars;
+}
+
+sub teardown_env($)
+{
+ my ($envname) = @_;
+ $target->teardown_env($running_envs{$envname});
+ delete $running_envs{$envname};
+}
SocketWrapper::set_default_iface(6);
if ($opt_testenv) {
+ my $testenv_vars = setup_env("dc");
$ENV{PIDDIR} = $testenv_vars->{PIDDIR};
my $term = ($ENV{TERM} or "xterm");
system("$term -e 'echo -e \"Welcome to the Samba4 Test environment
@@ -533,6 +579,7 @@ TORTURE_OPTIONS=\$TORTURE_OPTIONS
CONFIGURATION=\$CONFIGURATION
SERVER=\$SERVER
NETBIOSNAME=\$NETBIOSNAME\" && bash'");
+ teardown_env("dc");
} else {
foreach (@todo) {
$i++;
@@ -547,7 +594,7 @@ NETBIOSNAME=\$NETBIOSNAME\" && bash'");
next;
}
- # $target->setup_env($envname, "$prefix/$envname", $socket_wrapper_dir);
+ setup_env($envname);
if ($from_build_farm) {
run_test_buildfarm($name, $cmd, $i, $suitestotal);
@@ -558,12 +605,16 @@ NETBIOSNAME=\$NETBIOSNAME\" && bash'");
if (defined($opt_analyse_cmd)) {
system("$opt_analyse_cmd \"$name\"");
}
+
+ teardown_env($envname) if ($opt_resetup_env);
}
}
print "\n";
-my $failed = $target->stop();
+teardown_env($_) foreach (keys %running_envs);
+
+$target->stop();
my $end = time();
my $duration = ($end-$start);
@@ -587,6 +638,8 @@ if ($numfailed == 0) {
}
print "DURATION: $duration seconds\n";
+my $failed = 0;
+
# if there were any valgrind failures, show them
foreach (<$prefix/valgrind.log*>) {
next unless (-s $_);
diff --git a/source4/script/tests/test_binding_string.sh b/source4/script/tests/test_binding_string.sh
index 9558893981..a8afc07ac1 100755
--- a/source4/script/tests/test_binding_string.sh
+++ b/source4/script/tests/test_binding_string.sh
@@ -1,31 +1,18 @@
#!/bin/sh
-if [ $# -lt 4 ]; then
-cat <<EOF
-Usage: test_binding_string.sh SERVER USERNAME PASSWORD DOMAIN
-EOF
-exit 1;
-fi
-
-server="$1"
-username="$2"
-password="$3"
-domain="$4"
-shift 4
-
incdir=`dirname $0`
. $incdir/test_functions.sh
-for I in "ncacn_np:$server" \
- "ncacn_ip_tcp:$server" \
- "ncacn_np:$server[rpcecho]" \
- "ncacn_np:$server[/pipe/rpcecho]" \
- "ncacn_np:$server[/pipe/rpcecho,sign,seal]" \
- "ncacn_np:$server[,sign]" \
- "ncacn_ip_tcp:$server[,sign]" \
+for I in "ncacn_np:\$SERVER" \
+ "ncacn_ip_tcp:\$SERVER" \
+ "ncacn_np:\$SERVER[rpcecho]" \
+ "ncacn_np:\$SERVER[/pipe/rpcecho]" \
+ "ncacn_np:\$SERVER[/pipe/rpcecho,sign,seal]" \
+ "ncacn_np:\$SERVER[,sign]" \
+ "ncacn_ip_tcp:\$SERVER[,sign]" \
"ncalrpc:" \
- "308FB580-1EB2-11CA-923B-08002B1075A7@ncacn_np:$server" \
- "308FB580-1EB2-11CA-923B-08002B1075A7@ncacn_ip_tcp:$server"
+ "308FB580-1EB2-11CA-923B-08002B1075A7@ncacn_np:\$SERVER" \
+ "308FB580-1EB2-11CA-923B-08002B1075A7@ncacn_ip_tcp:\$SERVER"
do
- plantest "$I" rpc bin/smbtorture $TORTURE_OPTIONS "$I" -U"$username"%"$password" -W $domain --option=torture:quick=yes RPC-ECHO "$*"
+ plantest "$I" dc bin/smbtorture $TORTURE_OPTIONS "$I" -U"\$USERNAME"%"\$PASSWORD" -W "\$DOMAIN" --option=torture:quick=yes RPC-ECHO "$*"
done
diff --git a/source4/script/tests/test_blackbox.sh b/source4/script/tests/test_blackbox.sh
index dd6c31c436..ea50761d9a 100755
--- a/source4/script/tests/test_blackbox.sh
+++ b/source4/script/tests/test_blackbox.sh
@@ -2,23 +2,19 @@
# this runs tests that interact directly with the command-line tools rather than using the API
-if [ $# -lt 5 ]; then
+if [ $# -lt 1 ]; then
cat <<EOF
-Usage: test_blackbox.sh SERVER USERNAME PASSWORD DOMAIN PREFIX [...]
+Usage: test_blackbox.sh PREFIX [...]
EOF
exit 1;
fi
-SERVER=$1
-USERNAME=$2
-PASSWORD=$3
-DOMAIN=$4
-PREFIX=$5
-shift 5
-ADDARGS="$@"
+PREFIX=$1
+shift 1
+ADDARGS="$*"
incdir=`dirname $0`
. $incdir/test_functions.sh
-plantest "blackbox.smbclient" smb $incdir/../../../testprogs/blackbox/test_smbclient.sh "$SERVER" "$USERNAME" "$PASSWORD" "$DOMAIN" "$PREFIX" "$ADDARGS"
-plantest "blackbox.cifsdd" smb $incdir/../../../testprogs/blackbox/test_cifsdd.sh "$SERVER" "$USERNAME" "$PASSWORD" "$DOMAIN" "$ADDARGS"
+plantest "blackbox.smbclient" dc $incdir/../../../testprogs/blackbox/test_smbclient.sh "\$SERVER" "\$USERNAME" "\$PASSWORD" "\$DOMAIN" "$PREFIX" "$ADDARGS"
+plantest "blackbox.cifsdd" dc $incdir/../../../testprogs/blackbox/test_cifsdd.sh "\$SERVER" "\$USERNAME" "\$PASSWORD" "\$DOMAIN" "$ADDARGS"
diff --git a/source4/script/tests/test_echo.sh b/source4/script/tests/test_echo.sh
index 79a19b1c2e..f09aeca4e5 100755
--- a/source4/script/tests/test_echo.sh
+++ b/source4/script/tests/test_echo.sh
@@ -1,35 +1,16 @@
#!/bin/sh
-if [ $# -lt 4 ]; then
-cat <<EOF
-Usage: test_echo.sh SERVER USERNAME PASSWORD DOMAIN
-EOF
-exit 1;
-fi
-
-server="$1"
-username="$2"
-password="$3"
-domain="$4"
-shift 4
-
incdir=`dirname $0`
. $incdir/test_functions.sh
-transports="ncacn_np ncacn_ip_tcp"
-if [ $server = "localhost" ]; then
- transports="ncalrpc $transports"
-fi
-if [ $server = "localtest" ]; then
- transports="ncalrpc $transports"
-fi
+transports="ncacn_np ncacn_ip_tcp ncalrpc"
for transport in $transports; do
for bindoptions in connect spnego spnego,sign spnego,seal $VALIDATE padcheck bigendian bigendian,seal; do
for ntlmoptions in \
"--option=socket:testnonblock=True --option=torture:quick=yes"; do
name="RPC-ECHO on $transport with $bindoptions and $ntlmoptions"
- plantest "$name" rpc bin/smbtorture $TORTURE_OPTIONS $transport:"$server[$bindoptions]" $ntlmoptions -U"$username"%"$password" -W $domain RPC-ECHO "$*"
+ plantest "$name" dc bin/smbtorture $TORTURE_OPTIONS $transport:"\$SERVER[$bindoptions]" $ntlmoptions -U"\$USERNAME"%"\$PASSWORD" -W "\$DOMAIN" RPC-ECHO "$*"
done
done
done
@@ -48,10 +29,10 @@ for transport in $transports; do
"--option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes" \
; do
name="RPC-ECHO on $transport with $bindoptions and $ntlmoptions"
- plantest "$name" rpc bin/smbtorture $TORTURE_OPTIONS $transport:"$server[$bindoptions]" $ntlmoptions -U"$username"%"$password" -W $domain RPC-ECHO "$*"
+ plantest "$name" dc bin/smbtorture $TORTURE_OPTIONS $transport:"\$SERVER[$bindoptions]" $ntlmoptions -U"\$USERNAME"%"\$PASSWORD" -W \$DOMAIN RPC-ECHO "$*"
done
done
done
name="RPC-ECHO on ncacn_np over smb2"
-plantest "$name" rpc bin/smbtorture $TORTURE_OPTIONS ncacn_np:"$server[smb2]" -U"$username"%"$password" -W $domain RPC-ECHO "$*"
+plantest "$name" dc bin/smbtorture $TORTURE_OPTIONS ncacn_np:"\$SERVER[smb2]" -U"\$USERNAME"%"\$PASSWORD" -W \$DOMAIN RPC-ECHO "$*"
diff --git a/source4/script/tests/test_ejs.sh b/source4/script/tests/test_ejs.sh
index 4eba2de81a..858602ce38 100755
--- a/source4/script/tests/test_ejs.sh
+++ b/source4/script/tests/test_ejs.sh
@@ -1,17 +1,6 @@
#!/bin/sh
# test some simple EJS operations
-if [ $# -lt 3 ]; then
-cat <<EOF
-Usage: test_ejs.sh DOMAIN USERNAME PASSWORD [OPTIONS]
-EOF
-exit 1;
-fi
-
-DOMAIN="$1"
-USERNAME="$2"
-PASSWORD="$3"
-shift 3
CONFIGURATION="$*"
incdir=`dirname $0`
@@ -23,10 +12,10 @@ DATADIR=../testdata
PATH=bin:$PATH
export PATH
-plantest "base.js" rpc "$SCRIPTDIR/base.js" $CONFIGURATION
-plantest "samr.js" rpc "$SCRIPTDIR/samr.js" $CONFIGURATION ncalrpc: -U$USERNAME%$PASSWORD
-plantest "echo.js" rpc "$SCRIPTDIR/echo.js" $CONFIGURATION ncalrpc: -U$USERNAME%$PASSWORD
-plantest "ejsnet.js" rpc "$SCRIPTDIR/ejsnet.js" $CONFIGURATION -U$USERNAME%$PASSWORD $DOMAIN ejstestuser
+plantest "base.js" dc "$SCRIPTDIR/base.js" $CONFIGURATION
+plantest "samr.js" dc "$SCRIPTDIR/samr.js" $CONFIGURATION ncalrpc: -U\$USERNAME%\$PASSWORD
+plantest "echo.js" dc "$SCRIPTDIR/echo.js" $CONFIGURATION ncalrpc: -U\$USERNAME%\$PASSWORD
+plantest "ejsnet.js" dc "$SCRIPTDIR/ejsnet.js" $CONFIGURATION -U\$USERNAME%\$PASSWORD \$DOMAIN ejstestuser
plantest "ldb.js" none "$SCRIPTDIR/ldb.js" `pwd` $CONFIGURATION
plantest "samba3sam.js" none $SCRIPTDIR/samba3sam.js $CONFIGURATION `pwd` $DATADIR/samba3/
-plantest "winreg" rpc scripting/bin/winreg $CONFIGURATION ncalrpc: 'HKLM' -U$USERNAME%$PASSWORD
+plantest "winreg" dc scripting/bin/winreg $CONFIGURATION ncalrpc: 'HKLM' -U\$USERNAME%\$PASSWORD
diff --git a/source4/script/tests/test_ldap.sh b/source4/script/tests/test_ldap.sh
index 8d85e5a8e5..57f1160136 100755
--- a/source4/script/tests/test_ldap.sh
+++ b/source4/script/tests/test_ldap.sh
@@ -1,34 +1,23 @@
#!/bin/sh
# test some simple LDAP and CLDAP operations
-if [ $# -lt 3 ]; then
-cat <<EOF
-Usage: test_ldap.sh SERVER USERNAME PASSWORD
-EOF
-exit 1;
-fi
-
-SERVER="$1"
-USERNAME="$2"
-PASSWORD="$3"
-
incdir=`dirname $0`
. $incdir/test_functions.sh
p=ldap
-for options in "" "--option=socket:testnonblock=true" "-U$USERNAME%$PASSWORD --option=socket:testnonblock=true" "-U$USERNAME%$PASSWORD"; do
- plantest "TESTING PROTOCOL $p with options $options" ldap ../testprogs/blackbox/test_ldb.sh $p $SERVER $options
+for options in "" "--option=socket:testnonblock=true" "-U\$USERNAME%\$PASSWORD --option=socket:testnonblock=true" "-U\$USERNAME%\$PASSWORD"; do
+ plantest "TESTING PROTOCOL $p with options $options" dc ../testprogs/blackbox/test_ldb.sh $p \$SERVER $options
done
# see if we support ldaps
if grep ENABLE_GNUTLS.1 include/config.h > /dev/null; then
p=ldaps
- for options in "" "-U$USERNAME%$PASSWORD"; do
- plantest "TESTING PROTOCOL $p with options $options" ldap ../testprogs/blackbox/test_ldb.sh $p $SERVER $options
+ for options in "" "-U\$USERNAME%\$PASSWORD"; do
+ plantest "TESTING PROTOCOL $p with options $options" dc ../testprogs/blackbox/test_ldb.sh $p \$SERVER $options
done
fi
for t in LDAP-CLDAP LDAP-BASIC LDAP-SCHEMA LDAP-UPTODATENESS
do
- plantest "$t" ldap bin/smbtorture $TORTURE_OPTIONS "-U$USERNAME%$PASSWORD" //$SERVER/_none_ $t
+ plantest "$t" dc bin/smbtorture $TORTURE_OPTIONS "-U\$USERNAME%\$PASSWORD" //\$SERVER/_none_ $t
done
# only do the ldb tests when not in quick mode - they are quite slow, and ldb
@@ -36,9 +25,9 @@ done
test "$TORTURE_QUICK" = "yes" || {
LDBDIR=lib/ldb
export LDBDIR
- plantest "ldb" ldap $LDBDIR/tests/test-tdb.sh
+ plantest "ldb" dc $LDBDIR/tests/test-tdb.sh
}
SCRIPTDIR=../testprogs/ejs
-plantest "ejs ldap" ldap $SCRIPTDIR/ldap.js $CONFIGURATION $SERVER -U$USERNAME%$PASSWORD
+plantest "ejs ldap" dc $SCRIPTDIR/ldap.js $CONFIGURATION \$SERVER -U\$USERNAME%\$PASSWORD
diff --git a/source4/script/tests/test_local.sh b/source4/script/tests/test_local.sh
index 57e11961bb..e8bf10c901 100755
--- a/source4/script/tests/test_local.sh
+++ b/source4/script/tests/test_local.sh
@@ -8,13 +8,6 @@ if [ `uname` = "Linux" ]; then
local_tests="$local_tests LOCAL-ICONV"
fi
-if [ $# -lt 0 ]; then
-cat <<EOF
-Usage: test_local.sh
-EOF
-exit 1;
-fi
-
incdir=`dirname $0`
. $incdir/test_functions.sh
diff --git a/source4/script/tests/test_nbt.sh b/source4/script/tests/test_nbt.sh
index c3a09d4fb1..95bfb9696c 100755
--- a/source4/script/tests/test_nbt.sh
+++ b/source4/script/tests/test_nbt.sh
@@ -1,17 +1,6 @@
#!/bin/sh
# test some NBT/WINS operations
-if [ $# -lt 1 ]; then
-cat <<EOF
-Usage: test_nbt.sh SERVER
-EOF
-exit 1;
-fi
-
-SERVER="$1"
-USERNAME="$2"
-PASSWORD="$3"
-
incdir=`dirname $0`
. $incdir/test_functions.sh
@@ -20,11 +9,11 @@ SCRIPTDIR=../testprogs/ejs
PATH=bin:$PATH
export PATH
-plantest "nmblookup -U $SERVER $SERVER" netbios bin/nmblookup $TORTURE_OPTIONS -U $SERVER $SERVER
-plantest "nmblookup $SERVER" netbios bin/nmblookup $TORTURE_OPTIONS $SERVER
+plantest "nmblookup -U \$SERVER \$SERVER" dc bin/nmblookup $TORTURE_OPTIONS -U \$SERVER \$SERVER
+plantest "nmblookup \$SERVER" dc bin/nmblookup $TORTURE_OPTIONS \$SERVER
NBT_TESTS=`bin/smbtorture --list | grep ^NBT`
for f in $NBT_TESTS; do
- plantest "$f" netbios bin/smbtorture $TORTURE_OPTIONS //$SERVER/_none_ $f -U$USERNAME%$PASSWORD
+ plantest "$f" dc bin/smbtorture $TORTURE_OPTIONS //\$SERVER/_none_ $f -U\$USERNAME%\$PASSWORD
done
diff --git a/source4/script/tests/test_net.sh b/source4/script/tests/test_net.sh
index b7b12c8b7a..5156aa5967 100755
--- a/source4/script/tests/test_net.sh
+++ b/source4/script/tests/test_net.sh
@@ -6,19 +6,6 @@ ncacn_np_tests="NET-API-LOOKUP NET-API-LOOKUPHOST NET-API-LOOKUPPDC NET-API-RPCC
ncalrpc_tests="NET-API-RPCCONN-SRV NET-API-RPCCONN-DC NET-API-RPCCONN-DCINFO NET-API-LISTSHARES NET-API-CREATEUSER NET-API-DELETEUSER NET-USERINFO NET-USERADD NET-USERDEL NET-USERMOD NET-API-LOOKUPNAME NET-API-USERINFO NET-API-USERLIST NET-API-DOMOPENLSA NET-API-DOMCLOSELSA NET-API-DOMOPENSAMR NET-API-DOMCLOSESAMR"
ncacn_ip_tcp_tests="NET-API-LOOKUP NET-API-LOOKUPHOST NET-API-LOOKUPPDC NET-API-RPCCONN-SRV NET-API-RPCCONN-DC NET-API-RPCCONN-DCINFO NET-API-LISTSHARES NET-API-CREATEUSER NET-API-DELETEUSER NET-API-MODIFYUSER"
-if [ $# -lt 4 ]; then
-cat <<EOF
-Usage: test_net.sh SERVER USERNAME PASSWORD DOMAIN
-EOF
-exit 1;
-fi
-
-server="$1"
-username="$2"
-password="$3"
-domain="$4"
-shift 4
-
incdir=`dirname $0`
. $incdir/test_functions.sh
@@ -31,7 +18,7 @@ for bindoptions in seal,padcheck $VALIDATE bigendian; do
esac
for t in $tests; do
name="$t on $transport with $bindoptions"
- plantest "$name" rpc $VALGRIND bin/smbtorture $TORTURE_OPTIONS $transport:"$server[$bindoptions]" -U"$username"%"$password" -W $domain $t "$*"
+ plantest "$name" dc $VALGRIND bin/smbtorture $TORTURE_OPTIONS $transport:"\$SERVER[$bindoptions]" -U"\$USERNAME"%"\$PASSWORD" -W "\$DOMAIN" $t "$*"
done
done
done
diff --git a/source4/script/tests/test_posix.sh b/source4/script/tests/test_posix.sh
index 8faaac1a88..88040def88 100755
--- a/source4/script/tests/test_posix.sh
+++ b/source4/script/tests/test_posix.sh
@@ -3,18 +3,6 @@
# this runs the file serving tests that are expected to pass with the
# current posix ntvfs backend
-if [ $# -lt 3 ]; then
-cat <<EOF
-Usage: test_posix.sh UNC USERNAME PASSWORD <first> <smbtorture args>
-EOF
-exit 1;
-fi
-
-unc="$1"
-username="$2"
-password="$3"
-start="$4"
-shift 4
ADDARGS="$*"
incdir=`dirname $0`
@@ -30,5 +18,5 @@ for t in $tests; do
continue;
fi
start=""
- plantest "$t" smb $VALGRIND bin/smbtorture $TORTURE_OPTIONS $ADDARGS $unc -U"$username"%"$password" $t
+ plantest "$t" dc $VALGRIND bin/smbtorture $TORTURE_OPTIONS $ADDARGS //\$SERVER/tmp -U"\$USERNAME"%"\$PASSWORD" $t
done
diff --git a/source4/script/tests/test_quick.sh b/source4/script/tests/test_quick.sh
index 19dfab5730..e601bc7f9b 100755
--- a/source4/script/tests/test_quick.sh
+++ b/source4/script/tests/test_quick.sh
@@ -1,18 +1,6 @@
#!/bin/sh
# run a quick set of filesystem tests
-if [ $# -lt 3 ]; then
-cat <<EOF
-Usage: test_quick.sh UNC USERNAME PASSWORD <first> <smbtorture args>
-EOF
-exit 1;
-fi
-
-unc="$1"
-username="$2"
-password="$3"
-start="$4"
-shift 4
ADDARGS="$*"
incdir=`dirname $0`
@@ -26,10 +14,6 @@ tests="$tests RAW-UNLINK RAW-READ RAW-CLOSE RAW-IOCTL RAW-RENAME"
tests="$tests RAW-EAS RAW-STREAMS"
for t in $tests; do
- if [ ! -z "$start" -a "$start" != $t ]; then
- continue;
- fi
- start=""
name="$t"
- plantest "$name" base $VALGRIND bin/smbtorture $TORTURE_OPTIONS $ADDARGS $unc -U"$username"%"$password" $t
+ plantest "$name" base $VALGRIND bin/smbtorture $TORTURE_OPTIONS $ADDARGS //\$SERVER/cifs -U"\$USERNAME"%"\$PASSWORD" $t
done
diff --git a/source4/script/tests/test_rpc.sh b/source4/script/tests/test_rpc.sh
index 59a403a735..1b8b57d534 100755
--- a/source4/script/tests/test_rpc.sh
+++ b/source4/script/tests/test_rpc.sh
@@ -9,19 +9,6 @@ slow_ncacn_np_tests="RPC-SAMLOGON RPC-SAMR RPC-SAMR-USERS RPC-SAMR-PASSWORDS RPC
slow_ncalrpc_tests="RPC-SAMR RPC-SAMR-USERS RPC-SAMR-PASSWORDS RPC-COUNTCALLS RPC-CRACKNAMES"
slow_ncacn_ip_tcp_tests="RPC-SAMR RPC-SAMR-USERS RPC-SAMR-PASSWORDS RPC-COUNTCALLS RPC-CRACKNAMES"
-if [ $# -lt 4 ]; then
-cat <<EOF
-Usage: test_rpc.sh SERVER USERNAME PASSWORD DOMAIN
-EOF
-exit 1;
-fi
-
-server="$1"
-username="$2"
-password="$3"
-domain="$4"
-shift 4
-
incdir=`dirname $0`
. $incdir/test_functions.sh
@@ -34,7 +21,7 @@ for bindoptions in seal,padcheck $VALIDATE bigendian; do
esac
for t in $tests; do
name="$t on $transport with $bindoptions"
- plantest "$name" rpc $VALGRIND bin/smbtorture $TORTURE_OPTIONS $transport:"$server[$bindoptions]" -U"$username"%"$password" -W $domain $t "$*"
+ plantest "$name" dc $VALGRIND bin/smbtorture $TORTURE_OPTIONS $transport:"\$SERVER[$bindoptions]" -U"\$USERNAME"%"\$PASSWORD" -W \$DOMAIN $t "$*"
done
done
done
@@ -48,7 +35,7 @@ for bindoptions in connect $VALIDATE ; do
esac
for t in $tests; do
name="$t on $transport with $bindoptions"
- plantest "$name" rpc $VALGRIND bin/smbtorture $TORTURE_OPTIONS $transport:"$server[$bindoptions]" -U"$username"%"$password" -W $domain $t "$*"
+ plantest "$name" dc $VALGRIND bin/smbtorture $TORTURE_OPTIONS $transport:"\$SERVER[$bindoptions]" -U"\$USERNAME"%"\$PASSWORD" -W \$DOMAIN $t "$*"
done
done
done
diff --git a/source4/script/tests/test_rpc_quick.sh b/source4/script/tests/test_rpc_quick.sh
index 3526c53c3b..1f37bac2e5 100755
--- a/source4/script/tests/test_rpc_quick.sh
+++ b/source4/script/tests/test_rpc_quick.sh
@@ -6,19 +6,6 @@ ncacn_np_tests="RPC-ALTERCONTEXT RPC-JOIN RPC-ECHO RPC-SCHANNEL RPC-NETLOGON RPC
ncacn_ip_tcp_tests="RPC-ALTERCONTEXT RPC-JOIN RPC-ECHO RPC-HANDLES"
ncalrpc_tests="RPC-ECHO"
-if [ $# -lt 4 ]; then
-cat <<EOF
-Usage: test_rpc_quick.sh SERVER USERNAME PASSWORD DOMAIN
-EOF
-exit 1;
-fi
-
-server="$1"
-username="$2"
-password="$3"
-domain="$4"
-shift 4
-
incdir=`dirname $0`
. $incdir/test_functions.sh
@@ -31,7 +18,7 @@ for bindoptions in seal,padcheck $VALIDATE bigendian; do
esac
for t in $tests; do
name="$t on $transport with $bindoptions"
- plantest "$name" rpc $VALGRIND bin/smbtorture $TORTURE_OPTIONS $transport:"$server[$bindoptions]" -U"$username"%"$password" -W $domain $t "$*"
+ plantest "$name" rpc $VALGRIND bin/smbtorture $TORTURE_OPTIONS $transport:"\$SERVER[$bindoptions]" -U"\$USERNAME"%"\$PASSWORD" -W \$DOMAIN $t "$*"
done
done
done
diff --git a/source4/script/tests/test_session_key.sh b/source4/script/tests/test_session_key.sh
index e9ce143eaa..30d03431ba 100755
--- a/source4/script/tests/test_session_key.sh
+++ b/source4/script/tests/test_session_key.sh
@@ -1,19 +1,5 @@
#!/bin/sh
-if [ $# -lt 4 ]; then
-cat <<EOF
-Usage: test_session_key.sh SERVER USERNAME PASSWORD DOMAIN NETBIOSNAME
-EOF
-exit 1;
-fi
-
-server="$1"
-username="$2"
-password="$3"
-domain="$4"
-netbios_name="$5"
-shift 5
-
incdir=`dirname $0`
. $incdir/test_functions.sh
@@ -36,17 +22,17 @@ for bindoptions in bigendian seal; do
"-k no --option=gensec:spnego=no --option=clientntlmv2auth=yes" \
"-k no --option=usespnego=no"; do
name="RPC-SECRETS on $transport with $bindoptions with NTLM2:$ntlm2 KEYEX:$keyexchange LM_KEY:$lm_key $ntlmoptions"
- plantest "$name" rpc bin/smbtorture $TORTURE_OPTIONS $transport:"$server[$bindoptions]" --option=ntlmssp_client:keyexchange=$keyexchange --option=ntlmssp_client:ntlm2=$ntlm2 --option=ntlmssp_client:lm_key=$lm_key $ntlmoptions -U"$username"%"$password" -W $domain --option=gensec:target_hostname=$netbios_name RPC-SECRETS "$*"
+ plantest "$name" dc bin/smbtorture $TORTURE_OPTIONS $transport:"\$SERVER[$bindoptions]" --option=ntlmssp_client:keyexchange=$keyexchange --option=ntlmssp_client:ntlm2=$ntlm2 --option=ntlmssp_client:lm_key=$lm_key $ntlmoptions -U"\$USERNAME"%"\$PASSWORD" -W \$DOMAIN --option=gensec:target_hostname=\$NETBIOSNAME RPC-SECRETS "$*"
done
done
done
done
name="RPC-SECRETS on $transport with $bindoptions with Kerberos"
- plantest "$name" rpc bin/smbtorture $TORTURE_OPTIONS $transport:"$server[$bindoptions]" -k yes -U"$username"%"$password" -W $domain "--option=gensec:target_hostname=$netbios_name" RPC-SECRETS "$*"
+ plantest "$name" dc bin/smbtorture $TORTURE_OPTIONS $transport:"\$SERVER[$bindoptions]" -k yes -U"\$USERNAME"%"\$PASSWORD" -W \$DOMAIN "--option=gensec:target_hostname=\$NETBIOSNAME" RPC-SECRETS "$*"
name="RPC-SECRETS on $transport with $bindoptions with Kerberos - use target principal"
- plantest "$name" rpc bin/smbtorture $TORTURE_OPTIONS $transport:"$server[$bindoptions]" -k yes -U"$username"%"$password" -W $domain "--option=clientusespnegoprincipal=yes" "--option=gensec:target_hostname=$netbios_name" RPC-SECRETS "$*"
+ plantest "$name" dc bin/smbtorture $TORTURE_OPTIONS $transport:"\$SERVER[$bindoptions]" -k yes -U"\$USERNAME"%"\$PASSWORD" -W \$DOMAIN "--option=clientusespnegoprincipal=yes" "--option=gensec:target_hostname=\$NETBIOSNAME" RPC-SECRETS "$*"
done
name="RPC-SECRETS on $transport with Kerberos - use Samba3 style login"
- plantest "$name" rpc bin/smbtorture $TORTURE_OPTIONS $transport:"$server" -k yes -U"$username"%"$password" -W $domain "--option=gensec:fake_gssapi_krb5=yes" "--option=gensec:gssapi_krb5=no" "--option=gensec:target_hostname=$netbios_name" RPC-SECRETS "$*"
+ plantest "$name" dc bin/smbtorture $TORTURE_OPTIONS $transport:"\$SERVER" -k yes -U"\$USERNAME"%"\$PASSWORD" -W "\$DOMAIN" "--option=gensec:fake_gssapi_krb5=yes" "--option=gensec:gssapi_krb5=no" "--option=gensec:target_hostname=\$NETBIOSNAME" RPC-SECRETS "$*"
name="RPC-SECRETS on $transport with Kerberos - use Samba3 style login, use target principal"
- plantest "$name" rpc bin/smbtorture $TORTURE_OPTIONS $transport:"$server" -k yes -U"$username"%"$password" -W $domain "--option=clientusespnegoprincipal=yes" "--option=gensec:fake_gssapi_krb5=yes" "--option=gensec:gssapi_krb5=no" "--option=gensec:target_hostname=$netbios_name" RPC-SECRETS "$*"
+ plantest "$name" dc bin/smbtorture $TORTURE_OPTIONS $transport:"\$SERVER" -k yes -U"\$USERNAME"%"\$PASSWORD" -W "\$DOMAIN" "--option=clientusespnegoprincipal=yes" "--option=gensec:fake_gssapi_krb5=yes" "--option=gensec:gssapi_krb5=no" "--option=gensec:target_hostname=\$NETBIOSNAME" RPC-SECRETS "$*"
diff --git a/source4/script/tests/test_simple.sh b/source4/script/tests/test_simple.sh
index 56db719001..a4a672cd5b 100755
--- a/source4/script/tests/test_simple.sh
+++ b/source4/script/tests/test_simple.sh
@@ -1,18 +1,6 @@
#!/bin/sh
# run a quick set of filesystem tests
-if [ $# -lt 3 ]; then
-cat <<EOF
-Usage: test_simple.sh UNC USERNAME PASSWORD <first> <smbtorture args>
-EOF
-exit 1;
-fi
-
-unc="$1"
-username="$2"
-password="$3"
-start="$4"
-shift 4
ADDARGS="$*"
incdir=`dirname $0`
@@ -21,10 +9,6 @@ incdir=`dirname $0`
tests="BASE-RW1"
for t in $tests; do
- if [ ! -z "$start" -a "$start" != $t ]; then
- continue;
- fi
- start=""
name="$t"
- plantest "$name" smb $VALGRIND bin/smbtorture $TORTURE_OPTIONS $ADDARGS $unc -U"$username"%"$password" $t
+ plantest "$name" dc $VALGRIND bin/smbtorture $TORTURE_OPTIONS $ADDARGS //\$SERVER/simple -U"\$USERNAME"%"\$PASSWORD" $t
done
diff --git a/source4/script/tests/tests_all.sh b/source4/script/tests/tests_all.sh
index 79694df98e..1d761efea3 100755
--- a/source4/script/tests/tests_all.sh
+++ b/source4/script/tests/tests_all.sh
@@ -1,15 +1,15 @@
#!/bin/sh
- $SRCDIR/script/tests/test_ejs.sh $DOMAIN $USERNAME $PASSWORD $CONFIGURATION
- $SRCDIR/script/tests/test_ldap.sh $SERVER $USERNAME $PASSWORD
- $SRCDIR/script/tests/test_nbt.sh $SERVER $USERNAME $PASSWORD
- $SRCDIR/script/tests/test_rpc.sh $SERVER $USERNAME $PASSWORD $DOMAIN
- $SRCDIR/script/tests/test_net.sh $SERVER $USERNAME $PASSWORD $DOMAIN
- $SRCDIR/script/tests/test_session_key.sh $SERVER $USERNAME $PASSWORD $DOMAIN $NETBIOSNAME
- $SRCDIR/script/tests/test_binding_string.sh $SERVER $USERNAME $PASSWORD $DOMAIN
- $SRCDIR/script/tests/test_echo.sh $SERVER $USERNAME $PASSWORD $DOMAIN
- $SRCDIR/script/tests/test_posix.sh //$SERVER/tmp $USERNAME $PASSWORD ""
+ $SRCDIR/script/tests/test_ejs.sh $CONFIGURATION
+ $SRCDIR/script/tests/test_ldap.sh
+ $SRCDIR/script/tests/test_nbt.sh
+ $SRCDIR/script/tests/test_rpc.sh
+ $SRCDIR/script/tests/test_net.sh
+ $SRCDIR/script/tests/test_session_key.sh
+ $SRCDIR/script/tests/test_binding_string.sh
+ $SRCDIR/script/tests/test_echo.sh
+ $SRCDIR/script/tests/test_posix.sh
$SRCDIR/script/tests/test_local.sh
$SRCDIR/script/tests/test_pidl.sh
- $SRCDIR/script/tests/test_blackbox.sh $SERVER $USERNAME $PASSWORD $DOMAIN $PREFIX
- $SRCDIR/script/tests/test_simple.sh //$SERVER/simple $USERNAME $PASSWORD ""
+ $SRCDIR/script/tests/test_blackbox.sh $PREFIX/blackbox
+ $SRCDIR/script/tests/test_simple.sh
$SRCDIR/script/tests/test_s3upgrade.sh $PREFIX/upgrade
diff --git a/source4/script/tests/tests_quick.sh b/source4/script/tests/tests_quick.sh
index f66b035e7e..9c57f8b20a 100755
--- a/source4/script/tests/tests_quick.sh
+++ b/source4/script/tests/tests_quick.sh
@@ -2,8 +2,8 @@
TORTURE_QUICK="yes"
export TORTURE_QUICK
-$SRCDIR/script/tests/test_ejs.sh $DOMAIN $USERNAME $PASSWORD $CONFIGURATION
-$SRCDIR/script/tests/test_ldap.sh $SERVER $USERNAME $PASSWORD
-$SRCDIR/script/tests/test_nbt.sh $SERVER $USERNAME $PASSWORD
-$SRCDIR/script/tests/test_quick.sh //$SERVER/cifs $USERNAME $PASSWORD ""
-$SRCDIR/script/tests/test_rpc_quick.sh $SERVER $USERNAME $PASSWORD $DOMAIN
+$SRCDIR/script/tests/test_ejs.sh $CONFIGURATION
+$SRCDIR/script/tests/test_ldap.sh
+$SRCDIR/script/tests/test_nbt.sh
+$SRCDIR/script/tests/test_quick.sh
+$SRCDIR/script/tests/test_rpc_quick.sh