68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
package tracing
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestNewIdentity(t *testing.T) {
|
|
testCases := []struct {
|
|
testCase string
|
|
trace string
|
|
expected string
|
|
}{
|
|
{
|
|
testCase: "full length trace",
|
|
trace: "ec31ad8a01fde11fdcabe2efdce36873:52726f6cabc144f5:0:1",
|
|
expected: "ec31ad8a01fde11fdcabe2efdce36873:52726f6cabc144f5:0:1",
|
|
},
|
|
{
|
|
testCase: "short trace ID",
|
|
trace: "ad8a01fde11fdcabe2efdce36873:52726f6cabc144f5:0:1",
|
|
expected: "0000ad8a01fde11fdcabe2efdce36873:52726f6cabc144f5:0:1",
|
|
},
|
|
{
|
|
testCase: "short trace ID with 0s in the middle",
|
|
trace: "ad8a01fde11f000002efdce36873:52726f6cabc144f5:0:1",
|
|
expected: "0000ad8a01fde11f000002efdce36873:52726f6cabc144f5:0:1",
|
|
},
|
|
{
|
|
testCase: "short trace ID with 0s in the beginning and middle",
|
|
trace: "001ad8a01fde11fdcabe2efdce36873:52726f6cabc144f5:0:1",
|
|
expected: "0001ad8a01fde11fdcabe2efdce36873:52726f6cabc144f5:0:1",
|
|
},
|
|
{
|
|
testCase: "no trace",
|
|
trace: "",
|
|
},
|
|
{
|
|
testCase: "missing flags",
|
|
trace: "ec31ad8a01fde11fdcabe2efdce36873:52726f6cabc144f5:0",
|
|
},
|
|
{
|
|
testCase: "missing separator",
|
|
trace: "ec31ad8a01fde11fdcabe2efdce3687352726f6cabc144f501",
|
|
},
|
|
}
|
|
|
|
for _, testCase := range testCases {
|
|
identity, err := NewIdentity(testCase.trace)
|
|
if testCase.expected != "" {
|
|
require.NoError(t, err)
|
|
require.Equal(t, testCase.expected, identity.String())
|
|
|
|
serializedIdentity, err := identity.MarshalBinary()
|
|
require.NoError(t, err)
|
|
deserializedIdentity := new(Identity)
|
|
err = deserializedIdentity.UnmarshalBinary(serializedIdentity)
|
|
require.NoError(t, err)
|
|
require.Equal(t, identity, deserializedIdentity)
|
|
|
|
} else {
|
|
require.Error(t, err)
|
|
require.Nil(t, identity)
|
|
}
|
|
}
|
|
}
|