Exemple #1
0
    def test_subscription_sync_compressed_encode_with_control_block(self):
        control_block = {
            0: ControlOperations.REFRESH,
            1: ControlOperations.TOGGLE
        }
        subj_mess = SubscriptionSyncMessage(
            self.price_sync_edition_sequence_number,
            self.subjects,
            is_compressed=True,
            is_controls=True,
            sids=control_block,
        )

        encoded_message = subj_mess.to_bytes()
        self.assertEqual(decode_varint(encoded_message), 70)
        self.assertEqual(read_byte(encoded_message),
                         PixieMessageType.SubscriptionSyncMessage)
        self.assertEqual(decode_varint(encoded_message), 3)
        self.assertEqual(decode_varint(encoded_message),
                         self.price_sync_edition_sequence_number)
        self.assertEqual(decode_varint(encoded_message), len(self.subjects))
        decompressed = self.decompressor.decompress(encoded_message)
        self.assertEqual(
            bytearray(
                b"\004\011Quantity\0102500000\007Symbol\007EURGBP\004\011Quantity\0105600000\007Symbol\007USDJPY\002\000R\001T"
            ),
            decompressed,
        )
 def create_from_bytes(cls, buffer):
     fid = decode_varint(buffer)
     field_type = FieldType.by_code(read_byte(buffer).decode("ascii"))
     field_encoding = FieldEncoding.by_code(
         read_byte(buffer).decode("ascii"))
     scale = decode_varint(buffer)
     name = decode_string(buffer)
     return cls(fid, field_type, field_encoding, scale, name)
 def _parse_int_value(self, buffer) -> str:
     if self.encoding == decode_zigzag:
         value = str(self.encoding(decode_varint(buffer)))
     elif self.encoding == decode_varint:
         value = scale_to_long(self.encoding(buffer), self.scale)
     elif self.encoding is None:
         value = str(self.type(buffer))
     else:
         value = str(int.from_bytes(self.encoding(buffer), byteorder="big"))
     return value
Exemple #4
0
    def test_subscription_sync_compressed_encode_without_control_block(self):
        subj_mess = SubscriptionSyncMessage(
            self.price_sync_edition_sequence_number,
            self.subjects,
            is_compressed=True)

        encoded_message = subj_mess.to_bytes()
        self.assertEqual(decode_varint(encoded_message), 59)
        self.assertEqual(read_byte(encoded_message),
                         PixieMessageType.SubscriptionSyncMessage)
        self.assertEqual(decode_varint(encoded_message), 1)
        self.assertEqual(decode_varint(encoded_message),
                         self.price_sync_edition_sequence_number)
        self.assertEqual(decode_varint(encoded_message), len(self.subjects))
        decompressed = self.decompressor.decompress(encoded_message)
        self.assertEqual(
            bytearray(
                b"\004\011Quantity\0102500000\007Symbol\007EURGBP\004\011Quantity\0105600000\007Symbol\007USDJPY"
            ),
            decompressed,
        )
 def _parse_double_value(self, buffer) -> str:
     if self.encoding == decode_zigzag:
         value = self.encoding(decode_varint(buffer))
         value = scale_to_double(value, self.scale)
     elif self.encoding == decode_varint:
         value = scale_to_double(self.encoding(buffer), self.scale)
     elif self.encoding is None:
         value = self.type(buffer)
     elif self.encoding == read_fixed8:
         value = str(struct.unpack(">d", self.encoding(buffer))[0])
     else:
         value = str(struct.unpack(">f", self.encoding(buffer))[0])
     return value
Exemple #6
0
 def test_subscription_sync_not_compressed_encode(self):
     subj_mess = SubscriptionSyncMessage(
         self.price_sync_edition_sequence_number,
         self.subjects,
         is_compressed=False,
         is_controls=False,
     )
     encoded_message = subj_mess.to_bytes()
     self.assertEqual(decode_varint(encoded_message), 68)
     self.assertEqual(
         bytearray(
             b"S\000\173\002\004\011Quantity\0102500000\007Symbol\007EURGBP\004\011Quantity\0105600000\007Symbol\007USDJPY"
         ),
         encoded_message,
     )
Exemple #7
0
    def test_subscription_sync_encode_not_compressed_with_control_block(self):
        control_block = {
            0: ControlOperations.REFRESH,
            1: ControlOperations.TOGGLE
        }
        subj_mess = SubscriptionSyncMessage(
            self.price_sync_edition_sequence_number,
            self.subjects,
            is_compressed=False,
            is_controls=True,
            sids=control_block,
        )

        encoded_message = subj_mess.to_bytes()
        self.assertEqual(decode_varint(encoded_message), 73)
        self.assertEqual(
            bytearray(
                b"S\002\173\002\004\011Quantity\0102500000\007Symbol\007EURGBP\004\011Quantity\0105600000\007Symbol\007USDJPY\002\000R\001T"
            ),
            encoded_message,
        )