diff --git a/engine/account_test.go b/engine/account_test.go index f10ea3375..ba96522ac 100644 --- a/engine/account_test.go +++ b/engine/account_test.go @@ -2707,6 +2707,61 @@ func TestAccActDisable(t *testing.T) { } } +func TestAccActCdrLog(t *testing.T) { + cfgfunc := func() *config.CGRConfig { + cfg2, _ := config.NewDefaultCGRConfig() + config.SetCgrConfig(cfg2) + return cfg2 + } + Cache.Clear(nil) + cfg := cfgfunc() + cfg.SchedulerCfg().CDRsConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCDRs)} + db := NewInternalDB(nil, nil, true, cfg.DataDbCfg().Items) + tmpDm := dm + dm := NewDataManager(db, cfg.CacheCfg(), nil) + dm.SetActions("ACTS", Actions{ + &Action{ + ActionType: utils.CDRLOG, + ExtraParameters: `{"BalanceType": "60.0"}`, + }, + }, "") + defer func() { + cfgfunc() + SetDataStorage(tmpDm) + }() + acc := &Account{ + ID: "cgrates.org:1001", + ActionTriggers: ActionTriggers{ + &ActionTrigger{ + ActionsID: "ACTS", + UniqueID: "TestTR1", + ThresholdType: utils.TRIGGER_MAX_EVENT_COUNTER, + ThresholdValue: 20, + Balance: &BalanceFilter{ + Type: utils.StringPointer(utils.VOICE), + Weight: utils.Float64Pointer(20.0), + }, + }, + }, + UnitCounters: UnitCounters{ + utils.MONETARY: []*UnitCounter{{ + CounterType: "max_event_counter", + Counters: CounterFilters{&CounterFilter{Value: 21, Filter: &BalanceFilter{ + ID: utils.StringPointer("TestTR1"), + }}}}}, + }, + BalanceMap: map[string]Balances{ + utils.VOICE: { + &Balance{Value: 10, Weight: 20, DestinationIDs: utils.NewStringMap(utils.MetaDDC + "DEST1")}, + }, + }, + } + SetDataStorage(dm) + a := &Action{} + acc.ExecuteActionTriggers(a) + +} + func TestAccActDebitResetAction(t *testing.T) { cfgfunc := func() *config.CGRConfig { cfg2, _ := config.NewDefaultCGRConfig() diff --git a/engine/datamanager_test.go b/engine/datamanager_test.go index b57259f50..e77e8ccb9 100644 --- a/engine/datamanager_test.go +++ b/engine/datamanager_test.go @@ -1712,9 +1712,89 @@ func TestConnManagerCallWithConnIDs(t *testing.T) { }, } connMgr := NewConnManager(cfg, map[string]chan rpcclient.ClientConnector{}) - if err := connMgr.CallWithConnIDs([]string{connId}, utils.StringSet{utils.ConcatenatedKey(utils.MetaInternal, utils.ReplicatorSv1): {}}, utils.ReplicatorSv1GetAccount, nil, nil); err == nil { t.Error(err) } } + +func TestDMRemResourceProfile(t *testing.T) { + cfg, _ := config.NewDefaultCGRConfig() + db := NewInternalDB(nil, nil, true, cfg.DataDbCfg().Items) + defer func() { + cfg2, _ := config.NewDefaultCGRConfig() + config.SetCgrConfig(cfg2) + }() + cfg.DataDbCfg().Items[utils.MetaResourceProfile].Replicate = true + cfg.DataDbCfg().RplConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.ReplicatorSv1)} + clientConn := make(chan rpcclient.ClientConnector, 1) + clientConn <- clMock(func(serviceMethod string, _, _ interface{}) error { + if serviceMethod == utils.ReplicatorSv1RemoveResourceProfile { + return nil + } + return utils.ErrNotImplemented + }) + dm := NewDataManager(db, cfg.CacheCfg(), NewConnManager(cfg, map[string]chan rpcclient.ClientConnector{ + utils.ConcatenatedKey(utils.MetaInternal, utils.ReplicatorSv1): clientConn, + })) + rsP := &ResourceProfile{ + Tenant: "cgrates.org", + ID: "RES_TEST", + FilterIDs: []string{"*string:~*req.Account:1001"}, + ActivationInterval: &utils.ActivationInterval{ + ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), + ExpiryTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), + }, + UsageTTL: time.Duration(-1), + Limit: 2, + AllocationMessage: "Account1Channels", + Weight: 20, + ThresholdIDs: []string{utils.META_NONE}, + } + config.SetCgrConfig(cfg) + dm.SetResourceProfile(rsP, true) + if err := dm.RemoveResourceProfile("cgrates.org", "RES_TEST", utils.NonTransactional, true); err != nil { + t.Error(err) + } +} + +func TestDMSetSQPrf(t *testing.T) { + cfg, _ := config.NewDefaultCGRConfig() + db := NewInternalDB(nil, nil, true, cfg.DataDbCfg().Items) + defer func() { + cfg2, _ := config.NewDefaultCGRConfig() + config.SetCgrConfig(cfg2) + }() + Cache.Clear(nil) + cfg.DataDbCfg().Items[utils.MetaStatQueueProfiles].Replicate = true + cfg.DataDbCfg().RplConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.ReplicatorSv1)} + clientConn := make(chan rpcclient.ClientConnector, 1) + clientConn <- clMock(func(serviceMethod string, _, _ interface{}) error { + if serviceMethod == utils.ReplicatorSv1SetStatQueueProfile { + return nil + } + return utils.ErrNotImplemented + }) + dm := NewDataManager(db, cfg.CacheCfg(), NewConnManager(cfg, map[string]chan rpcclient.ClientConnector{ + utils.ConcatenatedKey(utils.MetaInternal, utils.ReplicatorSv1): clientConn, + })) + sqp := &StatQueueProfile{ + Tenant: "cgrates.org", + ID: "DistinctMetricProfile", + QueueLength: 10, + TTL: time.Duration(10) * time.Second, + Metrics: []*MetricWithFilters{ + { + MetricID: utils.MetaDDC, + }, + }, + ThresholdIDs: []string{utils.META_NONE}, + Stored: true, + Weight: 20, + } + config.SetCgrConfig(cfg) + if err := dm.SetStatQueueProfile(sqp, true); err != nil { + t.Error(err) + } + +}