Example #1
0
    def test_encode_varint(self):
        tmp = Message()

        self.assertEqual(tmp._encode_varint(0), b'\x00')
        self.assertEqual(tmp._encode_varint(1), b'\x01')
        self.assertEqual(tmp._encode_varint(150), b'\x96\x01')
        self.assertEqual(tmp._encode_varint(300), b'\xAC\x02')
Example #2
0
    def test_encode_field_signature(self):
        tmp = Message()

        self.assertEqual(tmp._encode_field_signature(0, 1), b'\x08')
        self.assertEqual(tmp._encode_field_signature(2, 2, 7), b'\x12\x07')
        self.assertRaises(ValueError, tmp._encode_field_signature, 10, 1)
        self.assertRaises(AssertionError, tmp._encode_field_signature, 2, 2)
Example #3
0
    def test_parse_from_bytes(self):
        tmp = Message()

        data = [0x08, 0x96, 0x01]
        expected_message = {1: [WireField(type=FIELD_VARINT, value=150)]}
        tmp.parse_from_bytes(data)
        self.assertDictEqual(tmp._Message__wire_message, expected_message)
Example #4
0
    def test_parse_from_bytes(self):
        tmp = Message()

        data = [0x08, 0x96, 0x01]
        expected_message = {1: [WireField(type=FIELD_VARINT, value=150)]}
        tmp.parse_from_bytes(data)
        self.assertDictEqual(tmp._Message__wire_message, expected_message)
Example #5
0
    def test_encode_field_signature(self):
        tmp = Message()

        self.assertEqual(tmp._encode_field_signature(0, 1), b"\x08")
        self.assertEqual(tmp._encode_field_signature(2, 2, 7), b"\x12\x07")
        self.assertRaises(ValueError, tmp._encode_field_signature, 10, 1)
        self.assertRaises(AssertionError, tmp._encode_field_signature, 2, 2)
Example #6
0
    def test_get_wire_values(self):
        tmp = Message()

        data = [0x08, 0x96, 0x01]
        tmp.parse_from_bytes(data)
        self.assertEqual(tmp._get_wire_values(1),
                         [WireField(type=FIELD_VARINT, value=150)])
Example #7
0
    def test_encode_varint(self):
        tmp = Message()

        self.assertEqual(tmp._encode_varint(0), b'\x00')
        self.assertEqual(tmp._encode_varint(1), b'\x01')
        self.assertEqual(tmp._encode_varint(150), b'\x96\x01')
        self.assertEqual(tmp._encode_varint(300), b'\xAC\x02')
Example #8
0
    def test_decode_varint(self):
        tmp = Message()

        data = [0b00000001]
        self.assertEqual(tmp._decode_varint(iter(data)), 1)

        data = [0b10010110, 0b00000001]
        self.assertEqual(tmp._decode_varint(iter(data)), 150)

        data = [0b10101100, 0b00000010]
        self.assertEqual(tmp._decode_varint(iter(data)), 300)
Example #9
0
    def test_decode_varint(self):
        tmp = Message()

        data = [0b00000001]
        self.assertEqual(tmp._decode_varint(iter(data)), 1)

        data = [0b10010110, 0b00000001]
        self.assertEqual(tmp._decode_varint(iter(data)), 150)

        data = [0b10101100, 0b00000010]
        self.assertEqual(tmp._decode_varint(iter(data)), 300)
Example #10
0
    def test_decode_field_signature(self):
        tmp = Message()

        data = [0b0001000]
        self.assertEqual(tmp._decode_field_signature(iter(data)), (0, 1, None))

        data = [0x12, 0x07]
        self.assertEqual(tmp._decode_field_signature(iter(data)), (2, 2, 7))

        data = [0b00001011]
        self.assertRaises(NotImplementedError, tmp._decode_field_signature, iter(data))

        data = [0b00001111]
        self.assertRaises(ValueError, tmp._decode_field_signature, iter(data))
Example #11
0
    def test_decode_field_signature(self):
        tmp = Message()

        data = [0b0001000]
        self.assertEqual(tmp._decode_field_signature(iter(data)), (0, 1, None))

        data = [0x12, 0x07]
        self.assertEqual(tmp._decode_field_signature(iter(data)), (2, 2, 7))

        data = [0b00001011]
        self.assertRaises(NotImplementedError, tmp._decode_field_signature,
                          iter(data))

        data = [0b00001111]
        self.assertRaises(ValueError, tmp._decode_field_signature, iter(data))
Example #12
0
    def test_create_from_bytes(self):
        data = bytes([0x08, 0x96, 0x01])
        expected_message = {1: [WireField(type=FIELD_VARINT, value=150)]}

        tmp = Message.create_from_bytes(data)

        self.assertTrue(isinstance(tmp, Message))
        self.assertDictEqual(tmp._Message__wire_message, expected_message)
