On 2017-01-25 07:02, Dusty Mabe wrote:
picked from commit 9785285 --- Delete-GCE-test-it-s-failing.patch | 182 +++++++++++++++++++++++++++++++++++++ cloud-init.spec | 3 + 2 files changed, 185 insertions(+) create mode 100644 Delete-GCE-test-it-s-failing.patch diff --git a/Delete-GCE-test-it-s-failing.patch b/Delete-GCE-test-it-s-failing.patch new file mode 100644 index 0000000..218f94a --- /dev/null +++ b/Delete-GCE-test-it-s-failing.patch @@ -0,0 +1,182 @@ +From 44b87ec7c3b948d1a32076e3d865b1a1de21d32e Mon Sep 17 00:00:00 2001 +From: Colin Walters <walters@xxxxxxxxxx> +Date: Fri, 20 Jan 2017 17:35:08 +0000 +Subject: [PATCH] Delete GCE test, it's failing + +--- + tests/unittests/test_datasource/test_gce.py | 166 ---------------------------- + 1 file changed, 166 deletions(-) + delete mode 100644 tests/unittests/test_datasource/test_gce.py + +diff --git a/tests/unittests/test_datasource/test_gce.py b/tests/unittests/test_datasource/test_gce.py +deleted file mode 100644 +index 6e62a4d..0000000 +--- a/tests/unittests/test_datasource/test_gce.py ++++ /dev/null +@@ -1,166 +0,0 @@ +-# +-# Copyright (C) 2014 Vaidas Jablonskis +-# +-# Author: Vaidas Jablonskis <jablonskis@xxxxxxxxx> +-# +-# This program is free software: you can redistribute it and/or modify +-# it under the terms of the GNU General Public License version 3, as +-# published by the Free Software Foundation. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program. If not, see <http://www.gnu.org/licenses/>. +- +-import re +- +-from base64 import b64encode, b64decode +-from six.moves.urllib_parse import urlparse +- +-from cloudinit import helpers +-from cloudinit import settings +-from cloudinit.sources import DataSourceGCE +- +-from .. import helpers as test_helpers +- +-httpretty = test_helpers.import_httpretty() +- +-GCE_META = { +- 'instance/id': '123', +- 'instance/zone': 'foo/bar', +- 'project/attributes/sshKeys': 'user:ssh-rsa AA2..+aRD0fyVw== root@server', +- 'instance/hostname': 'server.project-foo.local', +- 'instance/attributes/user-data': b'/bin/echo foo\n', +-} +- +-GCE_META_PARTIAL = { +- 'instance/id': '1234', +- 'instance/hostname': 'server.project-bar.local', +- 'instance/zone': 'bar/baz', +-} +- +-GCE_META_ENCODING = { +- 'instance/id': '12345', +- 'instance/hostname': 'server.project-baz.local', +- 'instance/zone': 'baz/bang', +- 'instance/attributes/user-data': b64encode(b'/bin/echo baz\n'), +- 'instance/attributes/user-data-encoding': 'base64', +-} +- +-HEADERS = {'X-Google-Metadata-Request': 'True'} +-MD_URL_RE = re.compile( +- r'http://metadata.google.internal/computeMetadata/v1/.*') +- +- +-def _set_mock_metadata(gce_meta=None): +- if gce_meta is None: +- gce_meta = GCE_META +- +- def _request_callback(method, uri, headers): +- url_path = urlparse(uri).path +- if url_path.startswith('/computeMetadata/v1/'): +- path = url_path.split('/computeMetadata/v1/')[1:][0] +- else: +- path = None +- if path in gce_meta: +- return (200, headers, gce_meta.get(path)) +- else: +- return (404, headers, '') +- +- httpretty.register_uri(httpretty.GET, MD_URL_RE, body=_request_callback) +- +- +-@httpretty.activate +-class TestDataSourceGCE(test_helpers.HttprettyTestCase): +- +- def setUp(self): +- self.ds = DataSourceGCE.DataSourceGCE( +- settings.CFG_BUILTIN, None, +- helpers.Paths({})) +- super(TestDataSourceGCE, self).setUp() +- +- def test_connection(self): +- _set_mock_metadata() +- success = self.ds.get_data() +- self.assertTrue(success) +- +- req_header = httpretty.last_request().headers +- self.assertDictContainsSubset(HEADERS, req_header) +- +- def test_metadata(self): +- _set_mock_metadata() +- self.ds.get_data() +- +- shostname = GCE_META.get('instance/hostname').split('.')[0] +- self.assertEqual(shostname, +- self.ds.get_hostname()) +- +- self.assertEqual(GCE_META.get('instance/id'), +- self.ds.get_instance_id()) +- +- self.assertEqual(GCE_META.get('instance/attributes/user-data'), +- self.ds.get_userdata_raw()) +- +- # test partial metadata (missing user-data in particular) +- def test_metadata_partial(self): +- _set_mock_metadata(GCE_META_PARTIAL) +- self.ds.get_data() +- +- self.assertEqual(GCE_META_PARTIAL.get('instance/id'), +- self.ds.get_instance_id()) +- +- shostname = GCE_META_PARTIAL.get('instance/hostname').split('.')[0] +- self.assertEqual(shostname, self.ds.get_hostname()) +- +- def test_metadata_encoding(self): +- _set_mock_metadata(GCE_META_ENCODING) +- self.ds.get_data() +- +- decoded = b64decode( +- GCE_META_ENCODING.get('instance/attributes/user-data')) +- self.assertEqual(decoded, self.ds.get_userdata_raw()) +- +- def test_missing_required_keys_return_false(self): +- for required_key in ['instance/id', 'instance/zone', +- 'instance/hostname']: +- meta = GCE_META_PARTIAL.copy() +- del meta[required_key] +- _set_mock_metadata(meta) +- self.assertEqual(False, self.ds.get_data()) +- httpretty.reset() +- +- def test_project_level_ssh_keys_are_used(self): +- _set_mock_metadata() +- self.ds.get_data() +- +- # we expect a list of public ssh keys with user names stripped +- self.assertEqual(['ssh-rsa AA2..+aRD0fyVw== root@server'], +- self.ds.get_public_ssh_keys()) +- +- def test_instance_level_ssh_keys_are_used(self): +- key_content = 'ssh-rsa JustAUser root@server' +- meta = GCE_META.copy() +- meta['instance/attributes/sshKeys'] = 'user:{0}'.format(key_content) +- +- _set_mock_metadata(meta) +- self.ds.get_data() +- +- self.assertIn(key_content, self.ds.get_public_ssh_keys()) +- +- def test_instance_level_keys_replace_project_level_keys(self): +- key_content = 'ssh-rsa JustAUser root@server' +- meta = GCE_META.copy() +- meta['instance/attributes/sshKeys'] = 'user:{0}'.format(key_content) +- +- _set_mock_metadata(meta) +- self.ds.get_data() +- +- self.assertEqual([key_content], self.ds.get_public_ssh_keys()) +- +- def test_only_last_part_of_zone_used_for_availability_zone(self): +- _set_mock_metadata() +- self.ds.get_data() +- self.assertEqual('bar', self.ds.availability_zone) diff --git a/cloud-init.spec b/cloud-init.spec index 1229421..703c93b 100644 --- a/cloud-init.spec +++ b/cloud-init.spec @@ -54,6 +54,9 @@ Patch11: cloud-init-0.7.8-nm-controlled.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1388568 Patch12: cloud-init-0.7.8-enable-digitalocean.patch +# Disable failing GCE tests +Patch13: Delete-GCE-test-it-s-failing.patch + BuildArch: noarch BuildRequires: pkgconfig
These failures are due to a python-httpretty update that went stable in all releases earlier this week. It only broke three tests, so I disabled those in %check so we can keep running the rest until that package is fixed.
https://bugzilla.redhat.com/show_bug.cgi?id=1417029 -- Garrett Holmstrom _______________________________________________ cloud mailing list -- cloud@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to cloud-leave@xxxxxxxxxxxxxxxxxxxxxxx