~oddbloke/ubuntu/precise/cloud-init/lp1374600

« back to all changes in this revision

Viewing changes to tests/unittests/test_archive_mirrors.py

  • Committer: Package Import Robot
  • Author(s): Scott Moser
  • Date: 2012-11-12 17:01:54 UTC
  • Revision ID: package-import@ubuntu.com-20121112170154-37170939vlg68nst
Tags: 0.6.3-0ubuntu1.2
* debian/patches/lp-978127-maas-oauth-fix-bad-clock.patch: fix usage of
  oauth in maas data source if local system has a bad clock (LP: #978127)
* debian/cloud-init.preinst: fix bug where user data scripts re-ran on
  upgrade from 10.04 versions (LP: #1049146)
* debian/patches/lp-974509-detect-dns-server-redirection.patch: detect dns
  server redirection and disable searching dns for a mirror named
  'ubuntu-mirror' (LP: #974509)
* debian/patches/lp-1018554-shutdown-message-to-console.patch: write a
  message to the console on system shutdown. (LP: #1018554)
* debian/patches/lp-1066115-landscape-install-fix-perms.patch: install
  landscape package if needed which will ensure proper permissions on config
  file (LP: #1066115).
* debian/patches/lp-1070345-landscape-restart-after-change.patch: restart
  landscape after modifying config (LP: #1070345)
* debian/patches/lp-1073077-zsh-workaround-for-locale_warn.patch: avoid
  warning when user's shell is zsh (LP: #1073077)
* debian/patches/rework-mirror-selection.patch: improve mirror selection by:
  * allowing region/availability-zone to be part of mirror (LP: #1037727)
  * making mirror selection arch aware (LP: #1028501)
  * allow specification of a security mirror (LP: #1006963)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from mocker import MockerTestCase
 
2
 
 
3
from cloudinit.CloudConfig import cc_apt_update_upgrade
 
4
 
 
5
unknown_arch_info = {
 
6
    'arches': ['default'],
 
7
    'failsafe': {'primary': 'http://fs-primary-default',
 
8
                 'security': 'http://fs-security-default'}
 
9
}
 
10
 
 
11
package_mirrors = [
 
12
    {'arches': ['i386', 'amd64'],
 
13
     'failsafe': {'primary': 'http://fs-primary-intel',
 
14
                  'security': 'http://fs-security-intel'},
 
15
     'search': {
 
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'}},
 
23
    unknown_arch_info
 
24
]
 
25
 
 
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
 
28
 
 
29
 
 
30
class TestGenericDistro(MockerTestCase):
 
31
 
 
32
    def return_first(self, mlist):
 
33
        if not mlist:
 
34
            return None
 
35
        return mlist[0]
 
36
 
 
37
    def return_second(self, mlist):
 
38
        if not mlist:
 
39
            return None
 
40
        return mlist[1]
 
41
 
 
42
    def return_none(self, _mlist):
 
43
        return None
 
44
 
 
45
    def return_last(self, mlist):
 
46
        if not mlist:
 
47
            return None
 
48
        return(mlist[-1])
 
49
 
 
50
    def setUp(self):
 
51
        super(TestGenericDistro, self).setUp()
 
52
        # Make a temp directoy for tests to use.
 
53
        self.tmp = self.makeDir()
 
54
 
 
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)
 
59
 
 
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)
 
63
 
 
64
    def test_get_package_mirror_info_az_ec2(self):
 
65
        arch_mirrors = gapmi(package_mirrors, arch="amd64")
 
66
 
 
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'})
 
72
 
 
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'})
 
78
 
 
79
        results = gpmi(arch_mirrors, availability_zone="us-east-1a",
 
80
                       mirror_filter=self.return_none)
 
81
        self.assertEqual(results, package_mirrors[0]['failsafe'])
 
82
 
 
83
    def test_get_package_mirror_info_az_non_ec2(self):
 
84
        arch_mirrors = gapmi(package_mirrors, arch="amd64")
 
85
 
 
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'})
 
91
 
 
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'})
 
97
 
 
98
    def test_get_package_mirror_info_none(self):
 
99
        arch_mirrors = gapmi(package_mirrors, arch="amd64")
 
100
 
 
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'})
 
109
 
 
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'})
 
115
 
 
116
 
 
117
# vi: ts=4 expandtab