cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #03162
[Merge] ~larsks/cloud-init:bug/ec2-tests into cloud-init:master
Lars Kellogg-Stedman has proposed merging ~larsks/cloud-init:bug/ec2-tests into cloud-init:master with ~larsks/cloud-init:feature/hide-oauthlib-import-failure as a prerequisite.
Requested reviews:
Server Team CI bot (server-team-bot): continuous-integration
cloud-init commiters (cloud-init-dev)
For more details, see:
https://code.launchpad.net/~larsks/cloud-init/+git/cloud-init/+merge/329660
test_ec2: metadata tests were mocking wrong urls
The ec2 metadata tests were only mocking one version of the metadata
api, but requests were made against both. This fixes _setup_ds to
register mock data at both versions of the API, and adds a fallback
handler to raise an http error on requests to un-mocked requests.
--
Your team cloud-init commiters is requested to review the proposed merge of ~larsks/cloud-init:bug/ec2-tests into cloud-init:master.
diff --git a/tests/unittests/test_datasource/test_ec2.py b/tests/unittests/test_datasource/test_ec2.py
index 33d0261..7c9ac70 100644
--- a/tests/unittests/test_datasource/test_ec2.py
+++ b/tests/unittests/test_datasource/test_ec2.py
@@ -167,17 +167,36 @@ class TestEc2(test_helpers.HttprettyTestCase):
self.datasource.min_metadata_version, 'meta-data', ''])
@property
+ def metadata_urls(self):
+ return ['/'.join([self.metadata_addr, version, 'meta-data'])
+ for version in
+ [self.datasource.min_metadata_version] +
+ self.datasource.extended_metadata_versions]
+
+ @property
def userdata_url(self):
return '/'.join([
self.metadata_addr,
self.datasource.min_metadata_version, 'user-data'])
+ @property
+ def userdata_urls(self):
+ return ['/'.join([self.metadata_addr, version, 'user-data'])
+ for version in
+ [self.datasource.min_metadata_version] +
+ self.datasource.extended_metadata_versions]
+
def _patch_add_cleanup(self, mpath, *args, **kwargs):
p = mock.patch(mpath, *args, **kwargs)
p.start()
self.addCleanup(p.stop)
+ def bad_uri_handler(self, req, uri, headers):
+ print('Request for invalid URL:', uri)
+ return (999, headers, 'Invalid request for %s' % uri)
+
def _setup_ds(self, sys_cfg, platform_data, md, ud=None):
+ self.uris = []
distro = {}
paths = helpers.Paths({})
if sys_cfg is None:
@@ -189,8 +208,10 @@ class TestEc2(test_helpers.HttprettyTestCase):
return_value=platform_data)
if md:
- register_mock_metaserver(self.metadata_url, md)
- register_mock_metaserver(self.userdata_url, ud)
+ for url in self.metadata_urls:
+ register_mock_metaserver(url, md)
+ for url in self.userdata_urls:
+ register_mock_metaserver(url, ud)
return ds
@@ -268,6 +289,7 @@ class TestEc2(test_helpers.HttprettyTestCase):
Then the metadata services is crawled for more network config info.
When the platform data is valid, return True.
"""
+
m_is_bsd.return_value = False
m_dhcp.return_value = [{
'interface': 'eth9', 'fixed-address': '192.168.2.9',
@@ -278,6 +300,7 @@ class TestEc2(test_helpers.HttprettyTestCase):
platform_data=self.valid_platform_data,
sys_cfg={'datasource': {'Ec2': {'strict_id': False}}},
md=DEFAULT_METADATA)
+
ret = ds.get_data()
self.assertTrue(ret)
m_dhcp.assert_called_once_with()