def test_invalid_module_enable_sriov_failure(self, mock_get_module): mock_get_module.return_value = 'unknown' expected_error_msg = "GINNET0076E" with self.assertRaisesRegexp(InvalidOperation, expected_error_msg): iface_model = InterfaceModel(objstore=self._objstore) iface_model.enable_sriov('any_iface_name', {'num_vfs': 4})
def test_invalid_module_enable_sriov_failure(self, mock_get_module): mock_get_module.return_value = 'unknown' expected_error_msg = "GINNET0076E" with self.assertRaisesRegexp(InvalidOperation, expected_error_msg): iface_model = InterfaceModel(objstore=self._objstore) iface_model.enable_sriov('any_iface_name', {'num_vfs': 4})
def test_mlx5_sriov_not_enabled_in_FW(self, mock_isfile, mock_get_module): mock_get_module.return_value = 'mlx5_core' file1 = '/sys/class/net/%s/device/sriov_totalvfs' % 'iface1' mock_isfile.return_value = False with self.assertRaisesRegexp(OperationFailed, 'GINNET0082E'): iface_model = InterfaceModel(objstore=self._objstore) iface_model.enable_sriov('iface1', 4) mock_isfile.assert_called_once_with(file1)
def test_mlx5_sriov_argument_failure(self, mock_get_max_VF, mock_get_module): mock_get_max_VF.return_value = '1' mock_get_module.return_value = 'mlx5_core' expected_error_msg = "GINNET0079E" with self.assertRaisesRegexp(InvalidParameter, expected_error_msg): iface_model = InterfaceModel(objstore=self._objstore) iface_model.enable_sriov('any_iface_name', 'not_an_int')
def test_mlx5_sriov_not_enabled_in_FW(self, mock_isfile, mock_get_module): mock_get_module.return_value = 'mlx5_core' file1 = '/sys/class/net/%s/device/sriov_totalvfs' % 'iface1' mock_isfile.return_value = False with self.assertRaisesRegexp(OperationFailed, 'GINNET0082E'): iface_model = InterfaceModel(objstore=self._objstore) iface_model.enable_sriov('iface1', 4) mock_isfile.assert_called_once_with(file1)
def test_mlx5_sriov_argument_failure(self, mock_get_max_VF, mock_get_module): mock_get_max_VF.return_value = '1' mock_get_module.return_value = 'mlx5_core' expected_error_msg = "GINNET0079E" with self.assertRaisesRegexp(InvalidParameter, expected_error_msg): iface_model = InterfaceModel(objstore=self._objstore) iface_model.enable_sriov('any_iface_name', 'not_an_int')
def test_mlx5_sriov_fails_if_VF_greater_max(self, mock_get_max_VF, mock_isfile, mock_get_module): mock_get_max_VF.return_value = '8' mock_get_module.return_value = 'mlx5_core' file1 = '/sys/class/net/%s/device/sriov_numvfs' % 'iface1' mock_isfile.return_value = True with self.assertRaisesRegexp(InvalidParameter, 'GINNET0083E'): iface_model = InterfaceModel(objstore=self._objstore) iface_model.enable_sriov('iface1', 16) mock_isfile.assert_called_once_with(file1)
def test_mlx5_sriov_fails_if_VF_greater_max(self, mock_get_max_VF, mock_isfile, mock_get_module): mock_get_max_VF.return_value = '8' mock_get_module.return_value = 'mlx5_core' file1 = '/sys/class/net/%s/device/sriov_numvfs' % 'iface1' mock_isfile.return_value = True with self.assertRaisesRegexp(InvalidParameter, 'GINNET0083E'): iface_model = InterfaceModel(objstore=self._objstore) iface_model.enable_sriov('iface1', 16) mock_isfile.assert_called_once_with(file1)
def test_mlx5_sriov_success_zero_VFs(self, mock_get_max_VF, mock_get_current_VF, mock_isfile, mock_get_module, mock_get_iface_list, mock_create_cfg_file, mock_add_boot_script): mock_get_max_VF.return_value = '8' mock_get_current_VF.return_value = '4' mock_get_module.return_value = 'mlx5_core' file1 = '/sys/class/net/%s/device/sriov_numvfs' % 'iface1' mock_isfile.return_value = True mock_get_iface_list.side_effect = [ set(['iface1', 'iface2']), set(['iface1', 'sriov1', 'sriov2', 'iface2']) ] open_ = mock_open(read_data='') with patch.object(builtins, 'open', open_): iface_model = InterfaceModel(objstore=self._objstore) task_obj = iface_model.enable_sriov('iface1', 0) self.task.wait(task_obj['id']) finished_task = self.task.lookup(task_obj['id']) self.assertEquals(finished_task['status'], 'finished') mock_isfile.assert_called_once_with(file1) self.assertEqual(open_.call_args_list, [call(file1, 'w')]) self.assertEqual(open_().write.mock_calls, [call('0\n')]) mock_create_cfg_file.assert_not_called() mock_add_boot_script.assert_called_once_with('iface1', 0)
def test_mlx5_sriov_no_system_files_failure(self, mock_get_max_VF, mock_isfile, mock_get_module): mock_get_max_VF.return_value = '8' mock_get_module.return_value = 'mlx5_core' call_file1_not_exist = \ '/sys/class/net/%s/device/sriov_numvfs' % 'iface1' call_file2_not_exist = \ '/sys/class/net/%s/device/mlx5_num_vfs' % 'iface1' mock_isfile.side_effect = [False, False] mock_isfile_calls = [ call(call_file1_not_exist), call(call_file2_not_exist) ] expected_error_msg = "GINNET0078E" with self.assertRaisesRegexp(OperationFailed, expected_error_msg): iface_model = InterfaceModel(objstore=self._objstore) task_obj = iface_model.enable_sriov('iface1', 4) self.task.wait(task_obj['id']) mock_isfile.assert_has_calls(mock_isfile_calls)
def test_mlx5_sriov_success_zero_VFs(self, mock_get_max_VF, mock_get_current_VF, mock_isfile, mock_get_module, mock_get_iface_list, mock_create_cfg_file, mock_add_boot_script): mock_get_max_VF.return_value = '8' mock_get_current_VF.return_value = '4' mock_get_module.return_value = 'mlx5_core' file1 = '/sys/class/net/%s/device/sriov_numvfs' % 'iface1' mock_isfile.return_value = True mock_get_iface_list.side_effect = [ set(['iface1', 'iface2']), set(['iface1', 'sriov1', 'sriov2', 'iface2']) ] open_ = mock_open(read_data='') with patch.object(builtins, 'open', open_): iface_model = InterfaceModel(objstore=self._objstore) task_obj = iface_model.enable_sriov('iface1', 0) self.task.wait(task_obj['id']) finished_task = self.task.lookup(task_obj['id']) self.assertEquals(finished_task['status'], 'finished') mock_isfile.assert_called_once_with(file1) self.assertEqual(open_.call_args_list, [call(file1, 'w')]) self.assertEqual(open_().write.mock_calls, [call('0\n')]) mock_create_cfg_file.assert_not_called() mock_add_boot_script.assert_called_once_with('iface1', 0)
def test_mlx5_sriov_no_system_files_failure(self, mock_get_max_VF, mock_isfile, mock_get_module): mock_get_max_VF.return_value = '8' mock_get_module.return_value = 'mlx5_core' call_file1_not_exist = \ '/sys/class/net/%s/device/sriov_numvfs' % 'iface1' call_file2_not_exist = \ '/sys/class/net/%s/device/mlx5_num_vfs' % 'iface1' mock_isfile.side_effect = [False, False] mock_isfile_calls = [ call(call_file1_not_exist), call(call_file2_not_exist) ] expected_error_msg = "GINNET0078E" with self.assertRaisesRegexp(OperationFailed, expected_error_msg): iface_model = InterfaceModel(objstore=self._objstore) task_obj = iface_model.enable_sriov('iface1', 4) self.task.wait(task_obj['id']) mock_isfile.assert_has_calls(mock_isfile_calls)