← Back to team overview

cloud-init-dev team mailing list archive

[Merge] lp:~harlowja/cloud-init/cloud-init-fix-test-times into lp:cloud-init

 

Joshua Harlow has proposed merging lp:~harlowja/cloud-init/cloud-init-fix-test-times into lp:cloud-init.

Requested reviews:
  cloud init development team (cloud-init-dev)

For more details, see:
https://code.launchpad.net/~harlowja/cloud-init/cloud-init-fix-test-times/+merge/294854
-- 
Your team cloud init development team is requested to review the proposed merge of lp:~harlowja/cloud-init/cloud-init-fix-test-times into lp:cloud-init.
=== modified file 'cloudinit/sources/DataSourceOpenStack.py'
--- cloudinit/sources/DataSourceOpenStack.py	2016-04-04 16:31:28 +0000
+++ cloudinit/sources/DataSourceOpenStack.py	2016-05-16 23:19:21 +0000
@@ -103,7 +103,7 @@
         self.metadata_address = url2base.get(avail_url)
         return bool(avail_url)
 
-    def get_data(self):
+    def get_data(self, retries=5, timeout=5):
         try:
             if not self.wait_for_metadata_service():
                 return False
@@ -115,7 +115,9 @@
                                     'Crawl of openstack metadata service',
                                     read_metadata_service,
                                     args=[self.metadata_address],
-                                    kwargs={'ssl_details': self.ssl_details})
+                                    kwargs={'ssl_details': self.ssl_details,
+                                            'retries': retries,
+                                            'timeout': timeout})
         except openstack.NonReadable:
             return False
         except (openstack.BrokenMetadata, IOError):
@@ -153,8 +155,10 @@
         return sources.instance_id_matches_system_uuid(self.get_instance_id())
 
 
-def read_metadata_service(base_url, ssl_details=None):
-    reader = openstack.MetadataReader(base_url, ssl_details=ssl_details)
+def read_metadata_service(base_url, ssl_details=None,
+                          timeout=5, retries=5):
+    reader = openstack.MetadataReader(base_url, ssl_details=ssl_details,
+                                      timeout=timeout, retries=retries)
     return reader.read_v2()
 
 

=== modified file 'test-requirements.txt'
--- test-requirements.txt	2016-05-12 18:35:18 +0000
+++ test-requirements.txt	2016-05-16 23:19:21 +0000
@@ -2,6 +2,7 @@
 httpretty>=0.7.1
 mock
 nose
+nose-timer
 
 # Only really needed on older versions of python
 contextlib2

=== modified file 'tests/unittests/test_datasource/test_openstack.py'
--- tests/unittests/test_datasource/test_openstack.py	2016-05-12 20:43:11 +0000
+++ tests/unittests/test_datasource/test_openstack.py	2016-05-16 23:19:21 +0000
@@ -135,13 +135,17 @@
                     body=get_request_callback)
 
 
+def _read_metadata_service():
+    return ds.read_metadata_service(BASE_URL, retries=0, timeout=0.1)
+
+
 class TestOpenStackDataSource(test_helpers.HttprettyTestCase):
     VERSION = 'latest'
 
     @hp.activate
     def test_successful(self):
         _register_uris(self.VERSION, EC2_FILES, EC2_META, OS_FILES)
-        f = ds.read_metadata_service(BASE_URL)
+        f = _read_metadata_service()
         self.assertEqual(VENDOR_DATA, f.get('vendordata'))
         self.assertEqual(CONTENT_0, f['files']['/etc/foo.cfg'])
         self.assertEqual(CONTENT_1, f['files']['/etc/bar/bar.cfg'])
@@ -163,7 +167,7 @@
     @hp.activate
     def test_no_ec2(self):
         _register_uris(self.VERSION, {}, {}, OS_FILES)
-        f = ds.read_metadata_service(BASE_URL)
+        f = _read_metadata_service()
         self.assertEqual(VENDOR_DATA, f.get('vendordata'))
         self.assertEqual(CONTENT_0, f['files']['/etc/foo.cfg'])
         self.assertEqual(CONTENT_1, f['files']['/etc/bar/bar.cfg'])
@@ -178,8 +182,7 @@
             if k.endswith('meta_data.json'):
                 os_files.pop(k, None)
         _register_uris(self.VERSION, {}, {}, os_files)
-        self.assertRaises(openstack.NonReadable, ds.read_metadata_service,
-                          BASE_URL)
+        self.assertRaises(openstack.NonReadable, _read_metadata_service)
 
     @hp.activate
     def test_bad_uuid(self):
