diff --git a/console/dispatchers_for_event.go b/console/dispatchers_for_event.go index 6ba61a640..26533ba71 100644 --- a/console/dispatchers_for_event.go +++ b/console/dispatchers_for_event.go @@ -26,7 +26,7 @@ import ( func init() { c := &CmdDispatcherProfile{ name: "dispatches_for_event", - rpcMethod: utils.DispatcherSv1GetProfileForEvent, + rpcMethod: utils.DispatcherSv1GetProfilesForEvent, } commands[c.Name()] = c c.CommandExecuter = &CommandExecuter{c} @@ -60,6 +60,6 @@ func (self *CmdDispatcherProfile) PostprocessRpcParams() error { } func (self *CmdDispatcherProfile) RpcResult() interface{} { - var s engine.DispatcherProfile + var s engine.DispatcherProfiles return &s } diff --git a/dispatchers/dispatchers.go b/dispatchers/dispatchers.go index b0dda2d3f..ac7976b44 100644 --- a/dispatchers/dispatchers.go +++ b/dispatchers/dispatchers.go @@ -25,6 +25,7 @@ import ( "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" + "github.com/cgrates/rpcclient" ) // NewDispatcherService constructs a DispatcherService @@ -100,8 +101,8 @@ func (dS *DispatcherService) authorize(method, tenant string, apiKey string) (er // dispatcherForEvent returns a dispatcher instance configured for specific event // or utils.ErrNotFound if none present -func (dS *DispatcherService) dispatcherProfileForEvent(tnt string, ev *utils.CGREvent, - subsys string) (dPrlf *engine.DispatcherProfile, err error) { +func (dS *DispatcherService) dispatcherProfilesForEvent(tnt string, ev *utils.CGREvent, + subsys string) (dPrlfs engine.DispatcherProfiles, err error) { // find out the matching profiles evNm := utils.MapStorage{ utils.MetaReq: ev.Event, @@ -136,13 +137,22 @@ func (dS *DispatcherService) dispatcherProfileForEvent(tnt string, ev *utils.CGR } else if !pass { continue } - if dPrlf == nil || prfl.Weight > dPrlf.Weight { - dPrlf = prfl - } + dPrlfs = append(dPrlfs, prfl) } - if dPrlf == nil { + if len(dPrlfs) == 0 { err = utils.ErrNotFound + return } + prfCount := len(dPrlfs) // if the option is not present return for all profiles + if prfCountOpt, err := ev.OptAsInt64(utils.OptsDispatchersProfilesCount); err != nil { + if err != utils.ErrNotFound { // is an conversion error + return nil, err + } + } else if prfCount > int(prfCountOpt) { // it has the option and is smaller that the current number of profiles + prfCount = int(prfCountOpt) + } + dPrlfs.Sort() + dPrlfs = dPrlfs[:prfCount] return } @@ -153,35 +163,40 @@ func (dS *DispatcherService) Dispatch(ev *utils.CGREvent, subsys string, if tnt == utils.EmptyString { tnt = dS.cfg.GeneralCfg().DefaultTenant } - dPrfl, errDsp := dS.dispatcherProfileForEvent(tnt, ev, subsys) - if errDsp != nil { - return utils.NewErrDispatcherS(errDsp) - } - tntID := dPrfl.TenantID() - // get or build the Dispatcher for the config - var d Dispatcher - if x, ok := engine.Cache.Get(utils.CacheDispatchers, - tntID); ok && x != nil { - d = x.(Dispatcher) - } else if d, err = newDispatcher(dS.dm, dPrfl); err != nil { + var dPrfls engine.DispatcherProfiles + if dPrfls, err = dS.dispatcherProfilesForEvent(tnt, ev, subsys); err != nil { return utils.NewErrDispatcherS(err) } - if errCh := engine.Cache.Set(context.TODO(), utils.CacheDispatchers, tntID, d, nil, true, utils.EmptyString); errCh != nil { - return utils.NewErrDispatcherS(errCh) + for _, dPrfl := range dPrfls { + tntID := dPrfl.TenantID() + // get or build the Dispatcher for the config + var d Dispatcher + if x, ok := engine.Cache.Get(utils.CacheDispatchers, + tntID); ok && x != nil { + d = x.(Dispatcher) + } else if d, err = newDispatcher(dS.dm, dPrfl); err != nil { + return utils.NewErrDispatcherS(err) + } + if err = engine.Cache.Set(context.TODO(), utils.CacheDispatchers, tntID, d, nil, true, utils.EmptyString); err != nil { + return utils.NewErrDispatcherS(err) + } + if err = d.Dispatch(utils.IfaceAsString(ev.APIOpts[utils.OptsRouteID]), subsys, serviceMethod, args, reply); !rpcclient.IsNetworkError(err) { + return + } } - return d.Dispatch(utils.IfaceAsString(ev.APIOpts[utils.OptsRouteID]), subsys, serviceMethod, args, reply) + return // return the last error } -func (dS *DispatcherService) V1GetProfileForEvent(ev *utils.CGREvent, - dPfl *engine.DispatcherProfile) (err error) { +func (dS *DispatcherService) V1GetProfilesForEvent(ev *utils.CGREvent, + dPfl *engine.DispatcherProfiles) (err error) { tnt := ev.Tenant if tnt == utils.EmptyString { tnt = dS.cfg.GeneralCfg().DefaultTenant } - retDPfl, errDpfl := dS.dispatcherProfileForEvent(tnt, ev, utils.IfaceAsString(ev.APIOpts[utils.Subsys])) + retDPfl, errDpfl := dS.dispatcherProfilesForEvent(tnt, ev, utils.IfaceAsString(ev.APIOpts[utils.Subsys])) if errDpfl != nil { return utils.NewErrDispatcherS(errDpfl) } - *dPfl = *retDPfl + *dPfl = retDPfl return } diff --git a/dispatchers/dispatchers_it_test.go b/dispatchers/dispatchers_it_test.go index 837ac6552..7caa59dce 100644 --- a/dispatchers/dispatchers_it_test.go +++ b/dispatchers/dispatchers_it_test.go @@ -129,4 +129,57 @@ func testDspApierUnkownAPiKey(t *testing.T) { t.Fatal(err) } } +func TestDispatcherServiceDispatcherProfileForEventGetDispatchertWithoutAuthentification(t *testing.T) { + cfg := config.NewDefaultCGRConfig() + cfg.DispatcherSCfg().IndexedSelects = false + rpcCl := map[string]chan rpcclient.ClientConnector{} + connMng := engine.NewConnManager(cfg, rpcCl) + dm := engine.NewDataManager(&engine.DataDBMock{ + GetKeysForPrefixF: func(string) ([]string, error) { + return []string{"dpp_cgrates.org:123"}, nil + }, + }, nil, connMng) + dsp := &engine.DispatcherProfile{ + ID: "321", + Subsystems: []string{utils.MetaAccounts}, + FilterIDs: []string{"filter"}, + ActivationInterval: &utils.ActivationInterval{}, + Strategy: "", + StrategyParams: nil, + Weight: 0, + Hosts: nil, + } + err := dm.SetDispatcherProfile(dsp, false) + if err == nil { + t.Errorf("\nExpected <%+v>, \nReceived <%+v>", utils.ErrNotImplemented, err) + } + fltr := &engine.Filter{ + ID: "filter", + Rules: nil, + ActivationInterval: &utils.ActivationInterval{ + ActivationTime: time.Date(1999, 2, 3, 4, 5, 6, 700000000, time.UTC), + ExpiryTime: time.Date(2000, 2, 3, 4, 5, 6, 700000000, time.UTC), + }, + } + err = dm.SetFilter(fltr, false) + if err == nil { + t.Errorf("\nExpected <%+v>, \nReceived <%+v>", utils.ErrNotImplemented, err) + } + fltrs := engine.NewFilterS(cfg, connMng, dm) + dss := NewDispatcherService(dm, cfg, fltrs, connMng) + ev := &utils.CGREvent{ + ID: "321", + Event: map[string]interface{}{ + utils.AccountField: "1001", + "Password": "CGRateS.org", + "RunID": utils.MetaDefault, + }, + } + tnt := ev.Tenant + _, err = dss.dispatcherProfilesForEvent(tnt, ev, utils.MetaAccounts) + expected := utils.ErrNotImplemented + if err == nil || err != expected { + t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) + } +} */ diff --git a/dispatchers/dispatchers_test.go b/dispatchers/dispatchers_test.go index 78555ea1b..93879f38f 100644 --- a/dispatchers/dispatchers_test.go +++ b/dispatchers/dispatchers_test.go @@ -79,7 +79,7 @@ func TestDispatcherServiceDispatcherProfileForEventGetDispatcherProfileNF(t *tes } tnt := ev.Tenant subsys := utils.IfaceAsString(ev.APIOpts[utils.Subsys]) - _, err = dss.dispatcherProfileForEvent(tnt, ev, subsys) + _, err = dss.dispatcherProfilesForEvent(tnt, ev, subsys) expected := utils.ErrNotImplemented if err == nil || err != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) @@ -97,7 +97,7 @@ func TestDispatcherServiceDispatcherProfileForEventMIIDENotFound(t *testing.T) { ev := &utils.CGREvent{} tnt := "" subsys := utils.IfaceAsString(ev.APIOpts[utils.Subsys]) - _, err := dss.dispatcherProfileForEvent(tnt, ev, subsys) + _, err := dss.dispatcherProfilesForEvent(tnt, ev, subsys) if err == nil || err != utils.ErrNotFound { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", utils.ErrNotFound, err) } @@ -143,8 +143,8 @@ func TestDispatcherV1GetProfileForEventErr(t *testing.T) { cfg.GeneralCfg().DefaultTenant = utils.EmptyString dsp := NewDispatcherService(nil, cfg, nil, nil) ev := &utils.CGREvent{} - dPfl := &engine.DispatcherProfile{} - err := dsp.V1GetProfileForEvent(ev, dPfl) + dPfl := &engine.DispatcherProfiles{} + err := dsp.V1GetProfilesForEvent(ev, dPfl) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if err == nil || err.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) @@ -156,8 +156,8 @@ func TestDispatcherV1GetProfileForEvent(t *testing.T) { cfg.GeneralCfg().DefaultTenant = utils.EmptyString dsp := NewDispatcherService(nil, cfg, nil, nil) ev := &utils.CGREvent{} - dPfl := &engine.DispatcherProfile{} - err := dsp.V1GetProfileForEvent(ev, dPfl) + dPfl := &engine.DispatcherProfiles{} + err := dsp.V1GetProfilesForEvent(ev, dPfl) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if err == nil || err.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) @@ -515,7 +515,7 @@ func TestDispatcherServiceDispatcherProfileForEventErrNil(t *testing.T) { } tnt := ev.Tenant subsys := utils.IfaceAsString(ev.APIOpts[utils.Subsys]) - _, err = dss.dispatcherProfileForEvent(tnt, ev, subsys) + _, err = dss.dispatcherProfilesForEvent(tnt, ev, subsys) if err != nil { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", nil, err) } @@ -556,12 +556,12 @@ func TestDispatcherV1GetProfileForEventReturn(t *testing.T) { } tnt := ev.Tenant subsys := utils.IfaceAsString(ev.APIOpts[utils.Subsys]) - _, err = dss.dispatcherProfileForEvent(tnt, ev, subsys) + _, err = dss.dispatcherProfilesForEvent(tnt, ev, subsys) if err != nil { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", nil, err) } - dPfl := &engine.DispatcherProfile{} - err = dss.V1GetProfileForEvent(ev, dPfl) + dPfl := &engine.DispatcherProfiles{} + err = dss.V1GetProfilesForEvent(ev, dPfl) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if err != nil { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) @@ -603,7 +603,7 @@ func TestDispatcherServiceDispatcherProfileForEventErrNotFound(t *testing.T) { } tnt := ev.Tenant subsys := utils.IfaceAsString(ev.APIOpts[utils.Subsys]) - _, err = dss.dispatcherProfileForEvent(tnt, ev, subsys) + _, err = dss.dispatcherProfilesForEvent(tnt, ev, subsys) if err == nil || err != utils.ErrNotFound { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", utils.ErrNotFound, err) } @@ -644,7 +644,7 @@ func TestDispatcherServiceDispatcherProfileForEventErrNotFound2(t *testing.T) { } tnt := "" subsys := utils.IfaceAsString(ev.APIOpts[utils.Subsys]) - _, err = dss.dispatcherProfileForEvent(tnt, ev, subsys) + _, err = dss.dispatcherProfilesForEvent(tnt, ev, subsys) if err == nil || err != utils.ErrNotFound { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", utils.ErrNotFound, err) } @@ -686,7 +686,7 @@ func TestDispatcherServiceDispatcherProfileForEventErrNotFoundFilter(t *testing. } tnt := ev.Tenant subsys := utils.IfaceAsString(ev.APIOpts[utils.Subsys]) - _, err = dss.dispatcherProfileForEvent(tnt, ev, subsys) + _, err = dss.dispatcherProfilesForEvent(tnt, ev, subsys) if err == nil || err.Error() != "NOT_FOUND:filter" { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", "NOT_FOUND:filter", err) } @@ -822,7 +822,7 @@ func TestDispatcherServiceDispatcherProfileForEventFoundFilter(t *testing.T) { } tnt := ev.Tenant subsys := utils.IfaceAsString(ev.APIOpts[utils.Subsys]) - _, err = dss.dispatcherProfileForEvent(tnt, ev, subsys) + _, err = dss.dispatcherProfilesForEvent(tnt, ev, subsys) if err == nil || err.Error() != "NOT_FOUND" { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", "NOT_FOUND:filter", err) } @@ -862,7 +862,7 @@ func TestDispatcherServiceDispatcherProfileForEventNotNotFound(t *testing.T) { } tnt := ev.Tenant subsys := utils.IfaceAsString(ev.APIOpts[utils.Subsys]) - _, err := dss.dispatcherProfileForEvent(tnt, ev, subsys) + _, err := dss.dispatcherProfilesForEvent(tnt, ev, subsys) expected := utils.ErrNotImplemented if err == nil || err != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) @@ -905,7 +905,7 @@ func TestDispatcherServiceDispatcherProfileForEventGetDispatcherError(t *testing } tnt := ev.Tenant subsys := utils.IfaceAsString(ev.APIOpts[utils.Subsys]) - _, err = dss.dispatcherProfileForEvent(tnt, ev, subsys) + _, err = dss.dispatcherProfilesForEvent(tnt, ev, subsys) if err == nil || err.Error() != "NOT_FOUND" { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", "NOT_FOUND:filter", err) } @@ -1075,12 +1075,17 @@ func TestDispatchersdispatcherProfileForEventAnySSfalseFirstNotFound(t *testing. Event: map[string]interface{}{ utils.AccountField: "1001", }, + APIOpts: map[string]interface{}{ + utils.OptsDispatchersProfilesCount: 1, + }, } subsys := utils.MetaSessionS - if rcv, err := dS.dispatcherProfileForEvent(tnt, ev, subsys); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(rcv, dsp2) { + if rcv, err := dS.dispatcherProfilesForEvent(tnt, ev, subsys); err != nil { + t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err) + } else if len(rcv) != 1 { + t.Errorf("Unexpected number of profiles:%v", len(rcv)) + } else if !reflect.DeepEqual(rcv[0], dsp2) { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", dsp2, rcv) } } @@ -1132,12 +1137,17 @@ func TestDispatchersdispatcherProfileForEventAnySSfalseFound(t *testing.T) { Event: map[string]interface{}{ utils.AccountField: "1001", }, + APIOpts: map[string]interface{}{ + utils.OptsDispatchersProfilesCount: 1, + }, } subsys := utils.MetaSessionS - if rcv, err := dS.dispatcherProfileForEvent(tnt, ev, subsys); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(rcv, dsp1) { + if rcv, err := dS.dispatcherProfilesForEvent(tnt, ev, subsys); err != nil { + t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err) + } else if len(rcv) != 1 { + t.Errorf("Unexpected number of profiles:%v", len(rcv)) + } else if !reflect.DeepEqual(rcv[0], dsp1) { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", dsp1, rcv) } } @@ -1189,10 +1199,13 @@ func TestDispatchersdispatcherProfileForEventAnySSfalseNotFound(t *testing.T) { Event: map[string]interface{}{ utils.AccountField: "1001", }, + APIOpts: map[string]interface{}{ + utils.OptsDispatchersProfilesCount: 1, + }, } subsys := utils.MetaSessionS - if rcv, err := dS.dispatcherProfileForEvent(tnt, ev, subsys); err == nil || err != utils.ErrNotFound { + if rcv, err := dS.dispatcherProfilesForEvent(tnt, ev, subsys); err == nil || err != utils.ErrNotFound { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", utils.ErrNotFound, err) } else if rcv != nil { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, rcv) @@ -1246,10 +1259,13 @@ func TestDispatchersdispatcherProfileForEventAnySStrueNotFound(t *testing.T) { Event: map[string]interface{}{ utils.AccountField: "1001", }, + APIOpts: map[string]interface{}{ + utils.OptsDispatchersProfilesCount: 1, + }, } subsys := utils.MetaSessionS - if rcv, err := dS.dispatcherProfileForEvent(tnt, ev, subsys); err == nil || err != utils.ErrNotFound { + if rcv, err := dS.dispatcherProfilesForEvent(tnt, ev, subsys); err == nil || err != utils.ErrNotFound { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", utils.ErrNotFound, err) } else if rcv != nil { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, rcv) @@ -1303,12 +1319,17 @@ func TestDispatchersdispatcherProfileForEventAnySStrueBothFound(t *testing.T) { Event: map[string]interface{}{ utils.AccountField: "1001", }, + APIOpts: map[string]interface{}{ + utils.OptsDispatchersProfilesCount: 1, + }, } subsys := utils.MetaSessionS - if rcv, err := dS.dispatcherProfileForEvent(tnt, ev, subsys); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(rcv, dsp2) { + if rcv, err := dS.dispatcherProfilesForEvent(tnt, ev, subsys); err != nil { + t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err) + } else if len(rcv) != 1 { + t.Errorf("Unexpected number of profiles:%v", len(rcv)) + } else if !reflect.DeepEqual(rcv[0], dsp2) { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", dsp2, rcv) } @@ -1318,9 +1339,11 @@ func TestDispatchersdispatcherProfileForEventAnySStrueBothFound(t *testing.T) { t.Error(err) } - if rcv, err := dS.dispatcherProfileForEvent(tnt, ev, subsys); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(rcv, dsp1) { + if rcv, err := dS.dispatcherProfilesForEvent(tnt, ev, subsys); err != nil { + t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", nil, err) + } else if len(rcv) != 1 { + t.Errorf("Unexpected number of profiles:%v", len(rcv)) + } else if !reflect.DeepEqual(rcv[0], dsp1) { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", dsp1, rcv) } } diff --git a/dispatchers/sessions_it_test.go b/dispatchers/sessions_it_test.go index da8a00b30..9828d3413 100644 --- a/dispatchers/sessions_it_test.go +++ b/dispatchers/sessions_it_test.go @@ -238,8 +238,8 @@ func testDspSessionAuthorize(t *testing.T) { }, APIOpts: map[string]interface{}{ - utils.OptsAPIKey: "ses12345", - utils.OptsRouteProfilesCount: 1., + utils.OptsAPIKey: "ses12345", + utils.OptsRoutesProfilesCount: 1., }, }, } diff --git a/engine/routes.go b/engine/routes.go index 206bda3d9..f65f4c5e4 100644 --- a/engine/routes.go +++ b/engine/routes.go @@ -692,7 +692,7 @@ func (rpS *RouteService) sortedRoutesForEvent(ctx *context.Context, tnt string, return } prfCount := len(rPrfs) // if the option is not present return for all profiles - if prfCountOpt, err := args.OptAsInt64(utils.OptsRouteProfilesCount); err != nil { + if prfCountOpt, err := args.OptAsInt64(utils.OptsRoutesProfilesCount); err != nil { if err != utils.ErrNotFound { // is an conversion error return nil, err } diff --git a/engine/routes_test.go b/engine/routes_test.go index 1a7d53e28..08f303abe 100644 --- a/engine/routes_test.go +++ b/engine/routes_test.go @@ -2180,7 +2180,7 @@ func TestRoutesSortedForEventWithLimitAndOffset2(t *testing.T) { Tenant: "cgrates.org", ID: "utils.CGREvent1", Event: map[string]interface{}{}, - APIOpts: map[string]interface{}{utils.OptsRouteProfilesCount: 3}, + APIOpts: map[string]interface{}{utils.OptsRoutesProfilesCount: 3}, }, } diff --git a/general_tests/sessionroutes_it_test.go b/general_tests/sessionroutes_it_test.go index 731ccffe5..6322c615f 100644 --- a/general_tests/sessionroutes_it_test.go +++ b/general_tests/sessionroutes_it_test.go @@ -131,7 +131,7 @@ func testSesRoutesAuthorizeEvent(t *testing.T) { utils.SetupTime: time.Date(2018, 8, 24, 16, 00, 00, 0, time.UTC), utils.Usage: time.Minute, }, - APIOpts: map[string]interface{}{utils.OptsRouteProfilesCount: 1}, + APIOpts: map[string]interface{}{utils.OptsRoutesProfilesCount: 1}, } args := sessions.NewV1AuthorizeArgs(false, []string{}, false, []string{}, false, []string{}, false, false, @@ -262,7 +262,7 @@ func testSesRoutesProcessMessage(t *testing.T) { utils.SetupTime: time.Date(2018, 8, 24, 16, 00, 00, 0, time.UTC), utils.Usage: time.Minute, }, - APIOpts: map[string]interface{}{utils.OptsRouteProfilesCount: 1}, + APIOpts: map[string]interface{}{utils.OptsRoutesProfilesCount: 1}, } args := sessions.NewV1ProcessMessageArgs(false, []string{}, false, []string{}, false, []string{}, false, false, @@ -395,7 +395,7 @@ func testSesRoutesProcessEvent(t *testing.T) { utils.SetupTime: time.Date(2018, 8, 24, 16, 00, 00, 0, time.UTC), utils.Usage: time.Minute, }, - APIOpts: map[string]interface{}{utils.OptsRouteProfilesCount: 1}, + APIOpts: map[string]interface{}{utils.OptsRoutesProfilesCount: 1}, } args := sessions.V1ProcessEventArgs{ Flags: []string{"*routes"}, diff --git a/registrarc/libregistrarc_test.go b/registrarc/libregistrarc_test.go index 5ab792299..c1faa567f 100644 --- a/registrarc/libregistrarc_test.go +++ b/registrarc/libregistrarc_test.go @@ -282,7 +282,7 @@ func TestRegister(t *testing.T) { if _, err := register(req); err == nil { t.Errorf("Expected error,received: nil") } - args2 = utils.NewServerRequest(utils.DispatcherSv1GetProfileForEvent, id, id) + args2 = utils.NewServerRequest(utils.DispatcherSv1GetProfilesForEvent, id, id) args2JSON, err = json.Marshal(args2) if err != nil { t.Fatal(err) @@ -291,7 +291,7 @@ func TestRegister(t *testing.T) { if _, err := register(req); err == nil { t.Errorf("Expected error,received: nil") } - args2 = utils.NewServerRequest(utils.DispatcherSv1GetProfileForEvent, id, id) + args2 = utils.NewServerRequest(utils.DispatcherSv1GetProfilesForEvent, id, id) args2JSON, err = json.Marshal(args2) if err != nil { t.Fatal(err) diff --git a/utils/consts.go b/utils/consts.go index 4f1609a0e..6860138b9 100644 --- a/utils/consts.go +++ b/utils/consts.go @@ -1410,10 +1410,10 @@ const ( // DispatcherS APIs const ( - DispatcherSv1 = "DispatcherSv1" - DispatcherSv1Ping = "DispatcherSv1.Ping" - DispatcherSv1GetProfileForEvent = "DispatcherSv1.GetProfileForEvent" - DispatcherServicePing = "DispatcherService.Ping" + DispatcherSv1 = "DispatcherSv1" + DispatcherSv1Ping = "DispatcherSv1.Ping" + DispatcherSv1GetProfilesForEvent = "DispatcherSv1.GetProfilesForEvent" + DispatcherServicePing = "DispatcherService.Ping" ) // RegistrarS APIs @@ -2143,7 +2143,7 @@ var CGROptionsSet = NewStringSet([]string{OptsRatesStartTime, OptsRatesUsage, Op OptsStirOriginatorTn, OptsStirOriginatorURI, OptsStirDestinationTn, OptsStirDestinationURI, OptsStirPublicKeyPath, OptsStirPrivateKeyPath, OptsAPIKey, OptsRouteID, OptsContext, OptsAttributesProcessRuns, OptsRoutesLimit, OptsRoutesOffset, OptsChargeable, - RemoteHostOpt, CacheOpt}) + RemoteHostOpt, CacheOpt, OptsRoutesProfilesCount, OptsDispatchersProfilesCount}) // EventExporter metrics const ( @@ -2165,7 +2165,7 @@ const ( // Event Opts const ( - OptsRouteProfilesCount = "*routeProfilesCount" + OptsRoutesProfilesCount = "*routesProfilesCount" OptsRoutesLimit = "*routes_limit" OptsRoutesOffset = "*routes_offset" OptsRatesStartTime = "*ratesStartTime" @@ -2189,8 +2189,9 @@ const ( OptsStirPublicKeyPath = "*stirPublicKeyPath" OptsStirPrivateKeyPath = "*stirPrivateKeyPath" // DispatcherS - OptsAPIKey = "*apiKey" - OptsRouteID = "*routeID" + OptsAPIKey = "*apiKey" + OptsRouteID = "*routeID" + OptsDispatchersProfilesCount = "*dispatchersProfilesCount" // EEs OptsEEsVerbose = "*eesVerbose" // Others