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