From ab75df0f3966f7c7ccd86acc50ed24ce3965bca9 Mon Sep 17 00:00:00 2001 From: Flavien Quesnel Date: Wed, 20 Aug 2014 16:36:36 +0100 Subject: [PATCH] CA-142451: Unit tests Covering changes related to CA-142451. Signed-off-by: Flavien Quesnel --- tests/test_ISCSISR.py | 92 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/tests/test_ISCSISR.py b/tests/test_ISCSISR.py index 88d299cef..137305349 100644 --- a/tests/test_ISCSISR.py +++ b/tests/test_ISCSISR.py @@ -59,6 +59,33 @@ def __init__(self, extra_dconf=None): self.dconf.update(extra_dconf or {}) +class NonInitingMultiLUNISCSISR(ISCSISR.ISCSISR): + def __init__(self, node1, node2): + self.mpath = "false" + self.dconf = { + 'target': node1['ip'], + 'localIQN': 'localIQN', + 'targetIQN': node1['iqn'] + } + + self.dconf.update({}) + self.target = node1['ip'] + self.port = node1['port'] + self.targetIQN = node1['iqn'] + self.attached = True + self.multihomed = True + extra_adapter = "%s:%d" % (node2['ip'], node2['port']) + self.adapter = { + extra_adapter: None + } + + def _synchroniseAddrList(self, *args, **kwargs): + pass + + def _init_adapters(self): + pass + + class TestVdiTypeSetting(TestBase): @mock.patch('ISCSISR.iscsilib.discovery') @@ -82,3 +109,68 @@ def test_vdi_type_modified_by_force_tapdisk(self): self.load_iscsi_sr(iscsi_sr=iscsi_sr) self.assertEquals('aio', iscsi_sr.sr_vditype) + + +class TestMultiLUNISCSISR(unittest.TestCase): + + def setUp(self): + self.node1 = { + 'ip': '127.0.0.1', + 'port': 3260, + 'iqn': 'IQN' + } + self.node2 = { + 'ip': '127.0.0.2', + 'port': 8080, + 'iqn': 'IQN', + 'tpgt': 'TPGT' + } + self.node_records = [( + "%s:%d" % (self.node2['ip'], self.node2['port']), + self.node2['tpgt'], + self.node2['iqn'] + )] + + def assertActiveNodeEquals(self, node, iscsi_sr): + node_ip_port = "%s:%d" % (node['ip'], node['port']) + node_path = '/dev/iscsi/%s/%s' % (node['iqn'], node_ip_port) + + self.assertEquals(node_path, iscsi_sr.path) + self.assertEquals(node_ip_port, iscsi_sr.tgtidx) + self.assertEquals(node_ip_port, iscsi_sr.address) + + @mock.patch('ISCSISR.os.path.exists') + @mock.patch('ISCSISR.iscsilib.get_node_records') + def test_initPaths_actual_path_is_active( + self, + mock_get_node_records, + mock_exists): + mock_get_node_records.return_value = self.node_records + mock_exists.return_value = True + + iscsi_sr = NonInitingMultiLUNISCSISR(self.node1, self.node2) + + iscsi_sr._initPaths() + + self.assertActiveNodeEquals(self.node1, iscsi_sr) + + @mock.patch('ISCSISR.os.path.exists') + @mock.patch('ISCSISR.iscsilib.get_node_records') + def test_initPaths_active_path_detection( + self, + mock_get_node_records, + mock_exists): + mock_get_node_records.return_value = self.node_records + + def fake_exists(path): + if self.node1['ip'] in path: + return False + return True + + mock_exists.side_effect = fake_exists + + iscsi_sr = NonInitingMultiLUNISCSISR(self.node1, self.node2) + + iscsi_sr._initPaths() + + self.assertActiveNodeEquals(self.node2, iscsi_sr)