mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-15 05:09:54 +05:00
Covered actions to 100%
This commit is contained in:
committed by
Dan Christian Bogos
parent
a6f510ce01
commit
60e8c32e95
@@ -1050,3 +1050,100 @@ func TestExportActionResetStatStaticID(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestACScheduledActions(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
data := engine.NewInternalDB(nil, nil, true)
|
||||
dm := engine.NewDataManager(data, cfg.CacheCfg(), nil)
|
||||
fltrs := engine.NewFilterS(cfg, nil, dm)
|
||||
acts := NewActionS(cfg, fltrs, dm, nil)
|
||||
actPrf := &engine.ActionProfile{
|
||||
Tenant: "cgrates.org",
|
||||
ID: "TestACScheduledActions",
|
||||
FilterIDs: []string{"*string:~*req.Destination:1005"},
|
||||
Actions: []*engine.APAction{
|
||||
{
|
||||
ID: "TOPUP",
|
||||
FilterIDs: []string{},
|
||||
Type: "inexistent_type",
|
||||
Diktats: []*engine.APDiktat{{
|
||||
Path: "~*balance.TestBalance.Value",
|
||||
Value: "10",
|
||||
}},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if err := dm.SetActionProfile(actPrf, true); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
cgrEv := &utils.CGREvent{
|
||||
Tenant: "cgrates.org",
|
||||
Event: map[string]interface{}{
|
||||
utils.Destination: "1005",
|
||||
},
|
||||
}
|
||||
|
||||
var err error
|
||||
utils.Logger, err = utils.Newlogger(utils.MetaStdLog, utils.EmptyString)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
utils.Logger.SetLogLevel(7)
|
||||
|
||||
buff := new(bytes.Buffer)
|
||||
log.SetOutput(buff)
|
||||
|
||||
expected := "WARNING] <ActionS> ignoring ActionProfile with id: <cgrates.org:TestACScheduledActions> creating action: <TOPUP>, error: <unsupported action type: <inexistent_type>>"
|
||||
if _, err := acts.scheduledActions("cgrates.org", cgrEv, []string{}, true); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv := buff.String(); !strings.Contains(rcv, expected) {
|
||||
t.Errorf("Expected %+v, received %+v", expected, rcv)
|
||||
}
|
||||
buff.Reset()
|
||||
|
||||
actPrf.Actions[0].Type = utils.MetaResetStatQueue
|
||||
actPrf.Targets = map[string]utils.StringSet{
|
||||
utils.MetaStats: map[string]struct{}{
|
||||
"ID_TEST": {},
|
||||
},
|
||||
}
|
||||
if err := dm.SetActionProfile(actPrf, true); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
mapStorage := utils.MapStorage{
|
||||
utils.MetaReq: cgrEv.Event,
|
||||
utils.MetaOpts: cgrEv.APIOpts,
|
||||
}
|
||||
expectedSChed := []*scheduledActs{
|
||||
{
|
||||
tenant: "cgrates.org",
|
||||
apID: "TestACScheduledActions",
|
||||
trgTyp: utils.MetaStats,
|
||||
trgID: "ID_TEST",
|
||||
schedule: utils.EmptyString,
|
||||
ctx: context.Background(),
|
||||
data: mapStorage,
|
||||
},
|
||||
}
|
||||
var schedActs []*scheduledActs
|
||||
if schedActs, err = acts.scheduledActions("cgrates.org", cgrEv, []string{}, true); err != nil {
|
||||
t.Error(err)
|
||||
} else {
|
||||
|
||||
}
|
||||
//execute asap the actions
|
||||
schedActs[0].trgID = "invalid_type"
|
||||
if err := acts.asapExecuteActions(schedActs[0]); err == nil || err != utils.ErrPartiallyExecuted {
|
||||
t.Errorf("Expected %+v, received %+v", utils.ErrPartiallyExecuted, err)
|
||||
}
|
||||
|
||||
schedActs[0].trgID = "ID_TEST"
|
||||
schedActs[0].acts = nil
|
||||
schedActs[0].cch = nil
|
||||
if !reflect.DeepEqual(schedActs, expectedSChed) {
|
||||
t.Errorf("Expected %+v, received %+v", expectedSChed, schedActs)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
package actions
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"log"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
@@ -72,5 +75,62 @@ func TestACExecuteCDRLog(t *testing.T) {
|
||||
} else if !reflect.DeepEqual(acts, expectedActs) {
|
||||
t.Errorf("Expected %+v, received %+v", expectedActs, acts)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestACExecuteScheduledAction(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
data := engine.NewInternalDB(nil, nil, true)
|
||||
dm := engine.NewDataManager(data, cfg.CacheCfg(), nil)
|
||||
fltr := engine.NewFilterS(cfg, nil, dm)
|
||||
acts := []actioner{
|
||||
&actCDRLog{cfg, fltr, nil, &engine.APAction{
|
||||
ID: "TEST_ACTION",
|
||||
Type: utils.CDRLog,
|
||||
}},
|
||||
}
|
||||
dataStorage := utils.MapStorage{
|
||||
utils.LogLevelCfg: 7,
|
||||
}
|
||||
|
||||
schedActs := newScheduledActs(nil, "cgrates.org", "FirstAction",
|
||||
utils.EmptyString, utils.MetaTopUp, utils.MetaNow,
|
||||
dataStorage, acts)
|
||||
|
||||
var err error
|
||||
utils.Logger, err = utils.Newlogger(utils.MetaStdLog, utils.EmptyString)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
utils.Logger.SetLogLevel(7)
|
||||
|
||||
buff := new(bytes.Buffer)
|
||||
log.SetOutput(buff)
|
||||
|
||||
schedActs.ScheduledExecute()
|
||||
|
||||
expected := "CGRateS <> [WARNING] executing action: <TEST_ACTION>, error: <no connection with CDR Server>"
|
||||
if rcv := buff.String(); !strings.Contains(rcv, expected) {
|
||||
t.Errorf("Expected %+v, received %+v", expected, rcv)
|
||||
}
|
||||
buff.Reset()
|
||||
|
||||
//not a data to save
|
||||
if err := schedActs.postExec(); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestACActionTarget(t *testing.T) {
|
||||
if rcv := actionTarget(utils.MetaResetStatQueue); rcv != utils.MetaStats {
|
||||
t.Errorf("Expected %+v, received %+v", utils.MetaStats, rcv)
|
||||
}
|
||||
if rcv := actionTarget(utils.MetaResetThreshold); rcv != utils.MetaThresholds {
|
||||
t.Errorf("Expected %+v, received %+v", utils.MetaThresholds, rcv)
|
||||
}
|
||||
if rcv := actionTarget(utils.MetaAddBalance); rcv != utils.MetaAccounts {
|
||||
t.Errorf("Expected %+v, received %+v", utils.MetaAccounts, rcv)
|
||||
}
|
||||
if rcv := actionTarget("not_a_target"); rcv != utils.MetaNone {
|
||||
t.Errorf("Expected %+v, received %+v", utils.MetaNone, rcv)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user