From abddf0b13ba2fbd72d723c3ffc6450bf23492aeb Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Thu, 1 Jul 2021 09:22:14 +0300 Subject: [PATCH] Make originHost field from Event optional for partial ers --- ers/ers.go | 8 +------ ers/ers_test.go | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 ers/ers_test.go diff --git a/ers/ers.go b/ers/ers.go index e41b42228..9217f4245 100644 --- a/ers/ers.go +++ b/ers/ers.go @@ -333,13 +333,7 @@ func (erS *ERService) processPartialEvent(ev *utils.CGREvent, rdrCfg *config.Eve utils.ERs, utils.ToJSON(ev))) return } - orgHost, err := ev.FieldAsString(utils.OriginHost) - if err == utils.ErrNotFound { // the field is missing ignore the event - utils.Logger.Warning( - fmt.Sprintf("<%s> Missing field for partial event <%s>", - utils.ERs, utils.ToJSON(ev))) - return - } + orgHost := utils.IfaceAsString(ev.Event[utils.OriginHost]) cgrID := utils.Sha1(orgID, orgHost) evs, has := erS.partialCache.Get(cgrID) // get the existing events from cache diff --git a/ers/ers_test.go b/ers/ers_test.go new file mode 100644 index 000000000..ccd321563 --- /dev/null +++ b/ers/ers_test.go @@ -0,0 +1,62 @@ +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ + +package ers + +import ( + "reflect" + "testing" + + "github.com/cgrates/cgrates/config" + "github.com/cgrates/cgrates/utils" +) + +func TestERsProcessPartialEvent(t *testing.T) { + cfg := config.NewDefaultCGRConfig() + erS := NewERService(cfg, nil, nil) + event := &utils.CGREvent{ + Tenant: "cgrates.org", + ID: "EventERsProcessPartial", + Event: map[string]interface{}{ + utils.OriginID: "originID", + }, + } + rdrCfg := &config.EventReaderCfg{ + ID: utils.MetaDefault, + Type: utils.MetaNone, + RunDelay: 0, + ConcurrentReqs: 0, + SourcePath: "/var/spool/cgrates/ers/in", + ProcessedPath: "/var/spool/cgrates/ers/out", + Filters: []string{}, + Opts: make(map[string]interface{}), + } + + args := &erEvent{ + cgrEvent: event, + rdrCfg: rdrCfg, + } + if err := erS.processPartialEvent(args.cgrEvent, args.rdrCfg); err != nil { + t.Error(err) + } else { + rcv := <-erS.rdrEvents + if !reflect.DeepEqual(rcv, args) { + t.Errorf("expected: <%+v>, \nreceived: <%+v>", args, rcv) + } + } +}