|
1 | 1 | from unittest.mock import Mock, patch |
2 | 2 |
|
3 | 3 | import pytest |
| 4 | +from streaming_data_types.forwarder_config_update_fc00 import ( |
| 5 | + ConfigurationUpdate, |
| 6 | + StreamInfo, |
| 7 | +) |
4 | 8 |
|
5 | 9 | from saluki.utils import ( |
6 | 10 | parse_kafka_uri, |
@@ -51,30 +55,72 @@ def test_deserialising_empty_message(mock_message): |
51 | 55 | assert (None, "") == __try_to_deserialise_message(b"") |
52 | 56 |
|
53 | 57 |
|
54 | | -def test_deserialising_message_with_invalid_schema_falls_back_to_raw_bytes_decode( |
55 | | - mock_message, |
56 | | -): |
57 | | - pass |
| 58 | +def test_deserialising_message_with_invalid_schema_falls_back_to_raw_bytes_decode(): |
| 59 | + assert __try_to_deserialise_message(b"blah") == (None, "blah") |
58 | 60 |
|
59 | 61 |
|
60 | 62 | def test_deserialising_message_which_raises_does_not_stop_loop(mock_message): |
61 | | - pass |
| 63 | + with patch("saluki.utils.logger") as logger: |
| 64 | + ok_message = Mock(spec=Message) |
| 65 | + ok_message.value.return_value = b"" |
| 66 | + ok_message.error.return_value = False |
| 67 | + ok_message.timestamp.return_value = 1, 1 |
62 | 68 |
|
| 69 | + mock_message.value.side_effect = Exception |
| 70 | + mock_message.error.return_value = False |
| 71 | + mock_message.timestamp.return_value = 1, 1 |
| 72 | + |
| 73 | + _deserialise_and_print_messages([mock_message, ok_message], None) |
| 74 | + assert logger.info.call_count == 1 |
63 | 75 |
|
64 | | -def test_schema_that_isnt_in_deserialiser_list(mock_message): |
65 | | - pass |
66 | 76 |
|
| 77 | +def test_message_that_has_valid_schema_but_empty_payload(): |
| 78 | + with pytest.raises(Exception): |
| 79 | + # Empty fc00 message - valid schema but not valid payload |
| 80 | + __try_to_deserialise_message(b" fc00") |
67 | 81 |
|
68 | | -def test_message_that_has_valid_schema_but_empty_payload(mock_message): |
69 | | - pass |
| 82 | + |
| 83 | +def test_schema_that_isnt_in_deserialiser_list(mock_message): |
| 84 | + assert __try_to_deserialise_message(b" blah123") == ("blah", " \t blah123") |
70 | 85 |
|
71 | 86 |
|
72 | 87 | def test_message_that_has_valid_schema_but_invalid_payload(mock_message): |
73 | | - pass |
| 88 | + with pytest.raises(Exception): |
| 89 | + __try_to_deserialise_message(b" fc0012345") |
74 | 90 |
|
75 | 91 |
|
76 | 92 | def test_message_that_has_valid_schema_and_valid_payload(mock_message): |
77 | | - pass |
| 93 | + assert __try_to_deserialise_message( |
| 94 | + b"\x10\x00\x00\x00\x66\x63\x30\x30\x08\x00\x0c\x00\x06\x00\x08\x00\x08\x00\x00\x00\x00\x00\x01\x00\x04\x00\x00\x00\x03\x00\x00\x00\x0c\x00\x00\x00\x2c\x00\x00\x00\x4c\x00\x00\x00\xea\xff\xff\xff\x00\x00\x00\x00\x7c\x00\x00\x00\x6c\x00\x00\x00\x50\x00\x00\x00\x01\x00\x0e\x00\x16\x00\x08\x00\x0c\x00\x10\x00\x14\x00\x04\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x8c\x00\x00\x00\x70\x00\x00\x00\x01\x00\x0e\x00\x18\x00\x08\x00\x0c\x00\x10\x00\x16\x00\x04\x00\x0e\x00\x00\x00\x00\x00\x00\x00\xbc\x00\x00\x00\xac\x00\x00\x00\x90\x00\x00\x00\x00\x00\x01\x00\x11\x00\x00\x00\x4e\x44\x57\x32\x36\x37\x32\x5f\x73\x61\x6d\x70\x6c\x65\x45\x6e\x76\x00\x00\x00\x04\x00\x00\x00\x66\x31\x34\x34\x00\x00\x00\x00\x1b\x00\x00\x00\x54\x45\x3a\x4e\x44\x57\x32\x36\x37\x32\x3a\x43\x53\x3a\x53\x42\x3a\x4d\x42\x42\x49\x5f\x42\x4c\x4f\x43\x4b\x00\x11\x00\x00\x00\x4e\x44\x57\x32\x36\x37\x32\x5f\x73\x61\x6d\x70\x6c\x65\x45\x6e\x76\x00\x00\x00\x04\x00\x00\x00\x66\x31\x34\x34\x00\x00\x00\x00\x19\x00\x00\x00\x54\x45\x3a\x4e\x44\x57\x32\x36\x37\x32\x3a\x43\x53\x3a\x53\x42\x3a\x42\x49\x5f\x42\x4c\x4f\x43\x4b\x00\x00\x00\x11\x00\x00\x00\x4e\x44\x57\x32\x36\x37\x32\x5f\x73\x61\x6d\x70\x6c\x65\x45\x6e\x76\x00\x00\x00\x04\x00\x00\x00\x66\x31\x34\x34\x00\x00\x00\x00\x1c\x00\x00\x00\x54\x45\x3a\x4e\x44\x57\x32\x36\x37\x32\x3a\x43\x53\x3a\x53\x42\x3a\x46\x4c\x4f\x41\x54\x5f\x42\x4c\x4f\x43\x4b\x00\x00\x00\x00" |
| 95 | + ) == ( |
| 96 | + "fc00", |
| 97 | + ConfigurationUpdate( |
| 98 | + config_change=1, |
| 99 | + streams=[ |
| 100 | + StreamInfo( |
| 101 | + channel="TE:NDW2672:CS:SB:MBBI_BLOCK", |
| 102 | + schema="f144", |
| 103 | + topic="NDW2672_sampleEnv", |
| 104 | + protocol=1, |
| 105 | + periodic=0, |
| 106 | + ), |
| 107 | + StreamInfo( |
| 108 | + channel="TE:NDW2672:CS:SB:BI_BLOCK", |
| 109 | + schema="f144", |
| 110 | + topic="NDW2672_sampleEnv", |
| 111 | + protocol=1, |
| 112 | + periodic=0, |
| 113 | + ), |
| 114 | + StreamInfo( |
| 115 | + channel="TE:NDW2672:CS:SB:FLOAT_BLOCK", |
| 116 | + schema="f144", |
| 117 | + topic="NDW2672_sampleEnv", |
| 118 | + protocol=1, |
| 119 | + periodic=0, |
| 120 | + ), |
| 121 | + ], |
| 122 | + ), |
| 123 | + ) |
78 | 124 |
|
79 | 125 |
|
80 | 126 | def test_parse_timestamp_with_valid_timestamp(mock_message): |
|
0 commit comments