[PATCHES] Add some srvsvc commands in rpcclient

Christof Schmitt cs at samba.org
Fri Jun 12 15:04:11 MDT 2015


On Fri, Jun 12, 2015 at 07:39:13AM -0700, Christof Schmitt wrote:
> On Fri, Jun 12, 2015 at 02:05:46PM +1200, Andrew Bartlett wrote:
> > On Thu, 2015-06-11 at 15:49 -0700, Christof Schmitt wrote:
> > > These patches add some commands to add shares, delete shares and set dfs
> > > flags. The netsharegetinfo command is extended to optionally query the
> > > dfs flags. Having this in rpcclient is useful for testing the server
> > > functionality.
> > 
> > Can you please add blackbox tests for these?
> 
> Yes, let me look into that. I just discovered that selftest is already
> configured to use registry shares, so that should make the callouts to
> add and delete shares feasible.

See the attached patches for blackbox tests for the rpcclient srvsvc
commands. It looks like the previously posted rpcclient patches are
already in master, so only the test patches are missing.

Christof
-------------- next part --------------
From ddfe07458c352da73b0bbd8ad1fe0b68615b2013 Mon Sep 17 00:00:00 2001
From: Christof Schmitt <cs at samba.org>
Date: Fri, 12 Jun 2015 08:37:30 -0700
Subject: [PATCH 1/2] selftest: Add callout scripts for RPC SRVSVC share modifications

Signed-off-by: Christof Schmitt <cs at samba.org>
---
 selftest/target/Samba3.pm     |    5 ++++
 source3/script/smbaddshare    |   32 +++++++++++++++++++++++++++
 source3/script/smbchangeshare |   47 +++++++++++++++++++++++++++++++++++++++++
 source3/script/smbdeleteshare |   21 ++++++++++++++++++
 source3/script/wscript_build  |    5 ++++
 5 files changed, 110 insertions(+), 0 deletions(-)
 create mode 100755 source3/script/smbaddshare
 create mode 100755 source3/script/smbchangeshare
 create mode 100755 source3/script/smbdeleteshare

diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 50898f2..f7f6632 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -1214,6 +1214,11 @@ sub provision($$$$$$$$)
 	# fsrvp server requires registry shares
 	registry shares = yes
 
+	# Used by RPC SRVSVC tests
+	add share command = $bindir_abs/smbaddshare
+	change share command = $bindir_abs/smbchangeshare
+	delete share command = $bindir_abs/smbdeleteshare
+
 	# Begin extra options
 	$extra_options
 	# End extra options
