opentelemetry-collector/pdata/internal/data/profileid_test.go

76 lines
2.1 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package data
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/collector/pdata/internal/json"
)
func TestProfileID(t *testing.T) {
tid := ProfileID([16]byte{})
assert.EqualValues(t, [16]byte{}, tid)
assert.Equal(t, 0, tid.Size())
b := [16]byte{0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78}
tid = b
assert.EqualValues(t, b, tid)
assert.Equal(t, 16, tid.Size())
}
func TestProfileIDMarshal(t *testing.T) {
buf := make([]byte, 20)
tid := ProfileID([16]byte{})
n, err := tid.MarshalTo(buf)
assert.Equal(t, 0, n)
require.NoError(t, err)
tid = [16]byte{0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78}
n, err = tid.MarshalTo(buf)
assert.Equal(t, 16, n)
assert.Equal(t, []byte{0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78}, buf[0:16])
require.NoError(t, err)
_, err = tid.MarshalTo(buf[0:1])
assert.Error(t, err)
}
func TestProfileIDUnmarshal(t *testing.T) {
buf := [16]byte{0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78}
tid := ProfileID{}
err := tid.Unmarshal(buf[0:16])
require.NoError(t, err)
assert.EqualValues(t, buf, tid)
err = tid.Unmarshal(buf[0:0])
require.NoError(t, err)
assert.EqualValues(t, [16]byte{}, tid)
err = tid.Unmarshal(nil)
require.NoError(t, err)
assert.EqualValues(t, [16]byte{}, tid)
}
func TestProfileIDMarshalAndUnmarshalJSON(t *testing.T) {
stream := json.BorrowStream(nil)
defer json.ReturnStream(stream)
src := ProfileID([16]byte{0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78})
src.MarshalJSONStream(stream)
require.NoError(t, stream.Error())
iter := json.BorrowIterator(stream.Buffer())
defer json.ReturnIterator(iter)
dest := ProfileID{}
dest.UnmarshalJSONIter(iter)
require.NoError(t, iter.Error())
assert.Equal(t, src, dest)
}