def test_compress_level(compression_method): from cloudfiles import CloudFiles, exceptions filepath = "/tmp/cloudfiles/compress_level" url = "file://" + filepath content = b'some_string' * 1000 compress_levels = range(1, 9, 2) for compress_level in compress_levels: cf = CloudFiles(url, num_threads=5) cf.put('info', content, compress=compression_method, compression_level=compress_level) retrieved = cf.get('info') assert content == retrieved conn = cf._get_connection() _, encoding, server_md5, hash_type = conn.get_file("info") assert encoding == compression_method assert hash_type in ('md5', None) assert cf.get('nonexistentfile') is None rmtree(filepath)
def test_transfer_semantics(compression): from cloudfiles import CloudFiles, exceptions path = '/tmp/cloudfiles/xfer' rmtree(path) cff = CloudFiles('file://' + path) cfm = CloudFiles('mem://cloudfiles/xfer') N = 128 content = b'some_string' cff.puts(((str(i), content) for i in range(N)), compress=compression) assert sorted(list(cff)) == sorted([str(i) for i in range(N)]) assert [f['content'] for f in cff[:]] == [content] * N assert sorted([f['path'] for f in cff[:100] ]) == sorted([str(i) for i in range(N)])[:100] assert [f['content'] for f in cff[:100]] == [content] * 100 cfm[:] = cff assert sorted(list(cfm)) == sorted([str(i) for i in range(N)]) assert [f['content'] for f in cfm[:]] == [content] * N cfm.delete(list(cfm)) assert list(cfm) == [] cfm.transfer_from('file://' + path) assert sorted(list(cfm)) == sorted([str(i) for i in range(N)]) assert [f['content'] for f in cfm[:]] == [content] * N cfm.delete(list(cfm)) cff.transfer_to(cfm.cloudpath) assert sorted(list(cfm)) == sorted([str(i) for i in range(N)]) assert [f['content'] for f in cfm[:]] == [content] * N cfm.delete(list(cfm)) cff.transfer_to(cfm.cloudpath, reencode='br') assert sorted(list(cfm)) == sorted([str(i) for i in range(N)]) assert [f['content'] for f in cfm[:]] == [content] * N data = cfm._get_connection()._data data = [os.path.splitext(d)[1] for d in data.keys()] assert all([ext == '.br' for ext in data]) cfm.delete(list(cfm)) cff.delete(list(cff))