From 65456a961258998289dde353f1f6fad9687fee72 Mon Sep 17 00:00:00 2001 From: Juha Hyttinen Date: Fri, 19 Aug 2022 13:22:45 +0300 Subject: [PATCH] Endpoint parse to support also ipv6 format []:port Change-Id: Ie022a954e7fd9f3e853650041941045f108abe4e Signed-off-by: Juha Hyttinen --- pkg/xapp/alarm.go | 3 ++- pkg/xapp/rmrendpoint.go | 10 +++++---- pkg/xapp/rmrendpointlist_test.go | 46 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/pkg/xapp/alarm.go b/pkg/xapp/alarm.go index 0e6f637..f6616a5 100755 --- a/pkg/xapp/alarm.go +++ b/pkg/xapp/alarm.go @@ -20,8 +20,9 @@ package xapp import ( - "gerrit.o-ran-sc.org/r/ric-plt/alarm-go.git/alarm" "os" + + "gerrit.o-ran-sc.org/r/ric-plt/alarm-go.git/alarm" ) type AlarmClient struct { diff --git a/pkg/xapp/rmrendpoint.go b/pkg/xapp/rmrendpoint.go index cddcc4a..45f961d 100644 --- a/pkg/xapp/rmrendpoint.go +++ b/pkg/xapp/rmrendpoint.go @@ -53,16 +53,18 @@ func (endpoint *RmrEndpoint) GetPort() uint16 { } 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 strings.Contains(src, ":") { + lind := strings.LastIndexByte(src, ':') + srcAddr := src[:lind] + srcPort, err := strconv.ParseUint(src[lind+1:], 10, 16) if err == nil { endpoint.Addr = srcAddr endpoint.Port = uint16(srcPort) return true } } + endpoint.Addr = "" + endpoint.Port = 0 return false } diff --git a/pkg/xapp/rmrendpointlist_test.go b/pkg/xapp/rmrendpointlist_test.go index fe073e9..b85c1a6 100755 --- a/pkg/xapp/rmrendpointlist_test.go +++ b/pkg/xapp/rmrendpointlist_test.go @@ -20,9 +20,55 @@ package xapp import ( + "fmt" "testing" ) +func TestRmrEndpoint1(t *testing.T) { + addr := "127.0.0.1" + port := uint16(8080) + str := fmt.Sprintf("%s:%d", addr, port) + Logger.Info("CASE: TestRmrEndpoint1 %s", str) + ep := NewRmrEndpoint(str) + if ep == nil || ep.Addr != addr || ep.Port != port { + t.Errorf("NewRmrEndpoint: %s failed", str) + } +} + +func TestRmrEndpoint2(t *testing.T) { + addr := "[2001:2003:fb69:ea00:c894:288b:4582:b5c/64]" + port := uint16(8080) + str := fmt.Sprintf("%s:%d", addr, port) + Logger.Info("CASE: TestRmrEndpoint2 %s", str) + ep := NewRmrEndpoint(str) + if ep == nil || ep.Addr != addr || ep.Port != port { + t.Errorf("NewRmrEndpoint: %s failed", str) + } +} + +func TestRmrEndpoint3(t *testing.T) { + addr := "127.0.0.1" + str := fmt.Sprintf("%s:port", addr) + Logger.Info("CASE: TestRmrEndpoint3 %s", str) + ep := NewRmrEndpoint(str) + if ep != nil { + t.Errorf("NewRmrEndpoint: %s successful while should fail", str) + } +} + +func TestRmrEndpoint4(t *testing.T) { + addr := "127.0.0.1" + str := fmt.Sprintf("%s:port", addr) + Logger.Info("CASE: TestRmrEndpoint4 %s", str) + ep := &RmrEndpoint{} + if ep.Set(str) == true { + t.Errorf("NewRmrEndpoint: Set %s successful while should fail", str) + } + if ep.Addr != "" || ep.Port != 0 { + t.Errorf("NewRmrEndpoint: Values %s successful while should fail", str) + } +} + func TestRmrEndpointList(t *testing.T) { Logger.Info("CASE: TestRmrEndpointList") -- 2.16.6