コード例 #1
0
ファイル: sets.py プロジェクト: ktprime/fbthrift
 def test_struct_with_set_fields(self) -> None:
     s = Sets(
         boolSet={True, False},
         byteSet={1, 2, 3},
         i16Set={4, 5, 6},
         i64Set={7, 8, 9},
         doubleSet={1.23, 4.56},
         floatSet={7.89, 10.11},
         stringSet={"foo", "bar"},
         binarySet={b"foo", b"bar"},
         iobufSet={IOBuf(b"foo"), IOBuf(b"bar")},
         structSet={Foo(value=1), Foo(value=2)},
     )
     self.assertEqual(s.boolSet, {True, False})
     self.assertEqual(s.byteSet, {1, 2, 3})
     self.assertEqual(s.i16Set, {4, 5, 6})
     self.assertEqual(s.i64Set, {7, 8, 9})
     self.assertEqual(s.doubleSet, {1.23, 4.56})
     self.assertEqual(s.floatSet, {7.89, 10.11})
     self.assertEqual(s.stringSet, {"foo", "bar"})
     self.assertEqual(s.binarySet, {b"foo", b"bar"})
     self.assertEqual(s.iobufSet, {IOBuf(b"foo"), IOBuf(b"bar")})
     self.assertEqual(s.structSet, {Foo(value=1), Foo(value=2)})
     # test reaccess the set element won't have to recreating the struct
     structs1 = list(s.structSet)
     structs2 = list(s.structSet)
     self.assertIs(structs1[0], structs2[0])
     self.assertIs(structs1[1], structs2[1])
コード例 #2
0
ファイル: lists.py プロジェクト: ktprime/fbthrift
 def test_struct_with_list_fields(self) -> None:
     s = Lists(
         boolList=[True, False],
         byteList=[1, 2, 3],
         i16List=[4, 5, 6],
         i64List=[7, 8, 9],
         doubleList=[1.23, 4.56],
         floatList=[7.89, 10.11],
         stringList=["foo", "bar"],
         binaryList=[b"foo", b"bar"],
         iobufList=[IOBuf(b"foo"), IOBuf(b"bar")],
         structList=[Foo(value=1), Foo(value=2)],
     )
     self.assertEqual(s.boolList, [True, False])
     self.assertEqual(s.byteList, [1, 2, 3])
     self.assertEqual(s.i16List, [4, 5, 6])
     self.assertEqual(s.i64List, [7, 8, 9])
     self.assertEqual(s.doubleList, [1.23, 4.56])
     self.assertEqual(s.floatList, [7.89, 10.11])
     self.assertEqual(s.stringList, ["foo", "bar"])
     self.assertEqual(s.binaryList, [b"foo", b"bar"])
     self.assertEqual(s.iobufList, [IOBuf(b"foo"), IOBuf(b"bar")])
     self.assertEqual(s.structList, [Foo(value=1), Foo(value=2)])
     # test reaccess the list element not recreating the struct
     self.assertIs(s.structList[0], s.structList[0])
     self.assertIs(s.structList[1], s.structList[1])
コード例 #3
0
        async def inner_test() -> None:
            async with TestServer(handler=BinaryHandler(self), ip="::1") as sa:
                assert sa.ip and sa.port
                async with get_client(BinaryService, host=sa.ip,
                                      port=sa.port) as client:
                    val: Any
                    val = await client.sendRecvBinaries(
                        Binaries(
                            no_special_type=b'c1',
                            iobuf_val=IOBuf(b'c2'),
                            iobuf_ptr=IOBuf(b'c3'),
                            fbstring=b'c4',
                            nonstandard_type=b'c5',
                        ))
                    self.assertEqual(val.no_special_type, b's1')
                    self.assertEqual(bytes(val.iobuf_val), b's2')
                    assert val.iobuf_ptr is not None
                    self.assertEqual(bytes(val.iobuf_ptr), b's3')
                    self.assertEqual(val.fbstring, b's4')
                    self.assertEqual(val.nonstandard_type, b's5')

                    val = await client.sendRecvBinary(b'cv1')
                    self.assertEqual(val, b'sv1')

                    val = await client.sendRecvIOBuf(IOBuf(b'cv2'))
                    self.assertEqual(bytes(val), b'sv2')

                    val = await client.sendRecvIOBufPtr(IOBuf(b'cv3'))
                    self.assertEqual(bytes(val), b'sv3')

                    val = await client.sendRecvFbstring(b'cv4')
                    self.assertEqual(val, b'sv4')

                    val = await client.sendRecvBuffer(b'cv5')
                    self.assertEqual(val, b'sv5')
