~ubuntu-branches/ubuntu/utopic/maas/utopic-security

« back to all changes in this revision

Viewing changes to src/maastesting/tests/test_factory.py

  • Committer: Package Import Robot
  • Author(s): Andres Rodriguez, Jeroen Vermeulen, Andres Rodriguez, Jason Hobbs, Raphaël Badin, Louis Bouchard, Gavin Panella
  • Date: 2014-08-21 19:36:30 UTC
  • mfrom: (1.3.1)
  • Revision ID: package-import@ubuntu.com-20140821193630-kertpu5hd8yyss8h
Tags: 1.7.0~beta7+bzr3266-0ubuntu1
* New Upstream Snapshot, Beta 7 bzr3266

[ Jeroen Vermeulen ]
* debian/extras/99-maas-sudoers
  debian/maas-dhcp.postinst
  debian/rules
  - Add second DHCP server instance for IPv6.
* debian/maas-region-controller-min.install
  debian/maas-region-controller-min.lintian-overrides
  - Install deployment user-data: maas_configure_interfaces.py script.
* debian/maas-cluster-controller.links
  debian/maas-cluster-controller.install
  debian/maas-cluster-controller.postinst
  - Reflect Celery removal changes made in trunk r3067.
  - Don't install celeryconfig_cluster.py any longer. 
  - Don't install maas_local_celeryconfig_cluster.py any longer.
  - Don't symlink maas_local_celeryconfig_cluster.py from /etc to /usr.
  - Don't insert UUID into maas_local_celeryconfig_cluster.py.

[ Andres Rodriguez ]
* debian/maas-region-controller-min.postrm: Cleanup lefover files.
* debian/maas-dhcp.postrm: Clean leftover configs.
* Provide new maas-proxy package that replaces the usage of
  squid-deb-proxy:
  - debian/control: New maas-proxy package that replaces the usage
    of squid-deb-proxy; Drop depends on squid-deb-proxy.
  - Add upstrart job.
  - Ensure squid3 is stopped as maas-proxy uses a caching proxy.
* Remove Celery references to cluster controller:
  - Rename upstart job from maas-pserv to maas-cluster; rename
    maas-cluster-celery to maas-cluster-register. Ensure services
    are stopped on upgrade.
  - debian/maintscript: Cleanup config files.
  - Remove all references to the MAAS celery daemon and config
    files as we don't use it like that anymore
* Move some entries in debian/maintscript to
  debian/maas-cluster-controller.maintscript
* Remove usage of txlongpoll and rabbitmq-server. Handle upgrades
  to ensure these are removed correctly.

[ Jason Hobbs ]
* debian/maas-region-controller-min.install: Install
  maas-generate-winrm-cert script.

