diff options
author | Tom Cocozzello <tjcocozz@us.ibm.com> | 2015-10-01 16:33:23 -0500 |
---|---|---|
committer | Tom Cocozzello <tjcocozz@us.ibm.com> | 2015-11-13 08:33:28 -0600 |
commit | 88ad62563d509baa94790f43eef186d7f3534be6 (patch) | |
tree | ad807b3c55196101d837dfb88bc05be0c475c954 | |
parent | ae44f8ce5085130de9315bbcd8c4d8623812d780 (diff) | |
download | oslo-middleware-88ad62563d509baa94790f43eef186d7f3534be6.tar.gz |
Define entry points for filter factories for Paste Deployment
Define filter factories so other projects can reference them by name
and can take advantage of the python egg instead of referencing
by the direct path.
Change-Id: Id05c319c1d19261618471fa75983cf8020fc60b6
Closes-Bug: 1500509
-rw-r--r-- | oslo_middleware/tests/test_entry_points.py | 47 | ||||
-rw-r--r-- | setup.cfg | 11 |
2 files changed, 58 insertions, 0 deletions
diff --git a/oslo_middleware/tests/test_entry_points.py b/oslo_middleware/tests/test_entry_points.py new file mode 100644 index 0000000..b39678b --- /dev/null +++ b/oslo_middleware/tests/test_entry_points.py @@ -0,0 +1,47 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from oslotest import base +import stevedore +from testtools import matchers + +import oslo_middleware + + +class TestPasteDeploymentEntryPoints(base.BaseTestCase): + + def test_entry_points(self): + factory_classes = { + 'catch_errors': 'CatchErrors', + 'correlation_id': 'CorrelationId', + 'cors': 'CORS', + 'debug': 'Debug', + 'healthcheck': 'Healthcheck', + 'http_proxy_to_wsgi': 'HTTPProxyToWSGI', + 'request_id': 'RequestId', + 'sizelimit': 'RequestBodySizeLimiter', + 'ssl': 'SSLMiddleware', + } + + em = stevedore.ExtensionManager('paste.filter_factory') + + # Ensure all the factories are defined by their names + factory_names = [extension.name for extension in em] + self.assertThat(factory_names, + matchers.ContainsAll(factory_classes)) + + # Ensure that we can create instances of the filter factories + for factory_name, class_name in factory_classes.items(): + e = [m for m in em if m.name == factory_name][0] + factory = getattr(oslo_middleware, factory_name) + factory_class = getattr(factory, class_name).factory + self.assertEqual(factory_class, e.plugin) @@ -38,6 +38,17 @@ oslo.middleware.healthcheck = disable_by_file = oslo_middleware.healthcheck.disable_by_file:DisableByFileHealthcheck disable_by_files_ports = oslo_middleware.healthcheck.disable_by_file:DisableByFilesPortsHealthcheck +paste.filter_factory = + catch_errors = oslo_middleware:CatchErrors.factory + correlation_id = oslo_middleware:CorrelationId.factory + cors = oslo_middleware:CORS.factory + debug = oslo_middleware:Debug.factory + healthcheck = oslo_middleware:Healthcheck.factory + http_proxy_to_wsgi = oslo_middleware:HTTPProxyToWSGI.factory + request_id = oslo_middleware:RequestId.factory + sizelimit = oslo_middleware:RequestBodySizeLimiter.factory + ssl = oslo_middleware:SSLMiddleware.factory + [build_sphinx] source-dir = doc/source build-dir = doc/build |