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

Side by Side Diff: third_party/gsutil/boto/tests/unit/ec2/test_instance.py

Issue 12317103: Added gsutil to depot tools (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: added readme Created 7 years, 9 months 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
OLDNEW
(Empty)
1 #!/usr/bin/env python
2
3 from tests.unit import unittest
4 from tests.unit import AWSMockServiceTestCase
5
6 import mock
7
8 from boto.ec2.connection import EC2Connection
9
10 DESCRIBE_INSTANCE_VPC = r"""<?xml version="1.0" encoding="UTF-8"?>
11 <DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2012-10-01/">
12 <requestId>c6132c74-b524-4884-87f5-0f4bde4a9760</requestId>
13 <reservationSet>
14 <item>
15 <reservationId>r-72ef4a0a</reservationId>
16 <ownerId>184906166255</ownerId>
17 <groupSet/>
18 <instancesSet>
19 <item>
20 <instanceId>i-instance</instanceId>
21 <imageId>ami-1624987f</imageId>
22 <instanceState>
23 <code>16</code>
24 <name>running</name>
25 </instanceState>
26 <privateDnsName/>
27 <dnsName/>
28 <reason/>
29 <keyName>mykeypair</keyName>
30 <amiLaunchIndex>0</amiLaunchIndex>
31 <productCodes/>
32 <instanceType>m1.small</instanceType>
33 <launchTime>2012-12-14T23:48:37.000Z</launchTime>
34 <placement>
35 <availabilityZone>us-east-1d</availabilityZone>
36 <groupName/>
37 <tenancy>default</tenancy>
38 </placement>
39 <kernelId>aki-88aa75e1</kernelId>
40 <monitoring>
41 <state>disabled</state>
42 </monitoring>
43 <subnetId>subnet-0dc60667</subnetId>
44 <vpcId>vpc-id</vpcId>
45 <privateIpAddress>10.0.0.67</privateIpAddress>
46 <sourceDestCheck>true</sourceDestCheck>
47 <groupSet>
48 <item>
49 <groupId>sg-id</groupId>
50 <groupName>WebServerSG</groupName>
51 </item>
52 </groupSet>
53 <architecture>x86_64</architecture>
54 <rootDeviceType>ebs</rootDeviceType>
55 <rootDeviceName>/dev/sda1</rootDeviceName>
56 <blockDeviceMapping>
57 <item>
58 <deviceName>/dev/sda1</deviceName>
59 <ebs>
60 <volumeId>vol-id</volumeId>
61 <status>attached</status>
62 <attachTime>2012-12-14T23:48:43.000Z</attachTime >
63 <deleteOnTermination>true</deleteOnTermination>
64 </ebs>
65 </item>
66 </blockDeviceMapping>
67 <virtualizationType>paravirtual</virtualizationType>
68 <clientToken>foo</clientToken>
69 <tagSet>
70 <item>
71 <key>Name</key>
72 <value/>
73 </item>
74 </tagSet>
75 <hypervisor>xen</hypervisor>
76 <networkInterfaceSet>
77 <item>
78 <networkInterfaceId>eni-id</networkInterfaceId>
79 <subnetId>subnet-id</subnetId>
80 <vpcId>vpc-id</vpcId>
81 <description>Primary network interface</description>
82 <ownerId>ownerid</ownerId>
83 <status>in-use</status>
84 <privateIpAddress>10.0.0.67</privateIpAddress>
85 <sourceDestCheck>true</sourceDestCheck>
86 <groupSet>
87 <item>
88 <groupId>sg-id</groupId>
89 <groupName>WebServerSG</groupName>
90 </item>
91 </groupSet>
92 <attachment>
93 <attachmentId>eni-attach-id</attachmentId>
94 <deviceIndex>0</deviceIndex>
95 <status>attached</status>
96 <attachTime>2012-12-14T23:48:37.000Z</attachTime >
97 <deleteOnTermination>true</deleteOnTermination>
98 </attachment>
99 <privateIpAddressesSet>
100 <item>
101 <privateIpAddress>10.0.0.67</privateIpAddres s>
102 <primary>true</primary>
103 </item>
104 <item>
105 <privateIpAddress>10.0.0.54</privateIpAddres s>
106 <primary>false</primary>
107 </item>
108 <item>
109 <privateIpAddress>10.0.0.55</privateIpAddres s>
110 <primary>false</primary>
111 </item>
112 </privateIpAddressesSet>
113 </item>
114 </networkInterfaceSet>
115 <ebsOptimized>false</ebsOptimized>
116 </item>
117 </instancesSet>
118 </item>
119 </reservationSet>
120 </DescribeInstancesResponse>
121 """
122
123 RUN_INSTANCE_RESPONSE = r"""
124 <RunInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2012-06-01/">
125 <requestId>ad4b83c2-f606-4c39-90c6-5dcc5be823e1</requestId>
126 <reservationId>r-c5cef7a7</reservationId>
127 <ownerId>ownerid</ownerId>
128 <groupSet>
129 <item>
130 <groupId>sg-id</groupId>
131 <groupName>SSH</groupName>
132 </item>
133 </groupSet>
134 <instancesSet>
135 <item>
136 <instanceId>i-ff0f1299</instanceId>
137 <imageId>ami-ed65ba84</imageId>
138 <instanceState>
139 <code>0</code>
140 <name>pending</name>
141 </instanceState>
142 <privateDnsName/>
143 <dnsName/>
144 <reason/>
145 <keyName>awskeypair</keyName>
146 <amiLaunchIndex>0</amiLaunchIndex>
147 <productCodes/>
148 <instanceType>t1.micro</instanceType>
149 <launchTime>2012-05-30T19:21:18.000Z</launchTime>
150 <placement>
151 <availabilityZone>us-east-1a</availabilityZone>
152 <groupName/>
153 <tenancy>default</tenancy>
154 </placement>
155 <kernelId>aki-b6aa75df</kernelId>
156 <monitoring>
157 <state>disabled</state>
158 </monitoring>
159 <groupSet>
160 <item>
161 <groupId>sg-99a710f1</groupId>
162 <groupName>SSH</groupName>
163 </item>
164 </groupSet>
165 <stateReason>
166 <code>pending</code>
167 <message>pending</message>
168 </stateReason>
169 <architecture>i386</architecture>
170 <rootDeviceType>ebs</rootDeviceType>
171 <rootDeviceName>/dev/sda1</rootDeviceName>
172 <blockDeviceMapping/>
173 <virtualizationType>paravirtual</virtualizationType>
174 <clientToken/>
175 <hypervisor>xen</hypervisor>
176 <networkInterfaceSet/>
177 <iamInstanceProfile>
178 <arn>arn:aws:iam::ownerid:instance-profile/myinstanceprofile</ar n>
179 <id>iamid</id>
180 </iamInstanceProfile>
181 </item>
182 </instancesSet>
183 </RunInstancesResponse>
184 """
185
186
187 class TestRunInstanceResponseParsing(unittest.TestCase):
188 def testIAMInstanceProfileParsedCorrectly(self):
189 ec2 = EC2Connection(aws_access_key_id='aws_access_key_id',
190 aws_secret_access_key='aws_secret_access_key')
191 mock_response = mock.Mock()
192 mock_response.read.return_value = RUN_INSTANCE_RESPONSE
193 mock_response.status = 200
194 ec2.make_request = mock.Mock(return_value=mock_response)
195 reservation = ec2.run_instances(image_id='ami-12345')
196 self.assertEqual(len(reservation.instances), 1)
197 instance = reservation.instances[0]
198 self.assertEqual(instance.image_id, 'ami-ed65ba84')
199 # iamInstanceProfile has an ID element, so we want to make sure
200 # that this does not map to instance.id (which should be the
201 # id of the ec2 instance).
202 self.assertEqual(instance.id, 'i-ff0f1299')
203 self.assertDictEqual(
204 instance.instance_profile,
205 {'arn': ('arn:aws:iam::ownerid:'
206 'instance-profile/myinstanceprofile'),
207 'id': 'iamid'})
208
209
210 class TestDescribeInstances(AWSMockServiceTestCase):
211 connection_class = EC2Connection
212
213 def default_body(self):
214 return DESCRIBE_INSTANCE_VPC
215
216 def test_multiple_private_ip_addresses(self):
217 self.set_http_response(status_code=200)
218
219 api_response = self.service_connection.get_all_instances()
220 self.assertEqual(len(api_response), 1)
221
222 instances = api_response[0].instances
223 self.assertEqual(len(instances), 1)
224
225 instance = instances[0]
226 self.assertEqual(len(instance.interfaces), 1)
227
228 interface = instance.interfaces[0]
229 self.assertEqual(len(interface.private_ip_addresses), 3)
230
231 addresses = interface.private_ip_addresses
232 self.assertEqual(addresses[0].private_ip_address, '10.0.0.67')
233 self.assertTrue(addresses[0].primary)
234
235 self.assertEqual(addresses[1].private_ip_address, '10.0.0.54')
236 self.assertFalse(addresses[1].primary)
237
238 self.assertEqual(addresses[2].private_ip_address, '10.0.0.55')
239 self.assertFalse(addresses[2].primary)
240
241
242 if __name__ == '__main__':
243 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698