12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- # -*- coding: utf-8 -*-
- """
- :codeauthor: Jayesh Kariya <jayeshk@saltstack.com>
- """
- # Import Python libs
- from __future__ import absolute_import, print_function, unicode_literals
- import copy
- import os
- # Import Salt Libs
- import salt.modules.scsi as scsi
- import salt.utils.path
- # Import Salt Testing Libs
- from tests.support.mixins import LoaderModuleMockMixin
- from tests.support.mock import MagicMock, patch
- from tests.support.unit import TestCase
- class ScsiTestCase(TestCase, LoaderModuleMockMixin):
- """
- Test cases for salt.modules.scsi
- """
- def setup_loader_modules(self):
- return {scsi: {}}
- def test_ls_(self):
- """
- Test for list SCSI devices, with details
- """
- lsscsi = {
- "stdout": "[0:0:0:0] disk HP LOGICAL VOLUME 6.68 /dev/sda [8:0]",
- "stderr": "",
- "retcode": 0,
- }
- lsscsi_size = {
- "stdout": "[0:0:0:0] disk HP LOGICAL VOLUME 6.68 /dev/sda [8:0] 1.20TB",
- "stderr": "",
- "retcode": 0,
- }
- result = {
- "[0:0:0:0]": {
- "major": "8",
- "lun": "0:0:0:0",
- "device": "/dev/sda",
- "model": "LOGICAL VOLUME 6.68",
- "minor": "0",
- "size": None,
- }
- }
- result_size = copy.deepcopy(result)
- result_size["[0:0:0:0]"]["size"] = "1.20TB"
- mock = MagicMock(return_value="/usr/bin/lsscsi")
- with patch.object(salt.utils.path, "which", mock):
- # get_size = True
- cmd_mock = MagicMock(return_value=lsscsi_size)
- with patch.dict(scsi.__salt__, {"cmd.run_all": cmd_mock}):
- self.assertDictEqual(scsi.ls_(), result_size)
- with patch.dict(
- lsscsi_size, {"retcode": 1, "stderr": "An error occurred"}
- ):
- self.assertEqual(scsi.ls_(), "An error occurred")
- with patch.dict(
- lsscsi_size,
- {"retcode": 1, "stderr": "lsscsi: invalid option -- 's'\nUsage:"},
- ):
- self.assertEqual(
- scsi.ls_(), "lsscsi: invalid option -- 's' - try get_size=False"
- )
- # get_size = False
- cmd_mock = MagicMock(return_value=lsscsi)
- with patch.dict(scsi.__salt__, {"cmd.run_all": cmd_mock}):
- self.assertDictEqual(scsi.ls_(get_size=False), result)
- mock = MagicMock(return_value=None)
- with patch.object(salt.utils.path, "which", mock):
- self.assertEqual(
- scsi.ls_(), "scsi.ls not available - lsscsi command not found"
- )
- def test_rescan_all(self):
- """
- Test for list scsi devices
- """
- mock = MagicMock(side_effect=[False, True])
- with patch.object(os.path, "isdir", mock):
- self.assertEqual(scsi.rescan_all("host"), "Host host does not exist")
- with patch.dict(scsi.__salt__, {"cmd.run": MagicMock(return_value="A")}):
- self.assertListEqual(scsi.rescan_all("host"), ["A"])
|