# # SPDX-License-Identifier: Apache-2.0 # # Copyright (c) 2019 Wind River Systems, Inc. # import mock import socket import testtools import cgcs_patch.constants import cgcs_patch.patch_functions import cgcs_patch.utils class CgcsPatchUtilsTestCase(testtools.TestCase): def test_if_nametoindex_loopback(self): result = cgcs_patch.utils.if_nametoindex('lo') self.assertGreater(result, 0) def test_if_nametoindex_failure(self): result = cgcs_patch.utils.if_nametoindex('xfakeifx') self.assertEqual(result, 0) def test_gethostbyname(self): result = cgcs_patch.utils.gethostbyname('localhost') print("gethostbyname returned %s for localhost" % result) self.assertIn(result, ['127.0.0.1', '::1']) def test_gethostbyname_failure(self): result = cgcs_patch.utils.gethostbyname('xfakehostx') print("gethostbyname returned %s for xfakehostx" % result) self.assertIsNone(result) @mock.patch('cgcs_patch.utils.gethostbyname') def test_get_management_version_ipv4(self, mock_gethostbyname): mock_gethostbyname.return_value = '192.168.204.2' expected_result = cgcs_patch.constants.ADDRESS_VERSION_IPV4 result = cgcs_patch.utils.get_management_version() self.assertEqual(expected_result, result) @mock.patch('cgcs_patch.utils.gethostbyname') def test_get_management_version_ipv6(self, mock_gethostbyname): mock_gethostbyname.return_value = 'fe80::2e44:fdff:fe84:5479' expected_result = cgcs_patch.constants.ADDRESS_VERSION_IPV6 result = cgcs_patch.utils.get_management_version() self.assertEqual(expected_result, result) @mock.patch('cgcs_patch.utils.gethostbyname') def test_get_management_version_ipv4_default(self, mock_gethostbyname): mock_gethostbyname.return_value = None expected_result = cgcs_patch.constants.ADDRESS_VERSION_IPV4 result = cgcs_patch.utils.get_management_version() self.assertEqual(expected_result, result) @mock.patch('cgcs_patch.utils.gethostbyname') def test_get_management_family_ipv4(self, mock_gethostbyname): mock_gethostbyname.return_value = '192.168.204.2' expected_result = socket.AF_INET result = cgcs_patch.utils.get_management_family() self.assertEqual(expected_result, result) @mock.patch('cgcs_patch.utils.gethostbyname') def test_get_management_family_ipv6(self, mock_gethostbyname): mock_gethostbyname.return_value = 'fe80::2e44:fdff:fe84:5479' expected_result = socket.AF_INET6 result = cgcs_patch.utils.get_management_family() self.assertEqual(expected_result, result) @mock.patch('cgcs_patch.utils.gethostbyname') def test_get_management_version_ipv4_int(self, mock_gethostbyname): mock_gethostbyname.return_value = 0xc0a8cc02 expected_result = socket.AF_INET result = cgcs_patch.utils.get_management_family() self.assertEqual(expected_result, result) @mock.patch('cgcs_patch.utils.gethostbyname') def test_get_versioned_address_all_ipv4(self, mock_gethostbyname): mock_gethostbyname.return_value = '192.168.204.2' expected_result = '0.0.0.0' result = cgcs_patch.utils.get_versioned_address_all() self.assertEqual(expected_result, result) @mock.patch('cgcs_patch.utils.gethostbyname') def test_get_versioned_address_all_ipv6(self, mock_gethostbyname): mock_gethostbyname.return_value = 'fe80::2e44:fdff:fe84:5479' expected_result = '::' result = cgcs_patch.utils.get_versioned_address_all() self.assertEqual(expected_result, result) def test_ip_to_url_ipv4(self): ip = '192.168.204.2' expected_result = ip result = cgcs_patch.utils.ip_to_url(ip) self.assertEqual(expected_result, result) def test_ip_to_url_ipv6(self): ip = 'fe80::2e44:fdff:fe84:5479' expected_result = '[%s]' % ip result = cgcs_patch.utils.ip_to_url(ip) self.assertEqual(expected_result, result) def test_ip_to_url_invalid(self): ip = 'not-an-ip' expected_result = ip result = cgcs_patch.utils.ip_to_url(ip) self.assertEqual(expected_result, result) def test_ip_to_versioned_localhost_ipv4(self): ip = '192.168.204.2' expected_result = 'localhost' result = cgcs_patch.utils.ip_to_versioned_localhost(ip) self.assertEqual(expected_result, result) def test_ip_to_versioned_localhost_ipv6(self): ip = 'fe80::2e44:fdff:fe84:5479' expected_result = '::1' result = cgcs_patch.utils.ip_to_versioned_localhost(ip) self.assertEqual(expected_result, result) def test_parse_pkgver(self): versions = { '0:1.2.3-r4': ('0', '1.2.3', 'r4'), '4.3.2-1': (None, '4.3.2', '1'), '8.1.4': (None, '8.1.4', None), '5:7.5.3': ('5', '7.5.3', None), 'This is a weird version string': (None, 'This is a weird version string', None), } for ver, expected in versions.items(): result = cgcs_patch.patch_functions.parse_pkgver(ver) self.assertEqual(result, expected)