Merge lp:~soren/nova/speedier-test into lp:~hudson-openstack/nova/trunk

Proposed by Soren Hansen
Status: Merged
Approved by: Soren Hansen
Approved revision: 846
Merged at revision: 863
Proposed branch: lp:~soren/nova/speedier-test
Merge into: lp:~hudson-openstack/nova/trunk
Diff against target: 149 lines (+36/-8)
4 files modified
nova/compute/manager.py (+6/-2)
nova/tests/test_compute.py (+11/-3)
nova/tests/test_virt.py (+14/-1)
nova/virt/libvirt_conn.py (+5/-2)
To merge this branch: bzr merge lp:~soren/nova/speedier-test
Reviewer Review Type Date Requested Status
Jesse Andrews (community) Approve
Vish Ishaya (community) Approve
Review via email: mp+54367@code.launchpad.net

Commit message

Pass a fake timing source to live_migration_pre in every test that expectes it to fail, shaving off a whole minute of test run time.

To post a comment you must log in.
Revision history for this message
Vish Ishaya (vishvananda) wrote :

nice. Faster tests ftw!

review: Approve
Revision history for this message
Jesse Andrews (anotherjesse) wrote :

lgtm

review: Approve
Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Attempt to merge into lp:nova failed due to conflicts:

text conflict in nova/virt/libvirt_conn.py

Revision history for this message
Soren Hansen (soren) wrote :

Merged trunk. Retrying.

lp:~soren/nova/speedier-test updated
846. By Soren Hansen

Merge trunk

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'nova/compute/manager.py'
2--- nova/compute/manager.py 2011-03-24 08:56:06 +0000
3+++ nova/compute/manager.py 2011-03-24 10:00:46 +0000
4@@ -42,9 +42,10 @@
5 import socket
6 import sys
7 import tempfile
8-import time
9 import functools
10
11+from eventlet import greenthread
12+
13 from nova import exception
14 from nova import flags
15 from nova import log as logging
16@@ -844,7 +845,7 @@
17
18 return self.driver.update_available_resource(context, self.host)
19
20- def pre_live_migration(self, context, instance_id):
21+ def pre_live_migration(self, context, instance_id, time=None):
22 """Preparations for live migration at dest host.
23
24 :param context: security context
25@@ -852,6 +853,9 @@
26
27 """
28
29+ if not time:
30+ time = greenthread
31+
32 # Getting instance info
33 instance_ref = self.db.instance_get(context, instance_id)
34 ec2_id = instance_ref['hostname']
35
36=== modified file 'nova/tests/test_compute.py'
37--- nova/tests/test_compute.py 2011-03-24 02:00:25 +0000
38+++ nova/tests/test_compute.py 2011-03-24 10:00:46 +0000
39@@ -44,6 +44,14 @@
40 flags.DECLARE('live_migration_retry_count', 'nova.compute.manager')
41
42
43+class FakeTime(object):
44+ def __init__(self):
45+ self.counter = 0
46+
47+ def sleep(self, t):
48+ self.counter += t
49+
50+
51 class ComputeTestCase(test.TestCase):
52 """Test case for compute"""
53 def setUp(self):
54@@ -393,7 +401,7 @@
55 self.mox.ReplayAll()
56 self.assertRaises(exception.NotFound,
57 self.compute.pre_live_migration,
58- c, instance_ref['id'])
59+ c, instance_ref['id'], time=FakeTime())
60
61 def test_pre_live_migration_instance_has_volume(self):
62 """Confirm setup_compute_volume is called when volume is mounted."""
63@@ -446,7 +454,7 @@
64 self.compute.driver = drivermock
65
66 self.mox.ReplayAll()
67- ret = self.compute.pre_live_migration(c, i_ref['id'])
68+ ret = self.compute.pre_live_migration(c, i_ref['id'], time=FakeTime())
69 self.assertEqual(ret, None)
70
71 def test_pre_live_migration_setup_compute_node_fail(self):
72@@ -479,7 +487,7 @@
73 self.mox.ReplayAll()
74 self.assertRaises(exception.ProcessExecutionError,
75 self.compute.pre_live_migration,
76- c, i_ref['id'])
77+ c, i_ref['id'], time=FakeTime())
78
79 def test_live_migration_works_correctly_with_volume(self):
80 """Confirm check_for_export to confirm volume health check."""
81
82=== modified file 'nova/tests/test_virt.py'
83--- nova/tests/test_virt.py 2011-03-22 15:23:47 +0000
84+++ nova/tests/test_virt.py 2011-03-24 10:00:46 +0000
85@@ -427,6 +427,15 @@
86 def fake_raise(self):
87 raise libvirt.libvirtError('ERR')
88
89+ class FakeTime(object):
90+ def __init__(self):
91+ self.counter = 0
92+
93+ def sleep(self, t):
94+ self.counter += t
95+
96+ fake_timer = FakeTime()
97+
98 self.create_fake_libvirt_mock(nwfilterLookupByName=fake_raise)
99 instance_ref = db.instance_create(self.context, self.test_instance)
100
101@@ -436,11 +445,15 @@
102 conn = libvirt_conn.LibvirtConnection(False)
103 conn.firewall_driver.setattr('setup_basic_filtering', fake_none)
104 conn.firewall_driver.setattr('prepare_instance_filter', fake_none)
105- conn.ensure_filtering_rules_for_instance(instance_ref)
106+ conn.ensure_filtering_rules_for_instance(instance_ref,
107+ time=fake_timer)
108 except exception.Error, e:
109 c1 = (0 <= e.message.find('Timeout migrating for'))
110 self.assertTrue(c1)
111
112+ self.assertEqual(29, fake_timer.counter, "Didn't wait the expected "
113+ "amount of time")
114+
115 db.instance_destroy(self.context, instance_ref['id'])
116
117 def test_live_migration_raises_exception(self):
118
119=== modified file 'nova/virt/libvirt_conn.py'
120--- nova/virt/libvirt_conn.py 2011-03-24 08:56:06 +0000
121+++ nova/virt/libvirt_conn.py 2011-03-24 10:00:46 +0000
122@@ -42,7 +42,6 @@
123 import sys
124 import random
125 import subprocess
126-import time
127 import uuid
128 from xml.dom import minidom
129
130@@ -1172,7 +1171,8 @@
131
132 return
133
134- def ensure_filtering_rules_for_instance(self, instance_ref):
135+ def ensure_filtering_rules_for_instance(self, instance_ref,
136+ time=None):
137 """Setting up filtering rules and waiting for its completion.
138
139 To migrate an instance, filtering rules to hypervisors
140@@ -1196,6 +1196,9 @@
141
142 """
143
144+ if not time:
145+ time = greenthread
146+
147 # If any instances never launch at destination host,
148 # basic-filtering must be set here.
149 self.firewall_driver.setup_basic_filtering(instance_ref)