| #!/usr/bin/env python |
| |
| import sys |
| sys.path.append('./gen-py') |
| |
| from ThriftTest import ThriftTest |
| from ThriftTest.ttypes import * |
| from thrift.transport import TTransport |
| from thrift.transport import TSocket |
| from thrift.protocol import TBinaryProtocol |
| |
| import time |
| |
| import hotshot |
| from hotshot import stats |
| prof = None |
| |
| # Uncomment if you want to profile this biznizzy |
| #prof = hotshot.Profile('hotshot_thrift_stats') |
| #prof.start() |
| |
| host = 'localhost' |
| port = 9090 |
| framed = False |
| framedInput = True |
| argi = 1 |
| |
| # Parse args |
| while argi < len(sys.argv): |
| if sys.argv[argi] == '-h': |
| parts = sys.argv[argi+1].split(':') |
| host = parts[0] |
| port = int(parts[1]) |
| argi += 1 |
| elif sys.argv[argi] == '-f' or sys.argv[argi] == '-framed': |
| framed = True |
| elif sys.argv[argi] == '-fo': |
| framed = True |
| framedInput = False |
| argi += 1 |
| |
| # Make socket |
| socket = TSocket.TSocket(host, port) |
| |
| # Frame or buffer depending upon args |
| if framed: |
| transport = TTransport.TFramedTransport(socket, framedInput, True) |
| else: |
| transport = TTransport.TBufferedTransport(socket) |
| |
| protocol = TBinaryProtocol.TBinaryProtocol(transport) |
| client = ThriftTest.Client(protocol) |
| |
| # Connect! |
| transport.open() |
| |
| # Start debug timing |
| tstart = time.time() |
| |
| try: |
| print "testVoid()" |
| print client.testVoid() |
| except TApplicationException, x: |
| print x.message |
| print x.type |
| |
| print "testString('Python')" |
| print client.testString('Python') |
| |
| print "testByte(63)" |
| print client.testByte(63) |
| |
| print "testI32(-1)" |
| print client.testI32(-1) |
| |
| print "testI32(0)" |
| print client.testI32(0) |
| |
| print "testI64(-34359738368)" |
| print client.testI64(-34359738368) |
| |
| print "testDouble(-5.235098235)" |
| print client.testDouble(-5.235098235) |
| |
| print "testStruct({Zero, 1, -3, -5})" |
| x = Xtruct() |
| x.string_thing = "Zero" |
| x.byte_thing = 1 |
| x.i32_thing = -3 |
| x.i64_thing = -5 |
| x = client.testStruct(x) |
| print "{%s, %d, %d, %d}" % (x.string_thing, x.byte_thing, x.i32_thing, x.i64_thing) |
| |
| print "testException('Safe')" |
| print client.testException('Safe') |
| |
| try: |
| print "textException('Xception')" |
| print client.testException('Xception') |
| |
| except Xception, x: |
| print "Xception (%d, %s)" % (x.errorCode, x.message) |
| |
| tend = time.time() |
| ttotal = (tend-tstart)*1000 |
| print "Total time: %f ms" % (ttotal) |
| |
| # Close! |
| transport.close() |
| |
| # Profiler output |
| if prof != None: |
| prof.stop() |
| prof.close() |
| s = stats.load('hotshot_thrift_stats') |
| s.sort_stats('time').print_stats() |