Skip to content

Commit

Permalink
CA-142451: Unit tests
Browse files Browse the repository at this point in the history
Covering changes related to CA-142451.

Signed-off-by: Flavien Quesnel <flavien.quesnel@citrix.com>
  • Loading branch information
Flavien Quesnel committed Aug 21, 2014
1 parent 66c89ea commit ab75df0
Showing 1 changed file with 92 additions and 0 deletions.
92 changes: 92 additions & 0 deletions tests/test_ISCSISR.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand All @@ -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)

0 comments on commit ab75df0

Please sign in to comment.