diff options
| author | Scott Moser <smoser@ubuntu.com> | 2016-05-24 19:08:14 -0400 | 
|---|---|---|
| committer | Scott Moser <smoser@ubuntu.com> | 2016-05-24 19:08:14 -0400 | 
| commit | fdede2004249a8c0ac302531a5b3bc048458be3d (patch) | |
| tree | f1db0a4e73814bf7b7903c932d873203e957f1b3 | |
| parent | ea4bc2c603a9d964a918e01d00e39a851e979830 (diff) | |
| parent | 70ee3c4e6806996401d747e4f8b25855e85d86eb (diff) | |
| download | vyos-cloud-init-fdede2004249a8c0ac302531a5b3bc048458be3d.tar.gz vyos-cloud-init-fdede2004249a8c0ac302531a5b3bc048458be3d.zip  | |
fix up tests that take too long due to retries and timeouts
| -rw-r--r-- | cloudinit/sources/DataSourceOpenStack.py | 12 | ||||
| -rw-r--r-- | test-requirements.txt | 3 | ||||
| -rw-r--r-- | tests/unittests/test_datasource/test_openstack.py | 32 | 
3 files changed, 27 insertions, 20 deletions
diff --git a/cloudinit/sources/DataSourceOpenStack.py b/cloudinit/sources/DataSourceOpenStack.py index 3af17b10..dfd96035 100644 --- a/cloudinit/sources/DataSourceOpenStack.py +++ b/cloudinit/sources/DataSourceOpenStack.py @@ -103,7 +103,7 @@ class DataSourceOpenStack(openstack.SourceMixin, sources.DataSource):          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 @@ class DataSourceOpenStack(openstack.SourceMixin, sources.DataSource):                                      '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 @@ class DataSourceOpenStack(openstack.SourceMixin, sources.DataSource):          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() diff --git a/test-requirements.txt b/test-requirements.txt index 2ab53707..651af11b 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -3,6 +3,9 @@ httpretty>=0.7.1  mock  nose +# Only needed if you want to know the test times +# nose-timer +  # Only really needed on older versions of python  contextlib2  setuptools diff --git a/tests/unittests/test_datasource/test_openstack.py b/tests/unittests/test_datasource/test_openstack.py index 4140d054..5c8592c5 100644 --- a/tests/unittests/test_datasource/test_openstack.py +++ b/tests/unittests/test_datasource/test_openstack.py @@ -135,13 +135,17 @@ def _register_uris(version, ec2_files, ec2_meta, os_files):                      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 @@ class TestOpenStackDataSource(test_helpers.HttprettyTestCase):      @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 @@ class TestOpenStackDataSource(test_helpers.HttprettyTestCase):              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 @@ class TestOpenStackDataSource(test_helpers.HttprettyTestCase):              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 @@ class TestOpenStackDataSource(test_helpers.HttprettyTestCase):              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 @@ class TestOpenStackDataSource(test_helpers.HttprettyTestCase):              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 @@ class TestOpenStackDataSource(test_helpers.HttprettyTestCase):              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 @@ class TestOpenStackDataSource(test_helpers.HttprettyTestCase):              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 @@ class TestOpenStackDataSource(test_helpers.HttprettyTestCase):                                         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 @@ class TestOpenStackDataSource(test_helpers.HttprettyTestCase):                                         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 @@ class TestOpenStackDataSource(test_helpers.HttprettyTestCase):              '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 @@ class TestOpenStackDataSource(test_helpers.HttprettyTestCase):              '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)  | 
