Skip to content

Commit d2c7c1f

Browse files
authored
[chore][fileconsumer] Add test to validate reader encoding (open-telemetry#23280)
1 parent 375da69 commit d2c7c1f

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

pkg/stanza/fileconsumer/reader_test.go

+53
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
package fileconsumer
55

66
import (
7+
"bytes"
78
"context"
9+
"encoding/json"
810
"testing"
911
"time"
1012

@@ -239,3 +241,54 @@ func TestMapCopy(t *testing.T) {
239241
assert.Equal(t, 1, initMap["intVal"])
240242
assert.Equal(t, "OrigStr", initMap["strVal"])
241243
}
244+
245+
func TestEncodingDecode(t *testing.T) {
246+
testFile := openTemp(t, t.TempDir())
247+
testToken := tokenWithLength(2 * DefaultFingerprintSize)
248+
_, err := testFile.Write(testToken)
249+
require.NoError(t, err)
250+
fp, err := NewFingerprint(testFile, DefaultFingerprintSize)
251+
require.NoError(t, err)
252+
253+
f := readerFactory{
254+
SugaredLogger: testutil.Logger(t),
255+
readerConfig: &readerConfig{
256+
fingerprintSize: DefaultFingerprintSize,
257+
maxLogSize: defaultMaxLogSize,
258+
},
259+
splitterFactory: newMultilineSplitterFactory(helper.NewSplitterConfig()),
260+
fromBeginning: false,
261+
}
262+
r, err := f.newReader(testFile, fp)
263+
require.NoError(t, err)
264+
265+
// Just faking out these properties
266+
r.HeaderFinalized = true
267+
r.FileAttributes.HeaderAttributes = map[string]any{"foo": "bar"}
268+
269+
assert.Equal(t, testToken[:DefaultFingerprintSize], r.Fingerprint.FirstBytes)
270+
assert.Equal(t, int64(2*DefaultFingerprintSize), r.Offset)
271+
272+
// Encode
273+
var buf bytes.Buffer
274+
enc := json.NewEncoder(&buf)
275+
require.NoError(t, enc.Encode(r))
276+
277+
// Decode
278+
dec := json.NewDecoder(bytes.NewReader(buf.Bytes()))
279+
decodedReader, err := f.unsafeReader()
280+
require.NoError(t, err)
281+
require.NoError(t, dec.Decode(decodedReader))
282+
283+
// Assert decoded reader has values persisted
284+
assert.Equal(t, testToken[:DefaultFingerprintSize], decodedReader.Fingerprint.FirstBytes)
285+
assert.Equal(t, int64(2*DefaultFingerprintSize), decodedReader.Offset)
286+
assert.True(t, decodedReader.HeaderFinalized)
287+
assert.Equal(t, map[string]any{"foo": "bar"}, decodedReader.FileAttributes.HeaderAttributes)
288+
289+
// These fields are intentionally excluded, as they may have changed
290+
assert.Empty(t, decodedReader.FileAttributes.Name)
291+
assert.Empty(t, decodedReader.FileAttributes.Path)
292+
assert.Empty(t, decodedReader.FileAttributes.NameResolved)
293+
assert.Empty(t, decodedReader.FileAttributes.PathResolved)
294+
}

0 commit comments

Comments
 (0)