89 lines
3.1 KiB
Python
Executable File
89 lines
3.1 KiB
Python
Executable File
#!/usr/bin/python2
|
|
|
|
import common
|
|
import os
|
|
import unittest
|
|
|
|
from autotest_lib.client.common_lib import error, utils
|
|
from autotest_lib.client.common_lib.test_utils import mock
|
|
from autotest_lib.client.common_lib.hosts import base_classes
|
|
|
|
|
|
class test_host_class(unittest.TestCase):
|
|
def setUp(self):
|
|
self.god = mock.mock_god()
|
|
|
|
|
|
def tearDown(self):
|
|
self.god.unstub_all()
|
|
|
|
|
|
def test_run_output_notimplemented(self):
|
|
host = base_classes.Host()
|
|
self.assertRaises(NotImplementedError, host.run_output, "fake command")
|
|
|
|
|
|
def _setup_test_check_diskspace(self, command, command_result,
|
|
command_exit_status, directory,
|
|
directory_exists):
|
|
self.god.stub_function(os.path, 'isdir')
|
|
self.god.stub_function(base_classes.Host, 'run')
|
|
host = base_classes.Host()
|
|
host.hostname = 'unittest-host'
|
|
host.run.expect_call(
|
|
'test -e "%s"' % directory,
|
|
ignore_status=True).and_return(
|
|
utils.CmdResult(
|
|
exit_status = 0 if directory_exists else 1))
|
|
if directory_exists:
|
|
fake_cmd_status = utils.CmdResult(
|
|
exit_status=command_exit_status, stdout=command_result)
|
|
host.run.expect_call(command).and_return(fake_cmd_status)
|
|
return host
|
|
|
|
|
|
def test_check_diskspace(self):
|
|
df_cmd = 'df -PB 1000000 /foo | tail -1'
|
|
test_df_tail = ('/dev/sda1 1061 939'
|
|
' 123 89% /')
|
|
host = self._setup_test_check_diskspace(
|
|
df_cmd, test_df_tail, 0, '/foo', True)
|
|
host.check_diskspace('/foo', 0.1)
|
|
self.god.check_playback()
|
|
|
|
|
|
def test_check_diskspace_disk_full(self):
|
|
df_cmd = 'df -PB 1000000 /foo | tail -1'
|
|
test_df_tail = ('/dev/sda1 1061 939'
|
|
' 123 89% /')
|
|
host = self._setup_test_check_diskspace(
|
|
df_cmd, test_df_tail, 0, '/foo', True)
|
|
self.assertRaises(error.AutoservDiskFullHostError,
|
|
host.check_diskspace, '/foo', 0.2)
|
|
self.god.check_playback()
|
|
|
|
|
|
def test_check_diskspace_directory_not_found(self):
|
|
df_cmd = 'df -PB 1000000 /foo | tail -1'
|
|
test_df_tail = ('/dev/sda1 1061 939'
|
|
' 123 89% /')
|
|
host = self._setup_test_check_diskspace(
|
|
df_cmd, test_df_tail, 0, '/foo', False)
|
|
self.assertRaises(error.AutoservDirectoryNotFoundError,
|
|
host.check_diskspace, '/foo', 0.2)
|
|
self.god.check_playback()
|
|
|
|
|
|
def test_check_diskspace_directory_du_failed(self):
|
|
df_cmd = 'df -PB 1000000 /foo | tail -1'
|
|
test_df_tail = ('df: /foo: No such file or directory')
|
|
host = self._setup_test_check_diskspace(
|
|
df_cmd, test_df_tail, 1, '/foo', True)
|
|
self.assertRaises(error.AutoservDiskSizeUnknownError,
|
|
host.check_diskspace, '/foo', 0.1)
|
|
self.god.check_playback()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|