#!/usr/bin/env python import argparse import sys from util import add_common_args, init_protocol from local_thrift import thrift # noqa from thrift.Thrift import TMessageType, TType # TODO: generate from ThriftTest.thrift def test_string(proto, value): method_name = 'testString' ttype = TType.STRING proto.writeMessageBegin(method_name, TMessageType.CALL, 3) proto.writeStructBegin(method_name + '_args') proto.writeFieldBegin('thing', ttype, 1) proto.writeString(value) proto.writeFieldEnd() proto.writeFieldStop() proto.writeStructEnd() proto.writeMessageEnd() proto.trans.flush() _, mtype, _ = proto.readMessageBegin() assert mtype == TMessageType.REPLY proto.readStructBegin() _, ftype, fid = proto.readFieldBegin() assert fid == 0 assert ftype == ttype result = proto.readString() proto.readFieldEnd() _, ftype, _ = proto.readFieldBegin() assert ftype == TType.STOP proto.readStructEnd() proto.readMessageEnd() assert value == result def main(argv): p = argparse.ArgumentParser() add_common_args(p) p.add_argument('--limit', type=int) args = p.parse_args() proto = init_protocol(args) test_string(proto, 'a' * (args.limit - 1)) test_string(proto, 'a' * (args.limit - 1)) print('[OK]: limit - 1') test_string(proto, 'a' * args.limit) test_string(proto, 'a' * args.limit) print('[OK]: just limit') try: test_string(proto, 'a' * (args.limit + 1)) except Exception: print('[OK]: limit + 1') else: print('[ERROR]: limit + 1') assert False if __name__ == '__main__': main(sys.argv[1:])