1
from mocker import MockerTestCase
3
from cloudinit.CloudConfig import cc_apt_update_upgrade
7
'failsafe': {'primary': 'http://fs-primary-default',
8
'security': 'http://fs-security-default'}
12
{'arches': ['i386', 'amd64'],
13
'failsafe': {'primary': 'http://fs-primary-intel',
14
'security': 'http://fs-security-intel'},
16
'primary': ['http://%(ec2_region)s.ec2/',
17
'http://%(availability_zone)s.clouds/'],
18
'security': ['http://security-mirror1-intel',
19
'http://security-mirror2-intel']}},
20
{'arches': ['armhf', 'armel'],
21
'failsafe': {'primary': 'http://fs-primary-arm',
22
'security': 'http://fs-security-arm'}},
26
gpmi = cc_apt_update_upgrade._get_package_mirror_info # pylint: disable=W0212
27
gapmi = cc_apt_update_upgrade._get_arch_package_mirror_info # pylint: disable=W0212
30
class TestGenericDistro(MockerTestCase):
32
def return_first(self, mlist):
37
def return_second(self, mlist):
42
def return_none(self, _mlist):
45
def return_last(self, mlist):
51
super(TestGenericDistro, self).setUp()
52
# Make a temp directoy for tests to use.
53
self.tmp = self.makeDir()
55
def test_arch_package_mirror_info_unknown(self):
56
"""for an unknown arch, we should get back that with arch 'default'."""
57
arch_mirrors = gapmi(package_mirrors, arch="unknown")
58
self.assertEqual(unknown_arch_info, arch_mirrors)
60
def test_arch_package_mirror_info_known(self):
61
arch_mirrors = gapmi(package_mirrors, arch="amd64")
62
self.assertEqual(package_mirrors[0], arch_mirrors)
64
def test_get_package_mirror_info_az_ec2(self):
65
arch_mirrors = gapmi(package_mirrors, arch="amd64")
67
results = gpmi(arch_mirrors, availability_zone="us-east-1a",
68
mirror_filter=self.return_first)
69
self.assertEqual(results,
70
{'primary': 'http://us-east-1.ec2/',
71
'security': 'http://security-mirror1-intel'})
73
results = gpmi(arch_mirrors, availability_zone="us-east-1a",
74
mirror_filter=self.return_second)
75
self.assertEqual(results,
76
{'primary': 'http://us-east-1a.clouds/',
77
'security': 'http://security-mirror2-intel'})
79
results = gpmi(arch_mirrors, availability_zone="us-east-1a",
80
mirror_filter=self.return_none)
81
self.assertEqual(results, package_mirrors[0]['failsafe'])
83
def test_get_package_mirror_info_az_non_ec2(self):
84
arch_mirrors = gapmi(package_mirrors, arch="amd64")
86
results = gpmi(arch_mirrors, availability_zone="nova.cloudvendor",
87
mirror_filter=self.return_first)
88
self.assertEqual(results,
89
{'primary': 'http://nova.cloudvendor.clouds/',
90
'security': 'http://security-mirror1-intel'})
92
results = gpmi(arch_mirrors, availability_zone="nova.cloudvendor",
93
mirror_filter=self.return_last)
94
self.assertEqual(results,
95
{'primary': 'http://nova.cloudvendor.clouds/',
96
'security': 'http://security-mirror2-intel'})
98
def test_get_package_mirror_info_none(self):
99
arch_mirrors = gapmi(package_mirrors, arch="amd64")
101
# because both search entries here replacement based on
102
# availability-zone, the filter will be called with an empty list and
103
# failsafe should be taken.
104
results = gpmi(arch_mirrors, availability_zone=None,
105
mirror_filter=self.return_first)
106
self.assertEqual(results,
107
{'primary': 'http://fs-primary-intel',
108
'security': 'http://security-mirror1-intel'})
110
results = gpmi(arch_mirrors, availability_zone=None,
111
mirror_filter=self.return_last)
112
self.assertEqual(results,
113
{'primary': 'http://fs-primary-intel',
114
'security': 'http://security-mirror2-intel'})