@@ -40,23 +40,24 @@ import (
40
40
)
41
41
42
42
type mockEntry struct {
43
- entryType uint16
44
- version uint16
45
- meta logservicedriver.Meta
46
- entries []* driverEntry.Entry
47
- payloadSize uint64
43
+ logservicedriver.V1Meta
44
+ entryType uint16
45
+ version uint16
46
+ entries []* driverEntry.Entry
48
47
}
49
48
50
49
func newMockEntry () * mockEntry {
51
50
return & mockEntry {
52
51
entryType : objectio .IOET_ObjMeta ,
52
+ version : logservicedriver .IOET_WALRecord_V1 ,
53
53
}
54
54
}
55
55
56
56
func (m * mockEntry ) appendEntry (e * driverEntry.Entry ) {
57
57
m .entries = append (m .entries , e )
58
- m .meta .AddAddr (e .DSN , m .payloadSize )
59
- m .payloadSize += uint64 (e .GetSize ())
58
+ sz := m .V1Meta .GetPayloadSize ()
59
+ m .V1Meta .AddAddr (e .DSN , sz )
60
+ m .V1Meta .SetPayloadSize (sz + uint64 (e .GetSize ()))
60
61
}
61
62
62
63
func (m * mockEntry ) WriteTo (w io.Writer ) (int64 , error ) {
@@ -69,12 +70,12 @@ func (m *mockEntry) WriteTo(w io.Writer) (int64, error) {
69
70
return 0 , err
70
71
}
71
72
n += 2
72
- nn , err := m .meta .WriteTo (w )
73
+ nn , err := m .V1Meta .WriteTo (w )
73
74
if err != nil {
74
75
return 0 , err
75
76
}
76
77
n += nn
77
- if m .meta .GetType () == logservicedriver .TNormal {
78
+ if m .V1Meta .GetType () == logservicedriver .Cmd_Normal {
78
79
for _ , e := range m .entries {
79
80
nn , err := e .WriteTo (w )
80
81
if err != nil {
@@ -101,13 +102,13 @@ func runWithBaseEnv(fn func(cat *catalog.Catalog, txn txnif.AsyncTxn) error) err
101
102
}
102
103
103
104
type parameter struct {
104
- metaType logservicedriver.MetaType
105
+ cmdType logservicedriver.CmdType
105
106
groupType uint32
106
107
}
107
108
108
109
func newParameter () * parameter {
109
110
return & parameter {
110
- metaType : logservicedriver .TNormal ,
111
+ cmdType : logservicedriver .Cmd_Normal ,
111
112
groupType : wal .GroupPrepare ,
112
113
}
113
114
}
@@ -117,8 +118,8 @@ func (p *parameter) withGroupType(t uint32) *parameter {
117
118
return p
118
119
}
119
120
120
- func (p * parameter ) withMetaType (t logservicedriver.MetaType ) * parameter {
121
- p .metaType = t
121
+ func (p * parameter ) withCmdType (t logservicedriver.CmdType ) * parameter {
122
+ p .cmdType = t
122
123
return p
123
124
}
124
125
@@ -182,8 +183,10 @@ func generateCmdPayload(param parameter, loc objectio.Location) ([]byte, error)
182
183
drEntry .Entry .PrepareWrite ()
183
184
184
185
me := newMockEntry ()
185
- me .meta .SetType (param .metaType )
186
- me .appendEntry (drEntry )
186
+ me .V1Meta .SetType (param .cmdType )
187
+ if param .cmdType == logservicedriver .Cmd_Normal {
188
+ me .appendEntry (drEntry )
189
+ }
187
190
var buf bytes.Buffer
188
191
_ , err = me .WriteTo (& buf )
189
192
if err != nil {
@@ -214,7 +217,7 @@ func generateCkpPayload(data []byte) ([]byte, error) {
214
217
drEntry .Entry .PrepareWrite ()
215
218
216
219
me := newMockEntry ()
217
- me .meta .SetType (logservicedriver .TNormal )
220
+ me .V1Meta .SetType (logservicedriver .Cmd_Normal )
218
221
me .appendEntry (drEntry )
219
222
var buf bytes.Buffer
220
223
_ , err = me .WriteTo (& buf )
@@ -244,6 +247,14 @@ func genRecord(payload []byte, upstreamLsn uint64) logservice.LogRecord {
244
247
return rec
245
248
}
246
249
250
+ func dataWithValidVersion (p []byte ) []byte {
251
+ if len (p ) >= 16 {
252
+ p [12 ] = 1
253
+ p [14 ] = 1
254
+ }
255
+ return p
256
+ }
257
+
247
258
func TestEntry_ParseLocation (t * testing.T ) {
248
259
t .Run ("invalid record type" , func (t * testing.T ) {
249
260
rec := logservice.LogRecord {
@@ -261,14 +272,14 @@ func TestEntry_ParseLocation(t *testing.T) {
261
272
262
273
t .Run ("read buffer error" , func (t * testing.T ) {
263
274
rec := logservice.LogRecord {
264
- Data : make ([]byte , 22 ),
275
+ Data : dataWithValidVersion ( make ([]byte , 22 ) ),
265
276
}
266
277
assert .Equal (t , []string (nil ), getLocations (rec , "" ))
267
278
})
268
279
269
280
t .Run ("invalid meta type" , func (t * testing.T ) {
270
281
p , err := generateCmdPayload (
271
- * newParameter ().withMetaType (logservicedriver .TReplay ),
282
+ * newParameter ().withCmdType (logservicedriver .Cmd_SkipDSN ),
272
283
genLocation (uuid .New (), 0 , 0 , 0 , 0 , 0 ),
273
284
)
274
285
assert .NoError (t , err )
0 commit comments