Example #13
0
    def test_create_from_bytes(self):
        data = [0x08, 0x96, 0x01]
        expected_message = {1: [WireField(type=FIELD_VARINT, value=150)]}

        tmp = Message.create_from_bytes(data)

        self.assertTrue(isinstance(tmp, Message))
        self.assertDictEqual(tmp._Message__wire_message, expected_message)
Example #14
0
    def test_decode_varint(self):
        tmp = Message()
        data = bytes([0b00000000])
        self.assertEqual(tmp._decode_varint(data), 0)

        tmp = Message()
        data = bytes([0b00000001])
        self.assertEqual(tmp._decode_varint(data), 1)

        tmp = Message()
        data = bytes([0b10010110, 0b00000001])
        self.assertEqual(tmp._decode_varint(data), 150)

        tmp = Message()
        data = bytes([0b10101100, 0b00000010])
        self.assertEqual(tmp._decode_varint(data), 300)
Example #15
0
    def test_decode_repeated_field_with_different_types(self):
        raw_message = [0x08, 0x96, 0x01, 0x0D, 0x01, 0x02, 0x03, 0x04]

        msg = Message()
        self.assertRaises(ValueError, msg.parse_from_bytes, raw_message)
Example #16
0
    def test_set_wire_values(self):
        tmp = Message()

        tmp._set_wire_values(1, FIELD_VARINT, 150)
        self.assertDictEqual(tmp._Message__wire_message,
                             {1: [WireField(type=FIELD_VARINT, value=150)]})
Example #17
0
    def test_encode_to_bytes_varint(self):
        msg = Message()
        msg.parse_from_bytes(b"\x08\x96\x01")

        self.assertEqual(msg.encode_to_bytes(), b"\x08\x96\x01")
Example #18
0
    def test_encode_to_bytes_varint(self):
        msg = Message()
        msg.parse_from_bytes(b'\x08\x96\x01')

        self.assertEqual(msg.encode_to_bytes(), b'\x08\x96\x01')
Example #19
0
    def test_set_wire_values(self):
        tmp = Message()

        tmp._set_wire_values(1, FIELD_VARINT, 150)
        self.assertDictEqual(tmp._Message__wire_message, {1: [WireField(type=FIELD_VARINT, value=150)]})
Example #20
0
    def test_decode_raw_message(self):
        # FIELD_VARINT
        tmp = Message()
        data = [0x08, 0x96, 0x01]
        expected_message = {1: [WireField(type=FIELD_VARINT, value=150)]}
        tmp._decode_raw_message(iter(data))
        self.assertDictEqual(tmp._Message__wire_message, expected_message)

        # FIELD_FIXED64
        tmp = Message()
        data = [0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]
        expected_message = {
            1: [
                WireField(type=FIELD_FIXED64,
                          value=b'\x01\x02\x03\x04\x05\x06\x07\x08')
            ]
        }
        tmp._decode_raw_message(iter(data))
        self.assertDictEqual(tmp._Message__wire_message, expected_message)

        # FIELD_VARIABLE_LENGTH
        tmp = Message()
        data = [0x12, 0x07, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x67]
        expected_message = {
            2: [WireField(type=FIELD_VARIABLE_LENGTH, value=b'testing')]
        }
        tmp._decode_raw_message(iter(data))
        self.assertDictEqual(tmp._Message__wire_message, expected_message)

        # FIELD_FIXED32
        tmp = Message()
        data = [0x0D, 0x01, 0x02, 0x03, 0x04]
        expected_message = {
            1: [WireField(type=FIELD_FIXED32, value=b'\x01\x02\x03\x04')]
        }
        tmp._decode_raw_message(iter(data))
        self.assertDictEqual(tmp._Message__wire_message, expected_message)
Example #21
0
    def test_decode_varint(self):
        tmp = Message()
        data = bytes([0b00000000])
        self.assertEqual(tmp._decode_varint(data), 0)

        tmp = Message()
        data = bytes([0b00000001])
        self.assertEqual(tmp._decode_varint(data), 1)

        tmp = Message()
        data = bytes([0b10010110, 0b00000001])
        self.assertEqual(tmp._decode_varint(data), 150)

        tmp = Message()
        data = bytes([0b10101100, 0b00000010])
        self.assertEqual(tmp._decode_varint(data), 300)
Example #22
0
    def test_encode_varint(self):
        tmp = Message()

        self.assertEqual(tmp._encode_varint(1), b"\x01")
        self.assertEqual(tmp._encode_varint(150), b"\x96\x01")
        self.assertEqual(tmp._encode_varint(300), b"\xAC\x02")
