Changeset 65787e5 in trunk
- Timestamp:
- 2022-01-20T17:57:52Z (3 years ago)
- Branches:
- master
- Children:
- c4d71a46
- Parents:
- 4b5c71f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/allmydata/test/test_storage_http.py ¶
r4b5c71f r65787e5 17 17 from base64 import b64encode 18 18 from os import urandom 19 20 from twisted.internet.defer import inlineCallbacks21 19 22 20 from hypothesis import assume, given, strategies as st … … 165 163 166 164 165 def result_of(d): 166 """ 167 Synchronously extract the result of a Deferred. 168 """ 169 result = [] 170 error = [] 171 d.addCallbacks(result.append, error.append) 172 if result: 173 return result[0] 174 if error: 175 error[0].raiseException() 176 raise RuntimeError( 177 "We expected given Deferred to have result already, but it wasn't. " 178 + "This is probably a test design issue." 179 ) 180 181 167 182 class RoutingTests(SyncTestCase): 168 183 """ … … 183 198 ) 184 199 185 @inlineCallbacks186 200 def test_authorization_enforcement(self): 187 201 """ … … 190 204 """ 191 205 # Without secret, get a 400 error. 192 response = yield self.client._request( 193 "GET", 194 "http://127.0.0.1/upload_secret", 206 response = result_of( 207 self.client._request( 208 "GET", 209 "http://127.0.0.1/upload_secret", 210 ) 195 211 ) 196 212 self.assertEqual(response.code, 400) 197 213 198 214 # With secret, we're good. 199 response = yield self.client._request( 200 "GET", "http://127.0.0.1/upload_secret", upload_secret=b"MAGIC" 215 response = result_of( 216 self.client._request( 217 "GET", "http://127.0.0.1/upload_secret", upload_secret=b"MAGIC" 218 ) 201 219 ) 202 220 self.assertEqual(response.code, 200) 203 self.assertEqual( (yieldresponse.content()), b"GOOD SECRET")221 self.assertEqual(result_of(response.content()), b"GOOD SECRET") 204 222 205 223 … … 233 251 self.http = self.useFixture(HttpTestFixture()) 234 252 235 @inlineCallbacks236 253 def test_bad_authentication(self): 237 254 """ … … 245 262 ) 246 263 with self.assertRaises(ClientException) as e: 247 yield client.get_version()264 result_of(client.get_version()) 248 265 self.assertEqual(e.exception.args[0], 401) 249 266 250 @inlineCallbacks251 267 def test_version(self): 252 268 """ … … 256 272 might change across calls. 257 273 """ 258 version = yield self.http.client.get_version()274 version = result_of(self.http.client.get_version()) 259 275 version[b"http://allmydata.org/tahoe/protocols/storage/v1"].pop( 260 276 b"available-space" … … 284 300 self.http = self.useFixture(HttpTestFixture()) 285 301 286 @inlineCallbacks287 302 def test_upload_can_be_downloaded(self): 288 303 """ … … 303 318 lease_secret = urandom(32) 304 319 storage_index = b"".join(bytes([i]) for i in range(16)) 305 created = yield im_client.create( 306 storage_index, {1}, 100, upload_secret, lease_secret, lease_secret 320 created = result_of( 321 im_client.create( 322 storage_index, {1}, 100, upload_secret, lease_secret, lease_secret 323 ) 307 324 ) 308 325 self.assertEqual( … … 320 337 ) 321 338 322 finished = yield write(10, 10)323 self.assertFalse(finished) 324 finished = yield write(30, 10)325 self.assertFalse(finished) 326 finished = yield write(50, 10)339 finished = result_of(write(10, 10)) 340 self.assertFalse(finished) 341 finished = result_of(write(30, 10)) 342 self.assertFalse(finished) 343 finished = result_of(write(50, 10)) 327 344 self.assertFalse(finished) 328 345 329 346 # Then, an overlapping write with matching data (15-35): 330 finished = yield write(15, 20)347 finished = result_of(write(15, 20)) 331 348 self.assertFalse(finished) 332 349 333 350 # Now fill in the holes: 334 finished = yield write(0, 10)335 self.assertFalse(finished) 336 finished = yield write(40, 10)337 self.assertFalse(finished) 338 finished = yield write(60, 40)351 finished = result_of(write(0, 10)) 352 self.assertFalse(finished) 353 finished = result_of(write(40, 10)) 354 self.assertFalse(finished) 355 finished = result_of(write(60, 40)) 339 356 self.assertTrue(finished) 340 357 341 358 # We can now read: 342 359 for offset, length in [(0, 100), (10, 19), (99, 1), (49, 200)]: 343 downloaded = yield im_client.read_share_chunk(344 storage_index, 1, offset, length360 downloaded = result_of( 361 im_client.read_share_chunk(storage_index, 1, offset, length) 345 362 ) 346 363 self.assertEqual(downloaded, expected_data[offset : offset + length])
Note: See TracChangeset
for help on using the changeset viewer.