trunk merge
This commit is contained in:
		
							
								
								
									
										2
									
								
								Authors
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Authors
									
									
									
									
									
								
							@@ -30,6 +30,7 @@ Gabe Westmaas <gabe.westmaas@rackspace.com>
 | 
				
			|||||||
Hisaharu Ishii <ishii.hisaharu@lab.ntt.co.jp>
 | 
					Hisaharu Ishii <ishii.hisaharu@lab.ntt.co.jp>
 | 
				
			||||||
Hisaki Ohara <hisaki.ohara@intel.com>
 | 
					Hisaki Ohara <hisaki.ohara@intel.com>
 | 
				
			||||||
Ilya Alekseyev <ialekseev@griddynamics.com>
 | 
					Ilya Alekseyev <ialekseev@griddynamics.com>
 | 
				
			||||||
 | 
					Isaku Yamahata <yamahata@valinux.co.jp>
 | 
				
			||||||
Jason Koelker <jason@koelker.net>
 | 
					Jason Koelker <jason@koelker.net>
 | 
				
			||||||
Jay Pipes <jaypipes@gmail.com>
 | 
					Jay Pipes <jaypipes@gmail.com>
 | 
				
			||||||
Jesse Andrews <anotherjesse@gmail.com>
 | 
					Jesse Andrews <anotherjesse@gmail.com>
 | 
				
			||||||
@@ -83,6 +84,7 @@ Trey Morris <trey.morris@rackspace.com>
 | 
				
			|||||||
Tushar Patil <tushar.vitthal.patil@gmail.com>
 | 
					Tushar Patil <tushar.vitthal.patil@gmail.com>
 | 
				
			||||||
Vasiliy Shlykov <vash@vasiliyshlykov.org>
 | 
					Vasiliy Shlykov <vash@vasiliyshlykov.org>
 | 
				
			||||||
Vishvananda Ishaya <vishvananda@gmail.com>
 | 
					Vishvananda Ishaya <vishvananda@gmail.com>
 | 
				
			||||||
 | 
					Vivek Y S <vivek.ys@gmail.com>
 | 
				
			||||||
William Wolf <throughnothing@gmail.com>
 | 
					William Wolf <throughnothing@gmail.com>
 | 
				
			||||||
Yoshiaki Tamura <yoshi@midokura.jp>
 | 
					Yoshiaki Tamura <yoshi@midokura.jp>
 | 
				
			||||||
Youcef Laribi <Youcef.Laribi@eu.citrix.com>
 | 
					Youcef Laribi <Youcef.Laribi@eu.citrix.com>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
NOVA_KEY_DIR=$(pushd $(dirname $BASH_SOURCE)>/dev/null; pwd; popd>/dev/null)
 | 
					NOVA_KEY_DIR=$(dirname $(readlink -f ${BASH_SOURCE}))
 | 
				
			||||||
export EC2_ACCESS_KEY="%(access)s:%(project)s"
 | 
					export EC2_ACCESS_KEY="%(access)s:%(project)s"
 | 
				
			||||||
export EC2_SECRET_KEY="%(secret)s"
 | 
					export EC2_SECRET_KEY="%(secret)s"
 | 
				
			||||||
