From 1f05f6e8ae90cd48c139a3490ed9a5fbc2e65e5c Mon Sep 17 00:00:00 2001 From: DanB Date: Tue, 24 Mar 2020 19:16:31 +0100 Subject: [PATCH] Default rating subject for *mms --- config/config_defaults.go | 9 +++------ config/config_json_test.go | 12 +++++------- config/config_test.go | 9 +++------ docs/sessions.rst | 2 +- utils/coreutils.go | 5 ++++- utils/coreutils_test.go | 14 ++++++++------ 6 files changed, 24 insertions(+), 27 deletions(-) diff --git a/config/config_defaults.go b/config/config_defaults.go index c91ad0c9a..0d2e40057 100755 --- a/config/config_defaults.go +++ b/config/config_defaults.go @@ -241,16 +241,13 @@ const CGRATES_CFG_JSON = ` "*any": "189h", "*voice": "72h", "*data": "107374182400", - "*sms": "10000" + "*sms": "10000", + "*mms": "10000" }, "max_increments": 1000000, "balance_rating_subject":{ // default rating subject in case that balance rating subject is empty "*any": "*zero1ns", - "*voice": "*zero1s", - "*data": "*zero1ns", - "*sms": "*zero1ns", - "*monetary":"*zero1ns", - "*generic":"*zero1ns", + "*voice": "*zero1s" }, }, diff --git a/config/config_json_test.go b/config/config_json_test.go index 242b080f0..3541c22a1 100755 --- a/config/config_json_test.go +++ b/config/config_json_test.go @@ -495,15 +495,13 @@ func TestDfRalsJsonCfg(t *testing.T) { utils.ANY: "189h", utils.VOICE: "72h", utils.DATA: "107374182400", - utils.SMS: "10000"}, + utils.SMS: "10000", + utils.MMS: "10000", + }, Max_increments: utils.IntPointer(1000000), Balance_rating_subject: &map[string]string{ - utils.ANY: "*zero1ns", - utils.VOICE: "*zero1s", - utils.DATA: "*zero1ns", - utils.SMS: "*zero1ns", - utils.MONETARY: "*zero1ns", - utils.GENERIC: "*zero1ns", + utils.ANY: "*zero1ns", + utils.VOICE: "*zero1s", }, } if cfg, err := dfCgrJsonCfg.RalsJsonCfg(); err != nil { diff --git a/config/config_test.go b/config/config_test.go index a7241d1f9..936d7d96c 100755 --- a/config/config_test.go +++ b/config/config_test.go @@ -388,6 +388,7 @@ func TestCgrCfgJSONDefaultsRALs(t *testing.T) { utils.VOICE: time.Duration(72 * time.Hour), utils.DATA: time.Duration(107374182400), utils.SMS: time.Duration(10000), + utils.MMS: time.Duration(10000), } if !reflect.DeepEqual(eMaxCU, cgrCfg.RalsCfg().MaxComputedUsage) { t.Errorf("Expecting: %+v , received: %+v", eMaxCU, cgrCfg.RalsCfg().MaxComputedUsage) @@ -396,12 +397,8 @@ func TestCgrCfgJSONDefaultsRALs(t *testing.T) { t.Errorf("Expecting: 1000000 , received: %+v", cgrCfg.RalsCfg().MaxIncrements) } eBalRatingSbj := map[string]string{ - utils.ANY: "*zero1ns", - utils.VOICE: "*zero1s", - utils.DATA: "*zero1ns", - utils.SMS: "*zero1ns", - utils.MONETARY: "*zero1ns", - utils.GENERIC: "*zero1ns", + utils.ANY: "*zero1ns", + utils.VOICE: "*zero1s", } if !reflect.DeepEqual(eBalRatingSbj, cgrCfg.RalsCfg().BalanceRatingSubject) { t.Errorf("Expecting: %+v , received: %+v", eBalRatingSbj, cgrCfg.RalsCfg().BalanceRatingSubject) diff --git a/docs/sessions.rst b/docs/sessions.rst index 0cda18dfb..44ed0d774 100644 --- a/docs/sessions.rst +++ b/docs/sessions.rst @@ -338,7 +338,7 @@ Instead of arguments, the options for enabling various functionaity will come in **\*update** Update a sesssion (or initialize + update) out of event. - **\*terminate + **\*terminate** Terminate a session (or initialize + terminate) out of event. \*suppliers diff --git a/utils/coreutils.go b/utils/coreutils.go index 70a01786b..037adbd13 100644 --- a/utils/coreutils.go +++ b/utils/coreutils.go @@ -337,7 +337,10 @@ func MinDuration(d1, d2 time.Duration) time.Duration { func ParseZeroRatingSubject(tor, rateSubj string, defaultRateSubj map[string]string) (time.Duration, error) { rateSubj = strings.TrimSpace(rateSubj) if rateSubj == "" || rateSubj == ANY { - rateSubj = defaultRateSubj[tor] + var hasToR bool + if rateSubj, hasToR = defaultRateSubj[tor]; !hasToR { + rateSubj = defaultRateSubj[META_ANY] + } } if !strings.HasPrefix(rateSubj, ZERO_RATING_SUBJECT_PREFIX) { return 0, errors.New("malformed rating subject: " + rateSubj) diff --git a/utils/coreutils_test.go b/utils/coreutils_test.go index 103db5249..811418133 100644 --- a/utils/coreutils_test.go +++ b/utils/coreutils_test.go @@ -578,12 +578,8 @@ func TestParseZeroRatingSubject(t *testing.T) { dur := []time.Duration{time.Second, time.Duration(1024), time.Second, 5 * time.Minute, 10 * time.Hour} dfltRatingSubject := map[string]string{ - ANY: "*zero1ns", - VOICE: "*zero1s", - DATA: "*zero1ns", - SMS: "*zero1ns", - MONETARY: "*zero1ns", - GENERIC: "*zero1ns", + ANY: "*zero1ns", + VOICE: "*zero1s", } for i, s := range subj { if d, err := ParseZeroRatingSubject(VOICE, s, dfltRatingSubject); err != nil || d != dur[i] { @@ -593,6 +589,12 @@ func TestParseZeroRatingSubject(t *testing.T) { if d, err := ParseZeroRatingSubject(DATA, EmptyString, dfltRatingSubject); err != nil || d != time.Nanosecond { t.Error("Error parsing rating subject: ", EmptyString, d, err) } + if d, err := ParseZeroRatingSubject(SMS, EmptyString, dfltRatingSubject); err != nil || d != time.Nanosecond { + t.Error("Error parsing rating subject: ", EmptyString, d, err) + } + if d, err := ParseZeroRatingSubject(MMS, EmptyString, dfltRatingSubject); err != nil || d != time.Nanosecond { + t.Error("Error parsing rating subject: ", EmptyString, d, err) + } if d, err := ParseZeroRatingSubject(MONETARY, EmptyString, dfltRatingSubject); err != nil || d != time.Nanosecond { t.Error("Error parsing rating subject: ", EmptyString, d, err) }