forked from TrueCloudLab/frostfs-api-go
fadd47f4fb
``` name old time/op new time/op delta AttributesMarshal/marshal-8 4.44µs ± 9% 2.72µs ± 0% -38.79% (p=0.000 n=10+9) AttributesMarshal/unmarshal-8 3.16µs ±13% 0.55µs ± 4% -82.60% (p=0.000 n=10+10) name old alloc/op new alloc/op delta AttributesMarshal/marshal-8 4.42kB ± 0% 4.42kB ± 0% ~ (all equal) AttributesMarshal/unmarshal-8 2.02kB ± 0% 1.79kB ± 0% -11.11% (p=0.000 n=10+10) name old allocs/op new allocs/op delta AttributesMarshal/marshal-8 51.0 ± 0% 51.0 ± 0% ~ (all equal) AttributesMarshal/unmarshal-8 51.0 ± 0% 1.0 ± 0% -98.04% (p=0.000 n=10+10) ``` Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
89 lines
1.7 KiB
Go
89 lines
1.7 KiB
Go
package object
|
|
|
|
import (
|
|
"strconv"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestSetNotification(t *testing.T) {
|
|
o := new(Object)
|
|
|
|
var ni = NotificationInfo{
|
|
epoch: 10,
|
|
topic: "test",
|
|
}
|
|
|
|
WriteNotificationInfo(o, ni)
|
|
|
|
var foundEpoch, foundTopic bool
|
|
|
|
for _, attr := range o.GetHeader().GetAttributes() {
|
|
switch key := attr.GetKey(); key {
|
|
case SysAttributeTickEpoch:
|
|
require.Equal(t, false, foundEpoch)
|
|
|
|
uEpoch, err := strconv.ParseUint(attr.GetValue(), 10, 64)
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, ni.Epoch(), uEpoch)
|
|
foundEpoch = true
|
|
case SysAttributeTickTopic:
|
|
require.Equal(t, false, foundTopic)
|
|
require.Equal(t, ni.Topic(), attr.GetValue())
|
|
foundTopic = true
|
|
}
|
|
}
|
|
|
|
require.Equal(t, true, foundEpoch && foundTopic)
|
|
}
|
|
|
|
func TestGetNotification(t *testing.T) {
|
|
o := new(Object)
|
|
|
|
attr := []Attribute{
|
|
{SysAttributeTickEpoch, "10"},
|
|
{SysAttributeTickTopic, "test"},
|
|
}
|
|
|
|
h := new(Header)
|
|
h.SetAttributes(attr)
|
|
|
|
o.SetHeader(h)
|
|
|
|
t.Run("No error", func(t *testing.T) {
|
|
ni, err := GetNotificationInfo(o)
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, uint64(10), ni.Epoch())
|
|
require.Equal(t, "test", ni.Topic())
|
|
})
|
|
}
|
|
|
|
func TestIntegration(t *testing.T) {
|
|
o := new(Object)
|
|
|
|
var (
|
|
ni1 = NotificationInfo{
|
|
epoch: 10,
|
|
topic: "",
|
|
}
|
|
ni2 = NotificationInfo{
|
|
epoch: 11,
|
|
topic: "test",
|
|
}
|
|
)
|
|
|
|
WriteNotificationInfo(o, ni1)
|
|
WriteNotificationInfo(o, ni2)
|
|
|
|
t.Run("double set", func(t *testing.T) {
|
|
ni, err := GetNotificationInfo(o)
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, ni2.epoch, ni.Epoch())
|
|
require.Equal(t, ni2.topic, ni.Topic())
|
|
require.Equal(t, 2, len(o.GetHeader().GetAttributes()))
|
|
})
|
|
}
|