Improve platform mocking

Patch out charmhelpers.osplatform.get_platform() and
charmhelpers.core.host.lsb_release() globally in the unit tests to
insulate the unit tests from the platform that the unit tests are being
run on.

Also, add mock for `charmhelpers.contrib.openstack.context.is_ipv6_disabled`
in the `HAProxyContextTests.test_ctxt` unit test.

The charmhelpers function `is_ipv6_disabled` calls `sysctl` and this doesn't
exist on Debian container images. This fixes the following unit test failure:
```
FileNotFoundError: [Errno 2] No such file or directory: 'sysctl'
```

Signed-off-by: Ionut Balutoiu <ibalutoiu@cloudbasesolutions.com>
Co-authored-by: Alex Kavanagh <alex.kavanagh@canonical.com>

Change-Id: I60bc9550a83eb342e78d3c1916d98bfaa8035572
This commit is contained in:
Ionut Balutoiu 2023-10-30 16:15:55 +02:00
parent 976fc4ae84
commit b24a35713a
2 changed files with 16 additions and 1 deletions

View File

@ -13,8 +13,21 @@
# limitations under the License.
import sys
from unittest import mock
sys.path.append('actions')
sys.path.append('hooks')
sys.path.append('lib')
sys.path.append('unit_tests')
# Patch out lsb_release() and get_platform() as unit tests should be fully
# insulated from the underlying platform. Unit tests assume that the system is
# ubuntu jammy.
mock.patch(
'charmhelpers.osplatform.get_platform', return_value='ubuntu'
).start()
mock.patch(
'charmhelpers.core.host.lsb_release',
return_value={
'DISTRIB_CODENAME': 'jammy'
}).start()

View File

@ -47,6 +47,7 @@ class HAProxyContextTests(CharmTestCase):
self.arch.return_value = 'amd64'
@patch('ceph_radosgw_context.https')
@patch('charmhelpers.contrib.openstack.context.is_ipv6_disabled')
@patch('charmhelpers.contrib.openstack.context.get_relation_ip')
@patch('charmhelpers.contrib.openstack.context.mkdir')
@patch('charmhelpers.contrib.openstack.context.local_unit')
@ -56,7 +57,7 @@ class HAProxyContextTests(CharmTestCase):
@patch('charmhelpers.contrib.hahelpers.cluster.relation_ids')
def test_ctxt(self, _harelation_ids, _ctxtrelation_ids, _haconfig,
_ctxtconfig, _local_unit, _mkdir, _get_relation_ip,
_mock_https):
_is_ipv6_disabled, _mock_https):
_mock_https.return_value = False
_get_relation_ip.return_value = '10.0.0.10'
_ctxtconfig.side_effect = self.test_config.get
@ -74,6 +75,7 @@ class HAProxyContextTests(CharmTestCase):
'https': False
}
self.assertEqual(expect, haproxy_context())
_is_ipv6_disabled.assert_called_once_with()
class MonContextTest(CharmTestCase):