@@ -190,8 +193,7 @@
             if k.endswith('meta_data.json'):
                 os_files[k] = json.dumps(os_meta)
         _register_uris(self.VERSION, {}, {}, os_files)
-        self.assertRaises(openstack.BrokenMetadata, ds.read_metadata_service,
-                          BASE_URL)
+        self.assertRaises(openstack.BrokenMetadata, _read_metadata_service)
 
     @hp.activate
     def test_userdata_empty(self):
@@ -200,7 +202,7 @@
             if k.endswith('user_data'):
                 os_files.pop(k, None)
         _register_uris(self.VERSION, {}, {}, os_files)
-        f = ds.read_metadata_service(BASE_URL)
+        f = _read_metadata_service()
         self.assertEqual(VENDOR_DATA, f.get('vendordata'))
         self.assertEqual(CONTENT_0, f['files']['/etc/foo.cfg'])
         self.assertEqual(CONTENT_1, f['files']['/etc/bar/bar.cfg'])
@@ -213,7 +215,7 @@
             if k.endswith('vendor_data.json'):
                 os_files.pop(k, None)
         _register_uris(self.VERSION, {}, {}, os_files)
-        f = ds.read_metadata_service(BASE_URL)
+        f = _read_metadata_service()
         self.assertEqual(CONTENT_0, f['files']['/etc/foo.cfg'])
         self.assertEqual(CONTENT_1, f['files']['/etc/bar/bar.cfg'])
         self.assertFalse(f.get('vendordata'))
@@ -225,8 +227,7 @@
             if k.endswith('vendor_data.json'):
                 os_files[k] = '{'  # some invalid json
         _register_uris(self.VERSION, {}, {}, os_files)
-        self.assertRaises(openstack.BrokenMetadata, ds.read_metadata_service,
-                          BASE_URL)
+        self.assertRaises(openstack.BrokenMetadata, _read_metadata_service)
 
     @hp.activate
     def test_metadata_invalid(self):
@@ -235,8 +236,7 @@
             if k.endswith('meta_data.json'):
                 os_files[k] = '{'  # some invalid json
         _register_uris(self.VERSION, {}, {}, os_files)
-        self.assertRaises(openstack.BrokenMetadata, ds.read_metadata_service,
-                          BASE_URL)
+        self.assertRaises(openstack.BrokenMetadata, _read_metadata_service)
 
     @hp.activate
     def test_datasource(self):
@@ -245,7 +245,7 @@
                                        None,
                                        helpers.Paths({}))
         self.assertIsNone(ds_os.version)
-        found = ds_os.get_data()
+        found = ds_os.get_data(timeout=0.1, retries=0)
         self.assertTrue(found)
         self.assertEqual(2, ds_os.version)
         md = dict(ds_os.metadata)
@@ -269,7 +269,7 @@
                                        None,
                                        helpers.Paths({}))
         self.assertIsNone(ds_os.version)
-        found = ds_os.get_data()
+        found = ds_os.get_data(timeout=0.1, retries=0)
         self.assertFalse(found)
         self.assertIsNone(ds_os.version)
 
@@ -288,7 +288,7 @@
             'timeout': 0,
         }
         self.assertIsNone(ds_os.version)
-        found = ds_os.get_data()
+        found = ds_os.get_data(timeout=0.1, retries=0)
         self.assertFalse(found)
         self.assertIsNone(ds_os.version)
 
@@ -311,7 +311,7 @@
             'timeout': 0,
         }
         self.assertIsNone(ds_os.version)
-        found = ds_os.get_data()
+        found = ds_os.get_data(timeout=0.1, retries=0)
         self.assertFalse(found)
         self.assertIsNone(ds_os.version)
 

=== modified file 'tox.ini'
--- tox.ini	2016-05-12 20:43:11 +0000
+++ tox.ini	2016-05-16 23:19:21 +0000
@@ -3,7 +3,7 @@
 recreate = True
 
 [testenv]
-commands = python -m nose {posargs:tests}
+commands = python -m nose --with-timer --timer-top-n 10 {posargs:tests}
 deps = -r{toxinidir}/test-requirements.txt
     -r{toxinidir}/requirements.txt
 
@@ -19,7 +19,7 @@
     LC_ALL = en_US.utf-8
 
 [testenv:py26]
-commands = nosetests {posargs:tests}
+commands = nosetests --with-timer --timer-top-n 10 {posargs:tests}
 deps =
      contextlib2
      httpretty>=0.7.1


Follow ups