diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2014-04-29 05:03:36 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2014-04-29 05:03:36 (GMT) |
commit | 8ed5799f7d891b8d09ffdc298368f93382ddea5b (patch) | |
tree | 59bbe820568cded8efcb300649fed680030c368f /tests | |
parent | 37df873b8854ed99bba37139b135f92e204b8bef (diff) |
Fix file-less blobs streaming
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/units/db/blobs.py | 12 | ||||
-rwxr-xr-x | tests/units/toolkit/packets.py | 49 | ||||
-rwxr-xr-x | tests/units/toolkit/router.py | 28 |
3 files changed, 44 insertions, 45 deletions
diff --git a/tests/units/db/blobs.py b/tests/units/db/blobs.py index d5d2b1e..76c544b 100755 --- a/tests/units/db/blobs.py +++ b/tests/units/db/blobs.py @@ -105,9 +105,7 @@ class BlobsTest(tests.Test): self.assertEqual( '0000000000000000000000000000000000000000', blob.digest) - self.assertEqual( - abspath('blobs/%s/%s' % (blob.digest[:3], blob.digest)), - blob.path) + assert blob.path is None self.assertEqual({ 'status': '301 Moved Permanently', 'location': 'location', @@ -116,8 +114,6 @@ class BlobsTest(tests.Test): 'x-seqno': '1', }, blob.meta) - - assert not exists(blob.path) self.assertEqual( sorted([ 'status: 301 Moved Permanently', @@ -126,7 +122,7 @@ class BlobsTest(tests.Test): 'content-length: 101', 'x-seqno: 1', ]), - sorted(file(blob.path + '.meta').read().strip().split('\n'))) + sorted(file('blobs/%s/%s.meta' % (blob.digest[:3], blob.digest)).read().strip().split('\n'))) the_same_blob = blobs.get(blob.digest) assert the_same_blob is not blob @@ -388,7 +384,7 @@ class BlobsTest(tests.Test): blobs.patch(File('./fake', '0000000000000000000000000000000000000001', {'n': 3, 'content-length': '0'}), -3) blob = blobs.get('0000000000000000000000000000000000000001') - assert not exists(blob.path) + assert blob.path is None self.assertEqual({'x-seqno': '-3', 'n': '1', 'status': '410 Gone'}, blob.meta) def test_patch_File(self): @@ -406,7 +402,7 @@ class BlobsTest(tests.Test): blobs.patch(File('./fake', 'foo/bar', {'n': 3, 'content-length': '0', 'path': 'foo/bar'}), -3) blob = blobs.get('foo/bar') - assert not exists(blob.path) + assert blob.path is None self.assertEqual({'x-seqno': '-3', 'n': '1', 'status': '410 Gone'}, blob.meta) def test_walk_Blobs(self): diff --git a/tests/units/toolkit/packets.py b/tests/units/toolkit/packets.py index 6a181b6..3836b6e 100755 --- a/tests/units/toolkit/packets.py +++ b/tests/units/toolkit/packets.py @@ -340,6 +340,28 @@ class PacketsTest(tests.Test): self.assertRaises(StopIteration, next, packets_iter) self.assertEqual(len(stream.getvalue()), stream.tell()) + def test_decode_BlobUrls(self): + stream = zips( + json.dumps({}) + '\n' + + json.dumps({'segment': 1}) + '\n' + + json.dumps({'num': 1, 'content-length': 1}) + '\n' + + 'a' + + json.dumps({'num': 2, 'content-length': 100, 'location': 'http://foo/bar', 'digest': 'digest'}) + '\n' + + json.dumps({'num': 3, 'content-length': 3}) + '\n' + + 'ccc' + ) + packets_iter = iter(packets.decode(stream)) + with next(packets_iter) as packet: + self.assertEqual(1, packet.name) + self.assertEqual([ + (1, 'a'), + (2, None), + (3, 'ccc'), + ], + [(i.meta['num'], file(i.path).read() if i.path else None) for i in packet]) + self.assertRaises(StopIteration, packets_iter.next) + self.assertEqual(len(stream.getvalue()), stream.tell()) + def test_encode_Zipped(self): stream = ''.join([i for i in packets.encode([])]) self.assertEqual( @@ -593,7 +615,7 @@ class PacketsTest(tests.Test): 'ccc' + '\n', unzips(stream)) - def test_encode_BlobWithUrls(self): + def test_encode_BlobUrls(self): class Routes(object): @@ -607,37 +629,46 @@ class PacketsTest(tests.Test): url = 'http://127.0.0.1:%s' % client.ipc_port.value stream = ''.join([i for i in packets.encode([ - (1, None, [File(None, meta={'location': 'fake'})]), + (1, None, [File(None, digest='digest', meta={'location': 'fake'})]), ])]) self.assertEqual( json.dumps({}) + '\n' + json.dumps({'segment': 1}) + '\n' + - json.dumps({'location': 'fake'}) + '\n', + json.dumps({'digest': 'digest', 'location': 'fake'}) + '\n', unzips(stream)) stream = ''.join([i for i in packets.encode([ - (1, None, [File(None, meta={'location': 'fake', 'content-length': '0'})]), + (1, None, [File(None, digest='digest', meta={'location': 'fake', 'content-length': '0'})]), ])]) self.assertEqual( json.dumps({}) + '\n' + json.dumps({'segment': 1}) + '\n' + - json.dumps({'location': 'fake', 'content-length': '0'}) + '\n', + json.dumps({'location': 'fake', 'content-length': '0', 'digest': 'digest'}) + '\n', unzips(stream)) stream = ''.join([i for i in packets.encode([ - (1, None, [File(None, meta={'location': url, 'content-length': str(len('probe'))})]), + (1, None, [File(None, digest='digest', meta={'location': url, 'content-length': str(len('probe'))})]), ])]) self.assertEqual( json.dumps({}) + '\n' + json.dumps({'segment': 1}) + '\n' + - json.dumps({'location': url, 'content-length': str(len('probe'))}) + '\n' + + json.dumps({'location': url, 'content-length': str(len('probe')), 'digest': 'digest'}) + '\n', + unzips(stream)) + + stream = ''.join([i for i in packets.encode([ + (1, None, [File(None, digest='digest', meta={'location': url, 'content-length': str(len('probe'))})]), + ], download_blobs=True)]) + self.assertEqual( + json.dumps({}) + '\n' + + json.dumps({'segment': 1}) + '\n' + + json.dumps({'location': url, 'content-length': str(len('probe')), 'digest': 'digest'}) + '\n' + 'probe' + '\n', unzips(stream)) def encode(): stream = ''.join([i for i in packets.encode([ - (1, None, [File(None, meta={'location': 'http://127.0.0.1:108', 'content-length': str(len('probe'))})]), - ])]) + (1, None, [File(None, digest='digest', meta={'location': 'http://127.0.0.1:108', 'content-length': str(len('probe'))})]), + ], download_blobs=True)]) self.assertRaises(http.ConnectionError, encode) def test_limited_encode_Blobs(self): diff --git a/tests/units/toolkit/router.py b/tests/units/toolkit/router.py index 7222da1..2231107 100755 --- a/tests/units/toolkit/router.py +++ b/tests/units/toolkit/router.py @@ -1466,34 +1466,6 @@ class RouterTest(tests.Test): ['blob'], [i for i in File('blob').iter_content()]) - def test_File_IterContentByUrl(self): - this.http = http.Connection() - - class Routes(object): - - @route('GET') - def probe(self): - this.response['content-type'] = 'foo/bar' - this.response['content-length'] = str(len('probe')) - this.response['content-disposition'] = 'attachment; filename="foo"' - - return 'probe' - - server = coroutine.WSGIServer(('127.0.0.1', client.ipc_port.value), Router(Routes())) - coroutine.spawn(server.serve_forever) - coroutine.dispatch() - - blob = File(None, meta={'location': 'http://127.0.0.1:%s' % client.ipc_port.value}) - self.assertEqual( - ['probe'], - [i for i in blob.iter_content()]) - self.assertEqual({ - 'content-length': '5', - 'content-type': 'foo/bar', - 'content-disposition': 'attachment; filename="foo"', - }, - blob.meta) - def test_SetCookie(self): class Routes(object): |