@@ -32,7 +32,7 @@ def test_create_message(self):
32
32
self .assertEqual (msg .value , payload )
33
33
34
34
def test_create_gzip (self ):
35
- payloads = [b"v1" , b"v2" ]
35
+ payloads = [( b"v1" , None ), ( b"v2" , None ) ]
36
36
msg = create_gzip_message (payloads )
37
37
self .assertEqual (msg .magic , 0 )
38
38
self .assertEqual (msg .attributes , ATTRIBUTE_CODEC_MASK & CODEC_GZIP )
@@ -59,9 +59,39 @@ def test_create_gzip(self):
59
59
60
60
self .assertEqual (decoded , expect )
61
61
62
+ def test_create_gzip_keyed (self ):
63
+ payloads = [(b"v1" , b"k1" ), (b"v2" , b"k2" )]
64
+ msg = create_gzip_message (payloads )
65
+ self .assertEqual (msg .magic , 0 )
66
+ self .assertEqual (msg .attributes , ATTRIBUTE_CODEC_MASK & CODEC_GZIP )
67
+ self .assertEqual (msg .key , None )
68
+ # Need to decode to check since gzipped payload is non-deterministic
69
+ decoded = gzip_decode (msg .value )
70
+ expect = b"" .join ([
71
+ struct .pack (">q" , 0 ), # MsgSet Offset
72
+ struct .pack (">i" , 18 ), # Msg Size
73
+ struct .pack (">i" , 1474775406 ), # CRC
74
+ struct .pack (">bb" , 0 , 0 ), # Magic, flags
75
+ struct .pack (">i" , 2 ), # Length of key
76
+ b"k1" , # Key
77
+ struct .pack (">i" , 2 ), # Length of value
78
+ b"v1" , # Value
79
+
80
+ struct .pack (">q" , 0 ), # MsgSet Offset
81
+ struct .pack (">i" , 18 ), # Msg Size
82
+ struct .pack (">i" , - 16383415 ), # CRC
83
+ struct .pack (">bb" , 0 , 0 ), # Magic, flags
84
+ struct .pack (">i" , 2 ), # Length of key
85
+ b"k2" , # Key
86
+ struct .pack (">i" , 2 ), # Length of value
87
+ b"v2" , # Value
88
+ ])
89
+
90
+ self .assertEqual (decoded , expect )
91
+
62
92
@unittest .skipUnless (has_snappy (), "Snappy not available" )
63
93
def test_create_snappy (self ):
64
- payloads = [b"v1" , b"v2" ]
94
+ payloads = [( b"v1" , None ), ( b"v2" , None ) ]
65
95
msg = create_snappy_message (payloads )
66
96
self .assertEqual (msg .magic , 0 )
67
97
self .assertEqual (msg .attributes , ATTRIBUTE_CODEC_MASK & CODEC_SNAPPY )
@@ -87,6 +117,36 @@ def test_create_snappy(self):
87
117
88
118
self .assertEqual (decoded , expect )
89
119
120
+ @unittest .skipUnless (has_snappy (), "Snappy not available" )
121
+ def test_create_snappy_keyed (self ):
122
+ payloads = [(b"v1" , b"k1" ), (b"v2" , b"k2" )]
123
+ msg = create_snappy_message (payloads )
124
+ self .assertEqual (msg .magic , 0 )
125
+ self .assertEqual (msg .attributes , ATTRIBUTE_CODEC_MASK & CODEC_SNAPPY )
126
+ self .assertEqual (msg .key , None )
127
+ decoded = snappy_decode (msg .value )
128
+ expect = b"" .join ([
129
+ struct .pack (">q" , 0 ), # MsgSet Offset
130
+ struct .pack (">i" , 18 ), # Msg Size
131
+ struct .pack (">i" , 1474775406 ), # CRC
132
+ struct .pack (">bb" , 0 , 0 ), # Magic, flags
133
+ struct .pack (">i" , 2 ), # Length of key
134
+ b"k1" , # Key
135
+ struct .pack (">i" , 2 ), # Length of value
136
+ b"v1" , # Value
137
+
138
+ struct .pack (">q" , 0 ), # MsgSet Offset
139
+ struct .pack (">i" , 18 ), # Msg Size
140
+ struct .pack (">i" , - 16383415 ), # CRC
141
+ struct .pack (">bb" , 0 , 0 ), # Magic, flags
142
+ struct .pack (">i" , 2 ), # Length of key
143
+ b"k2" , # Key
144
+ struct .pack (">i" , 2 ), # Length of value
145
+ b"v2" , # Value
146
+ ])
147
+
148
+ self .assertEqual (decoded , expect )
149
+
90
150
def test_encode_message_header (self ):
91
151
expect = b"" .join ([
92
152
struct .pack (">h" , 10 ), # API Key
@@ -701,7 +761,7 @@ def mock_create_message_fns(self):
701
761
yield
702
762
703
763
def test_create_message_set (self ):
704
- messages = [1 , 2 , 3 ]
764
+ messages = [( 1 , "k1" ), ( 2 , "k2" ), ( 3 , "k3" ) ]
705
765
706
766
# Default codec is CODEC_NONE. Expect list of regular messages.
707
767
expect = [sentinel .message ] * len (messages )
0 commit comments