コード例 #4
0
 def test_hash(self) -> None:
     x = b"omg"
     y = b"wtf"
     xb = IOBuf(x)
     yb = IOBuf(y)
     hash(xb)
     self.assertNotEqual(hash(xb), hash(yb))
     self.assertEqual(hash(xb), hash(IOBuf(x)))
コード例 #5
0
 def test_cmp(self) -> None:
     x = IOBuf(b"abc")
     y = IOBuf(b"def")
     z = IOBuf(b"abc")
     self.assertEqual(x, z)
     self.assertNotEqual(x, y)
     self.assertLess(x, y)
     self.assertLessEqual(x, y)
     self.assertLessEqual(x, z)
     self.assertGreater(y, x)
     self.assertGreaterEqual(y, x)
コード例 #6
0
    def test_get_set_struct_field(self) -> None:
        m = Moo(val=3, ptr=IOBuf(b'abcdef'), buf=IOBuf(b'xyzzy'))
        m2 = Moo(val=3, ptr=IOBuf(b'abcdef'), buf=IOBuf(b'xyzzy'))
        self.assertEqual(m, m2)
        assert m.ptr is not None
        assert m2.ptr is not None

        self.assertEqual(bytes(m.ptr), bytes(m2.ptr))
        self.assertEqual(b'abcdef', bytes(m.ptr))

        self.assertEqual(bytes(m.buf), bytes(m2.buf))
        self.assertEqual(b'xyzzy', bytes(m.buf))
コード例 #7
0
ファイル: serializer.py プロジェクト: ktprime/fbthrift
 def test_serialize_map_struct(self) -> None:
     control = Maps(
         boolMap={True: 1, False: 0},
         byteMap={1: 1, 2: 2, 3: 3},
         i16Map={4: 4, 5: 5, 6: 6},
         i64Map={7: 7, 8: 8, 9: 9},
         doubleMap={1.23: 1.23, 4.56: 4.56},
         floatMap={7.0: 7.0, 8.0: 8.0},
         stringMap={"foo": "foo", "bar": "bar"},
         binaryMap={b"foo": b"foo", b"bar": b"bar"},
         iobufMap={IOBuf(b"foo"): IOBuf(b"foo"), IOBuf(b"bar"): IOBuf(b"bar")},
         structMap={Foo(value=1): Foo(value=1), Foo(value=2): Foo(value=2)},
     )
     self.thrift_serialization_round_trip(control)
コード例 #8
0
ファイル: serializer.py プロジェクト: ktprime/fbthrift
 def test_serialize_set_struct(self) -> None:
     control = Sets(
         boolSet={True, False},
         byteSet={1, 2, 3},
         i16Set={4, 5, 6},
         i64Set={7, 8, 9},
         doubleSet={1.23, 4.56},
         floatSet={7, 8},
         stringSet={"foo", "bar"},
         binarySet={b"foo", b"bar"},
         iobufSet={IOBuf(b"foo"), IOBuf(b"bar")},
         structSet={Foo(value=1), Foo(value=2)},
     )
     self.thrift_serialization_round_trip(control)
コード例 #9
0
 async def sendRecvBinaries(self, val: Binaries) -> Binaries:
     self.unit_test.assertEqual(val.no_special_type, b"c1")
     self.unit_test.assertEqual(bytes(val.iobuf_val), b"c2")
     assert val.iobuf_ptr is not None
     self.unit_test.assertEqual(bytes(val.iobuf_ptr), b"c3")
     self.unit_test.assertEqual(val.fbstring, b"c4")
     self.unit_test.assertEqual(val.nonstandard_type, b"c5")
     return Binaries(
         no_special_type=b"s1",
         iobuf_val=IOBuf(b"s2"),
         iobuf_ptr=IOBuf(b"s3"),
         fbstring=b"s4",
         nonstandard_type=b"s5",
     )
