[#607] network: Implement WriteToNodeInfo method on Address

Implement `Address.WriteToNodeInfo` method which sets address of `NodeInfo`
structure. Use it in storage node application.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
support/v0.27
Leonard Lyubich 2021-06-16 15:10:38 +03:00 committed by Leonard Lyubich
parent e5504c7130
commit 5de074f24c
3 changed files with 23 additions and 1 deletions

View File

@ -73,7 +73,7 @@ func nodeAddressFromNetmap(c *cfg) string {
}
func initNetmapService(c *cfg) {
c.cfgNodeInfo.localInfo.SetAddress(c.localAddr.String())
c.localAddr.WriteToNodeInfo(&c.cfgNodeInfo.localInfo)
c.cfgNodeInfo.localInfo.SetPublicKey(c.key.PublicKey().Bytes())
c.cfgNodeInfo.localInfo.SetAttributes(parseAttributes(c.appCfg)...)
c.cfgNodeInfo.localInfo.SetState(netmapSDK.NodeStateOffline)

View File

@ -7,6 +7,7 @@ import (
"github.com/multiformats/go-multiaddr"
manet "github.com/multiformats/go-multiaddr/net"
"github.com/nspcc-dev/neofs-api-go/pkg/netmap"
)
/*
@ -37,6 +38,11 @@ func (a Address) Equal(addr Address) bool {
return a.ma.Equal(addr.ma)
}
// WriteToNodeInfo writes Address to netmap.NodeInfo structure.
func (a Address) WriteToNodeInfo(ni *netmap.NodeInfo) {
ni.SetAddress(a.ma.String())
}
// HostAddr returns host address in string format.
//
// Panics if host address cannot be fetched from Address.

View File

@ -4,6 +4,7 @@ import (
"testing"
"github.com/multiformats/go-multiaddr"
"github.com/nspcc-dev/neofs-api-go/pkg/netmap"
"github.com/stretchr/testify/require"
)
@ -63,3 +64,18 @@ func buildMultiaddr(s string, t *testing.T) multiaddr.Multiaddr {
require.NoError(t, err)
return ma
}
func TestAddress_WriteToNodeInfo(t *testing.T) {
a := "127.0.0.1:8080"
addr, err := AddressFromString(a)
require.NoError(t, err)
var ni netmap.NodeInfo
addr.WriteToNodeInfo(&ni)
restored, err := AddressFromString(ni.Address())
require.NoError(t, err)
require.True(t, restored.Equal(*addr))
}