@@ -140,3 +140,57 @@ func TestIntVarEvent(t *testing.T) {
140
140
require .Equal (t , INSERT_ID , ev .Type )
141
141
require .Equal (t , uint64 (23 ), ev .Value )
142
142
}
143
+
144
+ func TestDecodeSid (t * testing.T ) {
145
+ testcases := []struct {
146
+ input []byte
147
+ gtidFormat GtidFormat
148
+ uuidCount uint64
149
+ }{
150
+ {[]byte {1 , 2 , 0 , 0 , 0 , 0 , 0 , 1 }, GtidFormatTagged , 2 },
151
+ {[]byte {1 , 1 , 0 , 0 , 0 , 0 , 0 , 1 }, GtidFormatTagged , 1 },
152
+ {[]byte {1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 }, GtidFormatTagged , 0 },
153
+ {[]byte {1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, GtidFormatClassic , 1 },
154
+ }
155
+
156
+ for _ , tc := range testcases {
157
+ format , uuidCount := decodeSid (tc .input )
158
+ assert .Equal (t , tc .gtidFormat , format )
159
+ assert .Equal (t , tc .uuidCount , uuidCount )
160
+ }
161
+ }
162
+
163
+ func TestPreviousGTIDEvent (t * testing.T ) {
164
+ testcases := []struct {
165
+ input []byte
166
+ GTIDSets string
167
+ }{
168
+ {
169
+ []byte {0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 },
170
+ "" ,
171
+ },
172
+ {
173
+ []byte {0x1 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x89 , 0x6e , 0x78 , 0x82 , 0x18 , 0xfe , 0x11 , 0xef , 0xab , 0x88 , 0x22 , 0x22 , 0x2d , 0x34 , 0xd4 , 0x11 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x4 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 },
174
+ "896e7882-18fe-11ef-ab88-22222d34d411:1-3" ,
175
+ },
176
+ {
177
+ []byte {0x1 , 0x2 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x89 , 0x6e , 0x78 , 0x82 , 0x18 , 0xfe , 0x11 , 0xef , 0xab , 0x88 , 0x22 , 0x22 , 0x2d , 0x34 , 0xd4 , 0x11 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x5 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x89 , 0x6e , 0x78 , 0x82 , 0x18 , 0xfe , 0x11 , 0xef , 0xab , 0x88 , 0x22 , 0x22 , 0x2d , 0x34 , 0xd4 , 0x11 , 0x8 , 0x61 , 0x61 , 0x61 , 0x61 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x2 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 },
178
+ "896e7882-18fe-11ef-ab88-22222d34d411:1-4:aaaa:1" ,
179
+ },
180
+ {
181
+ []byte {0x1 , 0x7 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x89 , 0x6e , 0x78 , 0x82 , 0x18 , 0xfe , 0x11 , 0xef , 0xab , 0x88 , 0x22 , 0x22 , 0x2d , 0x34 , 0xd4 , 0x11 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x5 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x89 , 0x6e , 0x78 , 0x82 , 0x18 , 0xfe , 0x11 , 0xef , 0xab , 0x88 , 0x22 , 0x22 , 0x2d , 0x34 , 0xd4 , 0x11 , 0x8 , 0x61 , 0x61 , 0x61 , 0x61 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x2 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x89 , 0x6e , 0x78 , 0x82 , 0x18 , 0xfe , 0x11 , 0xef , 0xab , 0x88 , 0x22 , 0x22 , 0x2d , 0x34 , 0xd4 , 0x11 , 0x6 , 0x61 , 0x62 , 0x63 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x4 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x89 , 0x6e , 0x78 , 0x82 , 0x18 , 0xfe , 0x11 , 0xef , 0xab , 0x88 , 0x22 , 0x22 , 0x2d , 0x34 , 0xd4 , 0x11 , 0xa , 0x62 , 0x62 , 0x62 , 0x62 , 0x62 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x2 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x89 , 0x6e , 0x78 , 0x82 , 0x18 , 0xfe , 0x11 , 0xef , 0xab , 0x88 , 0x22 , 0x22 , 0x2d , 0x34 , 0xd4 , 0x11 , 0xc , 0x62 , 0x62 , 0x62 , 0x62 , 0x62 , 0x62 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x2 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x89 , 0x6e , 0x78 , 0x82 , 0x18 , 0xfe , 0x11 , 0xef , 0xab , 0x88 , 0x22 , 0x22 , 0x2d , 0x34 , 0xd4 , 0x11 , 0x2 , 0x78 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x2 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x89 , 0x6e , 0x78 , 0x82 , 0x18 , 0xfe , 0x11 , 0xef , 0xab , 0x88 , 0x22 , 0x22 , 0x2d , 0x34 , 0xd4 , 0x12 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x3 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 },
182
+ "896e7882-18fe-11ef-ab88-22222d34d411:1-4:aaaa:1:abc:1-3:bbbbb:1:bbbbbb:1:x:1,896e7882-18fe-11ef-ab88-22222d34d412:1-2" ,
183
+ },
184
+ {
185
+ []byte {0x01 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x04 , 0x2f , 0x20 , 0xcc , 0xbc , 0x4c , 0x11 , 0xef , 0xa1 , 0xd0 , 0x02 , 0x42 , 0xac , 0x11 , 0x00 , 0x02 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x04 , 0x2f , 0x20 , 0xcc , 0xbc , 0x4c , 0x11 , 0xef , 0xa1 , 0xd0 , 0x02 , 0x42 , 0xac , 0x11 , 0x00 , 0x02 , 0x06 , 0x61 , 0x61 , 0x61 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x04 , 0x2f , 0x20 , 0xcc , 0xbc , 0x4c , 0x11 , 0xef , 0xa1 , 0xd0 , 0x02 , 0x42 , 0xac , 0x11 , 0x00 , 0x02 , 0x28 , 0x74 , 0x61 , 0x67 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x30 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x04 , 0x2f , 0x20 , 0xcc , 0xbc , 0x4c , 0x11 , 0xef , 0xa1 , 0xd0 , 0x02 , 0x42 , 0xac , 0x11 , 0x00 , 0x02 , 0x40 , 0x74 , 0x61 , 0x67 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x30 , 0x31 , 0x32 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 },
186
+ "042f20cc-bc4c-11ef-a1d0-0242ac110002:1-7:aaa:1:tag45678901234567890:1:tag45678901234567890123456789012:1" ,
187
+ },
188
+ }
189
+
190
+ for _ , tc := range testcases {
191
+ e := PreviousGTIDsEvent {}
192
+ err := e .Decode (tc .input )
193
+ require .NoError (t , err )
194
+ require .Equal (t , tc .GTIDSets , e .GTIDSets )
195
+ }
196
+ }
0 commit comments