import abc
import os
from unittest.mock import patch, MagicMock
from library_test.base_test import BaseLibraryTest
class TestProcessTest(BaseLibraryTest, metaclass=abc.ABCMeta):
TESTCASE_DIR = os.path.join(os.path.dirname(__file__), "testcase")
@classmethod
def get_module_path(cls):
return "ascend_deployer.library.process_test"
@classmethod
def setUpClass(cls) -> None:
super().setUpClass()
class AnsibleModuleMocker:
def __init__(self):
self.params = {}
self.exit_json = MagicMock()
self.fail_json = MagicMock()
self.get_bin_path = MagicMock()
self.run_command = MagicMock()
class TestProcessTestGeneral(TestProcessTest):
@classmethod
def get_testcase_path(cls):
return os.path.join(cls.TESTCASE_DIR, "test_process_test.yml")
def test_mcu_test(self):
from ascend_deployer.library.process_test import test_mcu
module = AnsibleModuleMocker()
module.get_bin_path.return_value = False
self.assertEqual({}, test_mcu(module))
module.get_bin_path.return_value = True
module.run_command.return_value = (-1, "err out", "")
self.assertEqual({}, test_mcu(module))
module.get_bin_path.return_value = True
npu_info = """ Total Count : 1
NPU ID : 8
Product Name : IT21PDDA01
Serial Number : 033VNY10MB000071
Chip Count : 1"""
module.run_command.return_value = (0, npu_info, "")
multi_run_command_return = {8: {'success': True,
'output': 'Version : 24.2.1',
'error': '',
'rc': 0,
'upgrade_rc': 0,
'activate_rc': 0}}
with patch('ascend_deployer.module_utils.common_utils.McuMultiProcess.multi_run_command',
return_value=multi_run_command_return):
self.assertEqual({'npu_id_8': '24.2.1'}, test_mcu(module))
module.get_bin_path.return_value = True
npu_info = """ Total Count : 1
NPU ID : 8
Product Name : IT21PDDA01
Serial Number : 033VNY10MB000071
Chip Count : 1"""
module.run_command.return_value = (0, npu_info, "")
multi_run_command_return = {8: {'success': False,
'output': 'command execute err',
'error': '',
'rc': 0,
'upgrade_rc': 0,
'activate_rc': 0}}
with patch('ascend_deployer.module_utils.common_utils.McuMultiProcess.multi_run_command',
return_value=multi_run_command_return):
self.assertEqual({'npu_id_8': 'ERROR'}, test_mcu(module))