diff --git a/source3/script/smbaddshare b/source3/script/smbaddshare
new file mode 100755
index 0000000..62f1bdf
--- /dev/null
+++ b/source3/script/smbaddshare
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# smbaddshare
+#
+# Copyright (C) 2015 Christof Schmitt
+#
+# Example script that can be used with the 'add share command' config
+# option. This is mainly intended for use in the Samba selftest suite,
+# please review and adapt it before using elsewhere.
+#
+
+CONF="$1"
+SHARENAME="$2"
+SHAREPATH="$3"
+COMMENT="$4"
+MAX_CONN="$5"
+
+NETCONF="$BINDIR/net --configfile=$CONF conf"
+
+$NETCONF addshare "$SHARENAME" "$SHAREPATH" writeable=no guest_ok=no "$COMMENT"
+RC=$?
+if [[ $RC -ne 0 ]]; then
+	echo Failure during addshare: rc=$RC
+	exit $RC
+fi
+
+$NETCONF setparm "$SHARENAME" 'max connections' "$MAX_CONN"
+RC=$?
+if [[ $RC -ne 0 ]]; then
+	echo Failure during setparm for max connections: rc=$RC
+	exit $RC
+fi
diff --git a/source3/script/smbchangeshare b/source3/script/smbchangeshare
new file mode 100755
index 0000000..2f3fa3b
--- /dev/null
+++ b/source3/script/smbchangeshare
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# smbchangeshare
+#
+# Copyright (C) 2015 Christof Schmitt
+#
+# Example script that can be used with the 'change share command'
+# config option. This is mainly intended for use in the Samba selftest
+# suite, please review and adapt it before using elsewhere.
+#
+
+CONF="$1"
+SHARENAME="$2"
+SHAREPATH="$3"
+COMMENT="$4"
+MAX_CONN="$5"
+CSC_POLICY="$6"
+
+NETCONF="$BINDIR/net --configfile=$CONF conf"
+
+$NETCONF setparm "$SHARENAME" 'path' "$SHAREPATH"
+RC=$?
+if [[ $RC -ne 0 ]]; then
+	echo Failure during setparm for path: rc=$RC
+	exit $RC
+fi
+
+$NETCONF setparm "$SHARENAME" 'comment' "$COMMENT"
+RC=$?
+if [[ $RC -ne 0 ]]; then
+	echo Failed during setparm for comment: rc=$RC
+	exit $RC
+fi
+
+$NETCONF setparm "$SHARENAME" 'max connections' "$MAX_CONN"
+RC=$?
+if [[ $RC -ne 0 ]]; then
+	echo Failure during setparm for max connections: rc=$RC
+	exit $RC
+fi
+
+$NETCONF setparm "$SHARENAME" 'csc policy' "$CSC_POLICY"
+RC=$?
+if [[ $RC -ne 0 ]]; then
+	echo Failure during setparm for csc policy: rc=$RC
+	exit $RC
+fi
diff --git a/source3/script/smbdeleteshare b/source3/script/smbdeleteshare
new file mode 100755
index 0000000..8cd8d1f
--- /dev/null
+++ b/source3/script/smbdeleteshare
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# smbdeleteshare
+#
+# Copyright (C) 2015 Christof Schmitt
+#
+# Example script that can be used with the 'delete share command'
+# config option. This is mainly intended for use in the Samba selftest
+# suite, please review and adapt it before using elsewhere.
+#
+
+CONF="$1"
+SHARENAME="$2"
+
+NETCONF="$BINDIR/net --configfile=$CONF conf"
+$NETCONF delshare "$SHARENAME"
+RC=$?
+if [[ $RC -ne 0 ]]; then
+	echo Failure during delshare command: rc=$RC
+	exit $RC
+fi
diff --git a/source3/script/wscript_build b/source3/script/wscript_build
index fc59a65..56c904f 100644
--- a/source3/script/wscript_build
+++ b/source3/script/wscript_build
@@ -5,3 +5,8 @@ from samba_utils import MODE_755
 bld.INSTALL_FILES('${BINDIR}',
 	          'smbtar',
                   chmod=MODE_755, flat=True)
+
+# Callout scripts for use in selftest environment
+bld.SAMBA_SCRIPT('smbaddshare', pattern='smbaddshare', installdir='.')
+bld.SAMBA_SCRIPT('smbchangeshare', pattern='smbchangeshare', installdir='.')
+bld.SAMBA_SCRIPT('smbdeleteshare', pattern='smbdeleteshare', installdir='.')
-- 
1.7.1


From de95b0914f955be335e2194ccf2ebe8d14fdb282 Mon Sep 17 00:00:00 2001
From: Christof Schmitt <cs at samba.org>
Date: Fri, 12 Jun 2015 13:52:37 -0700
Subject: [PATCH 2/2] selftest: Add blackbox test for srvsvc calls from rpcclient

Signed-off-by: Christof Schmitt <cs at samba.org>
---
 source3/script/tests/test_rpcclientsrvsvc.sh |   90 ++++++++++++++++++++++++++
 source3/selftest/tests.py                    |    5 ++
 2 files changed, 95 insertions(+), 0 deletions(-)
 create mode 100755 source3/script/tests/test_rpcclientsrvsvc.sh

