Debian Patches
Status for neutron/2:29.0.0-6
| Patch | Description | Author | Forwarded | Bugs | Origin | Last update |
|---|---|---|---|---|---|---|
| fix-path-of-healthcheck_disable.patch | Fix path of healthcheck_disable | Thomas Goirand <zigo@debian.org> | no | 2022-11-14 | ||
| fix-teardown.patch | <short summary of the patch> TODO: Put a short summary on the line above and replace this paragraph with a longer explanation of this change. Complete the meta-information with other relevant fields (see below for details). To make it easier, the information below has been extracted from the changelog. Adjust it or drop it. . neutron (2:27.0.1-5) UNRELEASED; urgency=medium . * Back to old unit test list. |
Thomas Goirand <zigo@debian.org> | no | |||
| ovn-test-singleton-reset.patch | Make the OVN test singletons explicitly resettable The OVN AgentCache and OVNClientPlacementExtension are `@utils.SingletonDecorator` singletons whose cached instance lives as long as any object holds a reference to it (e.g. a mechanism driver keeping the agent cache, or an extension manager keeping the placement extension). The unit tests relied on dropping their own reference to reset them, which only works when nothing else holds the singleton: in a test process running many test classes, a stale singleton leaks state between the classes and the tests fail depending on which classes share a worker. Add a drop() method to SingletonDecorator and call it in the setUp of the tests that depend on these singletons, so they always start with a fresh instance. =================================================================== |
Thomas Goirand <zigo@debian.org> | yes | 2026-10-03 | ||
| fix-test-state-leaks.patch | Fix more module level state leaks between test classes Three test files (or the production code they exercise) keep state in module level variables that survive the whole test runner process: . neutron.tests.unit...test_qos registers a custom supported check making the qos API extension supported by every plugin into extensions.EXTENSION_SUPPORTED_CHECK_MAP and never removes it, so the API app of every test class running afterwards merges the qos attributes into the shared resource attribute map and the tests asserting the exact request bodies fail (e.g. JSONV2TestCase). Add an unregister_custom_supported_check() counterpart to register_custom_supported_check() and clean up in the test. . neutron.services.segments.db keeps two module level variables: ``reported_hosts`` keeps the hosts for which an agent was already reported (the segment tests reuse hardcoded host names, so the classes running after the one that reported them first skip the report processing) and ``_USER_CONFIGURED_SEGMENT_PLUGIN`` caches whether 'segments' is listed in ``cfg.CONF.service_plugins`` the first time an agent event fires in the runner process, so a test class without the segments service plugin poisons the check with False and every later segment host mapping test silently stops processing agent reports. Reset both in the test base. . SriovSwitchMechVnicTypesTestCase overrides the module level mech_driver.SRIOV_SUPPORTED_VNIC_TYPES and never restores it, so the sriov test classes running afterwards cannot bind the vnic types that were dropped from the list. Restore it in the cleanup. Together with the OVN singletons fix this makes the `stestr run --dynamic` builds deterministic for all the clusters observed so far. =================================================================== |
Thomas Goirand <zigo@debian.org> | yes | 2026-10-11 | ||
| fix-test-manager-instance-leak.patch | Fix NeutronManager instance leak in the plugin base v2 test test_can_load_core_plugin_without_datastore() calls manager.init() without setting up a PluginFixture (setup_coreplugin()), so the NeutronManager instance it creates survives the test. With the stestr --dynamic scheduler, every test is scheduled as its own group, so the test running next in the same worker process can be any other test class: the per-test PluginDirectoryFixture hands it a fresh, empty plugin directory, but manager.init() only instantiates a NeutronManager when the directory is not loaded yet, and NeutronManager.get_instance() returns the stale instance without populating the fresh directory. The next NeutronDbPluginV2TestCase-style test then fails during its setUp with: . AttributeError: 'NoneType' object has no attribute 'supported_extension_aliases' (observed with neutron.tests.unit.plugins.ml2.test_plugin.TestMl2SubnetsV2. test_create_subnet_ipv6_attributes_no_dhcp_enabled). Clear the manager instance in the test cleanup, like neutron.tests.unit.extensions.test_timestamp already does. |
yes | 2026-10-11 | |||
| fix-test-migration-fileconfig-leak.patch | Make the fileConfig call of cli.main() a no-op in test_migration neutron.db.migration.cli.main() configures logging with logging.config.fileConfig(neutron_alembic_ini), which defaults to disable_existing_loggers=True and sets disabled=True on every logger that already exists in the test process, silencing them for all the tests running afterwards in the same worker. With the stestr --dynamic scheduler, every test is scheduled as its own group, so the test running next in the same worker process can be any other test class: e.g. the assertLogs() of DNSForwarderResponderTestCase then captures nothing and crashes with IndexError: list index out of range (observed with neutron.tests.unit.agent.l2.extensions.test_dns_forwarder. DNSForwarderResponderTestCase.test__packet_in_handler_ipv4). The TestCli tests only exercise command dispatch, so keep the fileConfig call a no-op while they run cli.main() in-process. |
yes | 2026-10-11 | |||
| fix-test-dns-forwarder-conf-registration.patch | Register the DNS_FORWARDER options in the dns_forwarder test The DNS_FORWARDER configuration options are registered as an import side effect of neutron.plugins.ml2.drivers.openvswitch.agent.common .config, which the unit test tree only imports in the OVS agent test classes (their setUp imports the OVS agent module). With the stestr --dynamic scheduler, every test is scheduled as its own group, so DNSForwarderResponderTestCase can share a worker process where none of those classes ran before, and every test of the class then fails during its setUp with: . oslo_config.cfg.NoSuchOptError: no such option DNS_FORWARDER in group [DEFAULT] Register the options explicitly in the test setUp. |
yes | 2026-10-11 | |||
| fix-test-dhcp-agent-fake-mutations.patch | Do not mutate the module level fake fixtures in test_agent Two tests of neutron/tests/unit/agent/dhcp/test_agent.py modify the module level fake fixtures in place, and the mutation survives the whole test runner process: . TestNetworkCache.test_stale_update_ignored puts the shared fake_network NetModel into a real NetworkCache and then calls put_port(fake_port2): NetworkCache.put_port() appends the port to network.ports in place, so every test running afterwards that puts fake_network into a cache sees the extra port (e.g. test_put_network_existing fails with an extra port_lookup entry). . TestDhcpAgentEventHandler.test_port_update_on_dhcp_agents_port_no_ip _change sets payload['port']['device_id'] on the shared fake_port1 to the computed DHCP agent device id; test_setup_device_is_ready and friends then find that port as an "existing" DHCP port in _setup_existing_dhcp_port and never call create_dhcp_port (assert_has_calls fails with "Actual: []"). With the stestr --dynamic scheduler, every test is scheduled as its own group, so the tests running after these in the same worker process can be any other test class, which made the unit test builds fail nondeterministically (the alphabetical order of the class keeps the victims before the poisoners in a single-process run). Deep-copy the fixtures before mutating them. |
yes | 2026-10-11 | |||
| fix-test-maintenance-thread-count.patch | Make test_start_bounds_thread_pool_executor robust to foreign threads The test compared global threading.active_count() snapshots taken several seconds apart, so any unrelated thread appearing or disappearing during that window made it fail (e.g. "MismatchError: 3 != 4" seen in stestr --dynamic builds when a thread leaked by a previously executed test class exits in the meantime). Measure the property the test actually wants instead: that the MaintenanceThread executor never runs two periodic tasks concurrently. Wait for the tasks to complete with a bounded loop rather than a bare sleep, and stop the MaintenanceThread deterministically in a cleanup (its worker thread and executor thread would otherwise keep running until the test process ends). |
Thomas Goirand <zigo@debian.org> | yes | 2026-10-11 | ||
| fix-test-resource-processing-queue-state.patch | Fix class level state leaks in the resource processing queue tests ``ExclusiveResourceProcessor`` keeps ``_primaries`` and ``_resource_timestamps`` as class level dictionaries shared by all the tests of the runner process. ``test_updates`` never exits the primary processor it creates, so the tests running after it in the same `stestr run --dynamic` worker create non-primary processors whose ``__exit__()`` is a no-op and stop cleaning ``_resource_timestamps``: observed as ``test__exit__non_primary_does_not_clean_resource_ timestamps`` failing with the timestamp written by its own ``fetched_and_processed()`` still present. Exit the primary in ``test_updates`` and clear both dictionaries in ``setUp()`` so that every test starts with a clean state. |
Thomas Goirand <zigo@debian.org> | yes | 2026-10-17 |
All known versions for source package 'neutron'
- 2:29.0.0-6 (sid)
- 2:28.0.1-2 (forky)
- 2:26.0.3-0+deb13u3 (trixie, trixie-security)
- 2:21.0.0-7+deb12u1 (bookworm-security)
- 2:21.0.0-7 (bookworm)
