Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: boto/tests/test_ec2connection.py

Issue 8386013: Merging in latest boto. (Closed) Base URL: svn://svn.chromium.org/boto
Patch Set: Redoing vendor drop by deleting and then merging. Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « boto/tests/test.py ('k') | boto/tests/test_gsconnection.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2
3 # Copyright (c) 2006-2010 Mitch Garnaat http://garnaat.org/
4 # Copyright (c) 2009, Eucalyptus Systems, Inc.
5 # All rights reserved.
6 #
7 # Permission is hereby granted, free of charge, to any person obtaining a
8 # copy of this software and associated documentation files (the
9 # "Software"), to deal in the Software without restriction, including
10 # without limitation the rights to use, copy, modify, merge, publish, dis-
11 # tribute, sublicense, and/or sell copies of the Software, and to permit
12 # persons to whom the Software is furnished to do so, subject to the fol-
13 # lowing conditions:
14 #
15 # The above copyright notice and this permission notice shall be included
16 # in all copies or substantial portions of the Software.
17 #
18 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
20 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
21 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24 # IN THE SOFTWARE.
25
26 """
27 Some unit tests for the EC2Connection
28 """
29
30 import unittest
31 import time
32 from boto.ec2.connection import EC2Connection
33 import telnetlib
34 import socket
35
36 class EC2ConnectionTest (unittest.TestCase):
37
38 def test_1_basic(self):
39 # this is my user_id, if you want to run these tests you should
40 # replace this with yours or they won't work
41 user_id = '963068290131'
42 print '--- running EC2Connection tests ---'
43 c = EC2Connection()
44 # get list of private AMI's
45 rs = c.get_all_images(owners=[user_id])
46 assert len(rs) > 0
47 # now pick the first one
48 image = rs[0]
49 # temporarily make this image runnable by everyone
50 status = image.set_launch_permissions(group_names=['all'])
51 assert status
52 d = image.get_launch_permissions()
53 assert d.has_key('groups')
54 assert len(d['groups']) > 0
55 # now remove that permission
56 status = image.remove_launch_permissions(group_names=['all'])
57 assert status
58 d = image.get_launch_permissions()
59 assert not d.has_key('groups')
60
61 # create 2 new security groups
62 group1_name = 'test-%d' % int(time.time())
63 group_desc = 'This is a security group created during unit testing'
64 group1 = c.create_security_group(group1_name, group_desc)
65 time.sleep(2)
66 group2_name = 'test-%d' % int(time.time())
67 group_desc = 'This is a security group created during unit testing'
68 group2 = c.create_security_group(group2_name, group_desc)
69 # now get a listing of all security groups and look for our new one
70 rs = c.get_all_security_groups()
71 found = False
72 for g in rs:
73 if g.name == group1_name:
74 found = True
75 assert found
76 # now pass arg to filter results to only our new group
77 rs = c.get_all_security_groups([group1_name])
78 assert len(rs) == 1
79 # try some group to group authorizations/revocations
80 # first try the old style
81 status = c.authorize_security_group(group1.name, group2.name, group2.own er_id)
82 assert status
83 status = c.revoke_security_group(group1.name, group2.name, group2.owner_ id)
84 assert status
85 # now try specifying a specific port
86 status = c.authorize_security_group(group1.name, group2.name, group2.own er_id,
87 'tcp', 22, 22)
88 assert status
89 status = c.revoke_security_group(group1.name, group2.name, group2.owner_ id,
90 'tcp', 22, 22)
91 assert status
92
93 # now delete the second security group
94 status = c.delete_security_group(group2_name)
95 # now make sure it's really gone
96 rs = c.get_all_security_groups()
97 found = False
98 for g in rs:
99 if g.name == group2_name:
100 found = True
101 assert not found
102
103 group = group1
104
105 # now try to launch apache image with our new security group
106 rs = c.get_all_images()
107 img_loc = 'ec2-public-images/fedora-core4-apache.manifest.xml'
108 for image in rs:
109 if image.location == img_loc:
110 break
111 reservation = image.run(security_groups=[group.name])
112 instance = reservation.instances[0]
113 while instance.state != 'running':
114 print '\tinstance is %s' % instance.state
115 time.sleep(30)
116 instance.update()
117 # instance in now running, try to telnet to port 80
118 t = telnetlib.Telnet()
119 try:
120 t.open(instance.dns_name, 80)
121 except socket.error:
122 pass
123 # now open up port 80 and try again, it should work
124 group.authorize('tcp', 80, 80, '0.0.0.0/0')
125 t.open(instance.dns_name, 80)
126 t.close()
127 # now revoke authorization and try again
128 group.revoke('tcp', 80, 80, '0.0.0.0/0')
129 try:
130 t.open(instance.dns_name, 80)
131 except socket.error:
132 pass
133 # now kill the instance and delete the security group
134 instance.terminate()
135 # unfortunately, I can't delete the sg within this script
136 #sg.delete()
137
138 # create a new key pair
139 key_name = 'test-%d' % int(time.time())
140 status = c.create_key_pair(key_name)
141 assert status
142 # now get a listing of all key pairs and look for our new one
143 rs = c.get_all_key_pairs()
144 found = False
145 for k in rs:
146 if k.name == key_name:
147 found = True
148 assert found
149 # now pass arg to filter results to only our new key pair
150 rs = c.get_all_key_pairs([key_name])
151 assert len(rs) == 1
152 key_pair = rs[0]
153 # now delete the key pair
154 status = c.delete_key_pair(key_name)
155 # now make sure it's really gone
156 rs = c.get_all_key_pairs()
157 found = False
158 for k in rs:
159 if k.name == key_name:
160 found = True
161 assert not found
162
163 # short test around Paid AMI capability
164 demo_paid_ami_id = 'ami-bd9d78d4'
165 demo_paid_ami_product_code = 'A79EC0DB'
166 l = c.get_all_images([demo_paid_ami_id])
167 assert len(l) == 1
168 assert len(l[0].product_codes) == 1
169 assert l[0].product_codes[0] == demo_paid_ami_product_code
170
171 print '--- tests completed ---'
OLDNEW
« no previous file with comments | « boto/tests/test.py ('k') | boto/tests/test_gsconnection.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698