various fixes to smoketests, including allowing admin tests to run as a user, better timing, and allowing volume tests to run on non-udev linux

This commit is contained in:
Vishvananda Ishaya 2011-01-18 18:33:04 -08:00
parent eb33a6b78b
commit 9bd72f5622
2 changed files with 21 additions and 9 deletions

View File

@ -35,5 +35,5 @@ DEFINE_bool = DEFINE_bool
# http://code.google.com/p/python-gflags/source/browse/trunk/gflags.py#39 # http://code.google.com/p/python-gflags/source/browse/trunk/gflags.py#39
DEFINE_string('region', 'nova', 'Region to use') DEFINE_string('region', 'nova', 'Region to use')
DEFINE_string('test_image', 'ami-tiny', 'Image to use for launch tests') DEFINE_string('test_image', 'ami-tty', 'Image to use for launch tests')
DEFINE_string('use_ipv6', True, 'use the ipv6 or not') DEFINE_string('use_ipv6', True, 'use the ipv6 or not')

View File

@ -258,10 +258,15 @@ class VolumeTests(UserSmokeTestCase):
instance = reservation.instances[0] instance = reservation.instances[0]
self.data['instance'] = instance self.data['instance'] = instance
for x in xrange(120): for x in xrange(120):
if self.can_ping(instance.private_dns_name): time.sleep(1)
instance.update()
#if self.can_ping(instance.private_dns_name):
if instance.state == u'running':
break break
else: else:
self.fail('unable to start instance') self.fail('unable to start instance')
time.sleep(10)
instance.update()
def test_001_can_create_volume(self): def test_001_can_create_volume(self):
volume = self.conn.create_volume(1, 'nova') volume = self.conn.create_volume(1, 'nova')
@ -273,10 +278,11 @@ class VolumeTests(UserSmokeTestCase):
def test_002_can_attach_volume(self): def test_002_can_attach_volume(self):
volume = self.data['volume'] volume = self.data['volume']
for x in xrange(10): for x in xrange(30):
if volume.status == u'available': print volume.status
if volume.status.startswith('available'):
break break
time.sleep(5) time.sleep(1)
volume.update() volume.update()
else: else:
self.fail('cannot attach volume with state %s' % volume.status) self.fail('cannot attach volume with state %s' % volume.status)
@ -285,12 +291,12 @@ class VolumeTests(UserSmokeTestCase):
# Volumes seems to report "available" too soon. # Volumes seems to report "available" too soon.
for x in xrange(10): for x in xrange(10):
if volume.status == u'in-use': if volume.status.startswith('in-use'):
break break
time.sleep(5) time.sleep(5)
volume.update() volume.update()
self.assertEqual(volume.status, u'in-use') self.assertTrue(volume.status.startswith('in-use'))
# Give instance time to recognize volume. # Give instance time to recognize volume.
time.sleep(5) time.sleep(5)
@ -298,9 +304,15 @@ class VolumeTests(UserSmokeTestCase):
def test_003_can_mount_volume(self): def test_003_can_mount_volume(self):
ip = self.data['instance'].private_dns_name ip = self.data['instance'].private_dns_name
conn = self.connect_ssh(ip, TEST_KEY) conn = self.connect_ssh(ip, TEST_KEY)
# NOTE(vish): this will create an dev for images that don't have
# udev rules
stdin, stdout, stderr = conn.exec_command(
'grep %s /proc/partitions | '
'`awk \'{print "mknod /dev/"\\$4" b "\\$1" "\\$2}\'`'
% self.device.rpartition('/')[2])
commands = [] commands = []
commands.append('mkdir -p /mnt/vol') commands.append('mkdir -p /mnt/vol')
commands.append('mkfs.ext2 %s' % self.device) commands.append('/sbin/mke2fs %s' % self.device)
commands.append('mount %s /mnt/vol' % self.device) commands.append('mount %s /mnt/vol' % self.device)
commands.append('echo success') commands.append('echo success')
stdin, stdout, stderr = conn.exec_command(' && '.join(commands)) stdin, stdout, stderr = conn.exec_command(' && '.join(commands))
@ -327,7 +339,7 @@ class VolumeTests(UserSmokeTestCase):
"df -h | grep %s | awk {'print $2'}" % self.device) "df -h | grep %s | awk {'print $2'}" % self.device)
out = stdout.read() out = stdout.read()
conn.close() conn.close()
if not out.strip() == '1008M': if not out.strip() == '1007.9M':
self.fail('Volume is not the right size: %s %s' % self.fail('Volume is not the right size: %s %s' %
(out, stderr.read())) (out, stderr.read()))