Skip to content

Commit 48bcd40

Browse files
Unit db mock during is_sata30orless test
Signed-off-by: Vinit Chacharia <vinit.chacharia@canonical.com>
1 parent 52dbadd commit 48bcd40

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

ceph-osd/hooks/utils.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -339,8 +339,8 @@ def should_enable_discard(devices):
339339
def is_sata30orless(device):
340340
db = unitdata.kv()
341341
key = '%s_is_sata30orless' % str(device)
342-
if db.get(key) is not None:
343-
value = db.get(key)
342+
value = db.get(key)
343+
if value is not None:
344344
log('is_sata30orless: Using cached value %s' % value, level='DEBUG')
345345
return value
346346

ceph-osd/unit_tests/test_ceph_utils.py

+25-12
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,13 @@
1515

1616
import unittest
1717

18-
from unittest.mock import patch
18+
from unittest.mock import patch, MagicMock
1919

2020
with patch('charmhelpers.contrib.hardening.harden.harden') as mock_dec:
2121
mock_dec.side_effect = (lambda *dargs, **dkwargs: lambda f:
2222
lambda *args, **kwargs: f(*args, **kwargs))
2323
import utils
2424

25-
from charmhelpers.core import unitdata
26-
2725

2826
class CephUtilsTestCase(unittest.TestCase):
2927
def setUp(self):
@@ -89,49 +87,64 @@ def test_should_enable_discard_no(self, mock_is_sata30orless,
8987
self.assertEqual(ret, False)
9088

9189
@patch('subprocess.check_output')
92-
def test_is_sata30orless_sata31(self, mock_subprocess_check_output):
90+
@patch('charmhelpers.core.unitdata.kv')
91+
def test_is_sata30orless_sata31(self, mock_db,
92+
mock_subprocess_check_output):
9393
extcmd_output = (b'supressed text\nSATA Version is: '
9494
b'SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)\n'
9595
b'supressed text\n\n')
9696
mock_subprocess_check_output.return_value = extcmd_output
97-
db = unitdata.kv()
97+
mock_db_instance = MagicMock()
98+
mock_db.return_value = mock_db_instance
9899
key = '/dev/sda_is_sata30orless'
99-
if db.get(key) is None:
100+
mock_db_instance.return_value = False
101+
if mock_db_instance.get(key) is None:
100102
ret = utils.is_sata30orless('/dev/sda')
101103
mock_subprocess_check_output.assert_called()
102104
self.assertEqual(ret, False)
105+
mock_db_instance.set.assert_called_with(key, False)
103106
else:
104107
ret = utils.is_sata30orless('/dev/sda')
105108
mock_subprocess_check_output.assert_not_called()
106109

107110
@patch('subprocess.check_output')
108-
def test_is_sata30orless_sata30(self, mock_subprocess_check_output):
111+
@patch('charmhelpers.core.unitdata.kv')
112+
def test_is_sata30orless_sata30(self, mock_db,
113+
mock_subprocess_check_output):
109114
extcmd_output = (b'supressed text\nSATA Version is: '
110115
b'SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)\n'
111116
b'supressed text\n\n')
112117
mock_subprocess_check_output.return_value = extcmd_output
113-
db = unitdata.kv()
118+
mock_db_instance = MagicMock()
119+
mock_db.return_value = mock_db_instance
114120
key = '/dev/sda_is_sata30orless'
115-
if db.get(key) is None:
121+
mock_db_instance.get.return_value = None
122+
if mock_db_instance.get(key) is None:
116123
ret = utils.is_sata30orless('/dev/sda')
117124
mock_subprocess_check_output.assert_called()
118125
self.assertEqual(ret, True)
126+
mock_db_instance.set.assert_called_with(key, True)
119127
else:
120128
ret = utils.is_sata30orless('/dev/sda')
121129
mock_subprocess_check_output.assert_not_called()
122130

123131
@patch('subprocess.check_output')
124-
def test_is_sata30orless_sata26(self, mock_subprocess_check_output):
132+
@patch('charmhelpers.core.unitdata.kv')
133+
def test_is_sata30orless_sata26(self, mock_db,
134+
mock_subprocess_check_output):
125135
extcmd_output = (b'supressed text\nSATA Version is: '
126136
b'SATA 2.6, 3.0 Gb/s (current: 3.0 Gb/s)\n'
127137
b'supressed text\n\n')
128138
mock_subprocess_check_output.return_value = extcmd_output
129-
db = unitdata.kv()
139+
mock_db_instance = MagicMock()
140+
mock_db.return_value = mock_db_instance
130141
key = '/dev/sda_is_sata30orless'
131-
if db.get(key) is None:
142+
mock_db_instance.get.return_value = None
143+
if mock_db_instance.get(key) is None:
132144
ret = utils.is_sata30orless('/dev/sda')
133145
mock_subprocess_check_output.assert_called()
134146
self.assertEqual(ret, True)
147+
mock_db_instance.set.assert_called_with(key, True)
135148
else:
136149
ret = utils.is_sata30orless('/dev/sda')
137150
mock_subprocess_check_output.assert_not_called()

0 commit comments

Comments
 (0)