Re: [PATCH 1/2] Delete failing GCE tests

2017-01-28 Thread Colin Walters


On Fri, Jan 27, 2017, at 12:43 PM, Garrett Holmstrom wrote:
> 
> These failures are due to a python-httpretty update that went stable in 
> all releases earlier this week.

Ah, nice work tracking that down!
___
cloud mailing list -- cloud@lists.fedoraproject.org
To unsubscribe send an email to cloud-le...@lists.fedoraproject.org


Re: [PATCH 1/2] Delete failing GCE tests

2017-01-27 Thread Garrett Holmstrom

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 000..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 
+Date: Fri, 20 Jan 2017 17:35:08 +
+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..000
+--- a/tests/unittests/test_datasource/test_gce.py
 /dev/null
+@@ -1,166 +0,0 @@
+-#
+-#Copyright (C) 2014 Vaidas Jablonskis
+-#
+-#Author: Vaidas Jablonskis 
+-#
+-#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 .
+-
+-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]
+- 

[PATCH 1/2] Delete failing GCE tests

2017-01-25 Thread Dusty Mabe
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 000..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 
+Date: Fri, 20 Jan 2017 17:35:08 +
+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..000
+--- a/tests/unittests/test_datasource/test_gce.py
 /dev/null
+@@ -1,166 +0,0 @@
+-#
+-#Copyright (C) 2014 Vaidas Jablonskis
+-#
+-#Author: Vaidas Jablonskis 
+-#
+-#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 .
+-
+-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.d