コード例 #10
0
 async def sendRecvBinaries(self, val: Binaries) -> Binaries:
     self.unit_test.assertEqual(val.no_special_type, b'c1')
     self.unit_test.assertEqual(bytes(val.iobuf_val), b'c2')
     assert val.iobuf_ptr is not None
     self.unit_test.assertEqual(bytes(val.iobuf_ptr), b'c3')
     self.unit_test.assertEqual(val.fbstring, b'c4')
     self.unit_test.assertEqual(val.nonstandard_type, b'c5')
     return Binaries(
         no_special_type=b's1',
         iobuf_val=IOBuf(b's2'),
         iobuf_ptr=IOBuf(b's3'),
         fbstring=b's4',
         nonstandard_type=b's5',
     )
コード例 #11
0
ファイル: serializer.py プロジェクト: ktprime/fbthrift
 def test_serialize_lists_struct(self) -> None:
     control = Lists(
         boolList=[True, False],
         byteList=[1, 2, 3],
         i16List=[4, 5, 6],
         i64List=[7, 8, 9],
         doubleList=[1.23, 4.56],
         floatList=[7.0, 8.0],
         stringList=["foo", "bar"],
         binaryList=[b"foo", b"bar"],
         iobufList=[IOBuf(b"foo"), IOBuf(b"bar")],
         structList=[Foo(value=1), Foo(value=2)],
     )
     self.thrift_serialization_round_trip(control)
コード例 #12
0
 def test_various_binary_types(self) -> None:
     val = Binaries(
         no_special_type=b"abcdef",
         iobuf_val=IOBuf(b"mnopqr"),
         iobuf_ptr=IOBuf(b"ghijkl"),
         fbstring=b"stuvwx",
         nonstandard_type=b"yzabcd",
     )
     self.assertEqual(val.no_special_type, b"abcdef")
     self.assertEqual(bytes(val.iobuf_val), b"mnopqr")
     assert val.iobuf_ptr is not None
     self.assertEqual(bytes(val.iobuf_ptr), b"ghijkl")
     self.assertEqual(val.fbstring, b"stuvwx")
     self.assertEqual(val.nonstandard_type, b"yzabcd")
コード例 #13
0
 def test_various_binary_types(self) -> None:
     val = Binaries(
         no_special_type=b'abcdef',
         iobuf_val=IOBuf(b'mnopqr'),
         iobuf_ptr=IOBuf(b'ghijkl'),
         fbstring=b'stuvwx',
         nonstandard_type=b'yzabcd',
     )
     self.assertEqual(val.no_special_type, b'abcdef')
     self.assertEqual(bytes(val.iobuf_val), b'mnopqr')
     assert val.iobuf_ptr is not None
     self.assertEqual(bytes(val.iobuf_ptr), b'ghijkl')
     self.assertEqual(val.fbstring, b'stuvwx')
     self.assertEqual(val.nonstandard_type, b'yzabcd')
コード例 #14
0
 async def inner_test() -> None:
     async with TestServer(handler=StackHandler(), ip="::1") as sa:
         assert sa.ip and sa.port
         async with get_client(StackService, host=sa.ip,
                               port=sa.port) as client:
             self.assertEqual((3, 4, 5, 6), await
                              client.add_to(lst=(1, 2, 3, 4), value=2))
             self.assertEqual(66, (await client.get_simple()).val)
             await client.take_simple(simple(val=10))
             self.assertEqual(b"abc", bytes(await client.get_iobuf()))
             await client.take_iobuf(IOBuf(b"cba"))
             # currently unsupported by cpp backend:
             # self.assertEqual(b'xyz', (await client.get_iobuf_ptr()))
             await client.take_iobuf_ptr(IOBuf(b"zyx"))
コード例 #15
0
 def test_empty(self) -> None:
     x = b""
     xb = IOBuf(x)
     self.assertEqual(memoryview(xb), x)  # type: ignore
     self.assertEqual(bytes(xb), x)
     self.assertFalse(xb)
     self.assertEqual(len(xb), len(x))
