yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #93405
[Bug 2051928] [NEW] tests - Python 3.12 - TypeError: Object of type _SentinelObject is not JSON serializable
Public bug reported:
Executing unit tests with Python 3.12 results in some test failures
which I think are todo with the way the unit tests mock the __json__
method in the tools module:
neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_networks_create_bulk_registry_publish
-------------------------------------------------------------------------------------------------------
Captured traceback:
~~~~~~~~~~~~~~~~~~~
Traceback (most recent call last):
File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/base.py", line 178, in func
return f(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/unit/api/v2/test_base.py", line 1300, in test_networks_create_bulk_registry_publish
self._test_registry_publish('create', 'network', input)
File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/unit/api/v2/test_base.py", line 1269, in _test_registry_publish
res = self.api.post_json(
^^^^^^^^^^^^^^^^^^^
No tests were successful during the run
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/utils.py", line 34, in wrapper
return self._gen_request(method, url, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 749, in _gen_request
return self.do_request(req, status=status,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 646, in do_request
self._check_status(status, res)
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 675, in _check_status
raise AppError(
webtest.app.AppError: Bad response: 500 Internal Server Error (not 200 OK or 3xx redirect for http://localhost/networks)
b'{"NeutronError": {"type": "HTTPInternalServerError", "message": "Request Failed: internal server error while processing your request.", "detail": ""}}'
Captured pythonlogging:
~~~~~~~~~~~~~~~~~~~~~~~
ERROR [neutron.pecan_wsgi.hooks.translation] POST failed.
Traceback (most recent call last):
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 682, in __call__
self.invoke_controller(controller, args, kwargs, state)
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 603, in invoke_controller
result = self.render(template, result)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 414, in render
return renderer.render(template, namespace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/templating.py", line 23, in render
return encode(namespace)
^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 154, in encode
return _instance.encode(obj)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/json/encoder.py", line 200, in encode
chunks = self.iterencode(o, _one_shot=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/json/encoder.py", line 258, in iterencode
return _iterencode(o, 0)
^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 148, in default
return jsonify(obj)
^^^^^^^^^^^^
File "/usr/lib/python3.12/functools.py", line 909, in wrapper
return dispatch(args[0].__class__)(*args, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 143, in jsonify
return _default.default(obj)
^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 129, in default
return JSONEncoder.default(self, obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/json/encoder.py", line 180, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type _SentinelObject is not JSON serializable
Digging in I can see all of the plugin child calls being updated,
however I don't see them actually called under Python 3.12.
This issue impacts the following unit tests:
FAIL: neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_network_create_registry_publish
FAIL: neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_network_update_registry_publish
FAIL: neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_networks_create_bulk_registry_publish
FAIL: neutron.tests.unit.api.v2.test_base.NotificationTest.test_network_create_notifier
FAIL: neutron.tests.unit.api.v2.test_base.NotificationTest.test_network_update_notifier
FAIL: neutron.tests.unit.api.v2.test_base.QuotaTest.test_create_network_quota_without_limit
FAIL: neutron.tests.unit.extensions.test_providernet.ProvidernetExtensionTestCase.test_network_create_with_provider_attrs
FAIL: neutron.tests.unit.extensions.test_providernet.ProvidernetExtensionTestCase.test_network_update_with_provider_attrs
** Affects: neutron
Importance: Undecided
Status: New
** Description changed:
Executing unit tests with Python 3.12 results in some test failures
which I think are todo with the way the unit tests mock the __json__
method in the tools module:
neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_networks_create_bulk_registry_publish
-------------------------------------------------------------------------------------------------------
Captured traceback:
~~~~~~~~~~~~~~~~~~~
- Traceback (most recent call last):
+ Traceback (most recent call last):
- File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/base.py", line 178, in func
- return f(self, *args, **kwargs)
- ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/base.py", line 178, in func
+ return f(self, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/unit/api/v2/test_base.py", line 1300, in test_networks_create_bulk_registry_publish
- self._test_registry_publish('create', 'network', input)
+ File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/unit/api/v2/test_base.py", line 1300, in test_networks_create_bulk_registry_publish
+ self._test_registry_publish('create', 'network', input)
- File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/unit/api/v2/test_base.py", line 1269, in _test_registry_publish
- res = self.api.post_json(
- ^^^^^^^^^^^^^^^^^^^
-
+ File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/unit/api/v2/test_base.py", line 1269, in _test_registry_publish
+ res = self.api.post_json(
+ ^^^^^^^^^^^^^^^^^^^
No tests were successful during the run
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/utils.py", line 34, in wrapper
- return self._gen_request(method, url, **kw)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/utils.py", line 34, in wrapper
+ return self._gen_request(method, url, **kw)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 749, in _gen_request
- return self.do_request(req, status=status,
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 749, in _gen_request
+ return self.do_request(req, status=status,
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 646, in do_request
- self._check_status(status, res)
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 646, in do_request
+ self._check_status(status, res)
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 675, in _check_status
- raise AppError(
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 675, in _check_status
+ raise AppError(
- webtest.app.AppError: Bad response: 500 Internal Server Error (not 200 OK or 3xx redirect for http://localhost/networks)
+ webtest.app.AppError: Bad response: 500 Internal Server Error (not 200 OK or 3xx redirect for http://localhost/networks)
b'{"NeutronError": {"type": "HTTPInternalServerError", "message": "Request Failed: internal server error while processing your request.", "detail": ""}}'
-
Captured pythonlogging:
~~~~~~~~~~~~~~~~~~~~~~~
- ERROR [neutron.pecan_wsgi.hooks.translation] POST failed.
+ ERROR [neutron.pecan_wsgi.hooks.translation] POST failed.
Traceback (most recent call last):
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 682, in __call__
- self.invoke_controller(controller, args, kwargs, state)
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 603, in invoke_controller
- result = self.render(template, result)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 414, in render
- return renderer.render(template, namespace)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/templating.py", line 23, in render
- return encode(namespace)
- ^^^^^^^^^^^^^^^^^
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 154, in encode
- return _instance.encode(obj)
- ^^^^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3.12/json/encoder.py", line 200, in encode
- chunks = self.iterencode(o, _one_shot=True)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3.12/json/encoder.py", line 258, in iterencode
- return _iterencode(o, 0)
- ^^^^^^^^^^^^^^^^^
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 148, in default
- return jsonify(obj)
- ^^^^^^^^^^^^
- File "/usr/lib/python3.12/functools.py", line 909, in wrapper
- return dispatch(args[0].__class__)(*args, **kw)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 143, in jsonify
- return _default.default(obj)
- ^^^^^^^^^^^^^^^^^^^^^
- File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 129, in default
- return JSONEncoder.default(self, obj)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/usr/lib/python3.12/json/encoder.py", line 180, in default
- raise TypeError(f'Object of type {o.__class__.__name__} '
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 682, in __call__
+ self.invoke_controller(controller, args, kwargs, state)
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 603, in invoke_controller
+ result = self.render(template, result)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 414, in render
+ return renderer.render(template, namespace)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/templating.py", line 23, in render
+ return encode(namespace)
+ ^^^^^^^^^^^^^^^^^
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 154, in encode
+ return _instance.encode(obj)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3.12/json/encoder.py", line 200, in encode
+ chunks = self.iterencode(o, _one_shot=True)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3.12/json/encoder.py", line 258, in iterencode
+ return _iterencode(o, 0)
+ ^^^^^^^^^^^^^^^^^
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 148, in default
+ return jsonify(obj)
+ ^^^^^^^^^^^^
+ File "/usr/lib/python3.12/functools.py", line 909, in wrapper
+ return dispatch(args[0].__class__)(*args, **kw)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 143, in jsonify
+ return _default.default(obj)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 129, in default
+ return JSONEncoder.default(self, obj)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3.12/json/encoder.py", line 180, in default
+ raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type _SentinelObject is not JSON serializable
+ Digging in I can see all of the plugin child calls being updated,
+ however I don't see them actually called under Python 3.12.
- Digging in I can see all of the plugin child calls being updated, however I don't see them actually called under Python 3.12.
+ This issue impacts the following unit tests:
+
+ FAIL: neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_network_create_registry_publish
+ FAIL: neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_network_update_registry_publish
+ FAIL: neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_networks_create_bulk_registry_publish
+ FAIL: neutron.tests.unit.api.v2.test_base.NotificationTest.test_network_create_notifier
+ FAIL: neutron.tests.unit.api.v2.test_base.NotificationTest.test_network_update_notifier
+ FAIL: neutron.tests.unit.api.v2.test_base.QuotaTest.test_create_network_quota_without_limit
+ FAIL: neutron.tests.unit.extensions.test_providernet.ProvidernetExtensionTestCase.test_network_create_with_provider_attrs
+ FAIL: neutron.tests.unit.extensions.test_providernet.ProvidernetExtensionTestCase.test_network_update_with_provider_attrs
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/2051928
Title:
tests - Python 3.12 - TypeError: Object of type _SentinelObject is not
JSON serializable
Status in neutron:
New
Bug description:
Executing unit tests with Python 3.12 results in some test failures
which I think are todo with the way the unit tests mock the __json__
method in the tools module:
neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_networks_create_bulk_registry_publish
-------------------------------------------------------------------------------------------------------
Captured traceback:
~~~~~~~~~~~~~~~~~~~
Traceback (most recent call last):
File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/base.py", line 178, in func
return f(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/unit/api/v2/test_base.py", line 1300, in test_networks_create_bulk_registry_publish
self._test_registry_publish('create', 'network', input)
File "/home/jamespage/src/upstream/openstack/neutron/neutron/tests/unit/api/v2/test_base.py", line 1269, in _test_registry_publish
res = self.api.post_json(
^^^^^^^^^^^^^^^^^^^
No tests were successful during the run
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/utils.py", line 34, in wrapper
return self._gen_request(method, url, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 749, in _gen_request
return self.do_request(req, status=status,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 646, in do_request
self._check_status(status, res)
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/webtest/app.py", line 675, in _check_status
raise AppError(
webtest.app.AppError: Bad response: 500 Internal Server Error (not 200 OK or 3xx redirect for http://localhost/networks)
b'{"NeutronError": {"type": "HTTPInternalServerError", "message": "Request Failed: internal server error while processing your request.", "detail": ""}}'
Captured pythonlogging:
~~~~~~~~~~~~~~~~~~~~~~~
ERROR [neutron.pecan_wsgi.hooks.translation] POST failed.
Traceback (most recent call last):
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 682, in __call__
self.invoke_controller(controller, args, kwargs, state)
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 603, in invoke_controller
result = self.render(template, result)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/core.py", line 414, in render
return renderer.render(template, namespace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/templating.py", line 23, in render
return encode(namespace)
^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 154, in encode
return _instance.encode(obj)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/json/encoder.py", line 200, in encode
chunks = self.iterencode(o, _one_shot=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/json/encoder.py", line 258, in iterencode
return _iterencode(o, 0)
^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 148, in default
return jsonify(obj)
^^^^^^^^^^^^
File "/usr/lib/python3.12/functools.py", line 909, in wrapper
return dispatch(args[0].__class__)(*args, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 143, in jsonify
return _default.default(obj)
^^^^^^^^^^^^^^^^^^^^^
File "/home/jamespage/src/upstream/openstack/neutron/.tox/py312/lib/python3.12/site-packages/pecan/jsonify.py", line 129, in default
return JSONEncoder.default(self, obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/json/encoder.py", line 180, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type _SentinelObject is not JSON serializable
Digging in I can see all of the plugin child calls being updated,
however I don't see them actually called under Python 3.12.
This issue impacts the following unit tests:
FAIL: neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_network_create_registry_publish
FAIL: neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_network_update_registry_publish
FAIL: neutron.tests.unit.api.v2.test_base.RegistryNotificationTest.test_networks_create_bulk_registry_publish
FAIL: neutron.tests.unit.api.v2.test_base.NotificationTest.test_network_create_notifier
FAIL: neutron.tests.unit.api.v2.test_base.NotificationTest.test_network_update_notifier
FAIL: neutron.tests.unit.api.v2.test_base.QuotaTest.test_create_network_quota_without_limit
FAIL: neutron.tests.unit.extensions.test_providernet.ProvidernetExtensionTestCase.test_network_create_with_provider_attrs
FAIL: neutron.tests.unit.extensions.test_providernet.ProvidernetExtensionTestCase.test_network_update_with_provider_attrs
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/2051928/+subscriptions
Follow ups