diff --git a/source3/script/tests/test_rpcclientsrvsvc.sh b/source3/script/tests/test_rpcclientsrvsvc.sh
new file mode 100755
index 0000000..aa638e1
--- /dev/null
+++ b/source3/script/tests/test_rpcclientsrvsvc.sh
@@ -0,0 +1,90 @@
+#!/bin/sh
+#
+# Blackbox tests for the rpcclient srvsvc commands
+#
+# Copyright (C) 2015 Christof Schmitt
+
+if [ $# -lt 5 ]; then
+cat <<EOF
+Usage: test_net_srvsvc.sh USERNAME PASSWORD SERVER RPCCLIENT SHARE1
+EOF
+exit 1;
+fi
+
+USERNAME="$1"
+PASSWORD="$2"
+SERVER="$3"
+RPCCLIENT="$4"
+SHARE1="$5"
+
+RPCCLIENTCMD="$RPCCLIENT $SERVER -U$USERNAME%$PASSWORD"
+
+SHARENAME=SRVSVCTEST
+MAX_USERS=5
+COMMENT="share for RPC SRVSVC testing"
+
+incdir=$(dirname $0)/../../../testprogs/blackbox
+. $incdir/subunit.sh
+
+failed=0
+
+# Query path from existing share
+
+$RPCCLIENTCMD -c "netsharegetinfo $SHARE1"
+RC=$?
+testit "getinfo on S$SHARE1" test $RC = 0 || failed=$(expr $failed + 1)
+
+SHAREPATH=$($RPCCLIENTCMD -c "netsharegetinfo '$SHARE1'" | \
+	grep path: | sed -e 's/.*path:\t//')
+testit "verifying $SHARE1 path" test -n  "$SHAREPATH" || \
+	failed=$(expr $failed + 1)
+
+# Add a new share
+
+$RPCCLIENTCMD -c "netshareadd '$SHAREPATH' '$SHARENAME' '$MAX_USERS' '$COMMENT'"
+RC=$?
+testit "netshareadd" test $RC = 0 ||  failed=$(expr $failed + 1)
+
+# Verify comment for new share
+
+COMMENT_RET=$($RPCCLIENTCMD -c "netsharegetinfo '$SHARENAME'" | \
+	grep remark: | sed -e 's/.*remark:\t//')
+
+test "$COMMENT" = "$COMMENT_RET"
+RC=$?
+testit "verifying comment" test $RC -eq 0 || failed=$(expr $failed + 1)
+
+# Verify share path for new share
+
+SHAREPATH_RET=$($RPCCLIENTCMD -c "netsharegetinfo '$SHARENAME'" | \
+	grep path: | sed -e 's/.*path:\t//')
+test "$SHAREPATH" = "$SHAREPATH_RET"
+RC=$?
+testit "verifying share path" test $RC -eq 0 || failed=$(expr $failed + 1)
+
+# Set CSC policy
+
+$RPCCLIENTCMD -c "netsharesetdfsflags '$SHARENAME' 0x30"
+RC=$?
+testit "set csc policy" test $RC -eq 0 ||  failed=$(expr $failed + 1)
+
+# Query CSC policy
+
+CSC_CACHING_RET=$($RPCCLIENTCMD -c "netsharegetinfo '$SHARENAME' 1005" | \
+	grep 'csc caching' | sed -e 's/.*csc caching: //')
+testit "verifying csc policy" test $CSC_CACHING_RET -eq 3 || \
+	failed=$(expr $failed + 1)
+
+# Delete share
+
+$RPCCLIENTCMD -c "netsharedel '$SHARENAME'"
+RC=$?
+testit "deleting share" test $RC -eq 0 || failed=$(expr $failed + 1)
+
+# Verify that query to deleted share fails
+
+$RPCCLIENTCMD -c "netsharegetinfo '$SHARENAME' 1005"
+RC=$?
+testit "querying deleted share" test $RC -eq 1 ||  failed=$(expr $failed + 1)
+
+testok $0 $failed
\ No newline at end of file
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index d6e6869..38eb90d 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -434,6 +434,11 @@ plantestsuite("samba3.blackbox.net_rpc_join", "nt4_dc",
                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join",
                configuration])
 
+plantestsuite("samba3.blackbox.rpcclient_srvsvc", "simpleserver",
+              [os.path.join(samba3srcdir, "script/tests/test_rpcclientsrvsvc.sh"),
+               "$USERNAME", "$PASSWORD", "$SERVER",
+               os.path.join(bindir(), "rpcclient"), "tmp"])
+
 options_list = ["", "-e"]
 for options in options_list:
     plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
-- 
1.7.1



More information about the samba-technical mailing list