コード例 #16
0
 async def inner_test() -> None:
     async with TestServer(handler=StackHandler(), ip="::1") as sa:
         ip, port = sa.ip, sa.port
         assert ip and port
         # pyre-fixme[6]: Expected `Union[ipaddress.IPv4Address,
         #  ipaddress.IPv6Address, str]` for 2nd param but got `Union[None,
         #  ipaddress.IPv4Address, ipaddress.IPv6Address]`.
         async with get_client(StackService, host=ip,
                               port=port) as client:
             self.assertEqual((3, 4, 5, 6), await
                              client.add_to(lst=(1, 2, 3, 4), value=2))
             self.assertEqual(66, (await client.get_simple()).val)
             await client.take_simple(simple(val=10))
             self.assertEqual(b"abc", bytes(await client.get_iobuf()))
             await client.take_iobuf(IOBuf(b"cba"))
             # currently unsupported by cpp backend:
             # self.assertEqual(b'xyz', (await client.get_iobuf_ptr()))
             await client.take_iobuf_ptr(IOBuf(b"zyx"))
コード例 #17
0
ファイル: iobuf.py プロジェクト: zjjsjh/folly
 def test_empty(self) -> None:
     x = b""
     xb = IOBuf(x)
     # pyre-fixme[6]: Expected `Union[bytearray, bytes, memoryview]` for 1st
     #  param but got `IOBuf`.
     self.assertEqual(memoryview(xb), x)
     self.assertEqual(bytes(xb), x)
     self.assertFalse(xb)
     self.assertEqual(len(xb), len(x))
コード例 #18
0
ファイル: binary.py プロジェクト: nathacof/fbthrift
        async def inner_test() -> None:
            async with TestServer(handler=BinaryHandler(self), ip="::1") as sa:
                ip, port = sa.ip, sa.port
                assert ip and port
                # pyre-fixme[6]: Expected `Union[ipaddress.IPv4Address,
                #  ipaddress.IPv6Address, str]` for 2nd param but got `Union[None,
                #  ipaddress.IPv4Address, ipaddress.IPv6Address]`.
                async with get_client(BinaryService, host=ip,
                                      port=port) as client:
                    val: Any
                    val = await client.sendRecvBinaries(
                        Binaries(
                            no_special_type=b"c1",
                            iobuf_val=IOBuf(b"c2"),
                            iobuf_ptr=IOBuf(b"c3"),
                            fbstring=b"c4",
                            nonstandard_type=b"c5",
                        ))
                    self.assertEqual(val.no_special_type, b"s1")
                    self.assertEqual(bytes(val.iobuf_val), b"s2")
                    assert val.iobuf_ptr is not None
                    self.assertEqual(bytes(val.iobuf_ptr), b"s3")
                    self.assertEqual(val.fbstring, b"s4")
                    self.assertEqual(val.nonstandard_type, b"s5")

                    val = await client.sendRecvBinary(b"cv1")
                    self.assertEqual(val, b"sv1")

                    val = await client.sendRecvIOBuf(IOBuf(b"cv2"))
                    self.assertEqual(bytes(val), b"sv2")

                    val = await client.sendRecvIOBufPtr(IOBuf(b"cv3"))
                    self.assertEqual(bytes(val), b"sv3")

                    val = await client.sendRecvFbstring(b"cv4")
                    self.assertEqual(val, b"sv4")

                    val = await client.sendRecvBuffer(b"cv5")
                    self.assertEqual(val, b"sv5")

                    bu = BinaryUnion(iobuf_val=IOBuf(b"cv6"))
                    val = await client.sendRecBinaryUnion(bu)
                    self.assertEqual(bytes(val.iobuf_val), b"sv6")
コード例 #19
0
 def test_chain(self) -> None:
     control = [b'facebook', b'thrift', b'python3', b'cython']
     chain = make_chain([IOBuf(x) for x in control])
     self.assertTrue(chain.is_chained)
     self.assertTrue(chain)
     self.assertEqual(bytes(chain), control[0])
     self.assertEqual(len(chain), len(control[0]))
     self.assertEqual(chain.chain_size(), sum(len(x) for x in control))
     self.assertEqual(chain.chain_count(), len(control))
     self.assertEqual(memoryview(chain.next), control[1])  # type: ignore
     self.assertEqual(b''.join(chain), b''.join(control))