export EC2_URL="%(ec2)s"
 | 
					export EC2_URL="%(ec2)s"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -186,6 +186,52 @@ class CloudTestCase(test.TestCase):
 | 
				
			|||||||
        db.service_destroy(self.context, service1['id'])
 | 
					        db.service_destroy(self.context, service1['id'])
 | 
				
			||||||
        db.service_destroy(self.context, service2['id'])
 | 
					        db.service_destroy(self.context, service2['id'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_describe_snapshots(self):
 | 
				
			||||||
 | 
					        """Makes sure describe_snapshots works and filters results."""
 | 
				
			||||||
 | 
					        vol = db.volume_create(self.context, {})
 | 
				
			||||||
 | 
					        snap1 = db.snapshot_create(self.context, {'volume_id': vol['id']})
 | 
				
			||||||
 | 
					        snap2 = db.snapshot_create(self.context, {'volume_id': vol['id']})
 | 
				
			||||||
 | 
					        result = self.cloud.describe_snapshots(self.context)
 | 
				
			||||||
 | 
					        self.assertEqual(len(result['snapshotSet']), 2)
 | 
				
			||||||
 | 
					        snapshot_id = ec2utils.id_to_ec2_id(snap2['id'], 'snap-%08x')
 | 
				
			||||||
 | 
					        result = self.cloud.describe_snapshots(self.context,
 | 
				
			||||||
 | 
					                                               snapshot_id=[snapshot_id])
 | 
				
			||||||
 | 
					        self.assertEqual(len(result['snapshotSet']), 1)
 | 
				
			||||||
 | 
					        self.assertEqual(
 | 
				
			||||||
 | 
					            ec2utils.ec2_id_to_id(result['snapshotSet'][0]['snapshotId']),
 | 
				
			||||||
 | 
					            snap2['id'])
 | 
				
			||||||
 | 
					        db.snapshot_destroy(self.context, snap1['id'])
 | 
				
			||||||
 | 
					        db.snapshot_destroy(self.context, snap2['id'])
 | 
				
			||||||
 | 
					        db.volume_destroy(self.context, vol['id'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_create_snapshot(self):
 | 
				
			||||||
 | 
					        """Makes sure create_snapshot works."""
 | 
				
			||||||
 | 
					        vol = db.volume_create(self.context, {'status': "available"})
 | 
				
			||||||
 | 
					        volume_id = ec2utils.id_to_ec2_id(vol['id'], 'vol-%08x')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        result = self.cloud.create_snapshot(self.context,
 | 
				
			||||||
 | 
					                                            volume_id=volume_id)
 | 
				
			||||||
 | 
					        snapshot_id = result['snapshotId']
 | 
				
			||||||
 | 
					        result = self.cloud.describe_snapshots(self.context)
 | 
				
			||||||
 | 
					        self.assertEqual(len(result['snapshotSet']), 1)
 | 
				
			||||||
 | 
					        self.assertEqual(result['snapshotSet'][0]['snapshotId'], snapshot_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        db.snapshot_destroy(self.context, ec2utils.ec2_id_to_id(snapshot_id))
 | 
				
			||||||
 | 
					        db.volume_destroy(self.context, vol['id'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_delete_snapshot(self):
 | 
				
			||||||
 | 
					        """Makes sure delete_snapshot works."""
 | 
				
			||||||
 | 
					        vol = db.volume_create(self.context, {'status': "available"})
 | 
				
			||||||
 | 
					        snap = db.snapshot_create(self.context, {'volume_id': vol['id'],
 | 
				
			||||||
 | 
					                                                  'status': "available"})
 | 
				
			||||||
 | 
					        snapshot_id = ec2utils.id_to_ec2_id(snap['id'], 'snap-%08x')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        result = self.cloud.delete_snapshot(self.context,
 | 
				
			||||||
 | 
					                                            snapshot_id=snapshot_id)
 | 
				
			||||||
 | 
					        self.assertTrue(result)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        db.volume_destroy(self.context, vol['id'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_describe_instances(self):
 | 
					    def test_describe_instances(self):
 | 
				
			||||||
        """Makes sure describe_instances works and filters results."""
 | 
					        """Makes sure describe_instances works and filters results."""
 | 
				
			||||||
        inst1 = db.instance_create(self.context, {'reservation_id': 'a',
 | 
					        inst1 = db.instance_create(self.context, {'reservation_id': 'a',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -176,6 +176,34 @@ class VolumeTestCase(test.TestCase):
 | 
				
			|||||||
        # This will allow us to test cross-node interactions
 | 
					        # This will allow us to test cross-node interactions
 | 
				
			||||||
        pass
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @staticmethod
 | 
				
			||||||
 | 
					    def _create_snapshot(volume_id, size='0'):
 | 
				
			||||||
 | 
					        """Create a snapshot object."""
 | 
				
			||||||
 | 
					        snap = {}
 | 
				
			||||||
 | 
					        snap['volume_size'] = size
 | 
				
			||||||
 | 
					        snap['user_id'] = 'fake'
 | 
				
			||||||
 | 
					        snap['project_id'] = 'fake'
 | 
				
			||||||
 | 
					        snap['volume_id'] = volume_id
 | 
				
			||||||
 | 
					        snap['status'] = "creating"
 | 
				
			||||||
 | 
					        return db.snapshot_create(context.get_admin_context(), snap)['id']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_create_delete_snapshot(self):
 | 
				
			||||||
 | 
					        """Test snapshot can be created and deleted."""
 | 
				
			||||||
 | 
					        volume_id = self._create_volume()
 | 
				
			||||||
 | 
					        self.volume.create_volume(self.context, volume_id)
 | 
				
			||||||
 | 
					        snapshot_id = self._create_snapshot(volume_id)
 | 
				
			||||||
 | 
					        self.volume.create_snapshot(self.context, volume_id, snapshot_id)
 | 
				
			||||||
 | 
					        self.assertEqual(snapshot_id,
 | 
				
			||||||
 | 
					                         db.snapshot_get(context.get_admin_context(),
 | 
				
			||||||
 | 
					                                         snapshot_id).id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.volume.delete_snapshot(self.context, snapshot_id)
 | 
				
			||||||
 | 
					        self.assertRaises(exception.NotFound,
 | 
				
			||||||
 | 
					                          db.snapshot_get,
 | 
				
			||||||
 | 
					                          self.context,
 | 
				
			||||||
 | 
					                          snapshot_id)
 | 
				
			||||||
 | 
					        self.volume.delete_volume(self.context, volume_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DriverTestCase(test.TestCase):
 | 
					class DriverTestCase(test.TestCase):
 | 
				
			||||||
    """Base Test class for Drivers."""
 | 
					    """Base Test class for Drivers."""
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -592,11 +592,29 @@ class XenAPIDiffieHellmanTestCase(test.TestCase):
 | 
				
			|||||||
        bob_shared = self.bob.compute_shared(alice_pub)
 | 
					        bob_shared = self.bob.compute_shared(alice_pub)
 | 
				
			||||||
        self.assertEquals(alice_shared, bob_shared)
 | 
					        self.assertEquals(alice_shared, bob_shared)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_encryption(self):
 | 
					    def _test_encryption(self, message):
 | 
				
			||||||
        msg = "This is a top-secret message"
 | 
					        enc = self.alice.encrypt(message)
 | 
				
			||||||
        enc = self.alice.encrypt(msg)
 | 
					        self.assertFalse(enc.endswith('\n'))
 | 
				
			||||||
        dec = self.bob.decrypt(enc)
 | 
					        dec = self.bob.decrypt(enc)
 | 
				
			||||||
        self.assertEquals(dec, msg)
 | 
					        self.assertEquals(dec, message)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_encrypt_simple_message(self):
 | 
				
			||||||
 | 
					        self._test_encryption('This is a simple message.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_encrypt_message_with_newlines_at_end(self):
 | 
				
			||||||
 | 
					        self._test_encryption('This message has a newline at the end.\n')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_encrypt_many_newlines_at_end(self):
 | 
				
			||||||
 | 
					        self._test_encryption('Message with lotsa newlines.\n\n\n')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_encrypt_newlines_inside_message(self):
 | 
				
			||||||
 | 
					        self._test_encryption('Message\nwith\ninterior\nnewlines.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_encrypt_with_leading_newlines(self):
 | 
				
			||||||
 | 
					        self._test_encryption('\n\nMessage with leading newlines.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_encrypt_really_long_message(self):
 | 
				
			||||||
 | 
					        self._test_encryption(''.join(['abcd' for i in xrange(1024)]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def tearDown(self):
 | 
					    def tearDown(self):
 | 
				
			||||||
        super(XenAPIDiffieHellmanTestCase, self).tearDown()
 | 
					        super(XenAPIDiffieHellmanTestCase, self).tearDown()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user