[ Raphaël Badin ]
* debian/extras/maas-region-admin: Bypass django-admin as it prints
  spurious messages to stdout (LP: #1365130).

[Louis Bouchard]
* debian/maas-cluster-controller.postinst:
  - Exclude /var/log/maas/rsyslog when changing ownership
    (LP: #1346703)

[Gavin Panella]
* debian/maas-cluster-controller.maas-clusterd.upstart:
  - Don't start-up the cluster controller unless a shared-secret has
    been installed.
* debian/maas-cluster-controller.maas-cluster-register.upstart: Drop.

Show diffs side-by-side

added added

removed removed

Lines of Context:
52
52
    def test_pick_port_returns_int(self):
53
53
        self.assertIsInstance(factory.pick_port(), int)
54
54
 
55
 
    def test_getRandomIPAddress(self):
56
 
        ip_address = factory.getRandomIPAddress()
 
55
    def test_make_ipv4_address(self):
 
56
        ip_address = factory.make_ipv4_address()
57
57
        self.assertIsInstance(ip_address, unicode)
58
58
        octets = ip_address.split('.')
59
59
        self.assertEqual(4, len(octets))
60
60
        for octet in octets:
61
61
            self.assertTrue(0 <= int(octet) <= 255)
62
62
 
63
 
    def test_getRandomIPAddress_but_not(self):
 
63
    def test_make_ipv4_address_but_not(self):
64
64
        # We want to look for clashes between identical IPs and/or netmasks.
65
65
        # Narrow down the range of randomness so we have a decent chance of
66
66
        # triggering a clash, but not so far that we'll loop for very long
67
67
        # trying to find a network we haven't seen already.
68
68
        self.patch(
69
 
            factory, 'getRandomIPAddress',
 
69
            factory, 'make_ipv4_address',
70
70
            lambda: '10.%d.0.0' % randint(1, 200))
71
71
        networks = []
72
72
        for _ in range(100):
73
 
            networks.append(factory.getRandomNetwork(but_not=networks))
 
73
            networks.append(factory.make_ipv4_network(but_not=networks))
74
74
        self.assertEquals(len(networks), len(set(networks)))
75
75
 
76
76
    def test_make_UUID(self):
78
78
        self.assertIsInstance(uuid, unicode)
79
79
        self.assertEqual(36, len(uuid))
80
80
 
81
 
    def test_getRandomNetwork(self):
82
 
        network = factory.getRandomNetwork()
 
81
    def test_make_ipv4_network(self):
 
82
        network = factory.make_ipv4_network()
83
83
        self.assertIsInstance(network, IPNetwork)
84
84
 
85
 
    def test_getRandomNetwork_respects_but_not(self):
86
 
        self.patch(factory, 'getRandomIPAddress').return_value = IPAddress(
 
85
    def test_make_ipv4_network_respects_but_not(self):
 
86
        self.patch(factory, 'make_ipv4_address').return_value = IPAddress(
87
87
            '10.1.1.0')
88
88
        self.assertRaises(
89
89
            TooManyRandomRetries,
90
 
            factory.getRandomNetwork,
 
90
            factory.make_ipv4_network,
91
91
            slash=24, but_not=[IPNetwork('10.1.1.0/24')])
92
92
 
93
 
    def test_getRandomNetwork_returns_network_not_in_but_not(self):
94
 
        self.patch(factory, 'getRandomIPAddress').return_value = IPAddress(
 
93
    def test_make_ipv4_network_returns_network_not_in_but_not(self):
 
94
        self.patch(factory, 'make_ipv4_address').return_value = IPAddress(
95
95
            '10.1.1.0')
96
96
        self.assertEqual(
97
97
            IPNetwork('10.1.1.0/24'),
98
 
            factory.getRandomNetwork(
 
98
            factory.make_ipv4_network(
99
99
                slash=24, but_not=[IPNetwork('10.9.9.0/24')]))
100
100
 
101
 
    def test_getRandomNetwork_may_overlap_but_not(self):
102
 
        self.patch(factory, 'getRandomIPAddress').return_value = IPAddress(
 
101
    def test_make_ipv4_network_may_overlap_but_not(self):
 
102
        self.patch(factory, 'make_ipv4_address').return_value = IPAddress(
103
103
            '10.1.1.0')
104
104
        self.assertEqual(
105
105
            IPNetwork('10.1.1.0/24'),
106
 
            factory.getRandomNetwork(
 
106
            factory.make_ipv4_network(
107
107
                slash=24, but_not=[IPNetwork('10.1.0.0/16')]))
108
108
 
109
 
    def test_getRandomNetwork_avoids_network_in_disjoint_from(self):
110
 
        self.patch(factory, 'getRandomIPAddress').return_value = IPAddress(
 
109
    def test_make_ipv4_network_avoids_network_in_disjoint_from(self):
 
110
        self.patch(factory, 'make_ipv4_address').return_value = IPAddress(
111
111
            '10.1.1.0')
112
112
        self.assertRaises(
113
113
            TooManyRandomRetries,
114
 
            factory.getRandomNetwork,
 
114
            factory.make_ipv4_network,
115
115
            slash=24, disjoint_from=[IPNetwork('10.1.1.0/24')])
116
116
 
117
 
    def test_getRandomNetwork_avoids_network_overlapping_disjoint_from(self):
118
 
        self.patch(factory, 'getRandomIPAddress').return_value = IPAddress(
 
117
    def test_make_ipv4_network_avoids_network_overlapping_disjoint_from(self):
 
118
        self.patch(factory, 'make_ipv4_address').return_value = IPAddress(
119
119
            '10.1.1.0')
120
120
        self.assertRaises(
121
121
            TooManyRandomRetries,
122
 
            factory.getRandomNetwork,
 
122
            factory.make_ipv4_network,
123
123
            slash=24, disjoint_from=[IPNetwork('10.1.0.0/16')])
124
124
 
125
 
    def test_getRandomNetwork_returns_network_disjoint_from(self):
126
 
        existing_network = factory.getRandomNetwork()
127
 
        new_network = factory.getRandomNetwork(
 
125
    def test_make_ipv4_network_returns_network_disjoint_from(self):
 
126
        existing_network = factory.make_ipv4_network()
 
127
        new_network = factory.make_ipv4_network(
128
128
            disjoint_from=[existing_network])
129
129
        self.assertNotEqual(existing_network, new_network)
130
130
        self.assertNotIn(new_network, existing_network)
131
131
        self.assertNotIn(existing_network, new_network)
132
132
 
133
133
    def test_pick_ip_in_network(self):
134
 
        network = factory.getRandomNetwork()
 
134
        network = factory.make_ipv4_network()
135
135
        ip = factory.pick_ip_in_network(network)
136
136
        self.assertTrue(
137
137
            network.first <= IPAddress(ip).value <= network.last)
143
143
        self.assertLess(low, high)
144
144
 
145
145
    def test_make_ip_range_obeys_network(self):
146
 
        network = factory.getRandomNetwork()
 
146
        network = factory.make_ipv4_network()
147
147
        low, high = factory.make_ip_range(network)
148
148
        self.assertIn(low, network)
149
149
        self.assertIn(high, network)
151
151
    def test_make_ip_range_returns_low_and_high(self):
152
152
        # Make a very very small network, to maximise the chances of exposure
153
153
        # if the method gets this wrong e.g. by returning identical addresses.
154
 
        low, high = factory.make_ip_range(factory.getRandomNetwork(slash=31))
 
154
        low, high = factory.make_ip_range(factory.make_ipv4_network(slash=31))
155
155
        self.assertLess(low, high)
156
156
 
157
157
    def test_make_ip_range_obeys_but_not(self):
158
158
        # Make a very very small network, to maximise the chances of exposure
159
159
        # if the method gets this wrong.
160
 
        network = factory.getRandomNetwork(slash=30)
 
160
        network = factory.make_ipv4_network(slash=30)
161
161
        first_low, first_high = factory.make_ip_range(network)
162
162
        second_low, second_high = factory.make_ip_range(
163
163
            network, but_not=(first_low, first_high))
166
166
    def test_make_date_returns_datetime(self):
167
167
        self.assertIsInstance(factory.make_date(), datetime)
168
168
 
169
 
    def test_getRandomMACAddress(self):
170
 
        mac_address = factory.getRandomMACAddress()
 
169
    def test_make_mac_address(self):
 
170
        mac_address = factory.make_mac_address()
171
171
        self.assertIsInstance(mac_address, unicode)
172
172
        self.assertEqual(17, len(mac_address))
173
173
        for hex_octet in mac_address.split(":"):
174
174
            self.assertTrue(0 <= int(hex_octet, 16) <= 255)
175
175
 
176
 
    def test_getRandomMACAddress_alternative_delimiter(self):
 
176
    def test_make_mac_address_alternative_delimiter(self):
177
177
        self.patch(factory, "random_octets", count(0x3a))
178
 
        mac_address = factory.getRandomMACAddress(delimiter="-")
 
178
        mac_address = factory.make_mac_address(delimiter="-")
179
179
        self.assertEqual("3a-3b-3c-3d-3e-3f", mac_address)
180
180
 
181
181
    def test_make_random_leases_maps_ips_to_macs(self):