test_live_migration_* tests fail with fakelibvirt

Bug #1342498 reported by Corey Wright
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Fix Released
Undecided
Daniel Berrange

Bug Description

With the recent merging of https://review.openstack.org/73428, test_live_migration_(changes_listen_addresses|raises_exception) requires fakelibvirt to have the migrateToURI2() method (if libvirt, at least v0.9.2, is not installed) so that it can be mocked out by those tests, otherwise the following mox errors occur during unit testing.

UnknownMethodCallError: Method called is not a member of the object: migrateToURI2

patch attached (which i may submit properly in the next 24 hours if someone doesn't beat me to it), with signature taken from upstream libvirt and mocking stolen from fakelibvirt's migrateToURI().

full error log:

$ ./run_tests.sh nova.tests.virt.libvirt.test_driver.LibvirtConnTestCase.test_live_migration_*
Running `tools/with_venv.sh python -m nova.openstack.common.lockutils python setup.py testr --testr-args='--subunit --concurrency 0 nova.tests.virt.libvirt.test_driver.LibvirtConnTestCase.test_live_migration_*'`
nova.tests.virt.libvirt.test_driver.LibvirtConnTestCase
    test_live_migration_changes_listen_addresses FAIL
    test_live_migration_uses_migrateToURI_without_dest_listen_addrs OK 0.27
    test_live_migration_raises_exception FAIL
    test_live_migration_fails_without_migratable_flag_or_0_addr OK 3.32
    test_live_migration_uses_migrateToURI_without_migratable_flag OK 0.43

Slowest 5 tests took 8.80 secs:
nova.tests.virt.libvirt.test_driver.LibvirtConnTestCase
    test_live_migration_changes_listen_addresses 2.10
    test_live_migration_fails_without_migratable_flag_or_0_addr 3.32
    test_live_migration_raises_exception 2.68
    test_live_migration_uses_migrateToURI_without_dest_listen_addrs 0.27
    test_live_migration_uses_migrateToURI_without_migratable_flag 0.43

======================================================================
FAIL: nova.tests.virt.libvirt.test_driver.LibvirtConnTestCase.test_live_migration_changes_listen_addresses
----------------------------------------------------------------------
Traceback (most recent call last):
_StringException: Empty attachments:
  stderr
  stdout

pythonlogging:'': {{{
INFO [migrate.versioning.api] 215 -> 216...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 216 -> 217...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 217 -> 218...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 218 -> 219...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 219 -> 220...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 220 -> 221...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 221 -> 222...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 222 -> 223...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 223 -> 224...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 224 -> 225...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 225 -> 226...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 226 -> 227...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 227 -> 228...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 228 -> 229...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 229 -> 230...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 230 -> 231...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 231 -> 232...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 232 -> 233...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 233 -> 234...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 234 -> 235...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 235 -> 236...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 236 -> 237...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 237 -> 238...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 238 -> 239...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 239 -> 240...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 240 -> 241...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 241 -> 242...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 242 -> 243...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 243 -> 244...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 244 -> 245...
INFO [migrate.versioning.api] done
INFO [nova.network.driver] Loading network driver 'nova.network.linux_net'
INFO [nova.virt.driver] Loading compute driver 'nova.virt.fake.FakeDriver'
}}}

Traceback (most recent call last):
  File "/home/dev/Desktop/nova/.venv/local/lib/python2.7/site-packages/mock.py", line 1201, in patched
    return func(*args, **keywargs)
  File "/home/dev/Desktop/nova/nova/tests/virt/libvirt/test_driver.py", line 4418, in test_live_migration_changes_listen_addresses
    self.mox.StubOutWithMock(vdmock, "migrateToURI2")
  File "/home/dev/Desktop/nova/.venv/local/lib/python2.7/site-packages/mox.py", line 308, in StubOutWithMock
    attr_to_replace = getattr(obj, attr_name)
  File "/home/dev/Desktop/nova/.venv/local/lib/python2.7/site-packages/mox.py", line 608, in __getattr__
    raise UnknownMethodCallError(name)
UnknownMethodCallError: Method called is not a member of the object: migrateToURI2

======================================================================
FAIL: nova.tests.virt.libvirt.test_driver.LibvirtConnTestCase.test_live_migration_raises_exception
----------------------------------------------------------------------
Traceback (most recent call last):
_StringException: Empty attachments:
  stderr
  stdout

pythonlogging:'': {{{
INFO [migrate.versioning.api] 215 -> 216...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 216 -> 217...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 217 -> 218...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 218 -> 219...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 219 -> 220...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 220 -> 221...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 221 -> 222...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 222 -> 223...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 223 -> 224...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 224 -> 225...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 225 -> 226...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 226 -> 227...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 227 -> 228...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 228 -> 229...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 229 -> 230...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 230 -> 231...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 231 -> 232...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 232 -> 233...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 233 -> 234...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 234 -> 235...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 235 -> 236...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 236 -> 237...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 237 -> 238...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 238 -> 239...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 239 -> 240...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 240 -> 241...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 241 -> 242...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 242 -> 243...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 243 -> 244...
INFO [migrate.versioning.api] done
INFO [migrate.versioning.api] 244 -> 245...
INFO [migrate.versioning.api] done
INFO [nova.network.driver] Loading network driver 'nova.network.linux_net'
INFO [nova.virt.driver] Loading compute driver 'nova.virt.fake.FakeDriver'
}}}

Traceback (most recent call last):
  File "/home/dev/Desktop/nova/nova/tests/virt/libvirt/test_driver.py", line 4584, in test_live_migration_raises_exception
    self.mox.StubOutWithMock(vdmock, "migrateToURI2")
  File "/home/dev/Desktop/nova/.venv/local/lib/python2.7/site-packages/mox.py", line 308, in StubOutWithMock
    attr_to_replace = getattr(obj, attr_name)
  File "/home/dev/Desktop/nova/.venv/local/lib/python2.7/site-packages/mox.py", line 608, in __getattr__
    raise UnknownMethodCallError(name)
UnknownMethodCallError: Method called is not a member of the object: migrateToURI2

Ran 7 tests in 18.406s

FAILED (failures=2)

Revision history for this message
Corey Wright (coreywright) wrote :
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to nova (master)

Fix proposed to branch: master
Review: https://review.openstack.org/107329

Changed in nova:
assignee: nobody → Daniel Berrange (berrange)
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to nova (master)

Reviewed: https://review.openstack.org/107329
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=0c96d46e08af1419764fcbb9c2e3d8b0eed1005a
Submitter: Jenkins
Branch: master

commit 0c96d46e08af1419764fcbb9c2e3d8b0eed1005a
Author: Daniel P. Berrange <email address hidden>
Date: Wed Jul 16 12:48:14 2014 +0100

    libvirt: add migrateToURI2 method to fakelibvirt

    With the merge of

      commit ea7da5152cdca7ba674e2137c3899909995e2287
      Author: Solly Ross <email address hidden>
      Date: Tue Feb 4 14:27:51 2014 -0500

        Change listen address on libvirt live-migration

    the libvirt driver uses migrateToURI2 instead of
    migrateToURI. The fakelibvirt class did not define
    this method so it was unable to be mocked out.

    Change-Id: I74c28119c979e511cece6b839e25a40197b0e5d9
    Closes-bug: 1342498
    Signed-off-by: Daniel P. Berrange <email address hidden>

Changed in nova:
status: In Progress → Fix Committed
Revision history for this message
Corey Wright (coreywright) wrote :

the committed fix works for me

Changed in nova:
milestone: none → juno-2
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in nova:
milestone: juno-2 → 2014.2
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.