def main(): def check(test, f, exp): act = f.readline() if act != exp: print("{0}: Expected {1}, got {2}".format(test, exp, act)) from contextlib import closing print('FileSink: testing') with closing(FileSink()) as f: f.open('./foo/bar/baz') if not os.path.exists('./foo/bar/baz'): print("FileSink: FileSink('./foo/bar/baz') failed") f.write('This is a test\n') with open('./foo/bar/baz') as f: check('FileSink', f, 'This is a test\n') os.remove('./foo/bar/baz') print('RecordSink: testing') with closing(RecordSink(FileSink())) as f: f.open('./foo/bar/0') f.write('"Record 1"') f.write('"Record 2"') f.write('"Record 3"') f.write('"Record 4"') with open('./foo/bar/0') as f: check('RecordSink', f, '[\n') check('RecordSink', f, '"Record 1",\n') check('RecordSink', f, '"Record 2",\n') check('RecordSink', f, '"Record 3",\n') check('RecordSink', f, '"Record 4"\n') check('RecordSink', f, ']\n') os.remove('./foo/bar/0') print('RollingSink: testing') with closing(RollingSink('./foo/bar/{0}', 2, RecordSink(FileSink()))) as f: f.open() f.write('"Record 1"') f.write('"Record 2"') f.write('"Record 3"') f.write('"Record 4"') with open('./foo/bar/0') as f: check('RollingSink', f, '[\n') check('RollingSink', f, '"Record 1",\n') check('RollingSink', f, '"Record 2"\n') check('RollingSink', f, ']\n') os.remove('./foo/bar/0') with open('./foo/bar/1') as f: check('RollingSink', f, '[\n') check('RollingSink', f, '"Record 3",\n') check('RollingSink', f, '"Record 4"\n') check('RollingSink', f, ']\n') os.remove('./foo/bar/1') os.removedirs('./foo/bar') print('S3Sink: testing') from boto.s3.connection import S3Connection conn = S3Connection('AKIAIGBBG3DZFM4MTI4A','9dbOzRaVesmWePrmyX2bFx+T2EA3EHGQWYpvgneP') with closing(RollingSink('/foo/bar/{0}', 2, RecordSink(S3Sink(conn, 'nkrishna-mids205')))) as f: f.open() f.write('"Record 1"') f.write('"Record 2"') f.write('"Record 3"') f.write('"Record 4"') b = conn.lookup('nkrishna-mids205') k = Key(b, '/foo/bar/0') f = BytesIO() k.get_contents_to_file(f) if f.getvalue() != '[\n"Record 1",\n"Record 2"\n]\n': print("S3Sink: unexpected file 0 contents: {0}".format(f.getcontents())) k.delete() k = Key(b, '/foo/bar/1') f = BytesIO() k.get_contents_to_file(f) if f.getvalue() != '[\n"Record 3",\n"Record 4"\n]\n': print("S3Sink: unexpected file 1 contents: {0}".format(f.getcontents())) k.delete()