|
Packit Service |
646995 |
"""
|
|
Packit Service |
646995 |
tests -- the actual TestCase (just one)
|
|
Packit Service |
646995 |
"""
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
import sys
|
|
Packit Service |
646995 |
import os
|
|
Packit Service |
646995 |
import unittest
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
from . import util
|
|
Packit Service |
646995 |
from .util import Global
|
|
Packit Service |
646995 |
from .iscsi import IscsiData
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
class TestRegression(unittest.TestCase):
|
|
Packit Service |
646995 |
"""
|
|
Packit Service |
646995 |
Regression testing
|
|
Packit Service |
646995 |
"""
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
@classmethod
|
|
Packit Service |
646995 |
def setUpClass(cls):
|
|
Packit Service |
646995 |
util.verify_needed_commands_exist(['parted', 'fio', 'mkfs', 'bonnie++', 'sgdisk', 'iscsiadm'])
|
|
Packit Service |
646995 |
util.vprint('*** Starting %s' % cls.__name__)
|
|
Packit Service |
646995 |
# XXX validate that target exists?
|
|
Packit Service |
646995 |
# an array of first burts, max burst, and max recv values, for testing
|
|
Packit Service |
646995 |
cls.param_values = [[4096, 4096, 4096],
|
|
Packit Service |
646995 |
[8192, 4096, 4096],
|
|
Packit Service |
646995 |
[16384, 4096, 4096],
|
|
Packit Service |
646995 |
[32768, 4096, 4096],
|
|
Packit Service |
646995 |
[65536, 4096, 4096],
|
|
Packit Service |
646995 |
[131972, 4096, 4096],
|
|
Packit Service |
646995 |
[4096, 8192, 4096],
|
|
Packit Service |
646995 |
[4096, 16384, 4096],
|
|
Packit Service |
646995 |
[4096, 32768, 4096],
|
|
Packit Service |
646995 |
[4096, 65536, 4096],
|
|
Packit Service |
646995 |
[4096, 131072, 4096],
|
|
Packit Service |
646995 |
[4096, 4096, 8192],
|
|
Packit Service |
646995 |
[4096, 4096, 16384],
|
|
Packit Service |
646995 |
[4096, 4096, 32768],
|
|
Packit Service |
646995 |
[4096, 4096, 65536],
|
|
Packit Service |
646995 |
[4096, 4096, 131072]]
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
def setUp(self):
|
|
Packit Service |
646995 |
if Global.debug or Global.verbosity > 1:
|
|
Packit Service |
646995 |
# this makes debug printing a little more clean
|
|
Packit Service |
646995 |
print('', file=sys.stderr)
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
def iscsi_logout(self):
|
|
Packit Service |
646995 |
res = util.run_cmd(['iscsiadm', '-m', 'node',
|
|
Packit Service |
646995 |
'-T', Global.target,
|
|
Packit Service |
646995 |
'-p', Global.ipnr,
|
|
Packit Service |
646995 |
'--logout'])
|
|
Packit Service |
646995 |
if res not in [0, 21]:
|
|
Packit Service |
646995 |
self.fail('logout failed')
|
|
Packit Service |
646995 |
self.assertFalse(os.path.exists(Global.device), '%s: exists after logout!' % Global.device)
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
def test_InitialR2T_on_ImmediateData_off(self):
|
|
Packit Service |
646995 |
"""Test Initial Request to Transmit on, but Immediate Data off"""
|
|
Packit Service |
646995 |
i = 1
|
|
Packit Service |
646995 |
for v in self.param_values:
|
|
Packit Service |
646995 |
with self.subTest('Testing FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v), i=i):
|
|
Packit Service |
646995 |
if i not in Global.subtest_list:
|
|
Packit Service |
646995 |
util.vprint('Skipping subtest %d: FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v) % i)
|
|
Packit Service |
646995 |
else:
|
|
Packit Service |
646995 |
util.vprint('Running subtest %d: FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v) % i)
|
|
Packit Service |
646995 |
self.iscsi_logout()
|
|
Packit Service |
646995 |
iscsi_data = IscsiData('No', 'Yes', 'None', 'None', v[0], v[1], v[2])
|
|
Packit Service |
646995 |
iscsi_data.update_cfg(Global.target, Global.ipnr)
|
|
Packit Service |
646995 |
self.run_the_rest()
|
|
Packit Service |
646995 |
i += 1
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
def test_InitialR2T_off_ImmediateData_on(self):
|
|
Packit Service |
646995 |
"""Test Initial Request to Transmit off, Immediate Data on"""
|
|
Packit Service |
646995 |
i = 1
|
|
Packit Service |
646995 |
for v in self.param_values:
|
|
Packit Service |
646995 |
with self.subTest('Testing FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v), i=i):
|
|
Packit Service |
646995 |
if i not in Global.subtest_list:
|
|
Packit Service |
646995 |
util.vprint('Skipping subtest %d: FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v) % i)
|
|
Packit Service |
646995 |
else:
|
|
Packit Service |
646995 |
self.iscsi_logout()
|
|
Packit Service |
646995 |
iscsi_data = IscsiData('Yes', 'No', 'None', 'None', v[0], v[1], v[2])
|
|
Packit Service |
646995 |
iscsi_data.update_cfg(Global.target, Global.ipnr)
|
|
Packit Service |
646995 |
self.run_the_rest()
|
|
Packit Service |
646995 |
i += 1
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
def test_InitialR2T_on_ImmediateData_on(self):
|
|
Packit Service |
646995 |
"""Test Initial Request to Transmit and Immediate Data on"""
|
|
Packit Service |
646995 |
i = 1
|
|
Packit Service |
646995 |
for v in self.param_values:
|
|
Packit Service |
646995 |
with self.subTest('Testing FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v), i=i):
|
|
Packit Service |
646995 |
if i not in Global.subtest_list:
|
|
Packit Service |
646995 |
util.vprint('Skipping subtest %d: FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v) % i)
|
|
Packit Service |
646995 |
else:
|
|
Packit Service |
646995 |
util.vprint('Running subtest %d: FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v) % i)
|
|
Packit Service |
646995 |
self.iscsi_logout()
|
|
Packit Service |
646995 |
iscsi_data = IscsiData('Yes', 'Yes', 'None', 'None', v[0], v[1], v[2])
|
|
Packit Service |
646995 |
iscsi_data.update_cfg(Global.target, Global.ipnr)
|
|
Packit Service |
646995 |
self.run_the_rest()
|
|
Packit Service |
646995 |
i += 1
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
def test_InitialR2T_off_ImmediateData_off(self):
|
|
Packit Service |
646995 |
"""Test Initial Request to Transmit and Immediate Data off"""
|
|
Packit Service |
646995 |
i = 1
|
|
Packit Service |
646995 |
for v in self.param_values:
|
|
Packit Service |
646995 |
with self.subTest('Testing FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v), i=i):
|
|
Packit Service |
646995 |
if i not in Global.subtest_list:
|
|
Packit Service |
646995 |
util.vprint('Skipping subtest %d: FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v) % i)
|
|
Packit Service |
646995 |
else:
|
|
Packit Service |
646995 |
util.vprint('Running subtest %d: FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v) % i)
|
|
Packit Service |
646995 |
self.iscsi_logout()
|
|
Packit Service |
646995 |
iscsi_data = IscsiData('No', 'No', 'None', 'None', v[0], v[1], v[2])
|
|
Packit Service |
646995 |
iscsi_data.update_cfg(Global.target, Global.ipnr)
|
|
Packit Service |
646995 |
self.run_the_rest()
|
|
Packit Service |
646995 |
i += 1
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
def test_HdrDigest_on_DataDigest_off(self):
|
|
Packit Service |
646995 |
"""Test With Header Digest"""
|
|
Packit Service |
646995 |
i = 1
|
|
Packit Service |
646995 |
for v in self.param_values:
|
|
Packit Service |
646995 |
with self.subTest('Testing FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v), i=i):
|
|
Packit Service |
646995 |
if i not in Global.subtest_list:
|
|
Packit Service |
646995 |
util.vprint('Skipping subtest %d: FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v) % i)
|
|
Packit Service |
646995 |
else:
|
|
Packit Service |
646995 |
util.vprint('Running subtest %d: FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v) % i)
|
|
Packit Service |
646995 |
self.iscsi_logout()
|
|
Packit Service |
646995 |
iscsi_data = IscsiData('No', 'Yes', 'CRC32C', 'None', v[0], v[1], v[2])
|
|
Packit Service |
646995 |
iscsi_data.update_cfg(Global.target, Global.ipnr)
|
|
Packit Service |
646995 |
self.run_the_rest()
|
|
Packit Service |
646995 |
i += 1
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
def test_HdrDigest_on_DataDigest_on(self):
|
|
Packit Service |
646995 |
"""Test With Header Digest"""
|
|
Packit Service |
646995 |
i = 1
|
|
Packit Service |
646995 |
for v in self.param_values:
|
|
Packit Service |
646995 |
with self.subTest('Testing FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v), i=i):
|
|
Packit Service |
646995 |
if i not in Global.subtest_list:
|
|
Packit Service |
646995 |
util.vprint('Skipping subtest %d: FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v) % i)
|
|
Packit Service |
646995 |
else:
|
|
Packit Service |
646995 |
util.vprint('Running subtest %d: FirstBurst={} MaxBurts={} MaxRecv={}'.format(*v) % i)
|
|
Packit Service |
646995 |
self.iscsi_logout()
|
|
Packit Service |
646995 |
iscsi_data = IscsiData('No', 'Yes', 'CRC32C', 'CRC32C', v[0], v[1], v[2])
|
|
Packit Service |
646995 |
iscsi_data.update_cfg(Global.target, Global.ipnr)
|
|
Packit Service |
646995 |
self.run_the_rest()
|
|
Packit Service |
646995 |
i += 1
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
def run_the_rest(self):
|
|
Packit Service |
646995 |
res = util.run_cmd(['iscsiadm', '-m', 'node',
|
|
Packit Service |
646995 |
'-T', Global.target,
|
|
Packit Service |
646995 |
'-p', Global.ipnr,
|
|
Packit Service |
646995 |
'--login'])
|
|
Packit Service |
646995 |
self.assertEqual(res, 0, 'cannot login to device')
|
|
Packit Service |
646995 |
# wait a few seconds for the device to show up
|
|
Packit Service |
646995 |
if not util.wait_for_path(Global.device):
|
|
Packit Service |
646995 |
self.fail('%s: does not exist after login' % Global.device)
|
|
Packit Service |
646995 |
(res, reason) = util.run_fio()
|
|
Packit Service |
646995 |
self.assertEqual(res, 0, reason)
|
|
Packit Service |
646995 |
(res, reason) = util.run_parted()
|
|
Packit Service |
646995 |
self.assertEqual(res, 0, reason)
|
|
Packit Service |
646995 |
(res, reason) = util.run_mkfs()
|
|
Packit Service |
646995 |
self.assertEqual(res, 0, reason)
|
|
Packit Service |
646995 |
(res, reason) = util.run_bonnie()
|
|
Packit Service |
646995 |
self.assertEqual(res, 0, reason)
|
|
Packit Service |
646995 |
|
|
Packit Service |
646995 |
@classmethod
|
|
Packit Service |
646995 |
def tearDownClass(cls):
|
|
Packit Service |
646995 |
# restore iscsi config
|
|
Packit Service |
646995 |
iscsi_data = IscsiData()
|
|
Packit Service |
646995 |
iscsi_data.update_cfg(Global.target, Global.ipnr)
|
|
Packit Service |
646995 |
# log out of iscsi connection
|
|
Packit Service |
646995 |
util.run_cmd(['iscsiadm', '-m', 'node',
|
|
Packit Service |
646995 |
'-T', Global.target,
|
|
Packit Service |
646995 |
'-p', Global.ipnr,
|
|
Packit Service |
646995 |
'--logout'])
|
|
Packit Service |
646995 |
|