From 8b979ab74153ad8c120743e0f6d868baedcb3b32 Mon Sep 17 00:00:00 2001 From: Juha Hyttinen Date: Tue, 14 Jan 2020 12:45:48 +0200 Subject: [PATCH] Improved types and its unittests Change-Id: I6853d1dea7f0b7ac1343aed6f34941d814badd9b Signed-off-by: Juha Hyttinen --- pkg/control/types.go | 37 ++++++++++++++++++++++++++++++++++++- pkg/control/types_test.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/pkg/control/types.go b/pkg/control/types.go index 22c44b3..00674c7 100644 --- a/pkg/control/types.go +++ b/pkg/control/types.go @@ -24,6 +24,7 @@ import ( "fmt" "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" "strconv" + "strings" ) //----------------------------------------------------------------------------- @@ -54,9 +55,43 @@ type RmrEndpoint struct { } func (endpoint RmrEndpoint) String() string { + return endpoint.Get() +} + +func (endpoint *RmrEndpoint) GetAddr() string { + return endpoint.Addr +} + +func (endpoint *RmrEndpoint) GetPort() uint16 { + return endpoint.Port +} + +func (endpoint *RmrEndpoint) Get() string { return endpoint.Addr + ":" + strconv.FormatUint(uint64(endpoint.Port), 10) } +func (endpoint *RmrEndpoint) Set(src string) bool { + elems := strings.Split(src, ":") + if len(elems) == 2 { + srcAddr := elems[0] + srcPort, err := strconv.ParseUint(elems[1], 10, 16) + if err == nil { + endpoint.Addr = srcAddr + endpoint.Port = uint16(srcPort) + return true + } + } + return false +} + +func NewRmrEndpoint(src string) *RmrEndpoint { + ep := &RmrEndpoint{} + if ep.Set(src) == false { + return nil + } + return ep +} + //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- @@ -85,6 +120,6 @@ type RMRParams struct { func (params *RMRParams) String() string { var b bytes.Buffer - fmt.Fprintf(&b, "Src: %s, Mtype: %s(%d), SubId: %v, Xid: %s, Meid: %v", params.Src, xapp.RicMessageTypeToName[params.Mtype], params.Mtype, params.SubId, params.Xid, params.Meid) + fmt.Fprintf(&b, "Src=%s Mtype=%s(%d) SubId=%v Xid=%s Meid=%v", params.Src, xapp.RicMessageTypeToName[params.Mtype], params.Mtype, params.SubId, params.Xid, params.Meid) return b.String() } diff --git a/pkg/control/types_test.go b/pkg/control/types_test.go index f29b3db..eade2aa 100644 --- a/pkg/control/types_test.go +++ b/pkg/control/types_test.go @@ -23,6 +23,35 @@ import ( "testing" ) +func TestRmrEndpoint(t *testing.T) { + + testEp := func(t *testing.T, val string, expect *RmrEndpoint) { + res := NewRmrEndpoint(val) + + if expect == nil && res == nil { + return + } + if res == nil { + testError(t, "Endpoint elems for value %s expected addr %s port %d got nil", val, expect.GetAddr(), expect.GetPort()) + return + } + if expect.GetAddr() != res.GetAddr() || expect.GetPort() != res.GetPort() { + testError(t, "Endpoint elems for value %s expected addr %s port %d got addr %s port %d", val, expect.GetAddr(), expect.GetPort(), res.GetAddr(), res.GetPort()) + } + if expect.String() != res.String() { + testError(t, "Endpoint string for value %s expected %s got %s", val, expect.String(), res.Get()) + } + + } + + testEp(t, "localhost:8080", &RmrEndpoint{"localhost", 8080}) + testEp(t, "127.0.0.1:8080", &RmrEndpoint{"127.0.0.1", 8080}) + testEp(t, "localhost:70000", nil) + testEp(t, "localhost?8080", nil) + testEp(t, "abcdefghijklmnopqrstuvwxyz", nil) + testEp(t, "", nil) +} + func TestAction(t *testing.T) { testActionString := func(t *testing.T, val int, str string) { -- 2.16.6