Example #1
0
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()