2016-01-07 18:26:44 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
import argparse
|
|
|
|
import sys
|
|
|
|
|
|
|
|
from util import add_common_args, init_protocol
|
2016-02-28 02:28:19 +00:00
|
|
|
from local_thrift import thrift # noqa
|
2016-01-07 18:26:44 +00:00
|
|
|
from thrift.Thrift import TMessageType, TType
|
|
|
|
|
|
|
|
|
|
|
|
# TODO: generate from ThriftTest.thrift
|
|
|
|
def test_list(proto, value):
|
2016-02-02 16:57:03 +00:00
|
|
|
method_name = 'testList'
|
|
|
|
ttype = TType.LIST
|
|
|
|
etype = TType.I32
|
|
|
|
proto.writeMessageBegin(method_name, TMessageType.CALL, 3)
|
|
|
|
proto.writeStructBegin(method_name + '_args')
|
|
|
|
proto.writeFieldBegin('thing', ttype, 1)
|
|
|
|
proto.writeListBegin(etype, len(value))
|
|
|
|
for e in value:
|
|
|
|
proto.writeI32(e)
|
|
|
|
proto.writeListEnd()
|
|
|
|
proto.writeFieldEnd()
|
|
|
|
proto.writeFieldStop()
|
|
|
|
proto.writeStructEnd()
|
|
|
|
proto.writeMessageEnd()
|
|
|
|
proto.trans.flush()
|
2016-01-07 18:26:44 +00:00
|
|
|
|
2016-02-02 16:57:03 +00:00
|
|
|
_, mtype, _ = proto.readMessageBegin()
|
|
|
|
assert mtype == TMessageType.REPLY
|
|
|
|
proto.readStructBegin()
|
|
|
|
_, ftype, fid = proto.readFieldBegin()
|
|
|
|
assert fid == 0
|
|
|
|
assert ftype == ttype
|
|
|
|
etype2, len2 = proto.readListBegin()
|
|
|
|
assert etype == etype2
|
|
|
|
assert len2 == len(value)
|
|
|
|
for i in range(len2):
|
|
|
|
v = proto.readI32()
|
|
|
|
assert v == value[i]
|
|
|
|
proto.readListEnd()
|
|
|
|
proto.readFieldEnd()
|
|
|
|
_, ftype, _ = proto.readFieldBegin()
|
|
|
|
assert ftype == TType.STOP
|
|
|
|
proto.readStructEnd()
|
|
|
|
proto.readMessageEnd()
|
2016-01-07 18:26:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
def main(argv):
|
2016-02-02 16:57:03 +00:00
|
|
|
p = argparse.ArgumentParser()
|
|
|
|
add_common_args(p)
|
|
|
|
p.add_argument('--limit', type=int)
|
|
|
|
args = p.parse_args()
|
|
|
|
proto = init_protocol(args)
|
|
|
|
# TODO: test set and map
|
|
|
|
test_list(proto, list(range(args.limit - 1)))
|
|
|
|
test_list(proto, list(range(args.limit - 1)))
|
|
|
|
print('[OK]: limit - 1')
|
|
|
|
test_list(proto, list(range(args.limit)))
|
|
|
|
test_list(proto, list(range(args.limit)))
|
|
|
|
print('[OK]: just limit')
|
|
|
|
try:
|
|
|
|
test_list(proto, list(range(args.limit + 1)))
|
|
|
|
except:
|
|
|
|
print('[OK]: limit + 1')
|
|
|
|
else:
|
|
|
|
print('[ERROR]: limit + 1')
|
|
|
|
assert False
|
2016-01-07 18:26:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2016-02-02 16:57:03 +00:00
|
|
|
sys.exit(main(sys.argv[1:]))
|