Source code for virttest.nfs_unittest

#!/usr/bin/python
import unittest
import os

import common
from autotest.client.shared.test_utils import mock
from autotest.client import os_dep
from autotest.client.shared import utils

from virttest import nfs
from virttest import utils_misc

from virttest.staging import service


[docs]class FakeService(object): def __init__(self, service_name): self.fake_cmds = [{"cmd": "status", "stdout": True}, {"cmd": "restart", "stdout": ""}]
[docs] def get_stdout(self, cmd): for fake_cmd in self.fake_cmds: if fake_cmd['cmd'] == cmd: return fake_cmd['stdout'] raise ValueError("Could not locate locate '%s' on fake cmd db" % cmd)
[docs] def status(self): return self.get_stdout("status")
[docs] def restart(self): return self.get_stdout("restart")
[docs]class nfs_test(unittest.TestCase):
[docs] def setup_stubs_init(self): os_dep.command.expect_call("mount") os_dep.command.expect_call("service") os_dep.command.expect_call("exportfs") service.Factory.create_service.expect_call("nfs").and_return( FakeService("nfs")) mount_src = self.nfs_params.get("nfs_mount_src") export_dir = (self.nfs_params.get("export_dir") or mount_src.split(":")[-1]) export_ip = self.nfs_params.get("export_ip", "*") export_options = self.nfs_params.get("export_options", "").strip() nfs.Exportfs.expect_new(export_dir, export_ip, export_options)
[docs] def setup_stubs_setup(self, nfs_obj): os.makedirs.expect_call(nfs_obj.export_dir) nfs_obj.exportfs.export.expect_call() os.makedirs.expect_call(nfs_obj.mount_dir) utils_misc.mount.expect_call(nfs_obj.mount_src, nfs_obj.mount_dir, "nfs", perm=nfs_obj.mount_options)
[docs] def setup_stubs_is_mounted(self, nfs_obj): utils_misc.is_mounted.expect_call(nfs_obj.mount_src, nfs_obj.mount_dir, "nfs").and_return(True)
[docs] def setup_stubs_cleanup(self, nfs_obj): utils_misc.umount.expect_call(nfs_obj.mount_src, nfs_obj.mount_dir, "nfs") nfs_obj.exportfs.reset_export.expect_call()
[docs] def setUp(self): self.nfs_params = {"nfs_mount_dir": "/mnt/nfstest", "nfs_mount_options": "rw", "nfs_mount_src": "127.0.0.1:/mnt/nfssrc", "setup_local_nfs": "yes", "export_options": "rw,no_root_squash"} self.god = mock.mock_god() self.god.stub_function(os_dep, "command") self.god.stub_function(utils, "system") self.god.stub_function(utils, "system_output") self.god.stub_function(os.path, "isfile") self.god.stub_function(os, "makedirs") self.god.stub_function(utils_misc, "is_mounted") self.god.stub_function(utils_misc, "mount") self.god.stub_function(utils_misc, "umount") self.god.stub_function(service.Factory, "create_service") attr = getattr(nfs, "Exportfs") setattr(attr, "already_exported", False) mock_class = self.god.create_mock_class_obj(attr, "Exportfs") self.god.stub_with(nfs, "Exportfs", mock_class)
[docs] def tearDown(self): self.god.unstub_all()
[docs] def test_nfs_setup(self): self.setup_stubs_init() nfs_local = nfs.Nfs(self.nfs_params) self.setup_stubs_setup(nfs_local) nfs_local.setup() self.setup_stubs_is_mounted(nfs_local) self.assertTrue(nfs_local.is_mounted()) self.setup_stubs_cleanup(nfs_local) nfs_local.cleanup() self.god.check_playback()
if __name__ == "__main__": unittest.main()