Example #23
0
    def test_decode_raw_message(self):
        # FIELD_VARINT
        tmp = Message()
        data = [0x08, 0x96, 0x01]
        expected_message = {1: [WireField(type=FIELD_VARINT, value=150)]}
        tmp._decode_raw_message(iter(data))
        self.assertDictEqual(tmp._Message__wire_message, expected_message)

        # FIELD_FIXED64
        tmp = Message()
        data = [0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]
        expected_message = {1: [WireField(type=FIELD_FIXED64, value=b"\x01\x02\x03\x04\x05\x06\x07\x08")]}
        tmp._decode_raw_message(iter(data))
        self.assertDictEqual(tmp._Message__wire_message, expected_message)

        # FIELD_VARIABLE_LENGTH
        tmp = Message()
        data = [0x12, 0x07, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x67]
        expected_message = {2: [WireField(type=FIELD_VARIABLE_LENGTH, value=b"testing")]}
        tmp._decode_raw_message(iter(data))
        self.assertDictEqual(tmp._Message__wire_message, expected_message)

        # FIELD_FIXED32
        tmp = Message()
        data = [0x0D, 0x01, 0x02, 0x03, 0x04]
        expected_message = {1: [WireField(type=FIELD_FIXED32, value=b"\x01\x02\x03\x04")]}
        tmp._decode_raw_message(iter(data))
        self.assertDictEqual(tmp._Message__wire_message, expected_message)
Example #24
0

class SocketFamily(Enum):
    INET = 1
    INET6 = 2


class SocketProtocol(Enum):
    UDP = 1
    TCP = 2

Dnstap.add_field('identity', BytesField(field_number=1, optional=True))
Dnstap.add_field('version', BytesField(field_number=2, optional=True))
Dnstap.add_field('extra', BytesField(field_number=3, optional=True))
Dnstap.add_field('type', EnumField(field_number=15, required=True, enum_cls=Dnstap.Type))
Dnstap.add_field('message', MessageField(field_number=14, optional=True, message_cls=Message))
Message.add_field('type', EnumField(field_number=1, required=True, enum_cls=Message.Type))
Message.add_field('socket_family', EnumField(field_number=2, optional=True, enum_cls=SocketFamily))
Message.add_field('socket_protocol', EnumField(field_number=3, optional=True, enum_cls=SocketProtocol))
Message.add_field('query_address', BytesField(field_number=4, optional=True))
Message.add_field('response_address', BytesField(field_number=5, optional=True))
Message.add_field('query_port', UInt32Field(field_number=6, optional=True))
Message.add_field('response_port', UInt32Field(field_number=7, optional=True))
Message.add_field('query_time_sec', UInt64Field(field_number=8, optional=True))
Message.add_field('query_time_nsec', Fixed32Field(field_number=9, optional=True))
Message.add_field('query_message', BytesField(field_number=10, optional=True))
Message.add_field('query_zone', BytesField(field_number=11, optional=True))
Message.add_field('response_time_sec', UInt64Field(field_number=12, optional=True))
Message.add_field('response_time_nsec', Fixed32Field(field_number=13, optional=True))
Message.add_field('response_message', BytesField(field_number=14, optional=True))
Example #25
0
    def test_get_wire_values(self):
        tmp = Message()

        data = [0x08, 0x96, 0x01]
        tmp.parse_from_bytes(data)
        self.assertEqual(tmp._get_wire_values(1), [WireField(type=FIELD_VARINT, value=150)])
Example #26
0
    'state', MessageField(field_number=2, optional=True,
                          message_cls=GameState))
SrvGameMessage.add_field(
    'action',
    MessageField(field_number=4, optional=True, message_cls=GameAction))
SrvGameMessage.add_field(
    'effect',
    MessageField(field_number=5, optional=True, message_cls=GameEffect))
SrvGameMessage.add_field('error', StringField(field_number=7, optional=True))
SrvGameMessage.add_field(
    'your_side', EnumField(field_number=6, optional=True, enum_cls=Side))
SrvGameEnded.add_field('game_id', StringField(field_number=1, optional=True))
SrvGameEnded.add_field('interrupted', BoolField(field_number=2, optional=True))
SrvPlayerLeft.add_field('game_id', StringField(field_number=1, optional=True))
SrvPlayerLeft.add_field('player_id', Int32Field(field_number=2, optional=True))
Message.add_field('domain',
                  EnumField(field_number=1, optional=True, enum_cls=Domain))
Message.add_field('head',
                  EnumField(field_number=2, optional=True, enum_cls=Head))
Message.add_field('status', StringField(field_number=3, optional=True))
Message.add_field('error', StringField(field_number=4, optional=True))
Message.add_field(
    'hello', MessageField(field_number=5, optional=True, message_cls=SrvHello))
Message.add_field(
    'game_created',
    MessageField(field_number=6,
                 optional=True,
                 message_cls=SrvQueueGameCreated))
Message.add_field(
    'game_ended',
    MessageField(field_number=8, optional=True, message_cls=SrvGameEnded))
Message.add_field(