Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2014-04-29 05:03:36 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2014-04-29 05:03:36 (GMT)
commit8ed5799f7d891b8d09ffdc298368f93382ddea5b (patch)
tree59bbe820568cded8efcb300649fed680030c368f /tests
parent37df873b8854ed99bba37139b135f92e204b8bef (diff)
Fix file-less blobs streaming
Diffstat (limited to 'tests')
-rwxr-xr-xtests/units/db/blobs.py12
-rwxr-xr-xtests/units/toolkit/packets.py49
-rwxr-xr-xtests/units/toolkit/router.py28
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):