root / kamaki / clients / tests.py @ bcebdfef
History | View | Annotate | Download (83.7 kB)
1 | 15618e89 | Stavros Sachtouris | # Copyright 2011 GRNET S.A. All rights reserved.
|
---|---|---|---|
2 | 15618e89 | Stavros Sachtouris | #
|
3 | 15618e89 | Stavros Sachtouris | # Redistribution and use in source and binary forms, with or
|
4 | 15618e89 | Stavros Sachtouris | # without modification, are permitted provided that the following
|
5 | 15618e89 | Stavros Sachtouris | # conditions are met:
|
6 | 15618e89 | Stavros Sachtouris | #
|
7 | 15618e89 | Stavros Sachtouris | # 1. Redistributions of source code must retain the above
|
8 | 3dabe5d2 | Stavros Sachtouris | # copyright notice, this list of conditions and the following
|
9 | 3dabe5d2 | Stavros Sachtouris | # disclaimer.
|
10 | 15618e89 | Stavros Sachtouris | #
|
11 | 15618e89 | Stavros Sachtouris | # 2. Redistributions in binary form must reproduce the above
|
12 | 3dabe5d2 | Stavros Sachtouris | # copyright notice, this list of conditions and the following
|
13 | 3dabe5d2 | Stavros Sachtouris | # disclaimer in the documentation and/or other materials
|
14 | 3dabe5d2 | Stavros Sachtouris | # provided with the distribution.
|
15 | 15618e89 | Stavros Sachtouris | #
|
16 | 15618e89 | Stavros Sachtouris | # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
17 | 15618e89 | Stavros Sachtouris | # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18 | 15618e89 | Stavros Sachtouris | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19 | 15618e89 | Stavros Sachtouris | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
20 | 15618e89 | Stavros Sachtouris | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21 | 15618e89 | Stavros Sachtouris | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22 | 15618e89 | Stavros Sachtouris | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23 | 15618e89 | Stavros Sachtouris | # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24 | 15618e89 | Stavros Sachtouris | # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25 | 15618e89 | Stavros Sachtouris | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26 | 15618e89 | Stavros Sachtouris | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27 | 15618e89 | Stavros Sachtouris | # POSSIBILITY OF SUCH DAMAGE.
|
28 | 15618e89 | Stavros Sachtouris | #
|
29 | 15618e89 | Stavros Sachtouris | # The views and conclusions contained in the software and
|
30 | 15618e89 | Stavros Sachtouris | # documentation are those of the authors and should not be
|
31 | 15618e89 | Stavros Sachtouris | # interpreted as representing official policies, either expressed
|
32 | 15618e89 | Stavros Sachtouris | # or implied, of GRNET S.A.
|
33 | 15618e89 | Stavros Sachtouris | |
34 | 1bb4d14d | Stavros Sachtouris | from argparse import ArgumentParser |
35 | 15618e89 | Stavros Sachtouris | import unittest |
36 | 3dabe5d2 | Stavros Sachtouris | import time |
37 | 3dabe5d2 | Stavros Sachtouris | import datetime |
38 | 3dabe5d2 | Stavros Sachtouris | import os |
39 | 3dabe5d2 | Stavros Sachtouris | import sys |
40 | 15618e89 | Stavros Sachtouris | |
41 | ca30409e | Stavros Sachtouris | from progress.bar import IncrementalBar |
42 | ca30409e | Stavros Sachtouris | |
43 | 435008b6 | Stavros Sachtouris | from kamaki.clients import ClientError |
44 | 435008b6 | Stavros Sachtouris | from kamaki.clients.pithos import PithosClient as pithos |
45 | 1bb4d14d | Stavros Sachtouris | from kamaki.clients.cyclades import CycladesClient as cyclades |
46 | b9d07587 | Stavros Sachtouris | from kamaki.clients.image import ImageClient as image |
47 | b9d07587 | Stavros Sachtouris | from kamaki.clients.astakos import AstakosClient as astakos |
48 | 7d91734c | Stavros Sachtouris | from kamaki.cli.config import Config |
49 | 1bb4d14d | Stavros Sachtouris | |
50 | 1a85b14f | Stavros Sachtouris | TEST_ALL = False
|
51 | 1a85b14f | Stavros Sachtouris | |
52 | 7d91734c | Stavros Sachtouris | cnf = Config('/home/saxtouri/.kamakirc')
|
53 | 7d91734c | Stavros Sachtouris | global_username = cnf.get('global', 'account') |
54 | 7d91734c | Stavros Sachtouris | token = cnf.get('global', 'token') |
55 | 3dabe5d2 | Stavros Sachtouris | |
56 | 1037b811 | Stavros Sachtouris | |
57 | b9d07587 | Stavros Sachtouris | class testAstakos(unittest.TestCase): |
58 | 3dabe5d2 | Stavros Sachtouris | def setUp(self): |
59 | 7d91734c | Stavros Sachtouris | global cnf
|
60 | 7d91734c | Stavros Sachtouris | url = cnf.get('astakos', 'url') |
61 | 3dabe5d2 | Stavros Sachtouris | global token
|
62 | 3dabe5d2 | Stavros Sachtouris | self.client = astakos(url, token)
|
63 | 3dabe5d2 | Stavros Sachtouris | |
64 | 3dabe5d2 | Stavros Sachtouris | def tearDown(self): |
65 | 3dabe5d2 | Stavros Sachtouris | pass
|
66 | 3dabe5d2 | Stavros Sachtouris | |
67 | 3dabe5d2 | Stavros Sachtouris | def test_authenticate(self): |
68 | 3dabe5d2 | Stavros Sachtouris | r = self.client.authenticate()
|
69 | 3dabe5d2 | Stavros Sachtouris | for term in ('username', |
70 | 3dabe5d2 | Stavros Sachtouris | 'auth_token_expires',
|
71 | 3dabe5d2 | Stavros Sachtouris | 'auth_token',
|
72 | 3dabe5d2 | Stavros Sachtouris | 'auth_token_created',
|
73 | 3dabe5d2 | Stavros Sachtouris | 'groups',
|
74 | 3dabe5d2 | Stavros Sachtouris | 'uniq',
|
75 | 3dabe5d2 | Stavros Sachtouris | 'has_credits',
|
76 | 3dabe5d2 | Stavros Sachtouris | 'has_signed_terms'):
|
77 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(term in r) |
78 | 3dabe5d2 | Stavros Sachtouris | |
79 | b9d07587 | Stavros Sachtouris | |
80 | b9d07587 | Stavros Sachtouris | class testImage(unittest.TestCase): |
81 | 3dabe5d2 | Stavros Sachtouris | def setUp(self): |
82 | 7d91734c | Stavros Sachtouris | global cnf
|
83 | 7d91734c | Stavros Sachtouris | cyclades_url = cnf.get('compute', 'url') |
84 | 7d91734c | Stavros Sachtouris | url = cnf.get('image', 'url') |
85 | 3dabe5d2 | Stavros Sachtouris | global token
|
86 | 3dabe5d2 | Stavros Sachtouris | self.token = token
|
87 | 3dabe5d2 | Stavros Sachtouris | self.imgid = 'b2dffe52-64a4-48c3-8a4c-8214cc3165cf' |
88 | 3dabe5d2 | Stavros Sachtouris | self.now = time.mktime(time.gmtime())
|
89 | 3dabe5d2 | Stavros Sachtouris | self.imgname = 'img_%s' % self.now |
90 | 3dabe5d2 | Stavros Sachtouris | global global_username
|
91 | 7d91734c | Stavros Sachtouris | self.imglocation = 'pithos://%s/pithos/my.img'\ |
92 | 3dabe5d2 | Stavros Sachtouris | % global_username |
93 | 3dabe5d2 | Stavros Sachtouris | self.client = image(url, self.token) |
94 | 3dabe5d2 | Stavros Sachtouris | self.cyclades = cyclades(cyclades_url, self.token) |
95 | 3dabe5d2 | Stavros Sachtouris | self._imglist = {}
|
96 | 3dabe5d2 | Stavros Sachtouris | |
97 | 3dabe5d2 | Stavros Sachtouris | def _prepare_img(self): |
98 | 7d91734c | Stavros Sachtouris | global cnf
|
99 | 3dabe5d2 | Stavros Sachtouris | global global_username
|
100 | 7d91734c | Stavros Sachtouris | username = global_username.split('@')[0] |
101 | 7d91734c | Stavros Sachtouris | imglocalpath =\ |
102 | 7d91734c | Stavros Sachtouris | '/home/%s/src/kamaki-settings/files/centos.diskdump' % username
|
103 | 3dabe5d2 | Stavros Sachtouris | f = open(imglocalpath, 'rb') |
104 | 7d91734c | Stavros Sachtouris | pithcli = pithos(cnf.get('store', 'url'), |
105 | 3dabe5d2 | Stavros Sachtouris | self.token,
|
106 | 7d91734c | Stavros Sachtouris | global_username, |
107 | 3dabe5d2 | Stavros Sachtouris | 'pithos')
|
108 | 7d91734c | Stavros Sachtouris | print('\t- Upload an image at %s...' % imglocalpath)
|
109 | 3dabe5d2 | Stavros Sachtouris | pithcli.upload_object('my.img', f)
|
110 | 7d91734c | Stavros Sachtouris | print('\t- ok')
|
111 | 3dabe5d2 | Stavros Sachtouris | f.close() |
112 | 3dabe5d2 | Stavros Sachtouris | |
113 | 3dabe5d2 | Stavros Sachtouris | self.client.register(self.imgname, |
114 | 3dabe5d2 | Stavros Sachtouris | self.imglocation,
|
115 | 3dabe5d2 | Stavros Sachtouris | params=dict(is_public=True)) |
116 | 3dabe5d2 | Stavros Sachtouris | img = self._get_img_by_name(self.imgname) |
117 | 3dabe5d2 | Stavros Sachtouris | self._imglist[self.imgname] = img |
118 | 3dabe5d2 | Stavros Sachtouris | |
119 | 3dabe5d2 | Stavros Sachtouris | def tearDown(self): |
120 | 3dabe5d2 | Stavros Sachtouris | for img in self._imglist.values(): |
121 | 3dabe5d2 | Stavros Sachtouris | self.cyclades.delete_image(img['id']) |
122 | 3dabe5d2 | Stavros Sachtouris | |
123 | 3dabe5d2 | Stavros Sachtouris | def _get_img_by_name(self, name): |
124 | 3dabe5d2 | Stavros Sachtouris | r = self.cyclades.list_images()
|
125 | 3dabe5d2 | Stavros Sachtouris | for img in r: |
126 | 3dabe5d2 | Stavros Sachtouris | if img['name'] == name: |
127 | 3dabe5d2 | Stavros Sachtouris | return img
|
128 | 3dabe5d2 | Stavros Sachtouris | return None |
129 | 3dabe5d2 | Stavros Sachtouris | |
130 | 3dabe5d2 | Stavros Sachtouris | def assert_dicts_are_deeply_equal(self, d1, d2): |
131 | 3dabe5d2 | Stavros Sachtouris | for k, v in d1.items(): |
132 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(k in d2) |
133 | 3dabe5d2 | Stavros Sachtouris | if isinstance(v, dict): |
134 | 3dabe5d2 | Stavros Sachtouris | self.assert_dicts_are_deeply_equal(v, d2[k])
|
135 | 3dabe5d2 | Stavros Sachtouris | else:
|
136 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(unicode(v), unicode(d2[k])) |
137 | 3dabe5d2 | Stavros Sachtouris | |
138 | 3dabe5d2 | Stavros Sachtouris | def test_list_public(self): |
139 | 3dabe5d2 | Stavros Sachtouris | """Test list_public"""
|
140 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_public()
|
141 | 3dabe5d2 | Stavros Sachtouris | r0 = self.client.list_public(order='-') |
142 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r) > 0) |
143 | 3dabe5d2 | Stavros Sachtouris | for img in r: |
144 | 3dabe5d2 | Stavros Sachtouris | for term in ('status', |
145 | 3dabe5d2 | Stavros Sachtouris | 'name',
|
146 | 3dabe5d2 | Stavros Sachtouris | 'container_format',
|
147 | 3dabe5d2 | Stavros Sachtouris | 'disk_format',
|
148 | 3dabe5d2 | Stavros Sachtouris | 'id',
|
149 | 3dabe5d2 | Stavros Sachtouris | 'size'):
|
150 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(term in img) |
151 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r), len(r0)) |
152 | 3dabe5d2 | Stavros Sachtouris | r0.reverse() |
153 | 3dabe5d2 | Stavros Sachtouris | for i, img in enumerate(r): |
154 | 3dabe5d2 | Stavros Sachtouris | self.assert_dicts_are_deeply_equal(img, r0[i])
|
155 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.list_public(detail=True) |
156 | 3dabe5d2 | Stavros Sachtouris | for img in r1: |
157 | 3dabe5d2 | Stavros Sachtouris | for term in ('status', |
158 | 3dabe5d2 | Stavros Sachtouris | 'name',
|
159 | 3dabe5d2 | Stavros Sachtouris | 'checksum',
|
160 | 3dabe5d2 | Stavros Sachtouris | 'created_at',
|
161 | 3dabe5d2 | Stavros Sachtouris | 'disk_format',
|
162 | 3dabe5d2 | Stavros Sachtouris | 'updated_at',
|
163 | 3dabe5d2 | Stavros Sachtouris | 'id',
|
164 | 3dabe5d2 | Stavros Sachtouris | 'location',
|
165 | 3dabe5d2 | Stavros Sachtouris | 'container_format',
|
166 | 3dabe5d2 | Stavros Sachtouris | 'owner',
|
167 | 3dabe5d2 | Stavros Sachtouris | 'is_public',
|
168 | 3dabe5d2 | Stavros Sachtouris | 'deleted_at',
|
169 | 3dabe5d2 | Stavros Sachtouris | 'properties',
|
170 | 3dabe5d2 | Stavros Sachtouris | 'size'):
|
171 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(term in img) |
172 | 7d91734c | Stavros Sachtouris | for interm in ( |
173 | 3dabe5d2 | Stavros Sachtouris | 'osfamily',
|
174 | 3dabe5d2 | Stavros Sachtouris | 'users',
|
175 | 3dabe5d2 | Stavros Sachtouris | 'os',
|
176 | 3dabe5d2 | Stavros Sachtouris | 'root_partition',
|
177 | 3dabe5d2 | Stavros Sachtouris | 'description'):
|
178 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(interm in img['properties']) |
179 | 3dabe5d2 | Stavros Sachtouris | size_max = 1000000000
|
180 | 3dabe5d2 | Stavros Sachtouris | r2 = self.client.list_public(filters=dict(size_max=size_max)) |
181 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r2) <= len(r)) |
182 | 3dabe5d2 | Stavros Sachtouris | for img in r2: |
183 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(int(img['size']) <= size_max) |
184 | 3dabe5d2 | Stavros Sachtouris | |
185 | 3dabe5d2 | Stavros Sachtouris | def test_get_meta(self): |
186 | 3dabe5d2 | Stavros Sachtouris | """Test get_meta"""
|
187 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_meta(self.imgid) |
188 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['id'], self.imgid) |
189 | 3dabe5d2 | Stavros Sachtouris | for term in ('status', |
190 | 3dabe5d2 | Stavros Sachtouris | 'name',
|
191 | 3dabe5d2 | Stavros Sachtouris | 'checksum',
|
192 | 3dabe5d2 | Stavros Sachtouris | 'updated-at',
|
193 | 3dabe5d2 | Stavros Sachtouris | 'created-at',
|
194 | 3dabe5d2 | Stavros Sachtouris | 'deleted-at',
|
195 | 3dabe5d2 | Stavros Sachtouris | 'location',
|
196 | 3dabe5d2 | Stavros Sachtouris | 'is-public',
|
197 | 3dabe5d2 | Stavros Sachtouris | 'owner',
|
198 | 3dabe5d2 | Stavros Sachtouris | 'disk-format',
|
199 | 3dabe5d2 | Stavros Sachtouris | 'size',
|
200 | 3dabe5d2 | Stavros Sachtouris | 'container-format'):
|
201 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(term in r) |
202 | 3dabe5d2 | Stavros Sachtouris | for interm in ('kernel', |
203 | 3dabe5d2 | Stavros Sachtouris | 'osfamily',
|
204 | 3dabe5d2 | Stavros Sachtouris | 'users',
|
205 | 3dabe5d2 | Stavros Sachtouris | 'gui', 'sortorder', |
206 | 3dabe5d2 | Stavros Sachtouris | 'root-partition',
|
207 | 3dabe5d2 | Stavros Sachtouris | 'os',
|
208 | 3dabe5d2 | Stavros Sachtouris | 'description'):
|
209 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(interm in r['properties']) |
210 | 3dabe5d2 | Stavros Sachtouris | |
211 | 3dabe5d2 | Stavros Sachtouris | def test_register(self): |
212 | 3dabe5d2 | Stavros Sachtouris | """Test register"""
|
213 | 3dabe5d2 | Stavros Sachtouris | self._prepare_img()
|
214 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(self._imglist) > 0) |
215 | 3dabe5d2 | Stavros Sachtouris | for img in self._imglist.values(): |
216 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(img != None) |
217 | 3dabe5d2 | Stavros Sachtouris | |
218 | 3dabe5d2 | Stavros Sachtouris | def test_set_members(self): |
219 | 3dabe5d2 | Stavros Sachtouris | """Test set_members"""
|
220 | 3dabe5d2 | Stavros Sachtouris | self._prepare_img()
|
221 | 3dabe5d2 | Stavros Sachtouris | members = ['%s@fake.net' % self.now] |
222 | 3dabe5d2 | Stavros Sachtouris | for img in self._imglist.values(): |
223 | 3dabe5d2 | Stavros Sachtouris | self.client.set_members(img['id'], members) |
224 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_members(img['id']) |
225 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r[0]['member_id'], members[0]) |
226 | 3dabe5d2 | Stavros Sachtouris | |
227 | 3dabe5d2 | Stavros Sachtouris | def test_list_members(self): |
228 | 3dabe5d2 | Stavros Sachtouris | """Test list_members"""
|
229 | 3dabe5d2 | Stavros Sachtouris | self.test_set_members()
|
230 | 3dabe5d2 | Stavros Sachtouris | |
231 | 3dabe5d2 | Stavros Sachtouris | def test_remove_members(self): |
232 | 3dabe5d2 | Stavros Sachtouris | """Test remove_members - NO CHECK"""
|
233 | 3dabe5d2 | Stavros Sachtouris | return
|
234 | 3dabe5d2 | Stavros Sachtouris | self._prepare_img()
|
235 | 3dabe5d2 | Stavros Sachtouris | members = ['%s@fake.net' % self.now, '%s_v2@fake.net' % self.now] |
236 | 3dabe5d2 | Stavros Sachtouris | for img in self._imglist.values(): |
237 | 3dabe5d2 | Stavros Sachtouris | self.client.set_members(img['id'], members) |
238 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_members(img['id']) |
239 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r) > 1) |
240 | 3dabe5d2 | Stavros Sachtouris | self.client.remove_member(img['id'], members[0]) |
241 | 3dabe5d2 | Stavros Sachtouris | r0 = self.client.list_members(img['id']) |
242 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(len(r), 1 + len(r0)) |
243 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r0[0]['member_id'], members[1]) |
244 | 3dabe5d2 | Stavros Sachtouris | |
245 | 3dabe5d2 | Stavros Sachtouris | def test_list_shared(self): |
246 | 3dabe5d2 | Stavros Sachtouris | """Test list_shared - NOT CHECKED"""
|
247 | 3dabe5d2 | Stavros Sachtouris | #No way to test this, if I dont have member images
|
248 | 3dabe5d2 | Stavros Sachtouris | pass
|
249 | 3dabe5d2 | Stavros Sachtouris | |
250 | adb1dde9 | Stavros Sachtouris | |
251 | 1bb4d14d | Stavros Sachtouris | class testCyclades(unittest.TestCase): |
252 | 3dabe5d2 | Stavros Sachtouris | """Set up a Cyclades thorough test"""
|
253 | 3dabe5d2 | Stavros Sachtouris | def setUp(self): |
254 | 3dabe5d2 | Stavros Sachtouris | """okeanos"""
|
255 | 3dabe5d2 | Stavros Sachtouris | url = 'https://cyclades.okeanos.grnet.gr/api/v1.1'
|
256 | 3dabe5d2 | Stavros Sachtouris | global token
|
257 | 3dabe5d2 | Stavros Sachtouris | global global_username
|
258 | 3dabe5d2 | Stavros Sachtouris | self.img = 'b2dffe52-64a4-48c3-8a4c-8214cc3165cf' |
259 | 3dabe5d2 | Stavros Sachtouris | self.img_details = {
|
260 | 3dabe5d2 | Stavros Sachtouris | u'status': u'ACTIVE', |
261 | ca30409e | Stavros Sachtouris | u'updated': u'2012-11-19T13:52:16+00:00', |
262 | 3dabe5d2 | Stavros Sachtouris | u'name': u'Debian Base', |
263 | 3dabe5d2 | Stavros Sachtouris | u'created': u'2012-10-16T09:03:12+00:00', |
264 | 3dabe5d2 | Stavros Sachtouris | u'progress': 100, |
265 | 3dabe5d2 | Stavros Sachtouris | u'id': 'b2dffe52-64a4-48c3-8a4c-8214cc3165cf', |
266 | 3dabe5d2 | Stavros Sachtouris | u'metadata': {
|
267 | 3dabe5d2 | Stavros Sachtouris | u'values': {
|
268 | 3dabe5d2 | Stavros Sachtouris | u'kernel': u'2.6.32', |
269 | 3dabe5d2 | Stavros Sachtouris | u'osfamily': u'linux', |
270 | 3dabe5d2 | Stavros Sachtouris | u'users': u'root', |
271 | 3dabe5d2 | Stavros Sachtouris | u'gui': u'No GUI', |
272 | 3dabe5d2 | Stavros Sachtouris | u'sortorder': u'1', |
273 | 3dabe5d2 | Stavros Sachtouris | u'os': u'debian', |
274 | 3dabe5d2 | Stavros Sachtouris | u'root_partition': u'1', |
275 | ca30409e | Stavros Sachtouris | u'description': u'Debian 6.0.6 (Squeeze) Base System'} |
276 | 3dabe5d2 | Stavros Sachtouris | } |
277 | 3dabe5d2 | Stavros Sachtouris | } |
278 | 3dabe5d2 | Stavros Sachtouris | self.flavor_details = {u'name': u'C1R1024D20', |
279 | 3dabe5d2 | Stavros Sachtouris | u'ram': 1024, |
280 | 3dabe5d2 | Stavros Sachtouris | u'id': 1, |
281 | 3dabe5d2 | Stavros Sachtouris | u'SNF:disk_template': u'drbd', |
282 | 3dabe5d2 | Stavros Sachtouris | u'disk': 20, |
283 | 3dabe5d2 | Stavros Sachtouris | u'cpu': 1} |
284 | 3dabe5d2 | Stavros Sachtouris | self.PROFILES = ('ENABLED', 'DISABLED', 'PROTECTED') |
285 | 3dabe5d2 | Stavros Sachtouris | |
286 | 3dabe5d2 | Stavros Sachtouris | """okeanos.io"""
|
287 | 3dabe5d2 | Stavros Sachtouris | #url = 'https://cyclades.okeanos.io/api/v1.1'
|
288 | 3dabe5d2 | Stavros Sachtouris | #global token
|
289 | 3dabe5d2 | Stavros Sachtouris | #self.img = '43cc8497-61c3-4c46-ae8d-3e33861f8527'
|
290 | 3dabe5d2 | Stavros Sachtouris | #self.img_details= {
|
291 | 3dabe5d2 | Stavros Sachtouris | # u'status': u'ACTIVE',
|
292 | 3dabe5d2 | Stavros Sachtouris | # u'updated': u'2012-08-21T12:57:39+00:00',
|
293 | 3dabe5d2 | Stavros Sachtouris | # u'name': u'Debian Base',
|
294 | 3dabe5d2 | Stavros Sachtouris | # u'created': u'2012-08-21T12:56:53+00:00',
|
295 | 3dabe5d2 | Stavros Sachtouris | # u'progress': 100,
|
296 | 3dabe5d2 | Stavros Sachtouris | # u'id': u'43cc8497-61c3-4c46-ae8d-3e33861f8527',
|
297 | 3dabe5d2 | Stavros Sachtouris | # u'metadata': {
|
298 | 3dabe5d2 | Stavros Sachtouris | # u'values': {
|
299 | 3dabe5d2 | Stavros Sachtouris | # u'kernel': u'2.6.32',
|
300 | 3dabe5d2 | Stavros Sachtouris | # u'osfamily': u'linux',
|
301 | 3dabe5d2 | Stavros Sachtouris | # u'users': u'root',
|
302 | 3dabe5d2 | Stavros Sachtouris | # u'gui': u'No GUI',
|
303 | 3dabe5d2 | Stavros Sachtouris | # u'sortorder': u'1',
|
304 | 3dabe5d2 | Stavros Sachtouris | # u'os': u'debian',
|
305 | 3dabe5d2 | Stavros Sachtouris | # u'root_partition':
|
306 | 3dabe5d2 | Stavros Sachtouris | # u'1', u'description':
|
307 | 3dabe5d2 | Stavros Sachtouris | # u'Debian Squeeze Base System'}
|
308 | 3dabe5d2 | Stavros Sachtouris | # }
|
309 | 3dabe5d2 | Stavros Sachtouris | # }
|
310 | 3dabe5d2 | Stavros Sachtouris | #flavorid = 1
|
311 | 3dabe5d2 | Stavros Sachtouris | |
312 | 3dabe5d2 | Stavros Sachtouris | self.servers = {}
|
313 | 3dabe5d2 | Stavros Sachtouris | self.now = time.mktime(time.gmtime())
|
314 | 3dabe5d2 | Stavros Sachtouris | self.servname1 = 'serv' + unicode(self.now) |
315 | 3dabe5d2 | Stavros Sachtouris | self.servname2 = self.servname1 + '_v2' |
316 | 3dabe5d2 | Stavros Sachtouris | self.flavorid = 1 |
317 | 3dabe5d2 | Stavros Sachtouris | #servers have to be created at the begining...
|
318 | 3dabe5d2 | Stavros Sachtouris | self.networks = {}
|
319 | 3dabe5d2 | Stavros Sachtouris | self.netname1 = 'net' + unicode(self.now) |
320 | 3dabe5d2 | Stavros Sachtouris | self.netname2 = 'net' + unicode(self.now) + '_v2' |
321 | 3dabe5d2 | Stavros Sachtouris | |
322 | 3dabe5d2 | Stavros Sachtouris | self.client = cyclades(url, token)
|
323 | 3dabe5d2 | Stavros Sachtouris | pass
|
324 | 3dabe5d2 | Stavros Sachtouris | |
325 | 3dabe5d2 | Stavros Sachtouris | def tearDown(self): |
326 | 3dabe5d2 | Stavros Sachtouris | """Destoy servers used in testing"""
|
327 | 3dabe5d2 | Stavros Sachtouris | print
|
328 | 3dabe5d2 | Stavros Sachtouris | for netid in self.networks.keys(): |
329 | 3dabe5d2 | Stavros Sachtouris | self._delete_network(netid)
|
330 | 3dabe5d2 | Stavros Sachtouris | if 0 >= len(self.servers): |
331 | 3dabe5d2 | Stavros Sachtouris | return
|
332 | 3dabe5d2 | Stavros Sachtouris | there_are_servers_running = True
|
333 | 3dabe5d2 | Stavros Sachtouris | deleted_servers = {} |
334 | 3dabe5d2 | Stavros Sachtouris | waitime = 0
|
335 | 3dabe5d2 | Stavros Sachtouris | print('-> Found %s servers to delete' % len(self.servers)) |
336 | 3dabe5d2 | Stavros Sachtouris | while there_are_servers_running:
|
337 | 3dabe5d2 | Stavros Sachtouris | there_are_servers_running = False
|
338 | 3dabe5d2 | Stavros Sachtouris | if waitime > 0: |
339 | 3dabe5d2 | Stavros Sachtouris | c = ['|', '/', '-', '\\'] |
340 | 3dabe5d2 | Stavros Sachtouris | suffix = ''
|
341 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\t. . . wait %s seconds: ' % waitime)
|
342 | 3dabe5d2 | Stavros Sachtouris | for i in range(4 * waitime): |
343 | 3dabe5d2 | Stavros Sachtouris | oldlen = len(suffix)
|
344 | 3dabe5d2 | Stavros Sachtouris | suffix = '%ss %s' % (i / 4, c[i % 4]) |
345 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(oldlen * '\b' + suffix)
|
346 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.flush() |
347 | 3dabe5d2 | Stavros Sachtouris | time.sleep(0.25)
|
348 | 3dabe5d2 | Stavros Sachtouris | oldlen = len(': ' + suffix) |
349 | 3dabe5d2 | Stavros Sachtouris | print(oldlen * '\b' + oldlen * ' ') |
350 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.flush() |
351 | 3dabe5d2 | Stavros Sachtouris | waitime += 3
|
352 | 3dabe5d2 | Stavros Sachtouris | dservers = self.client.list_servers(detail=True) |
353 | 3dabe5d2 | Stavros Sachtouris | for server in dservers: |
354 | 3dabe5d2 | Stavros Sachtouris | if server['name'] in self.servers.keys(): |
355 | 3dabe5d2 | Stavros Sachtouris | there_are_servers_running = True
|
356 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\t%s status:%s '\
|
357 | 3dabe5d2 | Stavros Sachtouris | % (server['name'], server['status'])) |
358 | 3dabe5d2 | Stavros Sachtouris | if server['status'] == 'BUILD': |
359 | 3dabe5d2 | Stavros Sachtouris | print('\twait...')
|
360 | 3dabe5d2 | Stavros Sachtouris | else:
|
361 | 3dabe5d2 | Stavros Sachtouris | print('\tDELETE %s' % server['name']) |
362 | 3dabe5d2 | Stavros Sachtouris | self._delete_server(server['id']) |
363 | 3dabe5d2 | Stavros Sachtouris | self.servers.pop(server['name']) |
364 | 3dabe5d2 | Stavros Sachtouris | deleted_servers[server['name']] = 0 |
365 | 3dabe5d2 | Stavros Sachtouris | waitime = 0
|
366 | 3dabe5d2 | Stavros Sachtouris | elif server['name'] in deleted_servers.keys(): |
367 | 3dabe5d2 | Stavros Sachtouris | there_are_servers_running = True
|
368 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\t%s status:%s '\
|
369 | 3dabe5d2 | Stavros Sachtouris | % (server['name'], server['status'])) |
370 | 3dabe5d2 | Stavros Sachtouris | retries = deleted_servers[server['name']]
|
371 | 3dabe5d2 | Stavros Sachtouris | if retries > 10: |
372 | 3dabe5d2 | Stavros Sachtouris | print('\tretry DELETE %s'\
|
373 | 3dabe5d2 | Stavros Sachtouris | % server['name'])
|
374 | 3dabe5d2 | Stavros Sachtouris | self._delete_server(server['id']) |
375 | 3dabe5d2 | Stavros Sachtouris | retries = 0
|
376 | 3dabe5d2 | Stavros Sachtouris | waitime = 0
|
377 | 3dabe5d2 | Stavros Sachtouris | else:
|
378 | 3dabe5d2 | Stavros Sachtouris | print('\tnot deleted yet ...')
|
379 | 3dabe5d2 | Stavros Sachtouris | deleted_servers[server['name']] = retries + 1 |
380 | 3dabe5d2 | Stavros Sachtouris | |
381 | 3dabe5d2 | Stavros Sachtouris | def _create_server(self, servername, flavorid, imageid, personality=None): |
382 | 3dabe5d2 | Stavros Sachtouris | server = self.client.create_server(servername,
|
383 | 3dabe5d2 | Stavros Sachtouris | flavorid, |
384 | 3dabe5d2 | Stavros Sachtouris | imageid, |
385 | 3dabe5d2 | Stavros Sachtouris | personality) |
386 | 3dabe5d2 | Stavros Sachtouris | self.servers[servername] = server
|
387 | 3dabe5d2 | Stavros Sachtouris | return server
|
388 | 3dabe5d2 | Stavros Sachtouris | |
389 | 3dabe5d2 | Stavros Sachtouris | def _delete_server(self, servid): |
390 | 3dabe5d2 | Stavros Sachtouris | self.client.delete_server(servid)
|
391 | 3dabe5d2 | Stavros Sachtouris | |
392 | 3dabe5d2 | Stavros Sachtouris | def _create_network(self, netname, **kwargs): |
393 | 3dabe5d2 | Stavros Sachtouris | net = self.client.create_network(netname, **kwargs)
|
394 | 3dabe5d2 | Stavros Sachtouris | self.networks[net['id']] = net |
395 | 3dabe5d2 | Stavros Sachtouris | return net
|
396 | 3dabe5d2 | Stavros Sachtouris | |
397 | 3dabe5d2 | Stavros Sachtouris | def _delete_network(self, netid): |
398 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\tDelete network %s ' % netid)
|
399 | 3dabe5d2 | Stavros Sachtouris | self.client.disconnect_network_nics(netid)
|
400 | 3dabe5d2 | Stavros Sachtouris | wait = 3
|
401 | 3dabe5d2 | Stavros Sachtouris | while True: |
402 | 3dabe5d2 | Stavros Sachtouris | try:
|
403 | 3dabe5d2 | Stavros Sachtouris | self.client.delete_network(netid)
|
404 | 3dabe5d2 | Stavros Sachtouris | print('\n\tSUCCESFULL COMMIT delete network %s' % netid)
|
405 | 3dabe5d2 | Stavros Sachtouris | break
|
406 | 3dabe5d2 | Stavros Sachtouris | except ClientError as err: |
407 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(err.status, 421) |
408 | 3dabe5d2 | Stavros Sachtouris | time.sleep(wait) |
409 | 3dabe5d2 | Stavros Sachtouris | wait += 3
|
410 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('.')
|
411 | 3dabe5d2 | Stavros Sachtouris | |
412 | 3dabe5d2 | Stavros Sachtouris | def if_not_all(foo): |
413 | 3dabe5d2 | Stavros Sachtouris | global TEST_ALL
|
414 | 3dabe5d2 | Stavros Sachtouris | if TEST_ALL:
|
415 | 3dabe5d2 | Stavros Sachtouris | return None |
416 | 3dabe5d2 | Stavros Sachtouris | return foo
|
417 | 3dabe5d2 | Stavros Sachtouris | |
418 | 3dabe5d2 | Stavros Sachtouris | def assert_dicts_are_deeply_equal(self, d1, d2): |
419 | 3dabe5d2 | Stavros Sachtouris | for k, v in d1.items(): |
420 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(k in d2) |
421 | 3dabe5d2 | Stavros Sachtouris | if isinstance(v, dict): |
422 | 3dabe5d2 | Stavros Sachtouris | self.assert_dicts_are_deeply_equal(v, d2[k])
|
423 | 3dabe5d2 | Stavros Sachtouris | else:
|
424 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(unicode(v), unicode(d2[k])) |
425 | 3dabe5d2 | Stavros Sachtouris | |
426 | 3dabe5d2 | Stavros Sachtouris | def test_000(self): |
427 | 3dabe5d2 | Stavros Sachtouris | "Prepare a full Cyclades test scenario"
|
428 | 3dabe5d2 | Stavros Sachtouris | global TEST_ALL
|
429 | 3dabe5d2 | Stavros Sachtouris | TEST_ALL = True
|
430 | 3dabe5d2 | Stavros Sachtouris | |
431 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
432 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
433 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
434 | 3dabe5d2 | Stavros Sachtouris | self.server2 = self._create_server(self.servname2, |
435 | 3dabe5d2 | Stavros Sachtouris | self.flavorid + 2, |
436 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
437 | 3dabe5d2 | Stavros Sachtouris | |
438 | 3dabe5d2 | Stavros Sachtouris | print('testing')
|
439 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test create server')
|
440 | 3dabe5d2 | Stavros Sachtouris | self._test_create_server()
|
441 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
442 | 3dabe5d2 | Stavros Sachtouris | |
443 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test list servers')
|
444 | 3dabe5d2 | Stavros Sachtouris | self._test_list_servers()
|
445 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
446 | 3dabe5d2 | Stavros Sachtouris | |
447 | 3dabe5d2 | Stavros Sachtouris | print('- wait for test servers to build')
|
448 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'BUILD') |
449 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server2['id'], 'BUILD') |
450 | 3dabe5d2 | Stavros Sachtouris | print('- ok')
|
451 | 3dabe5d2 | Stavros Sachtouris | |
452 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test get server details')
|
453 | 3dabe5d2 | Stavros Sachtouris | self._test_get_server_details()
|
454 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
455 | 3dabe5d2 | Stavros Sachtouris | |
456 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test get image details')
|
457 | 3dabe5d2 | Stavros Sachtouris | self._test_get_image_details()
|
458 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
459 | 3dabe5d2 | Stavros Sachtouris | |
460 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test update_server_name')
|
461 | 3dabe5d2 | Stavros Sachtouris | self._test_update_server_name()
|
462 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
463 | 3dabe5d2 | Stavros Sachtouris | |
464 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test reboot_server')
|
465 | 3dabe5d2 | Stavros Sachtouris | self._test_reboot_server()
|
466 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
467 | 3dabe5d2 | Stavros Sachtouris | |
468 | 3dabe5d2 | Stavros Sachtouris | print('- wait for test servers to boot')
|
469 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'REBOOT') |
470 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server2['id'], 'REBOOT') |
471 | 3dabe5d2 | Stavros Sachtouris | print('- ok')
|
472 | 3dabe5d2 | Stavros Sachtouris | |
473 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test create_server_metadata')
|
474 | 3dabe5d2 | Stavros Sachtouris | self._test_create_server_metadata()
|
475 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
476 | 3dabe5d2 | Stavros Sachtouris | |
477 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test get_server_metadata')
|
478 | 3dabe5d2 | Stavros Sachtouris | self._test_get_server_metadata()
|
479 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
480 | 3dabe5d2 | Stavros Sachtouris | |
481 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test update_server_metadata')
|
482 | 3dabe5d2 | Stavros Sachtouris | self._test_update_server_metadata()
|
483 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
484 | 3dabe5d2 | Stavros Sachtouris | |
485 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test delete_server_metadata')
|
486 | 3dabe5d2 | Stavros Sachtouris | self._test_delete_server_metadata()
|
487 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
488 | 3dabe5d2 | Stavros Sachtouris | |
489 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test list_flavors')
|
490 | 3dabe5d2 | Stavros Sachtouris | self._test_list_flavors()
|
491 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
492 | 3dabe5d2 | Stavros Sachtouris | |
493 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test get_flavor_details')
|
494 | 3dabe5d2 | Stavros Sachtouris | self._test_get_flavor_details()
|
495 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
496 | 3dabe5d2 | Stavros Sachtouris | |
497 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test list_images')
|
498 | 3dabe5d2 | Stavros Sachtouris | self._test_list_images()
|
499 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
500 | 3dabe5d2 | Stavros Sachtouris | |
501 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test get_image_details')
|
502 | 3dabe5d2 | Stavros Sachtouris | self._test_get_image_details()
|
503 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
504 | 3dabe5d2 | Stavros Sachtouris | |
505 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test get_image_metadata')
|
506 | 3dabe5d2 | Stavros Sachtouris | self._test_get_image_metadata()
|
507 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
508 | 3dabe5d2 | Stavros Sachtouris | |
509 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test shutdown_server')
|
510 | 3dabe5d2 | Stavros Sachtouris | self._test_shutdown_server()
|
511 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
512 | 3dabe5d2 | Stavros Sachtouris | |
513 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test start_server')
|
514 | 3dabe5d2 | Stavros Sachtouris | self._test_start_server()
|
515 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
516 | 3dabe5d2 | Stavros Sachtouris | |
517 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test get_server_console')
|
518 | 3dabe5d2 | Stavros Sachtouris | self._test_get_server_console()
|
519 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
520 | 3dabe5d2 | Stavros Sachtouris | |
521 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test get_firewall_profile')
|
522 | 3dabe5d2 | Stavros Sachtouris | self._test_get_firewall_profile()
|
523 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
524 | 3dabe5d2 | Stavros Sachtouris | |
525 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test set_firewall_profile')
|
526 | 3dabe5d2 | Stavros Sachtouris | self._test_set_firewall_profile()
|
527 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
528 | 3dabe5d2 | Stavros Sachtouris | |
529 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test get_server_stats')
|
530 | 3dabe5d2 | Stavros Sachtouris | self._test_get_server_stats()
|
531 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
532 | 3dabe5d2 | Stavros Sachtouris | |
533 | 3dabe5d2 | Stavros Sachtouris | self.network1 = self._create_network(self.netname1) |
534 | 3dabe5d2 | Stavros Sachtouris | |
535 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test create_network')
|
536 | 3dabe5d2 | Stavros Sachtouris | self._test_create_network()
|
537 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
538 | 3dabe5d2 | Stavros Sachtouris | |
539 | 7d91734c | Stavros Sachtouris | print('- wait for network to be activated')
|
540 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_network(self.network1['id'], 'ACTIVE') |
541 | 3dabe5d2 | Stavros Sachtouris | print('- ok')
|
542 | 3dabe5d2 | Stavros Sachtouris | |
543 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test connect_server')
|
544 | 3dabe5d2 | Stavros Sachtouris | self._test_connect_server()
|
545 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
546 | 3dabe5d2 | Stavros Sachtouris | |
547 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test disconnect_server')
|
548 | 3dabe5d2 | Stavros Sachtouris | self._test_disconnect_server()
|
549 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
550 | 3dabe5d2 | Stavros Sachtouris | |
551 | 3dabe5d2 | Stavros Sachtouris | self.network2 = self._create_network(self.netname2) |
552 | 7d91734c | Stavros Sachtouris | print('- wait for network to be activated')
|
553 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_network(self.network2['id'], 'ACTIVE') |
554 | 3dabe5d2 | Stavros Sachtouris | print('- ok')
|
555 | 3dabe5d2 | Stavros Sachtouris | |
556 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test list_server_nics')
|
557 | 3dabe5d2 | Stavros Sachtouris | self._test_list_server_nics()
|
558 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
559 | 3dabe5d2 | Stavros Sachtouris | |
560 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test list_networks')
|
561 | 3dabe5d2 | Stavros Sachtouris | self._test_list_networks()
|
562 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
563 | 3dabe5d2 | Stavros Sachtouris | |
564 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test get_network_details')
|
565 | 3dabe5d2 | Stavros Sachtouris | self._test_get_network_details()
|
566 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
567 | 3dabe5d2 | Stavros Sachtouris | |
568 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test update_network_name')
|
569 | 3dabe5d2 | Stavros Sachtouris | self._test_update_network_name()
|
570 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
571 | 3dabe5d2 | Stavros Sachtouris | |
572 | 3dabe5d2 | Stavros Sachtouris | """Don't have auth for these:
|
573 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test delete_image')
|
574 | 3dabe5d2 | Stavros Sachtouris | self._test_delete_image()
|
575 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
576 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test create_image_metadata')
|
577 | 3dabe5d2 | Stavros Sachtouris | self._test_create_image_metadata()
|
578 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
579 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test update_image_metadata')
|
580 | 3dabe5d2 | Stavros Sachtouris | self._test_update_image_metadata()
|
581 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
582 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write(' test delete_image_metadata')
|
583 | 3dabe5d2 | Stavros Sachtouris | self._test_delete_image_metadata()
|
584 | 3dabe5d2 | Stavros Sachtouris | print('...ok')
|
585 | 3dabe5d2 | Stavros Sachtouris | """
|
586 | 3dabe5d2 | Stavros Sachtouris | |
587 | ca30409e | Stavros Sachtouris | @if_not_all
|
588 | ca30409e | Stavros Sachtouris | def test_parallel_creation(self): |
589 | ca30409e | Stavros Sachtouris | """test create with multiple threads"""
|
590 | ca30409e | Stavros Sachtouris | from kamaki.clients import SilentEvent |
591 | ca30409e | Stavros Sachtouris | c1 = SilentEvent(self._create_server,
|
592 | ca30409e | Stavros Sachtouris | self.servname1,
|
593 | ca30409e | Stavros Sachtouris | self.flavorid,
|
594 | ca30409e | Stavros Sachtouris | self.img)
|
595 | ca30409e | Stavros Sachtouris | c2 = SilentEvent(self._create_server,
|
596 | ca30409e | Stavros Sachtouris | self.servname2,
|
597 | ca30409e | Stavros Sachtouris | self.flavorid + 2, |
598 | ca30409e | Stavros Sachtouris | self.img)
|
599 | ca30409e | Stavros Sachtouris | c3 = SilentEvent(self._create_server,
|
600 | ca30409e | Stavros Sachtouris | self.servname1,
|
601 | ca30409e | Stavros Sachtouris | self.flavorid,
|
602 | ca30409e | Stavros Sachtouris | self.img)
|
603 | ca30409e | Stavros Sachtouris | c4 = SilentEvent(self._create_server,
|
604 | ca30409e | Stavros Sachtouris | self.servname2,
|
605 | ca30409e | Stavros Sachtouris | self.flavorid + 2, |
606 | ca30409e | Stavros Sachtouris | self.img)
|
607 | ca30409e | Stavros Sachtouris | c5 = SilentEvent(self._create_server,
|
608 | ca30409e | Stavros Sachtouris | self.servname1,
|
609 | ca30409e | Stavros Sachtouris | self.flavorid,
|
610 | ca30409e | Stavros Sachtouris | self.img)
|
611 | ca30409e | Stavros Sachtouris | c6 = SilentEvent(self._create_server,
|
612 | ca30409e | Stavros Sachtouris | self.servname2,
|
613 | ca30409e | Stavros Sachtouris | self.flavorid + 2, |
614 | ca30409e | Stavros Sachtouris | self.img)
|
615 | ca30409e | Stavros Sachtouris | c7 = SilentEvent(self._create_server,
|
616 | ca30409e | Stavros Sachtouris | self.servname1,
|
617 | ca30409e | Stavros Sachtouris | self.flavorid,
|
618 | ca30409e | Stavros Sachtouris | self.img)
|
619 | ca30409e | Stavros Sachtouris | c8 = SilentEvent(self._create_server,
|
620 | ca30409e | Stavros Sachtouris | self.servname2,
|
621 | ca30409e | Stavros Sachtouris | self.flavorid + 2, |
622 | ca30409e | Stavros Sachtouris | self.img)
|
623 | ca30409e | Stavros Sachtouris | c1.start() |
624 | ca30409e | Stavros Sachtouris | c2.start() |
625 | ca30409e | Stavros Sachtouris | c3.start() |
626 | ca30409e | Stavros Sachtouris | c4.start() |
627 | ca30409e | Stavros Sachtouris | c5.start() |
628 | ca30409e | Stavros Sachtouris | c6.start() |
629 | ca30409e | Stavros Sachtouris | c7.start() |
630 | ca30409e | Stavros Sachtouris | c8.start() |
631 | ca30409e | Stavros Sachtouris | |
632 | 3dabe5d2 | Stavros Sachtouris | def _wait_for_network(self, netid, status): |
633 | 3dabe5d2 | Stavros Sachtouris | wait = 3
|
634 | 3dabe5d2 | Stavros Sachtouris | limit = 50
|
635 | 3dabe5d2 | Stavros Sachtouris | c = ['|', '/', '-', '\\'] |
636 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\t- make net %s %s ' % (netid, status))
|
637 | 3dabe5d2 | Stavros Sachtouris | while wait < limit:
|
638 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_network_details(netid)
|
639 | 3dabe5d2 | Stavros Sachtouris | if r['status'] == status: |
640 | 3dabe5d2 | Stavros Sachtouris | print('\tOK')
|
641 | 3dabe5d2 | Stavros Sachtouris | return True |
642 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\tit is now %s, wait %ss '\
|
643 | 3dabe5d2 | Stavros Sachtouris | % (r['status'], wait))
|
644 | 3dabe5d2 | Stavros Sachtouris | for i in range(wait * 4): |
645 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\b%s' % c[i % 4]) |
646 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.flush() |
647 | 3dabe5d2 | Stavros Sachtouris | time.sleep(0.25)
|
648 | 3dabe5d2 | Stavros Sachtouris | print('\b ')
|
649 | 3dabe5d2 | Stavros Sachtouris | wait += 3
|
650 | 3dabe5d2 | Stavros Sachtouris | return False |
651 | 3dabe5d2 | Stavros Sachtouris | |
652 | 3dabe5d2 | Stavros Sachtouris | def _wait_for_nic(self, netid, servid, in_creation=True): |
653 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_network(netid, 'ACTIVE') |
654 | 3dabe5d2 | Stavros Sachtouris | c = ['|', '/', '-', '\\'] |
655 | 3dabe5d2 | Stavros Sachtouris | limit = 50
|
656 | 3dabe5d2 | Stavros Sachtouris | wait = 3
|
657 | 3dabe5d2 | Stavros Sachtouris | largetry = 0
|
658 | 3dabe5d2 | Stavros Sachtouris | while wait < limit:
|
659 | 3dabe5d2 | Stavros Sachtouris | nics = self.client.list_server_nics(servid)
|
660 | 3dabe5d2 | Stavros Sachtouris | for net in nics: |
661 | 3dabe5d2 | Stavros Sachtouris | found_nic = net['network_id'] == netid
|
662 | 3dabe5d2 | Stavros Sachtouris | if (in_creation and found_nic)\ |
663 | 3dabe5d2 | Stavros Sachtouris | or not (in_creation or found_nic): |
664 | 3dabe5d2 | Stavros Sachtouris | return True |
665 | 3dabe5d2 | Stavros Sachtouris | dis = '' if in_creation else 'dis' |
666 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\twait nic %s to %sconnect to %s: %ss '\
|
667 | 3dabe5d2 | Stavros Sachtouris | % (netid, dis, servid, wait)) |
668 | 3dabe5d2 | Stavros Sachtouris | for i in range(wait * 4): |
669 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\b%s' % c[i % 4]) |
670 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.flush() |
671 | 3dabe5d2 | Stavros Sachtouris | time.sleep(0.25)
|
672 | 3dabe5d2 | Stavros Sachtouris | print('\b ')
|
673 | 3dabe5d2 | Stavros Sachtouris | wait += 3
|
674 | 3dabe5d2 | Stavros Sachtouris | if wait >= limit and largetry < 3: |
675 | 3dabe5d2 | Stavros Sachtouris | wait = 3
|
676 | 3dabe5d2 | Stavros Sachtouris | largetry += 1
|
677 | 3dabe5d2 | Stavros Sachtouris | return False |
678 | 3dabe5d2 | Stavros Sachtouris | |
679 | 3dabe5d2 | Stavros Sachtouris | def _has_status(self, servid, status): |
680 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_server_details(servid)
|
681 | 3dabe5d2 | Stavros Sachtouris | return r['status'] == status |
682 | 3dabe5d2 | Stavros Sachtouris | |
683 | 3dabe5d2 | Stavros Sachtouris | def _wait_for_status(self, servid, status): |
684 | ca30409e | Stavros Sachtouris | wait_bar = IncrementalBar('\tServer[%s] in %s ' % (servid, status))
|
685 | ca30409e | Stavros Sachtouris | wait_bar.start() |
686 | ca30409e | Stavros Sachtouris | |
687 | ca30409e | Stavros Sachtouris | def progress_gen(n): |
688 | ca30409e | Stavros Sachtouris | for i in wait_bar.iter(range(int(n))): |
689 | ca30409e | Stavros Sachtouris | yield
|
690 | ca30409e | Stavros Sachtouris | yield
|
691 | ca30409e | Stavros Sachtouris | |
692 | ca30409e | Stavros Sachtouris | self.client.wait_server(servid, status, wait_cb=progress_gen)
|
693 | ca30409e | Stavros Sachtouris | wait_bar.finish() |
694 | 3dabe5d2 | Stavros Sachtouris | |
695 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
696 | 3dabe5d2 | Stavros Sachtouris | def test_list_servers(self): |
697 | 3dabe5d2 | Stavros Sachtouris | """Test list servers"""
|
698 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
699 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
700 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
701 | 3dabe5d2 | Stavros Sachtouris | self.server2 = self._create_server(self.servname2, |
702 | 3dabe5d2 | Stavros Sachtouris | self.flavorid + 1, |
703 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
704 | 3dabe5d2 | Stavros Sachtouris | self._test_list_servers()
|
705 | 3dabe5d2 | Stavros Sachtouris | |
706 | 3dabe5d2 | Stavros Sachtouris | def _test_list_servers(self): |
707 | 3dabe5d2 | Stavros Sachtouris | servers = self.client.list_servers()
|
708 | 3dabe5d2 | Stavros Sachtouris | dservers = self.client.list_servers(detail=True) |
709 | 3dabe5d2 | Stavros Sachtouris | |
710 | 3dabe5d2 | Stavros Sachtouris | """detailed and simple are same size"""
|
711 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(len(dservers), len(servers)) |
712 | 3dabe5d2 | Stavros Sachtouris | for i in range(len(servers)): |
713 | 3dabe5d2 | Stavros Sachtouris | for field in ('created', |
714 | 3dabe5d2 | Stavros Sachtouris | 'flavorRef',
|
715 | 3dabe5d2 | Stavros Sachtouris | 'hostId',
|
716 | 3dabe5d2 | Stavros Sachtouris | 'imageRef',
|
717 | 3dabe5d2 | Stavros Sachtouris | 'progress',
|
718 | 3dabe5d2 | Stavros Sachtouris | 'status',
|
719 | 3dabe5d2 | Stavros Sachtouris | 'updated'):
|
720 | 3dabe5d2 | Stavros Sachtouris | self.assertFalse(field in servers[i]) |
721 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(field in dservers[i]) |
722 | 3dabe5d2 | Stavros Sachtouris | |
723 | 3dabe5d2 | Stavros Sachtouris | """detailed and simple contain same names"""
|
724 | 3dabe5d2 | Stavros Sachtouris | names = sorted(map(lambda x: x["name"], servers)) |
725 | 3dabe5d2 | Stavros Sachtouris | dnames = sorted(map(lambda x: x["name"], dservers)) |
726 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(names, dnames)
|
727 | 3dabe5d2 | Stavros Sachtouris | |
728 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
729 | 3dabe5d2 | Stavros Sachtouris | def test_create_server(self): |
730 | 3dabe5d2 | Stavros Sachtouris | """Test create_server"""
|
731 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
732 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
733 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
734 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'BUILD') |
735 | 3dabe5d2 | Stavros Sachtouris | self._test_create_server()
|
736 | 3dabe5d2 | Stavros Sachtouris | |
737 | 3dabe5d2 | Stavros Sachtouris | def _test_create_server(self): |
738 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(self.server1["name"], self.servname1) |
739 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(self.server1["flavorRef"], self.flavorid) |
740 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(self.server1["imageRef"], self.img) |
741 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(self.server1["status"], "BUILD") |
742 | 3dabe5d2 | Stavros Sachtouris | |
743 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
744 | 3dabe5d2 | Stavros Sachtouris | def test_get_server_details(self): |
745 | 3dabe5d2 | Stavros Sachtouris | """Test get_server_details"""
|
746 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
747 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
748 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
749 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'BUILD') |
750 | 3dabe5d2 | Stavros Sachtouris | self._test_get_server_details()
|
751 | 3dabe5d2 | Stavros Sachtouris | |
752 | 3dabe5d2 | Stavros Sachtouris | def _test_get_server_details(self): |
753 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_server_details(self.server1['id']) |
754 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r["name"], self.servname1) |
755 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r["flavorRef"], self.flavorid) |
756 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r["imageRef"], self.img) |
757 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r["status"], "ACTIVE") |
758 | 3dabe5d2 | Stavros Sachtouris | |
759 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
760 | 3dabe5d2 | Stavros Sachtouris | def test_update_server_name(self): |
761 | 3dabe5d2 | Stavros Sachtouris | """Test update_server_name"""
|
762 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
763 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
764 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
765 | 3dabe5d2 | Stavros Sachtouris | self._test_update_server_name()
|
766 | 3dabe5d2 | Stavros Sachtouris | |
767 | 3dabe5d2 | Stavros Sachtouris | def _test_update_server_name(self): |
768 | 3dabe5d2 | Stavros Sachtouris | new_name = self.servname1 + '_new_name' |
769 | 3dabe5d2 | Stavros Sachtouris | self.client.update_server_name(self.server1['id'], new_name) |
770 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_server_details(self.server1['id'], |
771 | 3dabe5d2 | Stavros Sachtouris | success=(200, 400)) |
772 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['name'], new_name) |
773 | 3dabe5d2 | Stavros Sachtouris | changed = self.servers.pop(self.servname1) |
774 | 3dabe5d2 | Stavros Sachtouris | changed['name'] = new_name
|
775 | 3dabe5d2 | Stavros Sachtouris | self.servers[new_name] = changed
|
776 | 3dabe5d2 | Stavros Sachtouris | |
777 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
778 | 3dabe5d2 | Stavros Sachtouris | def test_reboot_server(self): |
779 | 3dabe5d2 | Stavros Sachtouris | """Test reboot server"""
|
780 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
781 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
782 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
783 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'BUILD') |
784 | 3dabe5d2 | Stavros Sachtouris | self.server2 = self._create_server(self.servname2, |
785 | 3dabe5d2 | Stavros Sachtouris | self.flavorid + 1, |
786 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
787 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server2['id'], 'BUILD') |
788 | 3dabe5d2 | Stavros Sachtouris | self._test_reboot_server()
|
789 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'REBOOT') |
790 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server2['id'], 'REBOOT') |
791 | 3dabe5d2 | Stavros Sachtouris | |
792 | 3dabe5d2 | Stavros Sachtouris | def _test_reboot_server(self): |
793 | 3dabe5d2 | Stavros Sachtouris | self.client.reboot_server(self.server1['id']) |
794 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(self._has_status(self.server1['id'], 'REBOOT')) |
795 | 3dabe5d2 | Stavros Sachtouris | self.client.reboot_server(self.server2['id'], hard=True) |
796 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(self._has_status(self.server2['id'], 'REBOOT')) |
797 | 3dabe5d2 | Stavros Sachtouris | |
798 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
799 | 3dabe5d2 | Stavros Sachtouris | def test_get_server_metadata(self): |
800 | 3dabe5d2 | Stavros Sachtouris | """Test get server_metadata"""
|
801 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
802 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
803 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
804 | 3dabe5d2 | Stavros Sachtouris | self._test_get_server_metadata()
|
805 | 3dabe5d2 | Stavros Sachtouris | |
806 | 3dabe5d2 | Stavros Sachtouris | def _test_get_server_metadata(self): |
807 | 3dabe5d2 | Stavros Sachtouris | self.client.create_server_metadata(self.server1['id'], |
808 | 3dabe5d2 | Stavros Sachtouris | 'mymeta_0',
|
809 | 3dabe5d2 | Stavros Sachtouris | 'val_0')
|
810 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_server_metadata(self.server1['id'], 'mymeta_0') |
811 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['mymeta_0'], 'val_0') |
812 | 3dabe5d2 | Stavros Sachtouris | |
813 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
814 | 3dabe5d2 | Stavros Sachtouris | def test_create_server_metadata(self): |
815 | 3dabe5d2 | Stavros Sachtouris | """Test create_server_metadata"""
|
816 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
817 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
818 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
819 | 3dabe5d2 | Stavros Sachtouris | self._test_create_server_metadata()
|
820 | 3dabe5d2 | Stavros Sachtouris | |
821 | 3dabe5d2 | Stavros Sachtouris | def _test_create_server_metadata(self): |
822 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.create_server_metadata(self.server1['id'], |
823 | 3dabe5d2 | Stavros Sachtouris | 'mymeta',
|
824 | 3dabe5d2 | Stavros Sachtouris | 'mymeta val')
|
825 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('mymeta' in r1) |
826 | 3dabe5d2 | Stavros Sachtouris | r2 = self.client.get_server_metadata(self.server1['id'], 'mymeta') |
827 | 3dabe5d2 | Stavros Sachtouris | self.assert_dicts_are_deeply_equal(r1, r2)
|
828 | 3dabe5d2 | Stavros Sachtouris | |
829 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
830 | 3dabe5d2 | Stavros Sachtouris | def test_update_server_metadata(self): |
831 | 3dabe5d2 | Stavros Sachtouris | """Test update_server_metadata"""
|
832 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
833 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
834 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
835 | 3dabe5d2 | Stavros Sachtouris | self._test_update_server_metadata()
|
836 | 3dabe5d2 | Stavros Sachtouris | |
837 | 3dabe5d2 | Stavros Sachtouris | def _test_update_server_metadata(self): |
838 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.create_server_metadata(self.server1['id'], |
839 | 3dabe5d2 | Stavros Sachtouris | 'mymeta3',
|
840 | 3dabe5d2 | Stavros Sachtouris | 'val2')
|
841 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('mymeta3'in r1) |
842 | 3dabe5d2 | Stavros Sachtouris | r2 = self.client.update_server_metadata(self.server1['id'], |
843 | 3dabe5d2 | Stavros Sachtouris | mymeta3='val3')
|
844 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(r2['mymeta3'], 'val3') |
845 | 3dabe5d2 | Stavros Sachtouris | |
846 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
847 | 3dabe5d2 | Stavros Sachtouris | def test_delete_server_metadata(self): |
848 | 3dabe5d2 | Stavros Sachtouris | """Test delete_server_metadata"""
|
849 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
850 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
851 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
852 | 3dabe5d2 | Stavros Sachtouris | self._test_delete_server_metadata()
|
853 | 3dabe5d2 | Stavros Sachtouris | |
854 | 3dabe5d2 | Stavros Sachtouris | def _test_delete_server_metadata(self): |
855 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.create_server_metadata(self.server1['id'], |
856 | 3dabe5d2 | Stavros Sachtouris | 'mymeta',
|
857 | 3dabe5d2 | Stavros Sachtouris | 'val')
|
858 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('mymeta' in r1) |
859 | 3dabe5d2 | Stavros Sachtouris | self.client.delete_server_metadata(self.server1['id'], 'mymeta') |
860 | 3dabe5d2 | Stavros Sachtouris | try:
|
861 | 3dabe5d2 | Stavros Sachtouris | self.client.get_server_metadata(self.server1['id'], 'mymeta') |
862 | 3dabe5d2 | Stavros Sachtouris | raise ClientError('Wrong Error', status=100) |
863 | 3dabe5d2 | Stavros Sachtouris | except ClientError as err: |
864 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(err.status, 404) |
865 | 3dabe5d2 | Stavros Sachtouris | |
866 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
867 | 3dabe5d2 | Stavros Sachtouris | def test_list_flavors(self): |
868 | 3dabe5d2 | Stavros Sachtouris | """Test flavors_get"""
|
869 | 3dabe5d2 | Stavros Sachtouris | self._test_list_flavors()
|
870 | 3dabe5d2 | Stavros Sachtouris | |
871 | 3dabe5d2 | Stavros Sachtouris | def _test_list_flavors(self): |
872 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_flavors()
|
873 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r) > 1) |
874 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_flavors(detail=True) |
875 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('SNF:disk_template' in r[0]) |
876 | 3dabe5d2 | Stavros Sachtouris | |
877 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
878 | 3dabe5d2 | Stavros Sachtouris | def test_get_flavor_details(self): |
879 | 3dabe5d2 | Stavros Sachtouris | """Test test_get_flavor_details"""
|
880 | 3dabe5d2 | Stavros Sachtouris | self._test_get_flavor_details()
|
881 | 3dabe5d2 | Stavros Sachtouris | |
882 | 3dabe5d2 | Stavros Sachtouris | def _test_get_flavor_details(self): |
883 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_flavor_details(self.flavorid) |
884 | 3dabe5d2 | Stavros Sachtouris | self.assert_dicts_are_deeply_equal(self.flavor_details, r) |
885 | 3dabe5d2 | Stavros Sachtouris | |
886 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
887 | 3dabe5d2 | Stavros Sachtouris | def test_list_images(self): |
888 | 3dabe5d2 | Stavros Sachtouris | """Test list_images"""
|
889 | 3dabe5d2 | Stavros Sachtouris | self._test_list_images()
|
890 | 3dabe5d2 | Stavros Sachtouris | |
891 | 3dabe5d2 | Stavros Sachtouris | def _test_list_images(self): |
892 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_images()
|
893 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r) > 1) |
894 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_images(detail=True) |
895 | 3dabe5d2 | Stavros Sachtouris | for detailed_img in r: |
896 | 3dabe5d2 | Stavros Sachtouris | if detailed_img['id'] == self.img: |
897 | 3dabe5d2 | Stavros Sachtouris | break
|
898 | ca30409e | Stavros Sachtouris | self.assert_dicts_are_deeply_equal(detailed_img, self.img_details) |
899 | 3dabe5d2 | Stavros Sachtouris | |
900 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
901 | ca30409e | Stavros Sachtouris | def test_get_image_details(self): |
902 | 3dabe5d2 | Stavros Sachtouris | """Test image_details"""
|
903 | ca30409e | Stavros Sachtouris | self._test_get_image_details()
|
904 | 3dabe5d2 | Stavros Sachtouris | |
905 | 3dabe5d2 | Stavros Sachtouris | def _test_get_image_details(self): |
906 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_image_details(self.img) |
907 | ca30409e | Stavros Sachtouris | r.pop('updated')
|
908 | 3dabe5d2 | Stavros Sachtouris | self.assert_dicts_are_deeply_equal(r, self.img_details) |
909 | 3dabe5d2 | Stavros Sachtouris | |
910 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
911 | 3dabe5d2 | Stavros Sachtouris | def test_get_image_metadata(self): |
912 | 3dabe5d2 | Stavros Sachtouris | """Test get_image_metadata"""
|
913 | 3dabe5d2 | Stavros Sachtouris | self._test_get_image_metadata()
|
914 | 3dabe5d2 | Stavros Sachtouris | |
915 | 3dabe5d2 | Stavros Sachtouris | def _test_get_image_metadata(self): |
916 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_image_metadata(self.img) |
917 | 3dabe5d2 | Stavros Sachtouris | self.assert_dicts_are_deeply_equal(
|
918 | 3dabe5d2 | Stavros Sachtouris | self.img_details['metadata']['values'], r) |
919 | 3dabe5d2 | Stavros Sachtouris | for key, val in self.img_details['metadata']['values'].items(): |
920 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_image_metadata(self.img, key) |
921 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r[key], val)
|
922 | 3dabe5d2 | Stavros Sachtouris | |
923 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
924 | 3dabe5d2 | Stavros Sachtouris | def test_start_server(self): |
925 | 3dabe5d2 | Stavros Sachtouris | """Test start_server"""
|
926 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
927 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
928 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
929 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'BUILD') |
930 | 3dabe5d2 | Stavros Sachtouris | self.client.shutdown_server(self.server1['id']) |
931 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'ACTIVE') |
932 | 3dabe5d2 | Stavros Sachtouris | self._test_start_server()
|
933 | 3dabe5d2 | Stavros Sachtouris | |
934 | 3dabe5d2 | Stavros Sachtouris | def _test_start_server(self): |
935 | 3dabe5d2 | Stavros Sachtouris | self.client.start_server(self.server1['id']) |
936 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'STOPPED') |
937 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_server_details(self.server1['id']) |
938 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['status'], 'ACTIVE') |
939 | 3dabe5d2 | Stavros Sachtouris | |
940 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
941 | 3dabe5d2 | Stavros Sachtouris | def test_shutdown_server(self): |
942 | 3dabe5d2 | Stavros Sachtouris | """Test shutdown_server"""
|
943 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
944 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
945 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
946 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'BUILD') |
947 | 3dabe5d2 | Stavros Sachtouris | self._test_shutdown_server()
|
948 | 3dabe5d2 | Stavros Sachtouris | |
949 | 3dabe5d2 | Stavros Sachtouris | def _test_shutdown_server(self): |
950 | 3dabe5d2 | Stavros Sachtouris | self.client.shutdown_server(self.server1['id']) |
951 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'ACTIVE') |
952 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_server_details(self.server1['id']) |
953 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['status'], 'STOPPED') |
954 | 3dabe5d2 | Stavros Sachtouris | |
955 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
956 | 3dabe5d2 | Stavros Sachtouris | def test_get_server_console(self): |
957 | 3dabe5d2 | Stavros Sachtouris | """Test get_server_console"""
|
958 | 3dabe5d2 | Stavros Sachtouris | self.server2 = self._create_server(self.servname2, |
959 | 75c3fc42 | Stavros Sachtouris | self.flavorid + 2, |
960 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
961 | 75c3fc42 | Stavros Sachtouris | self._wait_for_status(self.server2['id'], 'BUILD') |
962 | 3dabe5d2 | Stavros Sachtouris | self._test_get_server_console()
|
963 | 3dabe5d2 | Stavros Sachtouris | |
964 | 3dabe5d2 | Stavros Sachtouris | def _test_get_server_console(self): |
965 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_server_console(self.server2['id']) |
966 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('host' in r) |
967 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('password' in r) |
968 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('port' in r) |
969 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('type' in r) |
970 | 3dabe5d2 | Stavros Sachtouris | |
971 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
972 | 3dabe5d2 | Stavros Sachtouris | def test_get_firewall_profile(self): |
973 | 3dabe5d2 | Stavros Sachtouris | """Test get_firewall_profile"""
|
974 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
975 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
976 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
977 | 3dabe5d2 | Stavros Sachtouris | self._test_get_firewall_profile()
|
978 | 3dabe5d2 | Stavros Sachtouris | |
979 | 3dabe5d2 | Stavros Sachtouris | def _test_get_firewall_profile(self): |
980 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'BUILD') |
981 | 3dabe5d2 | Stavros Sachtouris | fprofile = self.client.get_firewall_profile(self.server1['id']) |
982 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(fprofile in self.PROFILES) |
983 | 3dabe5d2 | Stavros Sachtouris | |
984 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
985 | 3dabe5d2 | Stavros Sachtouris | def test_set_firewall_profile(self): |
986 | 3dabe5d2 | Stavros Sachtouris | """Test set_firewall_profile"""
|
987 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
988 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
989 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
990 | 3dabe5d2 | Stavros Sachtouris | self._test_set_firewall_profile()
|
991 | 3dabe5d2 | Stavros Sachtouris | |
992 | 3dabe5d2 | Stavros Sachtouris | def _test_set_firewall_profile(self): |
993 | 3dabe5d2 | Stavros Sachtouris | |
994 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'BUILD') |
995 | 3dabe5d2 | Stavros Sachtouris | PROFILES = ['DISABLED', 'ENABLED', 'DISABLED', 'PROTECTED'] |
996 | 3dabe5d2 | Stavros Sachtouris | fprofile = self.client.get_firewall_profile(self.server1['id']) |
997 | 3dabe5d2 | Stavros Sachtouris | print('')
|
998 | 3dabe5d2 | Stavros Sachtouris | for counter, fprofile in enumerate(PROFILES): |
999 | 3dabe5d2 | Stavros Sachtouris | start = fprofile |
1000 | 3dabe5d2 | Stavros Sachtouris | npos = counter + 1
|
1001 | 3dabe5d2 | Stavros Sachtouris | nprofile = PROFILES[npos] if npos < len(PROFILES) else PROFILES[0] |
1002 | 3dabe5d2 | Stavros Sachtouris | print('\tprofile swap %s: %s -> %s' % (npos, fprofile, nprofile))
|
1003 | 3dabe5d2 | Stavros Sachtouris | self.client.set_firewall_profile(self.server1['id'], nprofile) |
1004 | 3dabe5d2 | Stavros Sachtouris | wait = 3
|
1005 | 3dabe5d2 | Stavros Sachtouris | c = ['|', '/', '-', '\\'] |
1006 | 3dabe5d2 | Stavros Sachtouris | while fprofile != nprofile:
|
1007 | 3dabe5d2 | Stavros Sachtouris | if wait % 10 == 0: |
1008 | 3dabe5d2 | Stavros Sachtouris | self.client.set_firewall_profile(self.server1['id'], |
1009 | 3dabe5d2 | Stavros Sachtouris | nprofile) |
1010 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(fprofile, start)
|
1011 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\t profile is %s, wait %ss '\
|
1012 | 3dabe5d2 | Stavros Sachtouris | % (fprofile, wait)) |
1013 | 3dabe5d2 | Stavros Sachtouris | for i in range(4 * wait): |
1014 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\b%s' % c[i % 4]) |
1015 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.flush() |
1016 | 3dabe5d2 | Stavros Sachtouris | time.sleep(0.25)
|
1017 | 3dabe5d2 | Stavros Sachtouris | wait += 3
|
1018 | 3dabe5d2 | Stavros Sachtouris | print('\b ')
|
1019 | 3dabe5d2 | Stavros Sachtouris | fprofile = self.client.get_firewall_profile(self.server1['id']) |
1020 | 3dabe5d2 | Stavros Sachtouris | |
1021 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1022 | 3dabe5d2 | Stavros Sachtouris | def test_get_server_stats(self): |
1023 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
1024 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
1025 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
1026 | 3dabe5d2 | Stavros Sachtouris | self._test_get_server_stats()
|
1027 | 3dabe5d2 | Stavros Sachtouris | |
1028 | 3dabe5d2 | Stavros Sachtouris | def _test_get_server_stats(self): |
1029 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_server_stats(self.server1['id']) |
1030 | 3dabe5d2 | Stavros Sachtouris | for term in ('cpuBar', |
1031 | 3dabe5d2 | Stavros Sachtouris | 'cpuTimeSeries',
|
1032 | 3dabe5d2 | Stavros Sachtouris | 'netBar',
|
1033 | 3dabe5d2 | Stavros Sachtouris | 'netTimeSeries',
|
1034 | 3dabe5d2 | Stavros Sachtouris | 'refresh'):
|
1035 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(term in r) |
1036 | 3dabe5d2 | Stavros Sachtouris | |
1037 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1038 | 3dabe5d2 | Stavros Sachtouris | def test_list_networks(self): |
1039 | 3dabe5d2 | Stavros Sachtouris | """Test list_network"""
|
1040 | 3dabe5d2 | Stavros Sachtouris | self.network1 = self._create_network(self.netname1) |
1041 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_network(self.network1['id'], 'ACTIVE') |
1042 | 3dabe5d2 | Stavros Sachtouris | self._test_list_networks()
|
1043 | 3dabe5d2 | Stavros Sachtouris | |
1044 | 3dabe5d2 | Stavros Sachtouris | def _test_list_networks(self): |
1045 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_networks()
|
1046 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r) > 1) |
1047 | 3dabe5d2 | Stavros Sachtouris | ids = [net['id'] for net in r] |
1048 | 3dabe5d2 | Stavros Sachtouris | names = [net['name'] for net in r] |
1049 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('1' in ids) |
1050 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('public' in names) |
1051 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(self.network1['id'] in ids) |
1052 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(self.network1['name'] in names) |
1053 | 3dabe5d2 | Stavros Sachtouris | |
1054 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_networks(detail=True) |
1055 | 3dabe5d2 | Stavros Sachtouris | ids = [net['id'] for net in r] |
1056 | 3dabe5d2 | Stavros Sachtouris | names = [net['name'] for net in r] |
1057 | 3dabe5d2 | Stavros Sachtouris | for net in r: |
1058 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(net['id'] in ids) |
1059 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(net['name'] in names) |
1060 | 3dabe5d2 | Stavros Sachtouris | for term in ('status', 'updated', 'created'): |
1061 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(term in net.keys()) |
1062 | 3dabe5d2 | Stavros Sachtouris | |
1063 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1064 | 3dabe5d2 | Stavros Sachtouris | def test_create_network(self): |
1065 | 3dabe5d2 | Stavros Sachtouris | """Test create_network"""
|
1066 | 3dabe5d2 | Stavros Sachtouris | self.network1 = self._create_network(self.netname1) |
1067 | 3dabe5d2 | Stavros Sachtouris | self._test_create_network()
|
1068 | 3dabe5d2 | Stavros Sachtouris | |
1069 | 3dabe5d2 | Stavros Sachtouris | def _test_create_network(self): |
1070 | 3dabe5d2 | Stavros Sachtouris | nets = self.client.list_networks(self.network1['id']) |
1071 | 3dabe5d2 | Stavros Sachtouris | chosen = [net for net in nets if net['id'] == self.network1['id']][0] |
1072 | 3dabe5d2 | Stavros Sachtouris | chosen.pop('updated')
|
1073 | 3dabe5d2 | Stavros Sachtouris | net1 = dict(self.network1) |
1074 | 3dabe5d2 | Stavros Sachtouris | net1.pop('updated')
|
1075 | 3dabe5d2 | Stavros Sachtouris | self.assert_dicts_are_deeply_equal(chosen, net1)
|
1076 | 3dabe5d2 | Stavros Sachtouris | |
1077 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1078 | 3dabe5d2 | Stavros Sachtouris | def test_connect_server(self): |
1079 | 3dabe5d2 | Stavros Sachtouris | """Test connect_server"""
|
1080 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
1081 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
1082 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
1083 | 3dabe5d2 | Stavros Sachtouris | self.network1 = self._create_network(self.netname1) |
1084 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'BUILD') |
1085 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_network(self.network1['id'], 'ACTIVE') |
1086 | 3dabe5d2 | Stavros Sachtouris | self._test_connect_server()
|
1087 | 3dabe5d2 | Stavros Sachtouris | |
1088 | 3dabe5d2 | Stavros Sachtouris | def _test_connect_server(self): |
1089 | 3dabe5d2 | Stavros Sachtouris | self.client.connect_server(self.server1['id'], self.network1['id']) |
1090 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(self._wait_for_nic(self.network1['id'], |
1091 | 3dabe5d2 | Stavros Sachtouris | self.server1['id'])) |
1092 | 3dabe5d2 | Stavros Sachtouris | |
1093 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1094 | 3dabe5d2 | Stavros Sachtouris | def test_disconnect_server(self): |
1095 | 3dabe5d2 | Stavros Sachtouris | """Test disconnect_server"""
|
1096 | 3dabe5d2 | Stavros Sachtouris | self.test_connect_server()
|
1097 | 3dabe5d2 | Stavros Sachtouris | self._test_disconnect_server()
|
1098 | 3dabe5d2 | Stavros Sachtouris | |
1099 | 3dabe5d2 | Stavros Sachtouris | def _test_disconnect_server(self): |
1100 | 3dabe5d2 | Stavros Sachtouris | self.client.disconnect_server(self.server1['id'], self.network1['id']) |
1101 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(self._wait_for_nic(self.network1['id'], |
1102 | 3dabe5d2 | Stavros Sachtouris | self.server1['id'], |
1103 | 3dabe5d2 | Stavros Sachtouris | in_creation=False))
|
1104 | 3dabe5d2 | Stavros Sachtouris | |
1105 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1106 | 3dabe5d2 | Stavros Sachtouris | def test_list_server_nics(self): |
1107 | 3dabe5d2 | Stavros Sachtouris | """Test list_server_nics"""
|
1108 | 3dabe5d2 | Stavros Sachtouris | self.server1 = self._create_server(self.servname1, |
1109 | 3dabe5d2 | Stavros Sachtouris | self.flavorid,
|
1110 | 3dabe5d2 | Stavros Sachtouris | self.img)
|
1111 | 3dabe5d2 | Stavros Sachtouris | self.network2 = self._create_network(self.netname2) |
1112 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_status(self.server1['id'], 'BUILD') |
1113 | 3dabe5d2 | Stavros Sachtouris | self._wait_for_network(self.network2['id'], 'ACTIVE') |
1114 | 3dabe5d2 | Stavros Sachtouris | self._test_list_server_nics()
|
1115 | 3dabe5d2 | Stavros Sachtouris | |
1116 | 3dabe5d2 | Stavros Sachtouris | def _test_list_server_nics(self): |
1117 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_server_nics(self.server1['id']) |
1118 | 3dabe5d2 | Stavros Sachtouris | len0 = len(r)
|
1119 | 3dabe5d2 | Stavros Sachtouris | |
1120 | 3dabe5d2 | Stavros Sachtouris | self.client.connect_server(self.server1['id'], self.network2['id']) |
1121 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(self._wait_for_nic(self.network2['id'], |
1122 | 3dabe5d2 | Stavros Sachtouris | self.server1['id'])) |
1123 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_server_nics(self.server1['id']) |
1124 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r) > len0) |
1125 | 3dabe5d2 | Stavros Sachtouris | |
1126 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1127 | 3dabe5d2 | Stavros Sachtouris | def test_get_network_details(self): |
1128 | 3dabe5d2 | Stavros Sachtouris | """Test get_network_details"""
|
1129 | 3dabe5d2 | Stavros Sachtouris | self.network1 = self._create_network(self.netname1) |
1130 | 3dabe5d2 | Stavros Sachtouris | self._test_get_network_details()
|
1131 | 3dabe5d2 | Stavros Sachtouris | |
1132 | 3dabe5d2 | Stavros Sachtouris | def _test_get_network_details(self): |
1133 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_network_details(self.network1['id']) |
1134 | 3dabe5d2 | Stavros Sachtouris | net1 = dict(self.network1) |
1135 | 3dabe5d2 | Stavros Sachtouris | net1.pop('status')
|
1136 | 3dabe5d2 | Stavros Sachtouris | net1.pop('updated', None) |
1137 | 3dabe5d2 | Stavros Sachtouris | net1.pop('attachments')
|
1138 | 3dabe5d2 | Stavros Sachtouris | r.pop('status')
|
1139 | 3dabe5d2 | Stavros Sachtouris | r.pop('updated', None) |
1140 | 3dabe5d2 | Stavros Sachtouris | r.pop('attachments')
|
1141 | 3dabe5d2 | Stavros Sachtouris | self.assert_dicts_are_deeply_equal(net1, r)
|
1142 | 3dabe5d2 | Stavros Sachtouris | |
1143 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1144 | 3dabe5d2 | Stavros Sachtouris | def test_update_network_name(self): |
1145 | 3dabe5d2 | Stavros Sachtouris | self.network2 = self._create_network(self.netname2) |
1146 | 3dabe5d2 | Stavros Sachtouris | self._test_update_network_name()
|
1147 | 3dabe5d2 | Stavros Sachtouris | |
1148 | 3dabe5d2 | Stavros Sachtouris | def _test_update_network_name(self): |
1149 | 3dabe5d2 | Stavros Sachtouris | updated_name = self.netname2 + '_upd' |
1150 | 3dabe5d2 | Stavros Sachtouris | self.client.update_network_name(self.network2['id'], updated_name) |
1151 | 3dabe5d2 | Stavros Sachtouris | wait = 3
|
1152 | 3dabe5d2 | Stavros Sachtouris | c = ['|', '/', '-', '\\'] |
1153 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_network_details(self.network2['id']) |
1154 | 3dabe5d2 | Stavros Sachtouris | while wait < 50: |
1155 | 3dabe5d2 | Stavros Sachtouris | if r['name'] == updated_name: |
1156 | 3dabe5d2 | Stavros Sachtouris | break
|
1157 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write( |
1158 | 3dabe5d2 | Stavros Sachtouris | '\twait for %s renaming (%s->%s) %ss ' % (self.network2['id'], |
1159 | 3dabe5d2 | Stavros Sachtouris | self.network2['name'], |
1160 | 3dabe5d2 | Stavros Sachtouris | updated_name, wait)) |
1161 | 3dabe5d2 | Stavros Sachtouris | for i in range(4 * wait): |
1162 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\b%s' % c[i % 4]) |
1163 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.flush() |
1164 | 3dabe5d2 | Stavros Sachtouris | time.sleep(0.25)
|
1165 | 3dabe5d2 | Stavros Sachtouris | print('')
|
1166 | 3dabe5d2 | Stavros Sachtouris | wait += 3
|
1167 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_network_details(self.network2['id']) |
1168 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['name'], updated_name) |
1169 | 3dabe5d2 | Stavros Sachtouris | |
1170 | 3dabe5d2 | Stavros Sachtouris | """ Don't have auth to test this
|
1171 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1172 | 3dabe5d2 | Stavros Sachtouris | def test_delete_image(self):
|
1173 | 3dabe5d2 | Stavros Sachtouris | ""Test delete_image""
|
1174 | 3dabe5d2 | Stavros Sachtouris | self._test_delete_image()
|
1175 | 3dabe5d2 | Stavros Sachtouris | def _test_delete_image(self):
|
1176 | 3dabe5d2 | Stavros Sachtouris | images = self.client.list_images()
|
1177 | 3dabe5d2 | Stavros Sachtouris | self.client.delete_image(images[2]['id'])
|
1178 | 3dabe5d2 | Stavros Sachtouris | try:
|
1179 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_image_details(images[2]['id'], success=(400))
|
1180 | 3dabe5d2 | Stavros Sachtouris | except ClientError as err:
|
1181 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(err.status, 404)
|
1182 | 3dabe5d2 | Stavros Sachtouris |
|
1183 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1184 | 3dabe5d2 | Stavros Sachtouris | def test_create_image_metadata(self):
|
1185 | 3dabe5d2 | Stavros Sachtouris | ""Test create_image_metadata""
|
1186 | 3dabe5d2 | Stavros Sachtouris | self._test_create_image_metadata()
|
1187 | 3dabe5d2 | Stavros Sachtouris | def _test_create_image_metadata(self):
|
1188 | 3dabe5d2 | Stavros Sachtouris | r = self.client.create_image_metadata(self.img, 'mykey', 'myval')
|
1189 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['mykey'], 'myval')
|
1190 | 3dabe5d2 | Stavros Sachtouris |
|
1191 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1192 | 3dabe5d2 | Stavros Sachtouris | def test_update_image_metadata(self):
|
1193 | 3dabe5d2 | Stavros Sachtouris | ""Test update_image_metadata""
|
1194 | 3dabe5d2 | Stavros Sachtouris | self._test_update_image_metadata()
|
1195 | 3dabe5d2 | Stavros Sachtouris | def _test_update_image_metadata(self):
|
1196 | 3dabe5d2 | Stavros Sachtouris | r = self.client.create_image_metadata(self.img, 'mykey0', 'myval')
|
1197 | 3dabe5d2 | Stavros Sachtouris | r = self.client.update_image_metadata(self.img, 'mykey0', 'myval0')
|
1198 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['mykey0'], 'myval0')
|
1199 | 3dabe5d2 | Stavros Sachtouris |
|
1200 | 3dabe5d2 | Stavros Sachtouris | @if_not_all
|
1201 | 3dabe5d2 | Stavros Sachtouris | def test_delete_image_metadata(self):
|
1202 | 3dabe5d2 | Stavros Sachtouris | ""Test delete_image_metadata""
|
1203 | 3dabe5d2 | Stavros Sachtouris | self._test_delete_image_metadata()
|
1204 | 3dabe5d2 | Stavros Sachtouris | def _test_delete_image_metadata(self):
|
1205 | 3dabe5d2 | Stavros Sachtouris | self.client.create_image_metadata(self.img, 'mykey1', 'myval1')
|
1206 | 3dabe5d2 | Stavros Sachtouris | self.client.delete_image_metadata(self.img, 'mykey1')
|
1207 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_image_metadata(self.img)
|
1208 | 3dabe5d2 | Stavros Sachtouris | self.assertNotEqual('mykey1' in r)
|
1209 | 3dabe5d2 | Stavros Sachtouris | """
|
1210 | 3dabe5d2 | Stavros Sachtouris | |
1211 | 71286858 | Stavros Sachtouris | |
1212 | edbee9c8 | Stavros Sachtouris | class testPithos(unittest.TestCase): |
1213 | 3dabe5d2 | Stavros Sachtouris | """Set up a Pithos+ thorough test"""
|
1214 | 3dabe5d2 | Stavros Sachtouris | def setUp(self): |
1215 | 3dabe5d2 | Stavros Sachtouris | """
|
1216 | 3dabe5d2 | Stavros Sachtouris | url = 'http://127.0.0.1:8000/v1'
|
1217 | 3dabe5d2 | Stavros Sachtouris | global token
|
1218 | 3dabe5d2 | Stavros Sachtouris | account = 'admin@adminland.com'
|
1219 | 3dabe5d2 | Stavros Sachtouris | """
|
1220 | 3dabe5d2 | Stavros Sachtouris | |
1221 | 7d91734c | Stavros Sachtouris | global cnf
|
1222 | 7d91734c | Stavros Sachtouris | url = cnf.get('store', 'url') |
1223 | 3dabe5d2 | Stavros Sachtouris | |
1224 | 3dabe5d2 | Stavros Sachtouris | global token
|
1225 | 3dabe5d2 | Stavros Sachtouris | global global_username
|
1226 | 7d91734c | Stavros Sachtouris | account = global_username |
1227 | 3dabe5d2 | Stavros Sachtouris | |
1228 | 3dabe5d2 | Stavros Sachtouris | """
|
1229 | 3dabe5d2 | Stavros Sachtouris | url='https://pithos.okeanos.io/v1'
|
1230 | 3dabe5d2 | Stavros Sachtouris | """
|
1231 | 3dabe5d2 | Stavros Sachtouris | |
1232 | 3dabe5d2 | Stavros Sachtouris | """
|
1233 | 3dabe5d2 | Stavros Sachtouris | def add_handler(name, level, prefix=''):
|
1234 | 3dabe5d2 | Stavros Sachtouris | h = logging.StreamHandler()
|
1235 | 3dabe5d2 | Stavros Sachtouris | fmt = logging.Formatter(prefix + '%(message)s')
|
1236 | 3dabe5d2 | Stavros Sachtouris | h.setFormatter(fmt)
|
1237 | 3dabe5d2 | Stavros Sachtouris | logger = logging.getLogger(name)
|
1238 | 3dabe5d2 | Stavros Sachtouris | logger.addHandler(h)
|
1239 | 3dabe5d2 | Stavros Sachtouris | logger.setLevel(level)
|
1240 | 3dabe5d2 | Stavros Sachtouris | import logging
|
1241 | 3dabe5d2 | Stavros Sachtouris | sendlog = logging.getLogger('clients.send')
|
1242 | 3dabe5d2 | Stavros Sachtouris | recvlog = logging.getLogger('clients.recv')
|
1243 | 3dabe5d2 | Stavros Sachtouris | add_handler('requests', logging.INFO, prefix='* ')
|
1244 | 3dabe5d2 | Stavros Sachtouris | add_handler('clients.send', logging.INFO, prefix='> ')
|
1245 | 3dabe5d2 | Stavros Sachtouris | add_handler('clients.recv', logging.INFO, prefix='< ')
|
1246 | 3dabe5d2 | Stavros Sachtouris | """
|
1247 | 3dabe5d2 | Stavros Sachtouris | |
1248 | 3dabe5d2 | Stavros Sachtouris | self.fname = None |
1249 | 3dabe5d2 | Stavros Sachtouris | container = None
|
1250 | 3dabe5d2 | Stavros Sachtouris | self.client = pithos(url, token, account, container)
|
1251 | 3dabe5d2 | Stavros Sachtouris | self.now = time.mktime(time.gmtime())
|
1252 | 3dabe5d2 | Stavros Sachtouris | self.c1 = 'c1_' + unicode(self.now) |
1253 | 3dabe5d2 | Stavros Sachtouris | self.c2 = 'c2_' + unicode(self.now) |
1254 | 3dabe5d2 | Stavros Sachtouris | self.c3 = 'c3_' + unicode(self.now) |
1255 | 3dabe5d2 | Stavros Sachtouris | |
1256 | 3dabe5d2 | Stavros Sachtouris | self.client.create_container(self.c1) |
1257 | 3dabe5d2 | Stavros Sachtouris | self.client.create_container(self.c2) |
1258 | 3dabe5d2 | Stavros Sachtouris | self.client.create_container(self.c3) |
1259 | 3dabe5d2 | Stavros Sachtouris | self.makeNewObject(self.c1, 'test') |
1260 | 3dabe5d2 | Stavros Sachtouris | self.makeNewObject(self.c2, 'test') |
1261 | 3dabe5d2 | Stavros Sachtouris | self.now_unformated = datetime.datetime.utcnow()
|
1262 | 3dabe5d2 | Stavros Sachtouris | self.makeNewObject(self.c1, 'test1') |
1263 | 3dabe5d2 | Stavros Sachtouris | self.makeNewObject(self.c2, 'test1') |
1264 | 3dabe5d2 | Stavros Sachtouris | """Prepare an object to be shared - also its container"""
|
1265 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c1 |
1266 | 3dabe5d2 | Stavros Sachtouris | self.client.object_post('test', |
1267 | 3dabe5d2 | Stavros Sachtouris | update=True,
|
1268 | 3dabe5d2 | Stavros Sachtouris | permissions={'read': 'someUser'}) |
1269 | 3dabe5d2 | Stavros Sachtouris | |
1270 | 3dabe5d2 | Stavros Sachtouris | self.makeNewObject(self.c1, 'another.test') |
1271 | 3dabe5d2 | Stavros Sachtouris | |
1272 | 3dabe5d2 | Stavros Sachtouris | def makeNewObject(self, container, obj): |
1273 | 3dabe5d2 | Stavros Sachtouris | self.client.container = container
|
1274 | 3dabe5d2 | Stavros Sachtouris | self.client.object_put(obj,
|
1275 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-stream',
|
1276 | 3dabe5d2 | Stavros Sachtouris | data='file %s that lives in %s' % (obj, container),
|
1277 | 3dabe5d2 | Stavros Sachtouris | metadata={'incontainer': container})
|
1278 | 3dabe5d2 | Stavros Sachtouris | |
1279 | 3dabe5d2 | Stavros Sachtouris | def forceDeleteContainer(self, container): |
1280 | 3dabe5d2 | Stavros Sachtouris | self.client.container = container
|
1281 | 3dabe5d2 | Stavros Sachtouris | try:
|
1282 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_objects()
|
1283 | 3dabe5d2 | Stavros Sachtouris | except ClientError:
|
1284 | 3dabe5d2 | Stavros Sachtouris | return
|
1285 | 3dabe5d2 | Stavros Sachtouris | for obj in r: |
1286 | 3dabe5d2 | Stavros Sachtouris | name = obj['name']
|
1287 | 3dabe5d2 | Stavros Sachtouris | self.client.del_object(name)
|
1288 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_delete()
|
1289 | 3dabe5d2 | Stavros Sachtouris | self.container = '' |
1290 | 3dabe5d2 | Stavros Sachtouris | |
1291 | 3dabe5d2 | Stavros Sachtouris | def tearDown(self): |
1292 | 3dabe5d2 | Stavros Sachtouris | """Destroy test cases"""
|
1293 | 3dabe5d2 | Stavros Sachtouris | if self.fname is not None: |
1294 | 3dabe5d2 | Stavros Sachtouris | try:
|
1295 | 3dabe5d2 | Stavros Sachtouris | os.remove(self.fname)
|
1296 | 3dabe5d2 | Stavros Sachtouris | except OSError: |
1297 | 3dabe5d2 | Stavros Sachtouris | pass
|
1298 | 3dabe5d2 | Stavros Sachtouris | self.fname = None |
1299 | 3dabe5d2 | Stavros Sachtouris | self.forceDeleteContainer(self.c1) |
1300 | 3dabe5d2 | Stavros Sachtouris | self.forceDeleteContainer(self.c2) |
1301 | 3dabe5d2 | Stavros Sachtouris | try:
|
1302 | 3dabe5d2 | Stavros Sachtouris | self.forceDeleteContainer(self.c3) |
1303 | 3dabe5d2 | Stavros Sachtouris | except ClientError:
|
1304 | 3dabe5d2 | Stavros Sachtouris | pass
|
1305 | 3dabe5d2 | Stavros Sachtouris | self.client.container = '' |
1306 | 3dabe5d2 | Stavros Sachtouris | |
1307 | 3dabe5d2 | Stavros Sachtouris | def test_000(self): |
1308 | 3dabe5d2 | Stavros Sachtouris | """Perform a full Pithos+ kamaki support test"""
|
1309 | 3dabe5d2 | Stavros Sachtouris | |
1310 | 3dabe5d2 | Stavros Sachtouris | def test_account_head(self): |
1311 | 3dabe5d2 | Stavros Sachtouris | """Test account_HEAD"""
|
1312 | 3dabe5d2 | Stavros Sachtouris | r = self.client.account_head()
|
1313 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 204) |
1314 | 3dabe5d2 | Stavros Sachtouris | |
1315 | 3dabe5d2 | Stavros Sachtouris | r = self.client.account_head(until='1000000000') |
1316 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 204) |
1317 | 3dabe5d2 | Stavros Sachtouris | |
1318 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_account_info(until='1000000000') |
1319 | 3dabe5d2 | Stavros Sachtouris | datestring = unicode(r['x-account-until-timestamp']) |
1320 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(u'Sun, 09 Sep 2001 01:46:40 GMT', datestring) |
1321 | 3dabe5d2 | Stavros Sachtouris | |
1322 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_account_quota()
|
1323 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-account-policy-quota' in r) |
1324 | 3dabe5d2 | Stavros Sachtouris | |
1325 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_account_versioning()
|
1326 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-account-policy-versioning' in r) |
1327 | 3dabe5d2 | Stavros Sachtouris | |
1328 | 3dabe5d2 | Stavros Sachtouris | """Check if(un)modified_since"""
|
1329 | 3dabe5d2 | Stavros Sachtouris | for format in self.client.DATE_FORMATS: |
1330 | 3dabe5d2 | Stavros Sachtouris | now_formated = self.now_unformated.strftime(format)
|
1331 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.account_head(if_modified_since=now_formated,
|
1332 | 3dabe5d2 | Stavros Sachtouris | success=(204, 304, 412)) |
1333 | 3dabe5d2 | Stavros Sachtouris | sc1 = r1.status_code |
1334 | 3dabe5d2 | Stavros Sachtouris | r1.release() |
1335 | 3dabe5d2 | Stavros Sachtouris | r2 = self.client.account_head(if_unmodified_since=now_formated,
|
1336 | 3dabe5d2 | Stavros Sachtouris | success=(204, 304, 412)) |
1337 | 3dabe5d2 | Stavros Sachtouris | sc2 = r2.status_code |
1338 | 3dabe5d2 | Stavros Sachtouris | r2.release() |
1339 | 3dabe5d2 | Stavros Sachtouris | self.assertNotEqual(sc1, sc2)
|
1340 | 3dabe5d2 | Stavros Sachtouris | |
1341 | 3dabe5d2 | Stavros Sachtouris | def test_account_get(self): |
1342 | 3dabe5d2 | Stavros Sachtouris | """Test account_GET"""
|
1343 | 3dabe5d2 | Stavros Sachtouris | #r = self.client.account_get()
|
1344 | 3dabe5d2 | Stavros Sachtouris | #self.assertEqual(r.status_code, 200)
|
1345 | 3dabe5d2 | Stavros Sachtouris | r = self.client.list_containers()
|
1346 | 3dabe5d2 | Stavros Sachtouris | fullLen = len(r)
|
1347 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(fullLen > 2) |
1348 | 3dabe5d2 | Stavros Sachtouris | |
1349 | 3dabe5d2 | Stavros Sachtouris | r = self.client.account_get(limit=1) |
1350 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(len(r.json), 1) |
1351 | 3dabe5d2 | Stavros Sachtouris | |
1352 | 3dabe5d2 | Stavros Sachtouris | r = self.client.account_get(marker='c2_') |
1353 | 3dabe5d2 | Stavros Sachtouris | temp_c0 = r.json[0]['name'] |
1354 | 3dabe5d2 | Stavros Sachtouris | temp_c2 = r.json[2]['name'] |
1355 | 3dabe5d2 | Stavros Sachtouris | |
1356 | 3dabe5d2 | Stavros Sachtouris | r = self.client.account_get(limit=2, marker='c2_') |
1357 | 3dabe5d2 | Stavros Sachtouris | conames = [container['name'] for container in r.json \ |
1358 | 3dabe5d2 | Stavros Sachtouris | if container['name'].lower().startswith('c2_')] |
1359 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(temp_c0 in conames) |
1360 | 3dabe5d2 | Stavros Sachtouris | self.assertFalse(temp_c2 in conames) |
1361 | 3dabe5d2 | Stavros Sachtouris | |
1362 | 3dabe5d2 | Stavros Sachtouris | r = self.client.account_get(show_only_shared=True) |
1363 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(self.c1 in [c['name'] for c in r.json]) |
1364 | 3dabe5d2 | Stavros Sachtouris | |
1365 | 3dabe5d2 | Stavros Sachtouris | r = self.client.account_get(until=1342609206) |
1366 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r.json) <= fullLen) |
1367 | 3dabe5d2 | Stavros Sachtouris | |
1368 | 3dabe5d2 | Stavros Sachtouris | """Check if(un)modified_since"""
|
1369 | 3dabe5d2 | Stavros Sachtouris | for format in self.client.DATE_FORMATS: |
1370 | 3dabe5d2 | Stavros Sachtouris | now_formated = self.now_unformated.strftime(format)
|
1371 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.account_get(if_modified_since=now_formated,
|
1372 | 3dabe5d2 | Stavros Sachtouris | success=(200, 304, 412)) |
1373 | 3dabe5d2 | Stavros Sachtouris | sc1 = r1.status_code |
1374 | 3dabe5d2 | Stavros Sachtouris | r1.release() |
1375 | 3dabe5d2 | Stavros Sachtouris | r2 = self.client.account_get(if_unmodified_since=now_formated,
|
1376 | 3dabe5d2 | Stavros Sachtouris | success=(200, 304, 412)) |
1377 | 3dabe5d2 | Stavros Sachtouris | sc2 = r2.status_code |
1378 | 3dabe5d2 | Stavros Sachtouris | r2.release() |
1379 | 3dabe5d2 | Stavros Sachtouris | self.assertNotEqual(sc1, sc2)
|
1380 | 3dabe5d2 | Stavros Sachtouris | |
1381 | 3dabe5d2 | Stavros Sachtouris | """Check sharing_accounts"""
|
1382 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_sharing_accounts()
|
1383 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r) > 0) |
1384 | 3dabe5d2 | Stavros Sachtouris | |
1385 | 3dabe5d2 | Stavros Sachtouris | def test_account_post(self): |
1386 | 3dabe5d2 | Stavros Sachtouris | """Test account_POST"""
|
1387 | 3dabe5d2 | Stavros Sachtouris | r = self.client.account_post()
|
1388 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 202) |
1389 | 3dabe5d2 | Stavros Sachtouris | grpName = 'grp' + unicode(self.now) |
1390 | 3dabe5d2 | Stavros Sachtouris | |
1391 | 3dabe5d2 | Stavros Sachtouris | """Method set/del_account_meta and set_account_groupcall use
|
1392 | 3dabe5d2 | Stavros Sachtouris | account_post internally
|
1393 | 3dabe5d2 | Stavros Sachtouris | """
|
1394 | 3dabe5d2 | Stavros Sachtouris | self.client.set_account_group(grpName, ['u1', 'u2']) |
1395 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_account_group()
|
1396 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-account-group-' + grpName], 'u1,u2') |
1397 | 3dabe5d2 | Stavros Sachtouris | self.client.del_account_group(grpName)
|
1398 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_account_group()
|
1399 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-account-group-' + grpName not in r) |
1400 | 3dabe5d2 | Stavros Sachtouris | |
1401 | 3dabe5d2 | Stavros Sachtouris | mprefix = 'meta' + unicode(self.now) |
1402 | 3dabe5d2 | Stavros Sachtouris | self.client.set_account_meta({mprefix + '1': 'v1', |
1403 | 3dabe5d2 | Stavros Sachtouris | mprefix + '2': 'v2'}) |
1404 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_account_meta()
|
1405 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-account-meta-' + mprefix + '1'], 'v1') |
1406 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-account-meta-' + mprefix + '2'], 'v2') |
1407 | 3dabe5d2 | Stavros Sachtouris | |
1408 | 3dabe5d2 | Stavros Sachtouris | self.client.del_account_meta(mprefix + '1') |
1409 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_account_meta()
|
1410 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-account-meta-' + mprefix + '1' not in r) |
1411 | 3dabe5d2 | Stavros Sachtouris | |
1412 | 3dabe5d2 | Stavros Sachtouris | self.client.del_account_meta(mprefix + '2') |
1413 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_account_meta()
|
1414 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-account-meta-' + mprefix + '2' not in r) |
1415 | 3dabe5d2 | Stavros Sachtouris | |
1416 | 3dabe5d2 | Stavros Sachtouris | """Missing testing for quota, versioning, because normally
|
1417 | 7d91734c | Stavros Sachtouris | you don't have permissions to modify those at account level
|
1418 | 3dabe5d2 | Stavros Sachtouris | """
|
1419 | 3dabe5d2 | Stavros Sachtouris | |
1420 | 3dabe5d2 | Stavros Sachtouris | newquota = 1000000
|
1421 | 3dabe5d2 | Stavros Sachtouris | self.client.set_account_quota(newquota)
|
1422 | 3dabe5d2 | Stavros Sachtouris | #r = self.client.get_account_info()
|
1423 | 3dabe5d2 | Stavros Sachtouris | #print(unicode(r))
|
1424 | 3dabe5d2 | Stavros Sachtouris | #r = self.client.get_account_quota()
|
1425 | 3dabe5d2 | Stavros Sachtouris | #self.assertEqual(r['x-account-policy-quota'], newquota)
|
1426 | 3dabe5d2 | Stavros Sachtouris | self.client.set_account_versioning('auto') |
1427 | 3dabe5d2 | Stavros Sachtouris | |
1428 | 3dabe5d2 | Stavros Sachtouris | def test_container_head(self): |
1429 | 3dabe5d2 | Stavros Sachtouris | """Test container_HEAD"""
|
1430 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c1 |
1431 | 3dabe5d2 | Stavros Sachtouris | |
1432 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_head()
|
1433 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 204) |
1434 | 3dabe5d2 | Stavros Sachtouris | |
1435 | 3dabe5d2 | Stavros Sachtouris | """Check until"""
|
1436 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_head(until=1000000, success=(204, 404)) |
1437 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 404) |
1438 | 3dabe5d2 | Stavros Sachtouris | |
1439 | 3dabe5d2 | Stavros Sachtouris | """Check and if(un)modified_since"""
|
1440 | 3dabe5d2 | Stavros Sachtouris | for format in self.client.DATE_FORMATS: |
1441 | 3dabe5d2 | Stavros Sachtouris | now_formated = self.now_unformated.strftime(format)
|
1442 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.container_head(if_modified_since=now_formated,
|
1443 | 3dabe5d2 | Stavros Sachtouris | success=(204, 304, 412)) |
1444 | 3dabe5d2 | Stavros Sachtouris | sc1 = r1.status_code |
1445 | 3dabe5d2 | Stavros Sachtouris | r1.release() |
1446 | 3dabe5d2 | Stavros Sachtouris | r2 = self.client.container_head(if_unmodified_since=now_formated,
|
1447 | 3dabe5d2 | Stavros Sachtouris | success=(204, 304, 412)) |
1448 | 3dabe5d2 | Stavros Sachtouris | sc2 = r2.status_code |
1449 | 3dabe5d2 | Stavros Sachtouris | r2.release() |
1450 | 3dabe5d2 | Stavros Sachtouris | self.assertNotEqual(sc1, sc2)
|
1451 | 3dabe5d2 | Stavros Sachtouris | |
1452 | 3dabe5d2 | Stavros Sachtouris | """Check container object meta"""
|
1453 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_object_meta()
|
1454 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-container-object-meta'], 'Incontainer') |
1455 | 3dabe5d2 | Stavros Sachtouris | |
1456 | 3dabe5d2 | Stavros Sachtouris | def test_container_get(self): |
1457 | 3dabe5d2 | Stavros Sachtouris | """Test container_GET"""
|
1458 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c1 |
1459 | 3dabe5d2 | Stavros Sachtouris | |
1460 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_get()
|
1461 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 200) |
1462 | 3dabe5d2 | Stavros Sachtouris | fullLen = len(r.json)
|
1463 | 3dabe5d2 | Stavros Sachtouris | |
1464 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_get(prefix='test') |
1465 | 3dabe5d2 | Stavros Sachtouris | lalobjects = [obj for obj in r.json if obj['name'].startswith('test')] |
1466 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r.json) > 1) |
1467 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(len(r.json), len(lalobjects)) |
1468 | 3dabe5d2 | Stavros Sachtouris | |
1469 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_get(limit=1) |
1470 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(len(r.json), 1) |
1471 | 3dabe5d2 | Stavros Sachtouris | |
1472 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_get(marker='another') |
1473 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r.json) > 1) |
1474 | 3dabe5d2 | Stavros Sachtouris | neobjects = [obj for obj in r.json if obj['name'] > 'another'] |
1475 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(len(r.json), len(neobjects)) |
1476 | 3dabe5d2 | Stavros Sachtouris | |
1477 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_get(prefix='another.test', delimiter='.') |
1478 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(fullLen > len(r.json)) |
1479 | 3dabe5d2 | Stavros Sachtouris | |
1480 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_get(path='/') |
1481 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(fullLen, len(r.json)) |
1482 | 3dabe5d2 | Stavros Sachtouris | |
1483 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_get(format='xml') |
1484 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.text.split()[4], 'name="' + self.c1 + '">') |
1485 | 3dabe5d2 | Stavros Sachtouris | |
1486 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_get(meta=['incontainer']) |
1487 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r.json) > 0) |
1488 | 3dabe5d2 | Stavros Sachtouris | |
1489 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_get(show_only_shared=True) |
1490 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r.json) < fullLen) |
1491 | 3dabe5d2 | Stavros Sachtouris | |
1492 | 3dabe5d2 | Stavros Sachtouris | try:
|
1493 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_get(until=1000000000) |
1494 | 3dabe5d2 | Stavros Sachtouris | datestring = unicode(r.headers['x-account-until-timestamp']) |
1495 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(u'Sun, 09 Sep 2001 01:46:40 GMT', datestring) |
1496 | 3dabe5d2 | Stavros Sachtouris | |
1497 | 3dabe5d2 | Stavros Sachtouris | except ClientError:
|
1498 | 3dabe5d2 | Stavros Sachtouris | |
1499 | 3dabe5d2 | Stavros Sachtouris | pass
|
1500 | 3dabe5d2 | Stavros Sachtouris | |
1501 | 3dabe5d2 | Stavros Sachtouris | """Check and if un/modified_since"""
|
1502 | 3dabe5d2 | Stavros Sachtouris | for format in self.client.DATE_FORMATS: |
1503 | 3dabe5d2 | Stavros Sachtouris | now_formated = self.now_unformated.strftime(format)
|
1504 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.container_get(if_modified_since=now_formated,
|
1505 | 3dabe5d2 | Stavros Sachtouris | success=(200, 304, 412)) |
1506 | 3dabe5d2 | Stavros Sachtouris | sc1 = r1.status_code |
1507 | 3dabe5d2 | Stavros Sachtouris | r1.release() |
1508 | 3dabe5d2 | Stavros Sachtouris | r2 = self.client.container_get(if_unmodified_since=now_formated,
|
1509 | 3dabe5d2 | Stavros Sachtouris | success=(200, 304, 412)) |
1510 | 3dabe5d2 | Stavros Sachtouris | sc2 = r2.status_code |
1511 | 3dabe5d2 | Stavros Sachtouris | r2.release() |
1512 | 3dabe5d2 | Stavros Sachtouris | self.assertNotEqual(sc1, sc2)
|
1513 | 3dabe5d2 | Stavros Sachtouris | |
1514 | 3dabe5d2 | Stavros Sachtouris | def test_container_put(self): |
1515 | 3dabe5d2 | Stavros Sachtouris | """Test container_PUT"""
|
1516 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
1517 | 3dabe5d2 | Stavros Sachtouris | |
1518 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_put()
|
1519 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 202) |
1520 | 3dabe5d2 | Stavros Sachtouris | |
1521 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_quota(self.client.container) |
1522 | 3dabe5d2 | Stavros Sachtouris | cquota = r.values()[0]
|
1523 | 3dabe5d2 | Stavros Sachtouris | newquota = 2 * int(cquota) |
1524 | 3dabe5d2 | Stavros Sachtouris | |
1525 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_put(quota=newquota)
|
1526 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 202) |
1527 | 3dabe5d2 | Stavros Sachtouris | |
1528 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_quota(self.client.container) |
1529 | 3dabe5d2 | Stavros Sachtouris | xquota = int(r.values()[0]) |
1530 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(newquota, xquota)
|
1531 | 3dabe5d2 | Stavros Sachtouris | |
1532 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_put(versioning='auto') |
1533 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 202) |
1534 | 3dabe5d2 | Stavros Sachtouris | |
1535 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_versioning(self.client.container) |
1536 | 3dabe5d2 | Stavros Sachtouris | nvers = r.values()[0]
|
1537 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual('auto', nvers) |
1538 | 3dabe5d2 | Stavros Sachtouris | |
1539 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_put(versioning='none') |
1540 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 202) |
1541 | 3dabe5d2 | Stavros Sachtouris | |
1542 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_versioning(self.client.container) |
1543 | 3dabe5d2 | Stavros Sachtouris | nvers = r.values()[0]
|
1544 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual('none', nvers) |
1545 | 3dabe5d2 | Stavros Sachtouris | |
1546 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_put(metadata={'m1': 'v1', 'm2': 'v2'}) |
1547 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 202) |
1548 | 3dabe5d2 | Stavros Sachtouris | |
1549 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_meta(self.client.container) |
1550 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-container-meta-m1' in r) |
1551 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-container-meta-m1'], 'v1') |
1552 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-container-meta-m2' in r) |
1553 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-container-meta-m2'], 'v2') |
1554 | 3dabe5d2 | Stavros Sachtouris | |
1555 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_put(metadata={'m1': '', 'm2': 'v2a'}) |
1556 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 202) |
1557 | 3dabe5d2 | Stavros Sachtouris | |
1558 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_meta(self.client.container) |
1559 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-container-meta-m1' not in r) |
1560 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-container-meta-m2' in r) |
1561 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-container-meta-m2'], 'v2a') |
1562 | 3dabe5d2 | Stavros Sachtouris | |
1563 | 3dabe5d2 | Stavros Sachtouris | self.client.del_container_meta(self.client.container) |
1564 | 3dabe5d2 | Stavros Sachtouris | |
1565 | 3dabe5d2 | Stavros Sachtouris | def test_container_post(self): |
1566 | 3dabe5d2 | Stavros Sachtouris | """Test container_POST"""
|
1567 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
1568 | 3dabe5d2 | Stavros Sachtouris | |
1569 | 3dabe5d2 | Stavros Sachtouris | """Simple post"""
|
1570 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_post()
|
1571 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 202) |
1572 | 3dabe5d2 | Stavros Sachtouris | |
1573 | 3dabe5d2 | Stavros Sachtouris | """post meta"""
|
1574 | 3dabe5d2 | Stavros Sachtouris | self.client.set_container_meta({'m1': 'v1', 'm2': 'v2'}) |
1575 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_meta(self.client.container) |
1576 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-container-meta-m1' in r) |
1577 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-container-meta-m1'], 'v1') |
1578 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-container-meta-m2' in r) |
1579 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-container-meta-m2'], 'v2') |
1580 | 3dabe5d2 | Stavros Sachtouris | |
1581 | 3dabe5d2 | Stavros Sachtouris | """post/2del meta"""
|
1582 | 3dabe5d2 | Stavros Sachtouris | r = self.client.del_container_meta('m1') |
1583 | 3dabe5d2 | Stavros Sachtouris | r = self.client.set_container_meta({'m2': 'v2a'}) |
1584 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_meta(self.client.container) |
1585 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-container-meta-m1' not in r) |
1586 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-container-meta-m2' in r) |
1587 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-container-meta-m2'], 'v2a') |
1588 | 3dabe5d2 | Stavros Sachtouris | |
1589 | 3dabe5d2 | Stavros Sachtouris | """check quota"""
|
1590 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_quota(self.client.container) |
1591 | 3dabe5d2 | Stavros Sachtouris | cquota = r.values()[0]
|
1592 | 3dabe5d2 | Stavros Sachtouris | newquota = 2 * int(cquota) |
1593 | 3dabe5d2 | Stavros Sachtouris | r = self.client.set_container_quota(newquota)
|
1594 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_quota(self.client.container) |
1595 | 3dabe5d2 | Stavros Sachtouris | xquota = int(r.values()[0]) |
1596 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(newquota, xquota)
|
1597 | 3dabe5d2 | Stavros Sachtouris | r = self.client.set_container_quota(cquota)
|
1598 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_quota(self.client.container) |
1599 | 3dabe5d2 | Stavros Sachtouris | xquota = r.values()[0]
|
1600 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(cquota, xquota)
|
1601 | 3dabe5d2 | Stavros Sachtouris | |
1602 | 3dabe5d2 | Stavros Sachtouris | """Check versioning"""
|
1603 | 3dabe5d2 | Stavros Sachtouris | self.client.set_container_versioning('auto') |
1604 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_versioning(self.client.container) |
1605 | 3dabe5d2 | Stavros Sachtouris | nvers = r.values()[0]
|
1606 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual('auto', nvers) |
1607 | 3dabe5d2 | Stavros Sachtouris | self.client.set_container_versioning('none') |
1608 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_container_versioning(self.client.container) |
1609 | 3dabe5d2 | Stavros Sachtouris | nvers = r.values()[0]
|
1610 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual('none', nvers) |
1611 | 3dabe5d2 | Stavros Sachtouris | |
1612 | 3dabe5d2 | Stavros Sachtouris | """put_block uses content_type and content_length to
|
1613 | 3dabe5d2 | Stavros Sachtouris | post blocks of data 2 container. All that in upload_object"""
|
1614 | 3dabe5d2 | Stavros Sachtouris | """Change a file at fs"""
|
1615 | 3dabe5d2 | Stavros Sachtouris | self.create_large_file(1024 * 1024 * 100, 'l100M.' + unicode(self.now)) |
1616 | 3dabe5d2 | Stavros Sachtouris | """Upload it at a directory in container"""
|
1617 | 3dabe5d2 | Stavros Sachtouris | self.client.create_directory('dir') |
1618 | 3dabe5d2 | Stavros Sachtouris | newf = open(self.fname, 'r') |
1619 | 3dabe5d2 | Stavros Sachtouris | self.client.upload_object('/dir/sample.file', newf) |
1620 | 3dabe5d2 | Stavros Sachtouris | newf.close() |
1621 | 3dabe5d2 | Stavros Sachtouris | """Check if file has been uploaded"""
|
1622 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info('/dir/sample.file') |
1623 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(int(r['content-length']) > 100000000) |
1624 | 3dabe5d2 | Stavros Sachtouris | |
1625 | 3dabe5d2 | Stavros Sachtouris | """WTF is tranfer_encoding? What should I check about th** s**t? """
|
1626 | 3dabe5d2 | Stavros Sachtouris | #TODO
|
1627 | 3dabe5d2 | Stavros Sachtouris | |
1628 | 3dabe5d2 | Stavros Sachtouris | """Check update=False"""
|
1629 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_post('test', |
1630 | 3dabe5d2 | Stavros Sachtouris | update=False,
|
1631 | 3dabe5d2 | Stavros Sachtouris | metadata={'newmeta': 'newval'}) |
1632 | 3dabe5d2 | Stavros Sachtouris | |
1633 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info('test') |
1634 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-object-meta-newmeta' in r) |
1635 | 3dabe5d2 | Stavros Sachtouris | self.assertFalse('x-object-meta-incontainer' in r) |
1636 | 3dabe5d2 | Stavros Sachtouris | |
1637 | 3dabe5d2 | Stavros Sachtouris | r = self.client.del_container_meta('m2') |
1638 | 3dabe5d2 | Stavros Sachtouris | |
1639 | 3dabe5d2 | Stavros Sachtouris | def test_container_delete(self): |
1640 | 3dabe5d2 | Stavros Sachtouris | """Test container_DELETE"""
|
1641 | 3dabe5d2 | Stavros Sachtouris | |
1642 | 3dabe5d2 | Stavros Sachtouris | """Fail to delete a non-empty container"""
|
1643 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
1644 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_delete(success=409) |
1645 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 409) |
1646 | 3dabe5d2 | Stavros Sachtouris | |
1647 | 3dabe5d2 | Stavros Sachtouris | """Fail to delete c3 (empty) container"""
|
1648 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c3 |
1649 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_delete(until='1000000000') |
1650 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 204) |
1651 | 3dabe5d2 | Stavros Sachtouris | |
1652 | 3dabe5d2 | Stavros Sachtouris | """Delete c3 (empty) container"""
|
1653 | 3dabe5d2 | Stavros Sachtouris | r = self.client.container_delete()
|
1654 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 204) |
1655 | 3dabe5d2 | Stavros Sachtouris | |
1656 | 3dabe5d2 | Stavros Sachtouris | """Purge container(empty a container), check versionlist"""
|
1657 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c1 |
1658 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_head('test', success=(200, 404)) |
1659 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 200) |
1660 | 3dabe5d2 | Stavros Sachtouris | self.client.del_container(delimiter='/') |
1661 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_head('test', success=(200, 404)) |
1662 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 404) |
1663 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_versionlist('test') |
1664 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r) > 0) |
1665 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r[0]) > 1) |
1666 | 3dabe5d2 | Stavros Sachtouris | self.client.purge_container()
|
1667 | 3dabe5d2 | Stavros Sachtouris | self.assertRaises(ClientError,
|
1668 | 3dabe5d2 | Stavros Sachtouris | self.client.get_object_versionlist,
|
1669 | 3dabe5d2 | Stavros Sachtouris | 'test')
|
1670 | 3dabe5d2 | Stavros Sachtouris | |
1671 | 3dabe5d2 | Stavros Sachtouris | def test_object_head(self): |
1672 | 3dabe5d2 | Stavros Sachtouris | """Test object_HEAD"""
|
1673 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
1674 | 3dabe5d2 | Stavros Sachtouris | obj = 'test'
|
1675 | 3dabe5d2 | Stavros Sachtouris | |
1676 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_head(obj)
|
1677 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 200) |
1678 | 3dabe5d2 | Stavros Sachtouris | etag = r.headers['etag']
|
1679 | 3dabe5d2 | Stavros Sachtouris | |
1680 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_head(obj, version=40) |
1681 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.headers['x-object-version'], '40') |
1682 | 3dabe5d2 | Stavros Sachtouris | |
1683 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_head(obj, if_etag_match=etag)
|
1684 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 200) |
1685 | 3dabe5d2 | Stavros Sachtouris | |
1686 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_head(obj,
|
1687 | 3dabe5d2 | Stavros Sachtouris | if_etag_not_match=etag, |
1688 | 3dabe5d2 | Stavros Sachtouris | success=(200, 412, 304)) |
1689 | 3dabe5d2 | Stavros Sachtouris | self.assertNotEqual(r.status_code, 200) |
1690 | 3dabe5d2 | Stavros Sachtouris | |
1691 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_head(obj,
|
1692 | 3dabe5d2 | Stavros Sachtouris | version=40,
|
1693 | 3dabe5d2 | Stavros Sachtouris | if_etag_match=etag, |
1694 | 3dabe5d2 | Stavros Sachtouris | success=412)
|
1695 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 412) |
1696 | 3dabe5d2 | Stavros Sachtouris | |
1697 | 3dabe5d2 | Stavros Sachtouris | """Check and if(un)modified_since"""
|
1698 | 3dabe5d2 | Stavros Sachtouris | for format in self.client.DATE_FORMATS: |
1699 | 3dabe5d2 | Stavros Sachtouris | now_formated = self.now_unformated.strftime(format)
|
1700 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.object_head(obj, if_modified_since=now_formated,
|
1701 | 3dabe5d2 | Stavros Sachtouris | success=(200, 304, 412)) |
1702 | 3dabe5d2 | Stavros Sachtouris | sc1 = r1.status_code |
1703 | 3dabe5d2 | Stavros Sachtouris | r1.release() |
1704 | 3dabe5d2 | Stavros Sachtouris | r2 = self.client.object_head(obj, if_unmodified_since=now_formated,
|
1705 | 3dabe5d2 | Stavros Sachtouris | success=(200, 304, 412)) |
1706 | 3dabe5d2 | Stavros Sachtouris | sc2 = r2.status_code |
1707 | 3dabe5d2 | Stavros Sachtouris | r2.release() |
1708 | 3dabe5d2 | Stavros Sachtouris | self.assertNotEqual(sc1, sc2)
|
1709 | 3dabe5d2 | Stavros Sachtouris | |
1710 | 3dabe5d2 | Stavros Sachtouris | def test_object_get(self): |
1711 | 3dabe5d2 | Stavros Sachtouris | """Test object_GET"""
|
1712 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c1 |
1713 | 3dabe5d2 | Stavros Sachtouris | obj = 'test'
|
1714 | 3dabe5d2 | Stavros Sachtouris | |
1715 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj)
|
1716 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 200) |
1717 | 3dabe5d2 | Stavros Sachtouris | |
1718 | 3dabe5d2 | Stavros Sachtouris | osize = int(r.headers['content-length']) |
1719 | 3dabe5d2 | Stavros Sachtouris | etag = r.headers['etag']
|
1720 | 3dabe5d2 | Stavros Sachtouris | |
1721 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj, hashmap=True) |
1722 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('hashes' in r.json\ |
1723 | 3dabe5d2 | Stavros Sachtouris | and 'block_hash' in r.json\ |
1724 | 3dabe5d2 | Stavros Sachtouris | and 'block_size' in r.json\ |
1725 | 3dabe5d2 | Stavros Sachtouris | and 'bytes' in r.json) |
1726 | 3dabe5d2 | Stavros Sachtouris | |
1727 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj, format='xml', hashmap=True) |
1728 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(len(r.text.split('hash>')), 3) |
1729 | 3dabe5d2 | Stavros Sachtouris | |
1730 | 3dabe5d2 | Stavros Sachtouris | rangestr = 'bytes=%s-%s' % (osize / 3, osize / 2) |
1731 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj,
|
1732 | 3dabe5d2 | Stavros Sachtouris | data_range=rangestr, |
1733 | 3dabe5d2 | Stavros Sachtouris | success=(200, 206)) |
1734 | 3dabe5d2 | Stavros Sachtouris | partsize = int(r.headers['content-length']) |
1735 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(0 < partsize and partsize <= 1 + osize / 3) |
1736 | 3dabe5d2 | Stavros Sachtouris | |
1737 | 3dabe5d2 | Stavros Sachtouris | rangestr = 'bytes=%s-%s' % (osize / 3, osize / 2) |
1738 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj,
|
1739 | 3dabe5d2 | Stavros Sachtouris | data_range=rangestr, |
1740 | 3dabe5d2 | Stavros Sachtouris | if_range=True,
|
1741 | 3dabe5d2 | Stavros Sachtouris | success=(200, 206)) |
1742 | 3dabe5d2 | Stavros Sachtouris | partsize = int(r.headers['content-length']) |
1743 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(0 < partsize and partsize <= 1 + osize / 3) |
1744 | 3dabe5d2 | Stavros Sachtouris | |
1745 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj, if_etag_match=etag)
|
1746 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 200) |
1747 | 3dabe5d2 | Stavros Sachtouris | |
1748 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj, if_etag_not_match=etag + 'LALALA') |
1749 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 200) |
1750 | 3dabe5d2 | Stavros Sachtouris | |
1751 | 3dabe5d2 | Stavros Sachtouris | """Check and if(un)modified_since"""
|
1752 | 3dabe5d2 | Stavros Sachtouris | for format in self.client.DATE_FORMATS: |
1753 | 3dabe5d2 | Stavros Sachtouris | now_formated = self.now_unformated.strftime(format)
|
1754 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.object_get(obj, if_modified_since=now_formated,
|
1755 | 3dabe5d2 | Stavros Sachtouris | success=(200, 304, 412)) |
1756 | 3dabe5d2 | Stavros Sachtouris | sc1 = r1.status_code |
1757 | 3dabe5d2 | Stavros Sachtouris | r1.release() |
1758 | 3dabe5d2 | Stavros Sachtouris | r2 = self.client.object_get(obj,
|
1759 | 3dabe5d2 | Stavros Sachtouris | if_unmodified_since=now_formated, |
1760 | 3dabe5d2 | Stavros Sachtouris | success=(200, 304, 412)) |
1761 | 3dabe5d2 | Stavros Sachtouris | sc2 = r2.status_code |
1762 | 3dabe5d2 | Stavros Sachtouris | r2.release() |
1763 | 3dabe5d2 | Stavros Sachtouris | self.assertNotEqual(sc1, sc2)
|
1764 | 3dabe5d2 | Stavros Sachtouris | |
1765 | 22beceb3 | Stavros Sachtouris | """Upload an object to download"""
|
1766 | 22beceb3 | Stavros Sachtouris | src_fname = '/tmp/localfile1_%s' % self.now |
1767 | 22beceb3 | Stavros Sachtouris | dnl_fname = '/tmp/localfile2_%s' % self.now |
1768 | 22beceb3 | Stavros Sachtouris | trg_fname = 'remotefile_%s' % self.now |
1769 | 22beceb3 | Stavros Sachtouris | f_size = 59247824
|
1770 | 22beceb3 | Stavros Sachtouris | self.create_large_file(f_size, src_fname)
|
1771 | 22beceb3 | Stavros Sachtouris | src_f = open(src_fname, 'rb+') |
1772 | 22beceb3 | Stavros Sachtouris | print('\tUploading...')
|
1773 | 22beceb3 | Stavros Sachtouris | self.client.upload_object(trg_fname, src_f)
|
1774 | 22beceb3 | Stavros Sachtouris | src_f.close() |
1775 | 22beceb3 | Stavros Sachtouris | print('\tDownloading...')
|
1776 | 22beceb3 | Stavros Sachtouris | dnl_f = open(dnl_fname, 'wb+') |
1777 | 22beceb3 | Stavros Sachtouris | self.client.download_object(trg_fname, dnl_f)
|
1778 | 22beceb3 | Stavros Sachtouris | dnl_f.close() |
1779 | 22beceb3 | Stavros Sachtouris | |
1780 | 22beceb3 | Stavros Sachtouris | print('\tCheck if files match...')
|
1781 | 22beceb3 | Stavros Sachtouris | src_f = open(src_fname)
|
1782 | 22beceb3 | Stavros Sachtouris | dnl_f = open(dnl_fname)
|
1783 | 22beceb3 | Stavros Sachtouris | for pos in (0, f_size / 2, f_size - 20): |
1784 | 22beceb3 | Stavros Sachtouris | src_f.seek(pos) |
1785 | 22beceb3 | Stavros Sachtouris | dnl_f.seek(pos) |
1786 | 22beceb3 | Stavros Sachtouris | self.assertEqual(src_f.read(10), dnl_f.read(10)) |
1787 | 22beceb3 | Stavros Sachtouris | src_f.close() |
1788 | 22beceb3 | Stavros Sachtouris | dnl_f.close() |
1789 | 22beceb3 | Stavros Sachtouris | |
1790 | 22beceb3 | Stavros Sachtouris | os.remove(src_fname) |
1791 | 22beceb3 | Stavros Sachtouris | os.remove(dnl_fname) |
1792 | 22beceb3 | Stavros Sachtouris | |
1793 | 3dabe5d2 | Stavros Sachtouris | def test_object_put(self): |
1794 | 3dabe5d2 | Stavros Sachtouris | """Test object_PUT"""
|
1795 | 3dabe5d2 | Stavros Sachtouris | |
1796 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
1797 | 3dabe5d2 | Stavros Sachtouris | obj = 'another.test'
|
1798 | 3dabe5d2 | Stavros Sachtouris | |
1799 | 3dabe5d2 | Stavros Sachtouris | """create the object"""
|
1800 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(obj,
|
1801 | 3dabe5d2 | Stavros Sachtouris | data='a',
|
1802 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octer-stream',
|
1803 | 3dabe5d2 | Stavros Sachtouris | permissions={ |
1804 | 3dabe5d2 | Stavros Sachtouris | 'read': ['accX:groupA', 'u1', 'u2'], |
1805 | 3dabe5d2 | Stavros Sachtouris | 'write': ['u2', 'u3']}, |
1806 | 3dabe5d2 | Stavros Sachtouris | metadata={'key1': 'val1', 'key2': 'val2'}, |
1807 | 3dabe5d2 | Stavros Sachtouris | content_encoding='UTF-8',
|
1808 | 3dabe5d2 | Stavros Sachtouris | content_disposition='attachment; filename="fname.ext"')
|
1809 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
1810 | 3dabe5d2 | Stavros Sachtouris | etag = r.headers['etag']
|
1811 | 3dabe5d2 | Stavros Sachtouris | |
1812 | 3dabe5d2 | Stavros Sachtouris | """Check content-disposition"""
|
1813 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info(obj)
|
1814 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('content-disposition' in r) |
1815 | 3dabe5d2 | Stavros Sachtouris | |
1816 | 7d91734c | Stavros Sachtouris | """Check permissions"""
|
1817 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_sharing(obj)
|
1818 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('accx:groupa' in r['read']) |
1819 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('u1' in r['read']) |
1820 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('u2' in r['write']) |
1821 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('u3' in r['write']) |
1822 | 3dabe5d2 | Stavros Sachtouris | |
1823 | 3dabe5d2 | Stavros Sachtouris | """Check metadata"""
|
1824 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_meta(obj)
|
1825 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-object-meta-key1'], 'val1') |
1826 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-object-meta-key2'], 'val2') |
1827 | 3dabe5d2 | Stavros Sachtouris | |
1828 | 3dabe5d2 | Stavros Sachtouris | """Check public and if_etag_match"""
|
1829 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(obj, if_etag_match=etag, data='b', |
1830 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-stream', public=True) |
1831 | 3dabe5d2 | Stavros Sachtouris | |
1832 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj)
|
1833 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-object-public' in r.headers) |
1834 | 3dabe5d2 | Stavros Sachtouris | vers2 = int(r.headers['x-object-version']) |
1835 | 3dabe5d2 | Stavros Sachtouris | etag = r.headers['etag']
|
1836 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.text, 'b') |
1837 | 3dabe5d2 | Stavros Sachtouris | |
1838 | 3dabe5d2 | Stavros Sachtouris | """Check if_etag_not_match"""
|
1839 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(obj, if_etag_not_match=etag, data='c', |
1840 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-stream', success=(201, 412)) |
1841 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 412) |
1842 | 3dabe5d2 | Stavros Sachtouris | |
1843 | 3dabe5d2 | Stavros Sachtouris | """Check content_type and content_length"""
|
1844 | 3dabe5d2 | Stavros Sachtouris | tmpdir = 'dir' + unicode(self.now) |
1845 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(tmpdir,
|
1846 | 3dabe5d2 | Stavros Sachtouris | content_type='application/directory',
|
1847 | 3dabe5d2 | Stavros Sachtouris | content_length=0)
|
1848 | 3dabe5d2 | Stavros Sachtouris | |
1849 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info(tmpdir)
|
1850 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['content-type'], 'application/directory') |
1851 | 3dabe5d2 | Stavros Sachtouris | |
1852 | 3dabe5d2 | Stavros Sachtouris | """Check copy_from, content_encoding"""
|
1853 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put('%s/%s' % (tmpdir, obj), |
1854 | 3dabe5d2 | Stavros Sachtouris | format=None,
|
1855 | 3dabe5d2 | Stavros Sachtouris | copy_from='/%s/%s' % (self.client.container, obj), |
1856 | 3dabe5d2 | Stavros Sachtouris | content_encoding='application/octet-stream',
|
1857 | 3dabe5d2 | Stavros Sachtouris | source_account=self.client.account,
|
1858 | 3dabe5d2 | Stavros Sachtouris | content_length=0, success=201) |
1859 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
1860 | 3dabe5d2 | Stavros Sachtouris | |
1861 | 3dabe5d2 | Stavros Sachtouris | """Test copy_object for cross-conctainer copy"""
|
1862 | 3dabe5d2 | Stavros Sachtouris | self.client.copy_object(src_container=self.c2, |
1863 | 3dabe5d2 | Stavros Sachtouris | src_object='%s/%s' % (tmpdir, obj),
|
1864 | 3dabe5d2 | Stavros Sachtouris | dst_container=self.c1,
|
1865 | 3dabe5d2 | Stavros Sachtouris | dst_object=obj) |
1866 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c1 |
1867 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.get_object_info(obj)
|
1868 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
1869 | 3dabe5d2 | Stavros Sachtouris | r2 = self.client.get_object_info('%s/%s' % (tmpdir, obj)) |
1870 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r1['x-object-hash'], r2['x-object-hash']) |
1871 | 3dabe5d2 | Stavros Sachtouris | |
1872 | 3dabe5d2 | Stavros Sachtouris | """Check cross-container copy_from, content_encoding"""
|
1873 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c1 |
1874 | 3dabe5d2 | Stavros Sachtouris | fromstr = '/%s/%s/%s' % (self.c2, tmpdir, obj) |
1875 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(obj,
|
1876 | 3dabe5d2 | Stavros Sachtouris | format=None,
|
1877 | 3dabe5d2 | Stavros Sachtouris | copy_from=fromstr, |
1878 | 3dabe5d2 | Stavros Sachtouris | content_encoding='application/octet-stream',
|
1879 | 3dabe5d2 | Stavros Sachtouris | source_account=self.client.account,
|
1880 | 3dabe5d2 | Stavros Sachtouris | content_length=0, success=201) |
1881 | 3dabe5d2 | Stavros Sachtouris | |
1882 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
1883 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info(obj)
|
1884 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['etag'], etag) |
1885 | 3dabe5d2 | Stavros Sachtouris | |
1886 | 3dabe5d2 | Stavros Sachtouris | """Check source_account"""
|
1887 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
1888 | 3dabe5d2 | Stavros Sachtouris | fromstr = '/%s/%s' % (self.c1, obj) |
1889 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(obj + 'v2', |
1890 | 3dabe5d2 | Stavros Sachtouris | format=None,
|
1891 | 3dabe5d2 | Stavros Sachtouris | move_from=fromstr, |
1892 | 3dabe5d2 | Stavros Sachtouris | content_encoding='application/octet-stream',
|
1893 | 3dabe5d2 | Stavros Sachtouris | source_account='nonExistendAddress@NeverLand.com',
|
1894 | 3dabe5d2 | Stavros Sachtouris | content_length=0,
|
1895 | 3dabe5d2 | Stavros Sachtouris | success=(201, 403)) |
1896 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 403) |
1897 | 3dabe5d2 | Stavros Sachtouris | |
1898 | 3dabe5d2 | Stavros Sachtouris | """Check cross-container move_from"""
|
1899 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c1 |
1900 | 3dabe5d2 | Stavros Sachtouris | r1 = self.client.get_object_info(obj)
|
1901 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
1902 | 3dabe5d2 | Stavros Sachtouris | self.client.move_object(src_container=self.c1, |
1903 | 3dabe5d2 | Stavros Sachtouris | src_object=obj, |
1904 | 3dabe5d2 | Stavros Sachtouris | dst_container=self.c2,
|
1905 | 3dabe5d2 | Stavros Sachtouris | dst_object=obj + 'v0')
|
1906 | 3dabe5d2 | Stavros Sachtouris | r0 = self.client.get_object_info(obj + 'v0') |
1907 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r1['x-object-hash'], r0['x-object-hash']) |
1908 | 3dabe5d2 | Stavros Sachtouris | |
1909 | 3dabe5d2 | Stavros Sachtouris | """Check move_from"""
|
1910 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(obj + 'v1', |
1911 | 3dabe5d2 | Stavros Sachtouris | format=None,
|
1912 | 3dabe5d2 | Stavros Sachtouris | move_from='/%s/%s' % (self.c2, obj), |
1913 | 3dabe5d2 | Stavros Sachtouris | source_version=vers2, |
1914 | 3dabe5d2 | Stavros Sachtouris | content_encoding='application/octet-stream',
|
1915 | 3dabe5d2 | Stavros Sachtouris | content_length=0, success=201) |
1916 | 3dabe5d2 | Stavros Sachtouris | |
1917 | 3dabe5d2 | Stavros Sachtouris | """Check manifest"""
|
1918 | 3dabe5d2 | Stavros Sachtouris | mobj = 'manifest.test'
|
1919 | 3dabe5d2 | Stavros Sachtouris | txt = ''
|
1920 | 3dabe5d2 | Stavros Sachtouris | for i in range(10): |
1921 | 3dabe5d2 | Stavros Sachtouris | txt += '%s' % i
|
1922 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put('%s/%s' % (mobj, i), |
1923 | 3dabe5d2 | Stavros Sachtouris | data='%s' % i,
|
1924 | 3dabe5d2 | Stavros Sachtouris | content_length=1,
|
1925 | 3dabe5d2 | Stavros Sachtouris | success=201,
|
1926 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-stream',
|
1927 | 3dabe5d2 | Stavros Sachtouris | content_encoding='application/octet-stream')
|
1928 | 3dabe5d2 | Stavros Sachtouris | |
1929 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(mobj,
|
1930 | 3dabe5d2 | Stavros Sachtouris | content_length=0,
|
1931 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-stream',
|
1932 | 3dabe5d2 | Stavros Sachtouris | manifest='%s/%s' % (self.client.container, mobj)) |
1933 | 3dabe5d2 | Stavros Sachtouris | |
1934 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(mobj)
|
1935 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.text, txt)
|
1936 | 3dabe5d2 | Stavros Sachtouris | |
1937 | 3dabe5d2 | Stavros Sachtouris | """Upload a local file with one request"""
|
1938 | 3dabe5d2 | Stavros Sachtouris | self.create_large_file(1024 * 10, 'l10K.' + unicode(self.now)) |
1939 | 3dabe5d2 | Stavros Sachtouris | newf = open(self.fname, 'r') |
1940 | 3dabe5d2 | Stavros Sachtouris | self.client.upload_object('sample.file', newf) |
1941 | 3dabe5d2 | Stavros Sachtouris | newf.close() |
1942 | 3dabe5d2 | Stavros Sachtouris | """Check if file has been uploaded"""
|
1943 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info('sample.file') |
1944 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(int(r['content-length']), 10260) |
1945 | 3dabe5d2 | Stavros Sachtouris | |
1946 | 3dabe5d2 | Stavros Sachtouris | """Some problems with transfer-encoding?"""
|
1947 | 3dabe5d2 | Stavros Sachtouris | |
1948 | 3dabe5d2 | Stavros Sachtouris | def test_object_copy(self): |
1949 | 3dabe5d2 | Stavros Sachtouris | """Test object_COPY"""
|
1950 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
1951 | 3dabe5d2 | Stavros Sachtouris | obj = 'test2'
|
1952 | 3dabe5d2 | Stavros Sachtouris | |
1953 | 3dabe5d2 | Stavros Sachtouris | data = '{"key1":"val1", "key2":"val2"}'
|
1954 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(obj + 'orig', |
1955 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-stream',
|
1956 | 3dabe5d2 | Stavros Sachtouris | data=data, |
1957 | 3dabe5d2 | Stavros Sachtouris | metadata={'mkey1': 'mval1', 'mkey2': 'mval2'}, |
1958 | 3dabe5d2 | Stavros Sachtouris | permissions={ |
1959 | 3dabe5d2 | Stavros Sachtouris | 'read': ['accX:groupA', 'u1', 'u2'], |
1960 | 3dabe5d2 | Stavros Sachtouris | 'write': ['u2', 'u3']}, |
1961 | 3dabe5d2 | Stavros Sachtouris | content_disposition='attachment; filename="fname.ext"')
|
1962 | 3dabe5d2 | Stavros Sachtouris | |
1963 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_copy(obj + 'orig', |
1964 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s' % (self.client.container, obj), |
1965 | 3dabe5d2 | Stavros Sachtouris | ignore_content_type=False, content_type='application/json', |
1966 | 3dabe5d2 | Stavros Sachtouris | metadata={'mkey2': 'mval2a', 'mkey3': 'mval3'}, |
1967 | 3dabe5d2 | Stavros Sachtouris | permissions={'write': ['u5', 'accX:groupB']}) |
1968 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
1969 | 3dabe5d2 | Stavros Sachtouris | |
1970 | 3dabe5d2 | Stavros Sachtouris | """Check content-disposition"""
|
1971 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info(obj)
|
1972 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('content-disposition' in r) |
1973 | 3dabe5d2 | Stavros Sachtouris | |
1974 | 3dabe5d2 | Stavros Sachtouris | """Check Metadata"""
|
1975 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_meta(obj)
|
1976 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-object-meta-mkey1'], 'mval1') |
1977 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-object-meta-mkey2'], 'mval2a') |
1978 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-object-meta-mkey3'], 'mval3') |
1979 | 3dabe5d2 | Stavros Sachtouris | |
1980 | 3dabe5d2 | Stavros Sachtouris | """Check permissions"""
|
1981 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_sharing(obj)
|
1982 | 3dabe5d2 | Stavros Sachtouris | self.assertFalse('read' in r or 'u2' in r['write']) |
1983 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('accx:groupb' in r['write']) |
1984 | 3dabe5d2 | Stavros Sachtouris | |
1985 | 3dabe5d2 | Stavros Sachtouris | """Check destination account"""
|
1986 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_copy(obj,
|
1987 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s' % (self.c1, obj), |
1988 | 3dabe5d2 | Stavros Sachtouris | content_encoding='utf8',
|
1989 | 3dabe5d2 | Stavros Sachtouris | content_type='application/json',
|
1990 | 3dabe5d2 | Stavros Sachtouris | destination_account='nonExistendAddress@NeverLand.com',
|
1991 | 3dabe5d2 | Stavros Sachtouris | success=(201, 403)) |
1992 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 403) |
1993 | 3dabe5d2 | Stavros Sachtouris | |
1994 | 3dabe5d2 | Stavros Sachtouris | """Check destination being another container
|
1995 | 3dabe5d2 | Stavros Sachtouris | and also content_type and content encoding"""
|
1996 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_copy(obj,
|
1997 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s' % (self.c1, obj), |
1998 | 3dabe5d2 | Stavros Sachtouris | content_encoding='utf8',
|
1999 | 3dabe5d2 | Stavros Sachtouris | content_type='application/json')
|
2000 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
2001 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.headers['content-type'], |
2002 | 3dabe5d2 | Stavros Sachtouris | 'application/json; charset=UTF-8')
|
2003 | 3dabe5d2 | Stavros Sachtouris | |
2004 | 3dabe5d2 | Stavros Sachtouris | """Check ignore_content_type and content_type"""
|
2005 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj)
|
2006 | 3dabe5d2 | Stavros Sachtouris | etag = r.headers['etag']
|
2007 | 3dabe5d2 | Stavros Sachtouris | ctype = r.headers['content-type']
|
2008 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(ctype, 'application/json') |
2009 | 3dabe5d2 | Stavros Sachtouris | |
2010 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_copy(obj + 'orig', |
2011 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s0' % (self.client.container, obj), |
2012 | 3dabe5d2 | Stavros Sachtouris | ignore_content_type=True,
|
2013 | 3dabe5d2 | Stavros Sachtouris | content_type='application/json')
|
2014 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
2015 | 3dabe5d2 | Stavros Sachtouris | self.assertNotEqual(r.headers['content-type'], 'application/json') |
2016 | 3dabe5d2 | Stavros Sachtouris | |
2017 | 3dabe5d2 | Stavros Sachtouris | """Check if_etag_(not_)match"""
|
2018 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_copy(obj,
|
2019 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s1' % (self.client.container, obj), |
2020 | 3dabe5d2 | Stavros Sachtouris | if_etag_match=etag) |
2021 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
2022 | 3dabe5d2 | Stavros Sachtouris | |
2023 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_copy(obj,
|
2024 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s2' % (self.client.container, obj), |
2025 | 3dabe5d2 | Stavros Sachtouris | if_etag_not_match='lalala')
|
2026 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
2027 | 3dabe5d2 | Stavros Sachtouris | vers2 = r.headers['x-object-version']
|
2028 | 3dabe5d2 | Stavros Sachtouris | |
2029 | 3dabe5d2 | Stavros Sachtouris | """Check source_version, public and format """
|
2030 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_copy(obj + '2', |
2031 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s3' % (self.client.container, obj), |
2032 | 3dabe5d2 | Stavros Sachtouris | source_version=vers2, |
2033 | 3dabe5d2 | Stavros Sachtouris | format='xml',
|
2034 | 3dabe5d2 | Stavros Sachtouris | public=True)
|
2035 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
2036 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(r.headers['content-type'].index('xml') > 0) |
2037 | 3dabe5d2 | Stavros Sachtouris | |
2038 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info(obj + '3') |
2039 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-object-public' in r) |
2040 | 3dabe5d2 | Stavros Sachtouris | |
2041 | 3dabe5d2 | Stavros Sachtouris | def test_object_move(self): |
2042 | 3dabe5d2 | Stavros Sachtouris | """Test object_MOVE"""
|
2043 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
2044 | 3dabe5d2 | Stavros Sachtouris | obj = 'test2'
|
2045 | 3dabe5d2 | Stavros Sachtouris | |
2046 | 3dabe5d2 | Stavros Sachtouris | data = '{"key1": "val1", "key2": "val2"}'
|
2047 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(obj + 'orig', |
2048 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-stream',
|
2049 | 3dabe5d2 | Stavros Sachtouris | data=data, |
2050 | 3dabe5d2 | Stavros Sachtouris | metadata={'mkey1': 'mval1', 'mkey2': 'mval2'}, |
2051 | 3dabe5d2 | Stavros Sachtouris | permissions={'read': ['accX:groupA', 'u1', 'u2'], |
2052 | 3dabe5d2 | Stavros Sachtouris | 'write': ['u2', 'u3']}) |
2053 | 3dabe5d2 | Stavros Sachtouris | |
2054 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_move(obj + 'orig', |
2055 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s' % (self.client.container, obj), |
2056 | 3dabe5d2 | Stavros Sachtouris | ignore_content_type=False,
|
2057 | 3dabe5d2 | Stavros Sachtouris | content_type='application/json',
|
2058 | 3dabe5d2 | Stavros Sachtouris | metadata={'mkey2': 'mval2a', 'mkey3': 'mval3'}, |
2059 | 3dabe5d2 | Stavros Sachtouris | permissions={'write': ['u5', 'accX:groupB']}) |
2060 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
2061 | 3dabe5d2 | Stavros Sachtouris | |
2062 | 3dabe5d2 | Stavros Sachtouris | """Check Metadata"""
|
2063 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_meta(obj)
|
2064 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-object-meta-mkey1'], 'mval1') |
2065 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-object-meta-mkey2'], 'mval2a') |
2066 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-object-meta-mkey3'], 'mval3') |
2067 | 3dabe5d2 | Stavros Sachtouris | |
2068 | 7d91734c | Stavros Sachtouris | """Check permissions"""
|
2069 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_sharing(obj)
|
2070 | 3dabe5d2 | Stavros Sachtouris | self.assertFalse('read' in r) |
2071 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('u5' in r['write']) |
2072 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('accx:groupb' in r['write']) |
2073 | 3dabe5d2 | Stavros Sachtouris | |
2074 | 3dabe5d2 | Stavros Sachtouris | """Check destination account"""
|
2075 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_move(obj,
|
2076 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s' % (self.c1, obj), |
2077 | 3dabe5d2 | Stavros Sachtouris | content_encoding='utf8',
|
2078 | 3dabe5d2 | Stavros Sachtouris | content_type='application/json',
|
2079 | 3dabe5d2 | Stavros Sachtouris | destination_account='nonExistendAddress@NeverLand.com',
|
2080 | 3dabe5d2 | Stavros Sachtouris | success=(201, 403)) |
2081 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 403) |
2082 | 3dabe5d2 | Stavros Sachtouris | |
2083 | 3dabe5d2 | Stavros Sachtouris | """Check destination being another container and also
|
2084 | 3dabe5d2 | Stavros Sachtouris | content_type, content_disposition and content encoding"""
|
2085 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_move(obj,
|
2086 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s' % (self.c1, obj), |
2087 | 3dabe5d2 | Stavros Sachtouris | content_encoding='utf8',
|
2088 | 3dabe5d2 | Stavros Sachtouris | content_type='application/json',
|
2089 | 3dabe5d2 | Stavros Sachtouris | content_disposition='attachment; filename="fname.ext"')
|
2090 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
2091 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.headers['content-type'], |
2092 | 3dabe5d2 | Stavros Sachtouris | 'application/json; charset=UTF-8')
|
2093 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c1 |
2094 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info(obj)
|
2095 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('content-disposition' in r\ |
2096 | 3dabe5d2 | Stavros Sachtouris | and 'fname.ext' in r['content-disposition']) |
2097 | 3dabe5d2 | Stavros Sachtouris | etag = r['etag']
|
2098 | 3dabe5d2 | Stavros Sachtouris | ctype = r['content-type']
|
2099 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(ctype, 'application/json') |
2100 | 3dabe5d2 | Stavros Sachtouris | |
2101 | 3dabe5d2 | Stavros Sachtouris | """Check ignore_content_type and content_type"""
|
2102 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_move(obj,
|
2103 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s' % (self.c2, obj), |
2104 | 3dabe5d2 | Stavros Sachtouris | ignore_content_type=True,
|
2105 | 3dabe5d2 | Stavros Sachtouris | content_type='application/json')
|
2106 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
2107 | 3dabe5d2 | Stavros Sachtouris | self.assertNotEqual(r.headers['content-type'], 'application/json') |
2108 | 3dabe5d2 | Stavros Sachtouris | |
2109 | 3dabe5d2 | Stavros Sachtouris | """Check if_etag_(not_)match"""
|
2110 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
2111 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_move(obj,
|
2112 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s0' % (self.client.container, obj), |
2113 | 3dabe5d2 | Stavros Sachtouris | if_etag_match=etag) |
2114 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
2115 | 3dabe5d2 | Stavros Sachtouris | |
2116 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_move(obj + '0', |
2117 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s1' % (self.client.container, obj), |
2118 | 3dabe5d2 | Stavros Sachtouris | if_etag_not_match='lalala')
|
2119 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
2120 | 3dabe5d2 | Stavros Sachtouris | |
2121 | 3dabe5d2 | Stavros Sachtouris | """Check public and format """
|
2122 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_move(obj + '1', |
2123 | 3dabe5d2 | Stavros Sachtouris | destination='/%s/%s2' % (self.client.container, obj), |
2124 | 3dabe5d2 | Stavros Sachtouris | format='xml', public=True) |
2125 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 201) |
2126 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(r.headers['content-type'].index('xml') > 0) |
2127 | 3dabe5d2 | Stavros Sachtouris | |
2128 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info(obj + '2') |
2129 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-object-public' in r) |
2130 | 3dabe5d2 | Stavros Sachtouris | |
2131 | 3dabe5d2 | Stavros Sachtouris | def test_object_post(self): |
2132 | 3dabe5d2 | Stavros Sachtouris | """Test object_POST"""
|
2133 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
2134 | 3dabe5d2 | Stavros Sachtouris | obj = 'test2'
|
2135 | 3dabe5d2 | Stavros Sachtouris | """create a filesystem file"""
|
2136 | 3dabe5d2 | Stavros Sachtouris | self.fname = obj
|
2137 | 3dabe5d2 | Stavros Sachtouris | newf = open(self.fname, 'w') |
2138 | 3dabe5d2 | Stavros Sachtouris | newf.writelines(['ello!\n',
|
2139 | 3dabe5d2 | Stavros Sachtouris | 'This is a test line\n',
|
2140 | 3dabe5d2 | Stavros Sachtouris | 'inside a test file\n'])
|
2141 | 3dabe5d2 | Stavros Sachtouris | newf.close() |
2142 | 3dabe5d2 | Stavros Sachtouris | """create a file on container"""
|
2143 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(obj,
|
2144 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-stream',
|
2145 | 3dabe5d2 | Stavros Sachtouris | data='H',
|
2146 | 3dabe5d2 | Stavros Sachtouris | metadata={'mkey1': 'mval1', 'mkey2': 'mval2'}, |
2147 | 3dabe5d2 | Stavros Sachtouris | permissions={'read': ['accX:groupA', 'u1', 'u2'], |
2148 | 3dabe5d2 | Stavros Sachtouris | 'write': ['u2', 'u3']}) |
2149 | 3dabe5d2 | Stavros Sachtouris | |
2150 | 3dabe5d2 | Stavros Sachtouris | """Append tests update, content_range, content_type, content_length"""
|
2151 | 3dabe5d2 | Stavros Sachtouris | newf = open(obj, 'r') |
2152 | 3dabe5d2 | Stavros Sachtouris | self.client.append_object(obj, newf)
|
2153 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj)
|
2154 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(r.text.startswith('Hello!')) |
2155 | 3dabe5d2 | Stavros Sachtouris | |
2156 | 3dabe5d2 | Stavros Sachtouris | """Overwrite tests update,
|
2157 | 3dabe5d2 | Stavros Sachtouris | content_type, content_length, content_range
|
2158 | 3dabe5d2 | Stavros Sachtouris | """
|
2159 | 3dabe5d2 | Stavros Sachtouris | newf.seek(0)
|
2160 | 3dabe5d2 | Stavros Sachtouris | r = self.client.overwrite_object(obj, 0, 10, newf) |
2161 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj)
|
2162 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(r.text.startswith('ello!')) |
2163 | 3dabe5d2 | Stavros Sachtouris | newf.close() |
2164 | 3dabe5d2 | Stavros Sachtouris | |
2165 | 3dabe5d2 | Stavros Sachtouris | """Truncate tests update,
|
2166 | 3dabe5d2 | Stavros Sachtouris | content_range, content_type, object_bytes and source_object"""
|
2167 | 3dabe5d2 | Stavros Sachtouris | r = self.client.truncate_object(obj, 5) |
2168 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj)
|
2169 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.text, 'ello!') |
2170 | 3dabe5d2 | Stavros Sachtouris | |
2171 | 3dabe5d2 | Stavros Sachtouris | """Check metadata"""
|
2172 | 3dabe5d2 | Stavros Sachtouris | self.client.set_object_meta(obj, {'mkey2': 'mval2a', 'mkey3': 'mval3'}) |
2173 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_meta(obj)
|
2174 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-object-meta-mkey1'], 'mval1') |
2175 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-object-meta-mkey2'], 'mval2a') |
2176 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['x-object-meta-mkey3'], 'mval3') |
2177 | 3dabe5d2 | Stavros Sachtouris | self.client.del_object_meta('mkey1', obj) |
2178 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_meta(obj)
|
2179 | 3dabe5d2 | Stavros Sachtouris | self.assertFalse('x-object-meta-mkey1' in r) |
2180 | 3dabe5d2 | Stavros Sachtouris | |
2181 | 7d91734c | Stavros Sachtouris | """Check permissions"""
|
2182 | 3dabe5d2 | Stavros Sachtouris | self.client.set_object_sharing(obj,
|
2183 | 3dabe5d2 | Stavros Sachtouris | read_permition=['u4', 'u5'], write_permition=['u4']) |
2184 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_sharing(obj)
|
2185 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('read' in r) |
2186 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('u5' in r['read']) |
2187 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('write' in r) |
2188 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('u4' in r['write']) |
2189 | 3dabe5d2 | Stavros Sachtouris | self.client.del_object_sharing(obj)
|
2190 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_sharing(obj)
|
2191 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue(len(r) == 0) |
2192 | 3dabe5d2 | Stavros Sachtouris | |
2193 | 3dabe5d2 | Stavros Sachtouris | """Check publish"""
|
2194 | 3dabe5d2 | Stavros Sachtouris | self.client.publish_object(obj)
|
2195 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info(obj)
|
2196 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-object-public' in r) |
2197 | 3dabe5d2 | Stavros Sachtouris | self.client.unpublish_object(obj)
|
2198 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info(obj)
|
2199 | 3dabe5d2 | Stavros Sachtouris | self.assertFalse('x-object-public' in r) |
2200 | 3dabe5d2 | Stavros Sachtouris | |
2201 | 3dabe5d2 | Stavros Sachtouris | """Check if_etag_(not)match"""
|
2202 | 3dabe5d2 | Stavros Sachtouris | etag = r['etag']
|
2203 | 7d91734c | Stavros Sachtouris | """
|
2204 | 7d91734c | Stavros Sachtouris | r = self.client.object_post(obj,
|
2205 | 7d91734c | Stavros Sachtouris | update=True,
|
2206 | 7d91734c | Stavros Sachtouris | public=True,
|
2207 | 7d91734c | Stavros Sachtouris | if_etag_not_match=etag,
|
2208 | 7d91734c | Stavros Sachtouris | success=(412, 202, 204))
|
2209 | 7d91734c | Stavros Sachtouris | self.assertEqual(r.status_code, 412)
|
2210 | 7d91734c | Stavros Sachtouris | """
|
2211 | 3dabe5d2 | Stavros Sachtouris | |
2212 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_post(obj, update=True, public=True, |
2213 | 3dabe5d2 | Stavros Sachtouris | if_etag_match=etag, content_encoding='application/json')
|
2214 | 3dabe5d2 | Stavros Sachtouris | |
2215 | 3dabe5d2 | Stavros Sachtouris | r = self.client.get_object_info(obj)
|
2216 | 3dabe5d2 | Stavros Sachtouris | helloVersion = r['x-object-version']
|
2217 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('x-object-public' in r) |
2218 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r['content-encoding'], 'application/json') |
2219 | 3dabe5d2 | Stavros Sachtouris | |
2220 | 3dabe5d2 | Stavros Sachtouris | """Check source_version and source_account and content_disposition"""
|
2221 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_post(obj,
|
2222 | 3dabe5d2 | Stavros Sachtouris | update=True,
|
2223 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-srteam',
|
2224 | 3dabe5d2 | Stavros Sachtouris | content_length=5,
|
2225 | 3dabe5d2 | Stavros Sachtouris | content_range='bytes 1-5/*',
|
2226 | 3dabe5d2 | Stavros Sachtouris | source_object='/%s/%s' % (self.c2, obj), |
2227 | 3dabe5d2 | Stavros Sachtouris | source_account='thisAccountWillNeverExist@adminland.com',
|
2228 | 3dabe5d2 | Stavros Sachtouris | source_version=helloVersion, |
2229 | 3dabe5d2 | Stavros Sachtouris | data='12345',
|
2230 | 3dabe5d2 | Stavros Sachtouris | success=(403, 202, 204)) |
2231 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 403) |
2232 | 3dabe5d2 | Stavros Sachtouris | |
2233 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_post(obj,
|
2234 | 3dabe5d2 | Stavros Sachtouris | update=True,
|
2235 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-srteam',
|
2236 | 3dabe5d2 | Stavros Sachtouris | content_length=5,
|
2237 | 3dabe5d2 | Stavros Sachtouris | content_range='bytes 1-5/*',
|
2238 | 3dabe5d2 | Stavros Sachtouris | source_object='/%s/%s' % (self.c2, obj), |
2239 | 3dabe5d2 | Stavros Sachtouris | source_account=self.client.account,
|
2240 | 3dabe5d2 | Stavros Sachtouris | source_version=helloVersion, |
2241 | 3dabe5d2 | Stavros Sachtouris | data='12345',
|
2242 | 3dabe5d2 | Stavros Sachtouris | content_disposition='attachment; filename="fname.ext"')
|
2243 | 3dabe5d2 | Stavros Sachtouris | |
2244 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj)
|
2245 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.text, 'eello!') |
2246 | 3dabe5d2 | Stavros Sachtouris | self.assertTrue('content-disposition' in r.headers\ |
2247 | 3dabe5d2 | Stavros Sachtouris | and 'fname.ext' in r.headers['content-disposition']) |
2248 | 3dabe5d2 | Stavros Sachtouris | |
2249 | 3dabe5d2 | Stavros Sachtouris | """Check manifest"""
|
2250 | 3dabe5d2 | Stavros Sachtouris | mobj = 'manifest.test'
|
2251 | 3dabe5d2 | Stavros Sachtouris | txt = ''
|
2252 | 3dabe5d2 | Stavros Sachtouris | for i in range(10): |
2253 | 3dabe5d2 | Stavros Sachtouris | txt += '%s' % i
|
2254 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put('%s/%s' % (mobj, i), |
2255 | 3dabe5d2 | Stavros Sachtouris | data='%s' % i,
|
2256 | 3dabe5d2 | Stavros Sachtouris | content_length=1,
|
2257 | 3dabe5d2 | Stavros Sachtouris | success=201,
|
2258 | 3dabe5d2 | Stavros Sachtouris | content_encoding='application/octet-stream',
|
2259 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-stream')
|
2260 | 3dabe5d2 | Stavros Sachtouris | |
2261 | 3dabe5d2 | Stavros Sachtouris | self.client.create_object_by_manifestation(mobj,
|
2262 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-stream')
|
2263 | 3dabe5d2 | Stavros Sachtouris | |
2264 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_post(mobj,
|
2265 | 3dabe5d2 | Stavros Sachtouris | manifest='%s/%s' % (self.client.container, mobj)) |
2266 | 3dabe5d2 | Stavros Sachtouris | |
2267 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(mobj)
|
2268 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.text, txt)
|
2269 | 3dabe5d2 | Stavros Sachtouris | |
2270 | 3dabe5d2 | Stavros Sachtouris | """We need to check transfer_encoding """
|
2271 | 3dabe5d2 | Stavros Sachtouris | |
2272 | 3dabe5d2 | Stavros Sachtouris | def test_object_delete(self): |
2273 | 3dabe5d2 | Stavros Sachtouris | """Test object_DELETE"""
|
2274 | 3dabe5d2 | Stavros Sachtouris | self.client.container = self.c2 |
2275 | 3dabe5d2 | Stavros Sachtouris | obj = 'test2'
|
2276 | 3dabe5d2 | Stavros Sachtouris | """create a file on container"""
|
2277 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_put(obj,
|
2278 | 3dabe5d2 | Stavros Sachtouris | content_type='application/octet-stream',
|
2279 | 3dabe5d2 | Stavros Sachtouris | data='H',
|
2280 | 3dabe5d2 | Stavros Sachtouris | metadata={'mkey1': 'mval1', 'mkey2': 'mval2'}, |
2281 | 3dabe5d2 | Stavros Sachtouris | permissions={'read': ['accX:groupA', 'u1', 'u2'], |
2282 | 3dabe5d2 | Stavros Sachtouris | 'write': ['u2', 'u3']}) |
2283 | 3dabe5d2 | Stavros Sachtouris | |
2284 | 3dabe5d2 | Stavros Sachtouris | """Check with false until"""
|
2285 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_delete(obj, until=1000000) |
2286 | 3dabe5d2 | Stavros Sachtouris | |
2287 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj, success=(200, 404)) |
2288 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 200) |
2289 | 3dabe5d2 | Stavros Sachtouris | |
2290 | 3dabe5d2 | Stavros Sachtouris | """Check normal case"""
|
2291 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_delete(obj)
|
2292 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 204) |
2293 | 3dabe5d2 | Stavros Sachtouris | |
2294 | 3dabe5d2 | Stavros Sachtouris | r = self.client.object_get(obj, success=(200, 404)) |
2295 | 3dabe5d2 | Stavros Sachtouris | self.assertEqual(r.status_code, 404) |
2296 | 3dabe5d2 | Stavros Sachtouris | |
2297 | 3dabe5d2 | Stavros Sachtouris | def create_large_file(self, size, name): |
2298 | 3dabe5d2 | Stavros Sachtouris | """Create a large file at fs"""
|
2299 | 3dabe5d2 | Stavros Sachtouris | self.fname = name
|
2300 | 3dabe5d2 | Stavros Sachtouris | import random |
2301 | 3dabe5d2 | Stavros Sachtouris | random.seed(self.now)
|
2302 | 19699c46 | Stavros Sachtouris | rf = open('/dev/urandom', 'r') |
2303 | 3dabe5d2 | Stavros Sachtouris | f = open(self.fname, 'w') |
2304 | 7d91734c | Stavros Sachtouris | sys.stdout.write( |
2305 | 7d91734c | Stavros Sachtouris | ' create random file %s of size %s ' % (name, size))
|
2306 | 3dabe5d2 | Stavros Sachtouris | for hobyte_id in range(size / 8): |
2307 | 19699c46 | Stavros Sachtouris | #sss = 'hobt%s' % random.randint(1000, 9999)
|
2308 | 19699c46 | Stavros Sachtouris | f.write(rf.read(8))
|
2309 | 3dabe5d2 | Stavros Sachtouris | if 0 == (hobyte_id * 800) % size: |
2310 | 3dabe5d2 | Stavros Sachtouris | f.write('\n')
|
2311 | 19699c46 | Stavros Sachtouris | f.flush() |
2312 | 3dabe5d2 | Stavros Sachtouris | prs = (hobyte_id * 800) // size
|
2313 | e0aac6a6 | Stavros Sachtouris | sys.stdout.write('\b\b')
|
2314 | 3dabe5d2 | Stavros Sachtouris | if prs > 10: |
2315 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.write('\b')
|
2316 | e0aac6a6 | Stavros Sachtouris | sys.stdout.write('%s%%' % prs)
|
2317 | 3dabe5d2 | Stavros Sachtouris | sys.stdout.flush() |
2318 | e0aac6a6 | Stavros Sachtouris | print('\b\b\b100%')
|
2319 | 19699c46 | Stavros Sachtouris | f.flush() |
2320 | 19699c46 | Stavros Sachtouris | rf.close() |
2321 | 3dabe5d2 | Stavros Sachtouris | f.close() |
2322 | 3dabe5d2 | Stavros Sachtouris | """"""
|
2323 | 3dabe5d2 | Stavros Sachtouris | |
2324 | b08af3e6 | Stavros Sachtouris | |
2325 | 1bb4d14d | Stavros Sachtouris | def init_parser(): |
2326 | 3dabe5d2 | Stavros Sachtouris | parser = ArgumentParser(add_help=False)
|
2327 | 3dabe5d2 | Stavros Sachtouris | parser.add_argument('-h', '--help', |
2328 | 3dabe5d2 | Stavros Sachtouris | dest='help',
|
2329 | 3dabe5d2 | Stavros Sachtouris | action='store_true',
|
2330 | 3dabe5d2 | Stavros Sachtouris | default=False,
|
2331 | 3dabe5d2 | Stavros Sachtouris | help="Show this help message and exit")
|
2332 | 3dabe5d2 | Stavros Sachtouris | return parser
|
2333 | 15618e89 | Stavros Sachtouris | |
2334 | 3dabe5d2 | Stavros Sachtouris | |
2335 | 75c3fc42 | Stavros Sachtouris | def main(argv): |
2336 | 3dabe5d2 | Stavros Sachtouris | |
2337 | 75c3fc42 | Stavros Sachtouris | suiteFew = unittest.TestSuite() |
2338 | 3dabe5d2 | Stavros Sachtouris | if len(argv) == 0 or argv[0] == 'pithos': |
2339 | 3dabe5d2 | Stavros Sachtouris | if len(argv) == 1: |
2340 | 3dabe5d2 | Stavros Sachtouris | suiteFew.addTest(unittest.makeSuite(testPithos)) |
2341 | 3dabe5d2 | Stavros Sachtouris | else:
|
2342 | 3dabe5d2 | Stavros Sachtouris | suiteFew.addTest(testPithos('test_' + argv[1])) |
2343 | 3dabe5d2 | Stavros Sachtouris | if len(argv) == 0 or argv[0] == 'cyclades': |
2344 | 3dabe5d2 | Stavros Sachtouris | if len(argv) == 1: |
2345 | 3dabe5d2 | Stavros Sachtouris | #suiteFew.addTest(unittest.makeSuite(testCyclades))
|
2346 | 3dabe5d2 | Stavros Sachtouris | suiteFew.addTest(testCyclades('test_000'))
|
2347 | 3dabe5d2 | Stavros Sachtouris | else:
|
2348 | 3dabe5d2 | Stavros Sachtouris | suiteFew.addTest(testCyclades('test_' + argv[1])) |
2349 | 3dabe5d2 | Stavros Sachtouris | if len(argv) == 0 or argv[0] == 'image': |
2350 | 3dabe5d2 | Stavros Sachtouris | if len(argv) == 1: |
2351 | 3dabe5d2 | Stavros Sachtouris | suiteFew.addTest(unittest.makeSuite(testImage)) |
2352 | 3dabe5d2 | Stavros Sachtouris | else:
|
2353 | 3dabe5d2 | Stavros Sachtouris | suiteFew.addTest(testImage('test_' + argv[1])) |
2354 | 3dabe5d2 | Stavros Sachtouris | if len(argv) == 0 or argv[0] == 'astakos': |
2355 | 3dabe5d2 | Stavros Sachtouris | if len(argv) == 1: |
2356 | 3dabe5d2 | Stavros Sachtouris | suiteFew.addTest(unittest.makeSuite(testAstakos)) |
2357 | 3dabe5d2 | Stavros Sachtouris | else:
|
2358 | 3dabe5d2 | Stavros Sachtouris | suiteFew.addTest(testAstakos('test_' + argv[1])) |
2359 | 3dabe5d2 | Stavros Sachtouris | |
2360 | 3dabe5d2 | Stavros Sachtouris | unittest.TextTestRunner(verbosity=2).run(suiteFew)
|
2361 | 75c3fc42 | Stavros Sachtouris | |
2362 | 75c3fc42 | Stavros Sachtouris | if __name__ == '__main__': |
2363 | 75c3fc42 | Stavros Sachtouris | parser = init_parser() |
2364 | 75c3fc42 | Stavros Sachtouris | args, argv = parser.parse_known_args() |
2365 | 75c3fc42 | Stavros Sachtouris | if len(argv) > 2 or getattr(args, 'help') or len(argv) < 1: |
2366 | 75c3fc42 | Stavros Sachtouris | raise Exception('\tusage: tests.py <group> [command]') |
2367 | 75c3fc42 | Stavros Sachtouris | main(argv) |