metric_heartbeat_test.go 1.24 KiB
package packet
import (
"crypto/sha256"
"runtime"
"testing"
"time"
"github.com/iotaledger/hive.go/protocol/message"
"github.com/iotaledger/hive.go/protocol/tlv"
"github.com/shirou/gopsutil/cpu"
"github.com/stretchr/testify/require"
)
var nodeID = sha256.Sum256([]byte{'A'})
func testMetricHeartbeat() *MetricHeartbeat {
return &MetricHeartbeat{
OwnID: nodeID[:],
OS: runtime.GOOS,
Arch: runtime.GOARCH,
NumCPU: runtime.NumCPU(),
CPUUsage: func() (p float64) {
percent, err := cpu.Percent(time.Second, false)
if err == nil {
p = percent[0]
}
return
}(),
MemoryUsage: func() uint64 {
var m runtime.MemStats
runtime.ReadMemStats(&m)
return m.Alloc
}(),
}
}
func TestMetricHeartbeat(t *testing.T) {
hb := testMetricHeartbeat()
packet, err := hb.Bytes()
require.NoError(t, err)
hbParsed, err := ParseMetricHeartbeat(packet)
require.NoError(t, err)
require.Equal(t, hb, hbParsed)
tlvHeaderLength := int(tlv.HeaderMessageDefinition.MaxBytesLength)
msg, err := NewMetricHeartbeatMessage(hb)
require.NoError(t, err)
require.Equal(t, MessageTypeMetricHeartbeat, message.Type(msg[0]))
hbParsed, err = ParseMetricHeartbeat(msg[tlvHeaderLength:])
require.NoError(t, err)
require.Equal(t, hb, hbParsed)
}