mirror of
https://github.com/samba-team/samba.git
synced 2024-12-27 03:21:53 +03:00
239 lines
7.8 KiB
Python
239 lines
7.8 KiB
Python
|
#!/usr/bin/python
|
||
|
#
|
||
|
# Test for smbcontrol command line argument handling.
|
||
|
#
|
||
|
|
||
|
import comfychair
|
||
|
|
||
|
class NoArgs(comfychair.TestCase):
|
||
|
"""Test no arguments produces usage message."""
|
||
|
def runtest(self):
|
||
|
out = self.runcmd("smbcontrol", expectedResult = 1)
|
||
|
self.assert_re_match("Usage: smbcontrol", out[1])
|
||
|
|
||
|
class OneArg(comfychair.TestCase):
|
||
|
"""Test single argument produces usage message."""
|
||
|
def runtest(self):
|
||
|
out = self.runcmd("smbcontrol foo", expectedResult = 1)
|
||
|
self.assert_re_match("Usage: smbcontrol", out[1])
|
||
|
|
||
|
class SmbdDest(comfychair.TestCase):
|
||
|
"""Test the broadcast destination 'smbd'."""
|
||
|
def runtest(self):
|
||
|
out = self.runcmd("smbcontrol smbd noop")
|
||
|
|
||
|
class NmbdDest(comfychair.TestCase):
|
||
|
"""Test the destination 'nmbd'."""
|
||
|
def runtest(self):
|
||
|
# We need a way to start/stop/whatever nmbd
|
||
|
raise comfychair.NotRunError, "not implemented"
|
||
|
|
||
|
class PidDest(comfychair.TestCase):
|
||
|
"""Test a pid number destination'."""
|
||
|
def runtest(self):
|
||
|
out = self.runcmd("smbcontrol 1234 noop")
|
||
|
|
||
|
class SelfDest(comfychair.TestCase):
|
||
|
"""Test the destination 'self'."""
|
||
|
def runtest(self):
|
||
|
out = self.runcmd("smbcontrol self noop")
|
||
|
|
||
|
class WinbinddDest(comfychair.TestCase):
|
||
|
"""Test the destination 'winbindd'."""
|
||
|
def runtest(self):
|
||
|
# We need a way to start/stop/whatever winbindd
|
||
|
raise comfychair.NotRunError, "not implemented"
|
||
|
|
||
|
class BadDest(comfychair.TestCase):
|
||
|
"""Test a bad destination."""
|
||
|
def runtest(self):
|
||
|
out = self.runcmd("smbcontrol foo noop", expectedResult = 1)
|
||
|
|
||
|
class BadCmd(comfychair.TestCase):
|
||
|
"""Test a bad command."""
|
||
|
def runtest(self):
|
||
|
out = self.runcmd("smbcontrol self spottyfoot", expectedResult = 1)
|
||
|
self.assert_re_match("smbcontrol: unknown command", out[1]);
|
||
|
|
||
|
class NoArgCmdTest(comfychair.TestCase):
|
||
|
"""A test class that tests a command with no argument."""
|
||
|
def runtest(self):
|
||
|
self.require_root()
|
||
|
out = self.runcmd("smbcontrol self %s" % self.cmd)
|
||
|
out = self.runcmd("smbcontrol self %s spottyfoot" % self.cmd,
|
||
|
expectedResult = 1)
|
||
|
|
||
|
class ForceElection(NoArgCmdTest):
|
||
|
"""Test a force-election message."""
|
||
|
def setup(self):
|
||
|
self.cmd = "force-election"
|
||
|
|
||
|
class SamSync(NoArgCmdTest):
|
||
|
"""Test a samsync message."""
|
||
|
def setup(self):
|
||
|
self.cmd = "samsync"
|
||
|
|
||
|
class SamRepl(NoArgCmdTest):
|
||
|
"""Test a samrepl message."""
|
||
|
def setup(self):
|
||
|
self.cmd = "samrepl"
|
||
|
|
||
|
class DmallocChanged(NoArgCmdTest):
|
||
|
"""Test a dmalloc-changed message."""
|
||
|
def setup(self):
|
||
|
self.cmd = "dmalloc-log-changed"
|
||
|
|
||
|
class DmallocMark(NoArgCmdTest):
|
||
|
"""Test a dmalloc-mark message."""
|
||
|
def setup(self):
|
||
|
self.cmd = "dmalloc-mark"
|
||
|
|
||
|
class Shutdown(NoArgCmdTest):
|
||
|
"""Test a shutdown message."""
|
||
|
def setup(self):
|
||
|
self.cmd = "shutdown"
|
||
|
|
||
|
class Ping(NoArgCmdTest):
|
||
|
"""Test a ping message."""
|
||
|
def setup(self):
|
||
|
self.cmd = "ping"
|
||
|
|
||
|
class Debuglevel(NoArgCmdTest):
|
||
|
"""Test a debuglevel message."""
|
||
|
def setup(self):
|
||
|
self.cmd = "debuglevel"
|
||
|
|
||
|
class OneArgCmdTest(comfychair.TestCase):
|
||
|
"""A test class that tests a command with one argument."""
|
||
|
def runtest(self):
|
||
|
self.require_root()
|
||
|
out = self.runcmd("smbcontrol self %s spottyfoot" % self.cmd)
|
||
|
out = self.runcmd("smbcontrol self %s" % self.cmd, expectedResult = 1)
|
||
|
|
||
|
class DrvUpgrade(OneArgCmdTest):
|
||
|
"""Test driver upgrade message."""
|
||
|
def setup(self):
|
||
|
self.cmd = "drvupgrade"
|
||
|
|
||
|
class CloseShare(OneArgCmdTest):
|
||
|
"""Test close share message."""
|
||
|
def setup(self):
|
||
|
self.cmd = "close-share"
|
||
|
|
||
|
class Debug(OneArgCmdTest):
|
||
|
"""Test a debug message."""
|
||
|
def setup(self):
|
||
|
self.cmd = "debug"
|
||
|
|
||
|
class PrintNotify(comfychair.TestCase):
|
||
|
"""Test print notification commands."""
|
||
|
def runtest(self):
|
||
|
|
||
|
# No subcommand
|
||
|
|
||
|
out = self.runcmd("smbcontrol self printnotify", expectedResult = 1)
|
||
|
self.assert_re_match("Must specify subcommand", out[1]);
|
||
|
|
||
|
# Invalid subcommand name
|
||
|
|
||
|
out = self.runcmd("smbcontrol self printnotify spottyfoot",
|
||
|
expectedResult = 1)
|
||
|
self.assert_re_match("Invalid subcommand", out[1]);
|
||
|
|
||
|
# Queue commands
|
||
|
|
||
|
for cmd in ["queuepause", "queueresume"]:
|
||
|
|
||
|
out = self.runcmd("smbcontrol self printnotify %s" % cmd,
|
||
|
expectedResult = 1)
|
||
|
self.assert_re_match("Usage:", out[1])
|
||
|
|
||
|
out = self.runcmd("smbcontrol self printnotify %s spottyfoot"
|
||
|
% cmd)
|
||
|
|
||
|
# Job commands
|
||
|
|
||
|
for cmd in ["jobpause", "jobresume", "jobdelete"]:
|
||
|
|
||
|
out = self.runcmd("smbcontrol self printnotify %s" % cmd,
|
||
|
expectedResult = 1)
|
||
|
self.assert_re_match("Usage:", out[1])
|
||
|
|
||
|
out = self.runcmd("smbcontrol self printnotify %s spottyfoot"
|
||
|
% cmd, expectedResult = 1)
|
||
|
self.assert_re_match("Usage:", out[1])
|
||
|
|
||
|
out = self.runcmd("smbcontrol self printnotify %s spottyfoot 123"
|
||
|
% cmd)
|
||
|
|
||
|
# Printer properties
|
||
|
|
||
|
out = self.runcmd("smbcontrol self printnotify printer",
|
||
|
expectedResult = 1)
|
||
|
self.assert_re_match("Usage", out[1])
|
||
|
|
||
|
out = self.runcmd("smbcontrol self printnotify printer spottyfoot",
|
||
|
expectedResult = 1)
|
||
|
self.assert_re_match("Usage", out[1])
|
||
|
|
||
|
for cmd in ["comment", "port", "driver"]:
|
||
|
|
||
|
out = self.runcmd("smbcontrol self printnotify printer spottyfoot "
|
||
|
"%s" % cmd, expectedResult = 1)
|
||
|
self.assert_re_match("Usage", out[1])
|
||
|
|
||
|
out = self.runcmd("smbcontrol self printnotify printer spottyfoot "
|
||
|
"%s value" % cmd)
|
||
|
|
||
|
class Profile(comfychair.TestCase):
|
||
|
"""Test setting the profiling level."""
|
||
|
def runtest(self):
|
||
|
self.require_root()
|
||
|
out = self.runcmd("smbcontrol self profile", expectedResult = 1)
|
||
|
self.assert_re_match("Usage", out[1])
|
||
|
|
||
|
out = self.runcmd("smbcontrol self profile spottyfoot",
|
||
|
expectedResult = 1)
|
||
|
self.assert_re_match("Unknown", out[1])
|
||
|
|
||
|
for cmd in ["off", "count", "on", "flush"]:
|
||
|
out = self.runcmd("smbcontrol self profile %s" % cmd)
|
||
|
|
||
|
class ProfileLevel(comfychair.TestCase):
|
||
|
"""Test requesting the current profiling level."""
|
||
|
def runtest(self):
|
||
|
self.require_root()
|
||
|
out = self.runcmd("smbcontrol self profilelevel spottyfoot",
|
||
|
expectedResult = 1)
|
||
|
self.assert_re_match("Usage", out[1])
|
||
|
|
||
|
out = self.runcmd("smbcontrol self profilelevel")
|
||
|
|
||
|
class TimeoutArg(comfychair.TestCase):
|
||
|
"""Test the --timeout argument."""
|
||
|
def runtest(self):
|
||
|
out = self.runcmd("smbcontrol --timeout 5 self noop")
|
||
|
out = self.runcmd("smbcontrol --timeout spottyfoot self noop",
|
||
|
expectedResult = 1)
|
||
|
|
||
|
class ConfigFileArg(comfychair.TestCase):
|
||
|
"""Test the --configfile argument."""
|
||
|
def runtest(self):
|
||
|
out = self.runcmd("smbcontrol --configfile /dev/null self noop")
|
||
|
|
||
|
class BogusArg(comfychair.TestCase):
|
||
|
"""Test a bogus command line argument."""
|
||
|
def runtest(self):
|
||
|
out = self.runcmd("smbcontrol --bogus self noop", expectedResult = 1)
|
||
|
|
||
|
tests = [NoArgs, OneArg, SmbdDest, NmbdDest, WinbinddDest, PidDest,
|
||
|
SelfDest, BadDest, BadCmd, Debug, ForceElection, SamSync,
|
||
|
SamRepl, DmallocMark, DmallocChanged, Shutdown, DrvUpgrade,
|
||
|
CloseShare, Ping, Debuglevel, PrintNotify, Profile, ProfileLevel,
|
||
|
TimeoutArg, ConfigFileArg, BogusArg]
|
||
|
|
||
|
# Handle execution of this file as a main program
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
comfychair.main(tests)
|