Skip to content

Commit a9249a7

Browse files
committed
Add test for publisher spool encode and decode. (elastic#15534)
* Add test for publisher queue encode and decode. * Run mage fmt. * Fixes from code review. (cherry picked from commit a3b8d3a)
1 parent 3e74400 commit a9249a7

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
// Licensed to Elasticsearch B.V. under one or more contributor
2+
// license agreements. See the NOTICE file distributed with
3+
// this work for additional information regarding copyright
4+
// ownership. Elasticsearch B.V. licenses this file to you under
5+
// the Apache License, Version 2.0 (the "License"); you may
6+
// not use this file except in compliance with the License.
7+
// You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing,
12+
// software distributed under the License is distributed on an
13+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
// KIND, either express or implied. See the License for the
15+
// specific language governing permissions and limitations
16+
// under the License.
17+
18+
package spool
19+
20+
import (
21+
"testing"
22+
"time"
23+
24+
"github.com/stretchr/testify/assert"
25+
26+
"github.com/elastic/beats/libbeat/beat"
27+
"github.com/elastic/beats/libbeat/common"
28+
"github.com/elastic/beats/libbeat/publisher"
29+
)
30+
31+
func TestEncodeDecode(t *testing.T) {
32+
tests := map[string]codecID{
33+
"json": codecJSON,
34+
"ubjson": codecUBJSON,
35+
"cborl": codecCBORL,
36+
}
37+
38+
fieldTimeStr := "2020-01-14T20:33:23.779Z"
39+
fieldTime, _ := time.Parse(time.RFC3339Nano, fieldTimeStr)
40+
event := publisher.Event{
41+
Content: beat.Event{
42+
Timestamp: time.Now().Round(0),
43+
Fields: common.MapStr{
44+
"time": fieldTime,
45+
"commontime": common.Time(fieldTime),
46+
},
47+
},
48+
}
49+
expected := publisher.Event{
50+
Content: beat.Event{
51+
Timestamp: event.Content.Timestamp,
52+
Fields: common.MapStr{
53+
"time": fieldTime.Format(time.RFC3339Nano),
54+
"commontime": common.Time(fieldTime).String(),
55+
},
56+
},
57+
}
58+
59+
for name, codec := range tests {
60+
t.Run(name, func(t *testing.T) {
61+
encoder, err := newEncoder(codec)
62+
assert.NoError(t, err)
63+
64+
encoded, err := encoder.encode(&event)
65+
assert.NoError(t, err)
66+
67+
decoder := newDecoder()
68+
decoder.buf = encoded
69+
70+
observed, err := decoder.Decode()
71+
assert.NoError(t, err)
72+
73+
assert.Equal(t, expected, observed)
74+
})
75+
}
76+
}

0 commit comments

Comments
 (0)