コード例 #20
0
 def test_cyclic_chain(self) -> None:
     control = [b"aaa", b"aaaa"]
     chain = make_chain([IOBuf(x) for x in control])
     self.assertTrue(chain.is_chained)
     self.assertTrue(chain)
     self.assertEqual(bytes(chain), control[0])
     self.assertEqual(len(chain), len(control[0]))
     self.assertEqual(chain.chain_size(), sum(len(x) for x in control))
     self.assertEqual(chain.chain_count(), len(control))
     self.assertEqual(memoryview(chain.next), control[1])  # type: ignore
     self.assertEqual(b"".join(chain), b"".join(control))
コード例 #21
0
        async def inner_test() -> None:
            async with TestServer(handler=BinaryHandler(self), ip="::1") as sa:
                ip, port = sa.ip, sa.port
                assert ip and port
                async with get_client(BinaryService, host=ip,
                                      port=port) as client:
                    # pyre-fixme[33]: Given annotation cannot be `Any`.
                    val: Any
                    val = await client.sendRecvBinaries(
                        Binaries(
                            no_special_type=b"c1",
                            iobuf_val=IOBuf(b"c2"),
                            iobuf_ptr=IOBuf(b"c3"),
                            fbstring=b"c4",
                            nonstandard_type=b"c5",
                        ))
                    self.assertEqual(val.no_special_type, b"s1")
                    self.assertEqual(bytes(val.iobuf_val), b"s2")
                    assert val.iobuf_ptr is not None
                    self.assertEqual(bytes(val.iobuf_ptr), b"s3")
                    self.assertEqual(val.fbstring, b"s4")
                    self.assertEqual(val.nonstandard_type, b"s5")

                    val = await client.sendRecvBinary(b"cv1")
                    self.assertEqual(val, b"sv1")

                    val = await client.sendRecvIOBuf(IOBuf(b"cv2"))
                    self.assertEqual(bytes(val), b"sv2")

                    val = await client.sendRecvIOBufPtr(IOBuf(b"cv3"))
                    self.assertEqual(bytes(val), b"sv3")

                    val = await client.sendRecvFbstring(b"cv4")
                    self.assertEqual(val, b"sv4")

                    val = await client.sendRecvBuffer(b"cv5")
                    self.assertEqual(val, b"sv5")

                    bu = BinaryUnion(iobuf_val=IOBuf(b"cv6"))
                    val = await client.sendRecBinaryUnion(bu)
                    self.assertEqual(bytes(val.iobuf_val), b"sv6")
コード例 #22
0
    def test_get_set_struct_field(self) -> None:
        m = Moo(val=3,
                ptr=IOBuf(b"abcdef"),
                buf=IOBuf(b"xyzzy"),
                opt_ptr=IOBuf(b"pqr"))
        m2 = Moo(val=3,
                 ptr=IOBuf(b"abcdef"),
                 buf=IOBuf(b"xyzzy"),
                 opt_ptr=IOBuf(b"pqr"))
        self.assertEqual(m, m2)
        assert m.ptr is not None
        assert m2.ptr is not None
        assert m.opt_ptr is not None
        assert m2.opt_ptr is not None

        # pyre-fixme[6]: Expected `Iterable[int]` for 1st param but got
        #  `Optional[IOBuf]`.
        # pyre-fixme[6]: Expected `Iterable[int]` for 1st param but got
        #  `Optional[IOBuf]`.
        self.assertEqual(bytes(m.ptr), bytes(m2.ptr))
        # pyre-fixme[6]: Expected `Iterable[int]` for 1st param but got
        #  `Optional[IOBuf]`.
        self.assertEqual(b"abcdef", bytes(m.ptr))

        self.assertEqual(bytes(m.buf), bytes(m2.buf))
        self.assertEqual(b"xyzzy", bytes(m.buf))

        # pyre-fixme[6]: Expected `Iterable[int]` for 1st param but got
        #  `Optional[IOBuf]`.
        # pyre-fixme[6]: Expected `Iterable[int]` for 1st param but got
        #  `Optional[IOBuf]`.
        self.assertEqual(bytes(m.opt_ptr), bytes(m2.opt_ptr))
        # pyre-fixme[6]: Expected `Iterable[int]` for 1st param but got
        #  `Optional[IOBuf]`.
        self.assertEqual(b"pqr", bytes(m.opt_ptr))
