|
2 | 2 | from sift.common.type.v1.channel_bit_field_element_pb2 import ChannelBitFieldElement |
3 | 3 | from sift.common.type.v1.channel_data_type_pb2 import ( |
4 | 4 | CHANNEL_DATA_TYPE_BIT_FIELD, |
| 5 | + CHANNEL_DATA_TYPE_BYTES, |
5 | 6 | CHANNEL_DATA_TYPE_DOUBLE, |
6 | 7 | ) |
7 | 8 | from sift.data.v2.data_pb2 import ( |
8 | 9 | BitFieldElementValues, |
9 | 10 | BitFieldValue, |
10 | 11 | BitFieldValues, |
| 12 | + BytesValue, |
| 13 | + BytesValues, |
11 | 14 | DoubleValue, |
12 | 15 | DoubleValues, |
13 | 16 | Metadata, |
@@ -58,6 +61,48 @@ def test_try_deserialize_channel_data_double(): |
58 | 61 | assert time_series.time_column[1] == to_timestamp_nanos(time_b) |
59 | 62 |
|
60 | 63 |
|
| 64 | +def test_try_deserialize_channel_data_bytes(): |
| 65 | + |
| 66 | + metadata = Metadata( |
| 67 | + data_type=CHANNEL_DATA_TYPE_BYTES, channel=Metadata.Channel(name="bytes-channel") |
| 68 | + ) |
| 69 | + |
| 70 | + time_a = "2024-07-04T18:09:08.555-07:00" |
| 71 | + time_b = "2024-07-04T18:09:09.555-07:00" |
| 72 | + |
| 73 | + bytes_values = BytesValues( |
| 74 | + metadata=metadata, |
| 75 | + values=[ |
| 76 | + BytesValue( |
| 77 | + timestamp=to_timestamp_pb(time_a), |
| 78 | + value=b"abc", |
| 79 | + ), |
| 80 | + BytesValue( |
| 81 | + timestamp=to_timestamp_pb(time_b), |
| 82 | + value=b"def", |
| 83 | + ), |
| 84 | + ], |
| 85 | + ) |
| 86 | + |
| 87 | + raw_values = Any() |
| 88 | + raw_values.Pack(bytes_values) |
| 89 | + |
| 90 | + deserialized_data = try_deserialize_channel_data(raw_values) |
| 91 | + |
| 92 | + assert len(deserialized_data) == 1 |
| 93 | + |
| 94 | + metadata, time_series = deserialized_data[0] |
| 95 | + |
| 96 | + assert metadata.data_type == CHANNEL_DATA_TYPE_DOUBLE |
| 97 | + assert metadata.channel.name == "bytes-channel" |
| 98 | + assert len(time_series.time_column) == 2 |
| 99 | + assert len(time_series.value_column) == 2 |
| 100 | + assert time_series.value_column[0] == b"abc" |
| 101 | + assert time_series.value_column[1] == b"def" |
| 102 | + assert time_series.time_column[0] == to_timestamp_nanos(time_a) |
| 103 | + assert time_series.time_column[1] == to_timestamp_nanos(time_b) |
| 104 | + |
| 105 | + |
61 | 106 | def test_try_deserialize_channel_data_bit_field_elements(): |
62 | 107 | metadata = Metadata( |
63 | 108 | data_type=CHANNEL_DATA_TYPE_BIT_FIELD, |
|
0 commit comments