Update RemoteHost to return only ip and add tests

This commit is contained in:
TeoV
2018-12-20 05:24:39 -05:00
committed by Dan Christian Bogos
parent fd08a595a5
commit 5674a18c6b
18 changed files with 69 additions and 37 deletions

View File

@@ -116,7 +116,7 @@ func testDiamItResetStorDb(t *testing.T) {
// Start CGR Engine
func testDiamItStartEngine(t *testing.T) {
if _, err := engine.StopStartEngine(daCfgPath, 4000); err != nil {
if _, err := engine.StopStartEngine(daCfgPath, 200); err != nil {
t.Fatal(err)
}
}
@@ -646,7 +646,7 @@ func testDiamItCCRTerminate(t *testing.T) {
if cdrs[0].Usage != 550*time.Second {
t.Errorf("Unexpected Usage CDR: %+v", cdrs[0])
}
// in case of sctp we get OriginHost ip1/ip2/ip3/...
if !strings.Contains(cdrs[0].OriginHost, "127.0.0.1") {
t.Errorf("Unexpected OriginHost CDR: %+v", cdrs[0])
}

View File

@@ -250,6 +250,9 @@ func testHAitCDRmtcall(t *testing.T) {
if cdrs[0].Cost != 0.2188 {
t.Errorf("Unexpected CDR Cost received, cdr: %+v ", cdrs[0].Cost)
}
if cdrs[0].OriginHost != "127.0.0.1" {
t.Errorf("Unexpected CDR OriginHost received, cdr: %+v ", cdrs[0].OriginHost)
}
}
}

View File

@@ -311,7 +311,7 @@ func (dP *diameterDP) FieldAsString(fldPath []string) (data string, err error) {
// RemoteHost is part of engine.DataProvider interface
func (dP *diameterDP) RemoteHost() net.Addr {
return dP.c.RemoteAddr()
return utils.NewNetAddr(dP.c.RemoteAddr().Network(), dP.c.RemoteAddr().String())
}
// FieldAsInterface is part of engine.DataProvider interface

View File

@@ -103,7 +103,7 @@ func (hU *httpUrlDP) AsNavigableMap([]*config.FCTemplate) (
// RemoteHost is part of engine.DataProvider interface
func (hU *httpUrlDP) RemoteHost() net.Addr {
return newHttpRemoteAddr(hU.req.RemoteAddr)
return utils.NewNetAddr("TCP", hU.req.RemoteAddr)
}
func newHTTPXmlDP(req *http.Request) (dP config.DataProvider, err error) {
@@ -198,7 +198,7 @@ func (hU *httpXmlDP) AsNavigableMap([]*config.FCTemplate) (
// RemoteHost is part of engine.DataProvider interface
func (hU *httpXmlDP) RemoteHost() net.Addr {
return newHttpRemoteAddr(hU.addr)
return utils.NewNetAddr("TCP", hU.addr)
}
// httpAgentReplyEncoder will encode []*engine.NMElement
@@ -245,20 +245,3 @@ func (xE *haXMLEncoder) Encode(nM *config.NavigableMap) (err error) {
_, err = xE.w.Write(xmlOut)
return
}
func newHttpRemoteAddr(ip string) *httpRemoteAddr {
return &httpRemoteAddr{ip: ip}
}
type httpRemoteAddr struct {
ip string
}
func (http *httpRemoteAddr) Network() string {
return utils.TCP
}
func (http *httpRemoteAddr) String() string {
return http.ip
}

View File

@@ -193,5 +193,5 @@ func (pk *radiusDP) AsNavigableMap([]*config.FCTemplate) (
// RemoteHost is part of engine.DataProvider interface
func (pk *radiusDP) RemoteHost() net.Addr {
return pk.req.RemoteAddr()
return utils.NewNetAddr(pk.req.RemoteAddr().Network(), pk.req.RemoteAddr().String())
}

View File

@@ -282,6 +282,9 @@ func TestRAitAcctStop(t *testing.T) {
if cdrs[0].Cost != 0.01 {
t.Errorf("Unexpected CDR Cost received for CDR: %v", cdrs[0].Cost)
}
if cdrs[0].ExtraFields["RemoteAddr"] != "127.0.0.1" {
t.Errorf("Unexpected CDR RemoteAddr received for CDR: %+v", utils.ToJSON(cdrs[0]))
}
}
}

View File

@@ -276,5 +276,5 @@ func (cP *csvProvider) AsNavigableMap([]*config.FCTemplate) (
// RemoteHost is part of engine.DataProvider interface
func (cP *csvProvider) RemoteHost() net.Addr {
return new(utils.LocalAddr)
return utils.LocalAddr()
}

View File

@@ -325,5 +325,5 @@ func (fP *fwvProvider) AsNavigableMap([]*config.FCTemplate) (
// RemoteHost is part of engine.DataProvider interface
func (fP *fwvProvider) RemoteHost() net.Addr {
return new(utils.LocalAddr)
return utils.LocalAddr()
}

View File

@@ -279,5 +279,5 @@ func (xP *xmlProvider) AsNavigableMap([]*config.FCTemplate) (
// RemoteHost is part of engine.DataProvider interface
func (xP *xmlProvider) RemoteHost() net.Addr {
return new(utils.LocalAddr)
return utils.LocalAddr()
}

View File

@@ -170,7 +170,7 @@ func (nM *NavigableMap) String() string {
// RemoteHost is part of engine.DataProvider interface
func (nM *NavigableMap) RemoteHost() net.Addr {
return new(utils.LocalAddr)
return utils.LocalAddr()
}
// indexMapElements will recursively go through map and index the element paths into elmns

View File

@@ -65,6 +65,8 @@
"value": "*pseudoprepaid", "mandatory": true},
{"tag": "OriginID", "field_id": "OriginID", "type": "*composed",
"value": "~*req.CDR_ID", "mandatory": true},
{"tag": "OriginHost", "field_id": "OriginHost", "type": "*remote_host",
"mandatory": true},
{"tag": "Account", "field_id": "Account", "type": "*composed",
"value": "~*req.msisdn", "mandatory": true},
{"tag": "Destination", "field_id": "Destination", "type": "*composed",

View File

@@ -65,6 +65,8 @@
"value": "*pseudoprepaid", "mandatory": true},
{"tag": "OriginID", "field_id": "OriginID", "type": "*composed",
"value": "~*req.CDR_ID", "mandatory": true},
{"tag": "OriginHost", "field_id": "OriginHost", "type": "*remote_host",
"mandatory": true},
{"tag": "Account", "field_id": "Account", "type": "*composed",
"value": "~*req.msisdn", "mandatory": true},
{"tag": "Destination", "field_id": "Destination", "type": "*composed",

View File

@@ -146,6 +146,7 @@
"value": "~*req.Ascend-User-Acct-Time", "mandatory": true},
{"tag": "Usage", "field_id": "Usage", "type": "*usage_difference",
"value": "~*req.Event-Timestamp;~*req.Ascend-User-Acct-Time", "mandatory": true},
{"tag": "RemoteAddr" , "field_id": "RemoteAddr", "type": "*remote_host"},
],
"reply_fields":[],
},

View File

@@ -906,5 +906,5 @@ func (cdrP *cdrLogProvider) AsNavigableMap([]*config.FCTemplate) (
// RemoteHost is part of engine.DataProvider interface
func (cdrP *cdrLogProvider) RemoteHost() net.Addr {
return new(utils.LocalAddr)
return utils.LocalAddr()
}

View File

@@ -1095,5 +1095,5 @@ func (cd *CallDescriptor) AsNavigableMap(tpl []*config.FCTemplate) (nM *config.N
// RemoteHost is part of utils.DataProvider
func (cd *CallDescriptor) RemoteHost() net.Addr {
return new(utils.LocalAddr)
return utils.LocalAddr()
}

View File

@@ -65,7 +65,7 @@ func (me MapEvent) AsNavigableMap([]*config.FCTemplate) (*config.NavigableMap, e
}
func (me MapEvent) RemoteHost() net.Addr {
return new(utils.LocalAddr)
return utils.LocalAddr()
}
func (me MapEvent) HasField(fldName string) (has bool) {

View File

@@ -139,5 +139,5 @@ func (cP *csvProvider) AsNavigableMap([]*config.FCTemplate) (
// RemoteHost is part of engine.DataProvider interface
func (cP *csvProvider) RemoteHost() net.Addr {
return new(utils.LocalAddr)
return utils.LocalAddr()
}

View File

@@ -20,6 +20,7 @@ package utils
import (
"fmt"
"net"
"reflect"
"sort"
"strconv"
@@ -340,12 +341,49 @@ func DaysInYear(year int) float64 {
return float64(last.Sub(first).Hours() / 24)
}
type LocalAddr struct{}
func (lc *LocalAddr) Network() string {
return Local
func LocalAddr() *NetAddr {
return &NetAddr{network: Local, ip: Local}
}
func (lc *LocalAddr) String() string {
return Local
func NewNetAddr(network, host string) *NetAddr {
ip, port, err := net.SplitHostPort(host)
if err != nil {
Logger.Warning(fmt.Sprintf("failed parsing RemoteAddr: %s, err: %s",
host, err.Error()))
}
p, err := strconv.Atoi(port)
if err != nil {
Logger.Warning(fmt.Sprintf("failed converting port : %+v, err: %s",
port, err.Error()))
}
return &NetAddr{network: network, ip: ip, port: p}
}
type NetAddr struct {
network string
ip string
port int
}
// Network is part of net.Addr interface
func (lc *NetAddr) Network() string {
return lc.network
}
// String is part of net.Addr interface
func (lc *NetAddr) String() string {
return lc.ip
}
// Port
func (lc *NetAddr) Port() int {
return lc.port
}
// Host
func (lc *NetAddr) Host() string {
if lc.ip == Local {
return Local
}
return ConcatenatedKey(lc.ip, strconv.Itoa(lc.port))
}