コード例 #23
0
ファイル: iobuf.py プロジェクト: qingquansong/fbthrift
    def test_get_set_struct_field(self) -> None:
        m = Moo(
            val=3,
            ptr=IOBuf(b"abcdef"),
            buf=IOBuf(b"xyzzy"),
            opt_ptr=IOBuf(b"pqr"),
        )
        m2 = Moo(
            val=3,
            ptr=IOBuf(b"abcdef"),
            buf=IOBuf(b"xyzzy"),
            opt_ptr=IOBuf(b"pqr"),
        )
        self.assertEqual(m, m2)
        assert m.ptr is not None
        assert m2.ptr is not None
        assert m.opt_ptr is not None
        assert m2.opt_ptr is not None

        self.assertEqual(bytes(m.ptr), bytes(m2.ptr))
        self.assertEqual(b"abcdef", bytes(m.ptr))

        self.assertEqual(bytes(m.buf), bytes(m2.buf))
        self.assertEqual(b"xyzzy", bytes(m.buf))

        self.assertEqual(bytes(m.opt_ptr), bytes(m2.opt_ptr))
        self.assertEqual(b"pqr", bytes(m.opt_ptr))
コード例 #24
0
ファイル: iobuf.py プロジェクト: zjjsjh/folly
 def test_cyclic_chain(self) -> None:
     control = [b"aaa", b"aaaa"]
     chain = make_chain([IOBuf(x) for x in control])
     self.assertTrue(chain.is_chained)
     self.assertTrue(chain)
     self.assertEqual(bytes(chain), control[0])
     self.assertEqual(len(chain), len(control[0]))
     self.assertEqual(chain.chain_size(), sum(len(x) for x in control))
     self.assertEqual(chain.chain_count(), len(control))
     # pyre-fixme[6]: Expected `Union[bytearray, bytes, memoryview]` for 1st
     #  param but got `Optional[IOBuf]`.
     self.assertEqual(memoryview(chain.next), control[1])
     self.assertEqual(b"".join(chain), b"".join(control))
コード例 #25
0
ファイル: serializer.py プロジェクト: ktprime/fbthrift
 def test_serialize_Complex(self) -> None:
     control = Complex(
         val_bool=True,
         val_i32=42,
         val_i64=1 << 33,
         val_string="hello\u4e16\u754c",
         val_binary=b"\xe5\x92\x8c\xe5\b9\xb3",
         val_iobuf=IOBuf(b"\xe5\x9b\x9b\xe5\x8d\x81\xe4\xba\x8c"),
         val_enum=Color.green,
         val_union=ComplexUnion(double_val=1.234),
         val_set={easy(val=42)},
         val_map={"foo": b"foovalue"},
         val_complex_map={"bar": [{easy(val=42), easy(val_list=[1, 2, 3])}]},
         val_struct_with_containers=ColorGroups(
             color_list=[Color.blue, Color.green],
             color_set={Color.blue, Color.red},
             color_map={Color.blue: Color.green},
         ),
     )
     self.thrift_serialization_round_trip(control)
コード例 #26
0
ファイル: unions.py プロジェクト: qingquansong/fbthrift
 def test_iobuf_union(self) -> None:
     abuf = IOBuf(b"3.141592025756836")
     union = IOBufUnion.fromValue(abuf)
     self.assertEqual(union.type, IOBufUnion.Type.buf)
     self.assertEqual(bytes(union.buf), bytes(abuf))
コード例 #27
0
 async def sendRecvIOBufPtr(self, val: IOBuf) -> IOBuf:
     self.unit_test.assertEqual(bytes(val), b"cv3")
     return IOBuf(b"sv3")
コード例 #28
0
ファイル: client_server.py プロジェクト: yns88/fbthrift
 async def get_iobuf(self) -> IOBuf:
     return IOBuf(b'abc')
コード例 #29
0
 async def get_iobuf(self) -> IOBuf:
     return IOBuf(b"abc")
コード例 #30
0
 async def sendRecBinaryUnion(self, val: BinaryUnion) -> BinaryUnion:
     self.unit_test.assertEqual(bytes(val.iobuf_val), b"cv6")
     return BinaryUnion(iobuf_val=IOBuf(b"sv6"))