I'm still checking why it can happen. What I found in logs of one failed and one good test run is that it looks for me for some race between updating port to "not bound" and deleting it from bridge which is done in destroy() method:
In logs there is one difference between good and "bad" run: - good run, when port_update message comes to agent device info is in cache and it returns something like: http://logs.openstack.org/73/519573/12/check/legacy-neutron-dsvm-fullstack/f27cbf9/logs/dsvm-fullstack-logs/TestBwLimitQoSOvs.test_bw_limit_qos_port_removed_ingress,openflow-cli_/neutron-openvswitch-agent--2017-12-13--05-25-07-575449.txt.gz#_2017-12-13_05_25_28_629 - bad run, device info is not in cache and there is something like: http://logs.openstack.org/73/519573/12/check/legacy-neutron-dsvm-fullstack/f27cbf9/logs/dsvm-fullstack-logs/TestBwLimitQoSOvs.test_bw_limit_qos_port_removed_ingress,openflow-native_/neutron-openvswitch-agent--2017-12-13--05-27-01-348269.txt.gz#_2017-12-13_05_27_23_884 - and then qos extension driver is not called properly
I'm still checking why it can happen. What I found in logs of one failed and one good test run is that it looks for me for some race between updating port to "not bound" and deleting it from bridge which is done in destroy() method:
In logs there is one difference between good and "bad" run: logs.openstack. org/73/ 519573/ 12/check/ legacy- neutron- dsvm-fullstack/ f27cbf9/ logs/dsvm- fullstack- logs/TestBwLimi tQoSOvs. test_bw_ limit_qos_ port_removed_ ingress, openflow- cli_/neutron- openvswitch- agent-- 2017-12- 13--05- 25-07-575449. txt.gz# _2017-12- 13_05_25_ 28_629 logs.openstack. org/73/ 519573/ 12/check/ legacy- neutron- dsvm-fullstack/ f27cbf9/ logs/dsvm- fullstack- logs/TestBwLimi tQoSOvs. test_bw_ limit_qos_ port_removed_ ingress, openflow- native_ /neutron- openvswitch- agent-- 2017-12- 13--05- 27-01-348269. txt.gz# _2017-12- 13_05_27_ 23_884 - and then qos extension driver is not called properly
- good run, when port_update message comes to agent device info is in cache and it returns something like: http://
- bad run, device info is not in cache and there is something like: http://