diff --git a/agents/dmtagent.go b/agents/dmtagent.go index be56dc3fa..57eea014f 100644 --- a/agents/dmtagent.go +++ b/agents/dmtagent.go @@ -34,7 +34,8 @@ import ( "github.com/fiorix/go-diameter/diam/sm" ) -func NewDiameterAgent(cgrCfg *config.CGRConfig, smg rpcclient.RpcClientConnection, pubsubs rpcclient.RpcClientConnection) (*DiameterAgent, error) { +func NewDiameterAgent(cgrCfg *config.CGRConfig, smg rpcclient.RpcClientConnection, + pubsubs rpcclient.RpcClientConnection) (*DiameterAgent, error) { da := &DiameterAgent{cgrCfg: cgrCfg, smg: smg, pubsubs: pubsubs, connMux: new(sync.Mutex)} if reflect.ValueOf(da.pubsubs).IsNil() { da.pubsubs = nil // Empty it so we can check it later diff --git a/agents/libdmt.go b/agents/libdmt.go index e4b518ecc..ed9b73c59 100644 --- a/agents/libdmt.go +++ b/agents/libdmt.go @@ -426,7 +426,8 @@ func fieldOutVal(m *diam.Message, cfgFld *config.CfgCdrField, extraParam interfa // messageAddAVPsWithPath will dynamically add AVPs into the message // append: append to the message, on false overwrite if AVP is single or add to group if AVP is Grouped -func messageSetAVPsWithPath(m *diam.Message, path []interface{}, avpValStr string, appnd bool, timezone string) error { +func messageSetAVPsWithPath(m *diam.Message, path []interface{}, + avpValStr string, appnd bool, timezone string) error { if len(path) == 0 { return errors.New("Empty path as AVP filter") } @@ -700,7 +701,9 @@ func (self *CCA) SetProcessorAVPs(reqProcessor *config.DARequestProcessor, proce } return err } - if err := messageSetAVPsWithPath(self.diamMessage, splitIntoInterface(cfgFld.FieldId, utils.HIERARCHY_SEP), fmtOut, cfgFld.Append, self.timezone); err != nil { + if err := messageSetAVPsWithPath(self.diamMessage, + splitIntoInterface(cfgFld.FieldId, utils.HIERARCHY_SEP), + fmtOut, cfgFld.Append, self.timezone); err != nil { return err } if cfgFld.BreakOnSuccess { // don't look for another field diff --git a/agents/libdmt_test.go b/agents/libdmt_test.go index eadd80e7c..743af1805 100644 --- a/agents/libdmt_test.go +++ b/agents/libdmt_test.go @@ -233,31 +233,46 @@ func TestSerializeAVPValueFromString(t *testing.T) { func TestMessageSetAVPsWithPath(t *testing.T) { eMessage := diam.NewRequest(diam.CreditControl, 4, nil) - eMessage.NewAVP("Session-Id", avp.Mbit, 0, datatype.UTF8String("simuhuawei;1449573472;00002")) - m := diam.NewMessage(diam.CreditControl, diam.RequestFlag, 4, eMessage.Header.HopByHopID, eMessage.Header.EndToEndID, nil) - if err := messageSetAVPsWithPath(m, []interface{}{"Session-Id", "Unknown"}, "simuhuawei;1449573472;00002", false, "UTC"); err == nil || err.Error() != "Could not find AVP Unknown" { + eMessage.NewAVP("Session-Id", avp.Mbit, 0, + datatype.UTF8String("simuhuawei;1449573472;00002")) + m := diam.NewMessage(diam.CreditControl, diam.RequestFlag, 4, + eMessage.Header.HopByHopID, eMessage.Header.EndToEndID, nil) + if err := messageSetAVPsWithPath(m, + []interface{}{"Session-Id", "Unknown"}, "simuhuawei;1449573472;00002", + false, "UTC"); err == nil || + err.Error() != "Could not find AVP Unknown" { t.Error(err) } - if err := messageSetAVPsWithPath(m, []interface{}{"Session-Id"}, "simuhuawei;1449573472;00002", false, "UTC"); err != nil { + if err := messageSetAVPsWithPath(m, + []interface{}{"Session-Id"}, "simuhuawei;1449573472;00002", + false, "UTC"); err != nil { t.Error(err) } else if !reflect.DeepEqual(eMessage, m) { t.Errorf("Expecting: %+v, received: %+v", eMessage, m) } // test append - eMessage.NewAVP("Session-Id", avp.Mbit, 0, datatype.UTF8String("simuhuawei;1449573472;00003")) - if err := messageSetAVPsWithPath(m, []interface{}{"Session-Id"}, "simuhuawei;1449573472;00003", true, "UTC"); err != nil { + eMessage.NewAVP("Session-Id", avp.Mbit, 0, + datatype.UTF8String("simuhuawei;1449573472;00003")) + if err := messageSetAVPsWithPath(m, []interface{}{"Session-Id"}, + "simuhuawei;1449573472;00003", true, "UTC"); err != nil { t.Error(err) } else if !reflect.DeepEqual(eMessage, m) { t.Errorf("Expecting: %+v, received: %+v", eMessage, m) } // test overwrite eMessage = diam.NewRequest(diam.CreditControl, 4, nil) - eMessage.NewAVP("Session-Id", avp.Mbit, 0, datatype.UTF8String("simuhuawei;1449573472;00002")) - m = diam.NewMessage(diam.CreditControl, diam.RequestFlag, 4, eMessage.Header.HopByHopID, eMessage.Header.EndToEndID, nil) - if err := messageSetAVPsWithPath(m, []interface{}{"Session-Id"}, "simuhuawei;1449573472;00001", false, "UTC"); err != nil { + eMessage.NewAVP("Session-Id", avp.Mbit, 0, + datatype.UTF8String("simuhuawei;1449573472;00002")) + m = diam.NewMessage(diam.CreditControl, diam.RequestFlag, 4, + eMessage.Header.HopByHopID, eMessage.Header.EndToEndID, nil) + if err := messageSetAVPsWithPath(m, + []interface{}{"Session-Id"}, "simuhuawei;1449573472;00001", + false, "UTC"); err != nil { t.Error(err) } - if err := messageSetAVPsWithPath(m, []interface{}{"Session-Id"}, "simuhuawei;1449573472;00002", false, "UTC"); err != nil { + if err := messageSetAVPsWithPath(m, + []interface{}{"Session-Id"}, "simuhuawei;1449573472;00002", + false, "UTC"); err != nil { t.Error(err) } else if !reflect.DeepEqual(eMessage, m) { t.Errorf("Expecting: %+v, received: %+v", eMessage, m) @@ -267,8 +282,11 @@ func TestMessageSetAVPsWithPath(t *testing.T) { AVP: []*diam.AVP{ diam.NewAVP(444, avp.Mbit, 0, datatype.UTF8String("33708000003")), // Subscription-Id-Data }}) - m = diam.NewMessage(diam.CreditControl, diam.RequestFlag, 4, eMessage.Header.HopByHopID, eMessage.Header.EndToEndID, nil) - if err := messageSetAVPsWithPath(m, []interface{}{"Subscription-Id", "Subscription-Id-Data"}, "33708000003", false, "UTC"); err != nil { + m = diam.NewMessage(diam.CreditControl, diam.RequestFlag, 4, + eMessage.Header.HopByHopID, eMessage.Header.EndToEndID, nil) + if err := messageSetAVPsWithPath(m, + []interface{}{"Subscription-Id", "Subscription-Id-Data"}, + "33708000003", false, "UTC"); err != nil { t.Error(err) } else if !reflect.DeepEqual(eMessage, m) { t.Errorf("Expecting: %+v, received: %+v", eMessage, m) @@ -278,7 +296,9 @@ func TestMessageSetAVPsWithPath(t *testing.T) { AVP: []*diam.AVP{ diam.NewAVP(450, avp.Mbit, 0, datatype.Enumerated(0)), // Subscription-Id-Data }}) - if err := messageSetAVPsWithPath(m, []interface{}{"Subscription-Id", "Subscription-Id-Type"}, "0", true, "UTC"); err != nil { + if err := messageSetAVPsWithPath(m, + []interface{}{"Subscription-Id", "Subscription-Id-Type"}, + "0", true, "UTC"); err != nil { t.Error(err) } else if !reflect.DeepEqual(eMessage, m) { t.Errorf("Expecting: %+v, received: %+v", eMessage, m)