def do_test(self): self._check_write(HolyMoley()) self._check_read(HolyMoley()) self._check_write(hm) no_set = deepcopy(hm) no_set.contain = set() self._check_read(no_set) self._check_read(hm) self._check_write(rs) self._check_read(rs) self._check_write(rshuge) self._check_read(rshuge) self._check_write(my_zero) self._check_read(my_zero) self._check_read(Backwards(**{"first_tag2": 4, "second_tag1": 2})) o = Backwards(**{"first_tag2": 4, "second_tag1": 2}) trans_fast = TTransport.TMemoryBuffer() trans_slow = TTransport.TMemoryBuffer() prot_fast = self._fast(trans_fast, fallback=False) prot_slow = self._slow(trans_slow) o.write(prot_fast) o.write(prot_slow) ORIG = trans_slow.getvalue() MINE = trans_fast.getvalue() assert id(ORIG) != id(MINE) prot = self._fast(TTransport.TMemoryBuffer(), fallback=False) o.write(prot) prot = self._slow( TTransport.TMemoryBuffer(prot.trans.getvalue())) c = o.__class__() c.read(prot) if c != o: print("copy: ") pprint(repr(c)) print("orig: ") pprint(repr(o))
def do_test(): check_write(hm) check_read(HolyMoley()) no_set = deepcopy(hm) no_set.contain = set() check_read(no_set) check_write(rs) check_read(rs) check_write(rshuge) check_read(rshuge) check_write(my_zero) check_read(my_zero) check_read(Backwards(**{"first_tag2": 4, "second_tag1": 2})) # One case where the serialized form changes, but only superficially. o = Backwards(**{"first_tag2": 4, "second_tag1": 2}) trans_fast = TTransport.TMemoryBuffer() trans_slow = TTransport.TMemoryBuffer() prot_fast = TBinaryProtocol.TBinaryProtocolAccelerated(trans_fast) prot_slow = TBinaryProtocol.TBinaryProtocol(trans_slow) o.write(prot_fast) o.write(prot_slow) ORIG = trans_slow.getvalue() MINE = trans_fast.getvalue() assert id(ORIG) != id(MINE) prot = TBinaryProtocol.TBinaryProtocolAccelerated( TTransport.TMemoryBuffer()) o.write(prot) prot = TBinaryProtocol.TBinaryProtocol( TTransport.TMemoryBuffer(prot.trans.getvalue())) c = o.__class__() c.read(prot) if c != o: print("copy: ") pprint(eval(repr(c))) print("orig: ") pprint(eval(repr(o)))
ooe2.integer16 = 16 ooe2.integer32 = 32 ooe2.integer64 = 64 ooe2.double_precision = (math.sqrt(5) + 1) / 2 ooe2.some_characters = ":R (me going \"rrrr\")" ooe2.zomg_unicode = u"\xd3\x80\xe2\x85\xae\xce\x9d\x20"\ u"\xd0\x9d\xce\xbf\xe2\x85\xbf\xd0\xbe"\ u"\xc9\xa1\xd0\xb3\xd0\xb0\xcf\x81\xe2\x84\x8e"\ u"\x20\xce\x91\x74\x74\xce\xb1\xe2\x85\xbd\xce\xba"\ u"\xc7\x83\xe2\x80\xbc" if sys.version_info[0] == 2 and os.environ.get('THRIFT_TEST_PY_NO_UTF8STRINGS'): ooe1.zomg_unicode = ooe1.zomg_unicode.encode('utf8') ooe2.zomg_unicode = ooe2.zomg_unicode.encode('utf8') hm = HolyMoley(**{"big": [], "contain": set(), "bonks": {}}) hm.big.append(ooe1) hm.big.append(ooe2) hm.big[0].a_bite = 0x22 hm.big[1].a_bite = 0x22 hm.contain.add(("and a one", "and a two")) hm.contain.add(("then a one, two", "three!", "FOUR!")) hm.contain.add(()) hm.bonks["nothing"] = [] hm.bonks["something"] = [ Bonk(**{"type": 1, "message": "Wait."}), Bonk(**{"type": 2, "message": "What?"}), ] hm.bonks["poe"] = [