mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
coverage tests in engine
This commit is contained in:
committed by
Dan Christian Bogos
parent
3e6774a263
commit
5c7a5a9e9c
@@ -1010,6 +1010,75 @@ func TestAttributesParseAttributeSIPCID(t *testing.T) {
|
||||
} else if _, err = ParseAttribute(dp, utils.MetaUsageDifference, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to;~*req.from", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{}, utils.MetaSum, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to;~*req.from", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{}, utils.MetaDifference, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to;~*req.from", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{}, utils.MetaMultiply, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to;~*req.from", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{}, utils.MetaDivide, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to;~*req.from", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{}, utils.MetaUnixTimestamp, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to;~*req.from", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{}, utils.MetaDateTime, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to;~*req.from", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{}, utils.MetaPrefix, "`val", config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to;~*req.from", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{}, utils.MetaSuffix, "`val", config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to;~*req.from", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{}, utils.MetaCCUsage, "`val", config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to;~*req.from", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{}, "default", utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to;~*req.from", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{}, "default", utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{utils.MetaReq: utils.MapStorage{"cid": "12345"}}, utils.MetaUsageDifference, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra", utils.InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{utils.MetaReq: utils.MapStorage{"cid": "12345", "extra": "1003"}}, utils.MetaUsageDifference, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{utils.MetaReq: utils.MapStorage{"cid": "0", "extra": "1003"}}, utils.MetaUsageDifference, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{utils.MetaReq: utils.MapStorage{}}, utils.MetaUsageDifference, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{utils.MetaReq: utils.MapStorage{"extra": "1003", "to": "1001"}}, utils.MetaCCUsage, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{utils.MetaReq: utils.MapStorage{"cid": "val", "extra": "1003", "to": "1001"}}, utils.MetaCCUsage, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{utils.MetaReq: utils.MapStorage{"cid": "12233", "to": "1001"}}, utils.MetaCCUsage, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{utils.MetaReq: utils.MapStorage{"cid": "12232", "extra": "val", "to": "1001"}}, utils.MetaCCUsage, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{utils.MetaReq: utils.MapStorage{"cid": "12233", "extra": "1001"}}, utils.MetaCCUsage, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if _, err = ParseAttribute(utils.MapStorage{utils.MetaReq: utils.MapStorage{"cid": "12232", "extra": "1001", "to": "val"}}, utils.MetaCCUsage, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err == nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
}
|
||||
expDur := 100000 * time.Nanosecond
|
||||
if val, err := ParseAttribute(utils.MapStorage{utils.MetaReq: utils.MapStorage{"cid": "1000", "extra": "100", "to": "100"}}, utils.MetaCCUsage, utils.EmptyString, config.NewRSRParsersMustCompile("~*req.cid;~*req.extra;~*req.to", utils.
|
||||
InfieldSep), 0, utils.EmptyString, utils.EmptyString, utils.InfieldSep); err != nil {
|
||||
t.Errorf("received <%+v>", err)
|
||||
} else if val != expDur {
|
||||
t.Errorf("expected %v,received %v", expDur, val)
|
||||
}
|
||||
}
|
||||
func TestAttributesParseAttributeSIPCIDWrongPathErr(t *testing.T) {
|
||||
@@ -1148,6 +1217,10 @@ func TestAttributesV1ProcessEventMultipleRuns1(t *testing.T) {
|
||||
t.Errorf("expected: <%+v>, \nreceived: <%+v>", utils.ToJSON(exp), utils.ToJSON(reply))
|
||||
}
|
||||
}
|
||||
|
||||
if err := alS.V1ProcessEvent(nil, reply); err == nil {
|
||||
t.Error("expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAttributesV1ProcessEventMultipleRuns2(t *testing.T) {
|
||||
|
||||
@@ -1931,8 +1931,29 @@ func TestCallDescriptorUpdateFromCGREvent(t *testing.T) {
|
||||
t.Error(err)
|
||||
} else if err = cd.UpdateFromCGREvent(cgrEv, []string{utils.Subject}); err == nil {
|
||||
t.Error(err)
|
||||
} else if err = cd.UpdateFromCGREvent(cgrEv, []string{"Extra"}); err == nil {
|
||||
t.Error(err)
|
||||
}
|
||||
cgrEv = &utils.CGREvent{
|
||||
Event: map[string]interface{}{
|
||||
"Extra": "Value",
|
||||
},
|
||||
}
|
||||
cd = &CallDescriptor{
|
||||
ExtraFields: map[string]string{
|
||||
"Extra": "Value",
|
||||
},
|
||||
}
|
||||
cdExpected = &CallDescriptor{
|
||||
ExtraFields: map[string]string{
|
||||
"Extra": "Value",
|
||||
},
|
||||
}
|
||||
if err = cd.UpdateFromCGREvent(cgrEv, []string{"Extra"}); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(cd, cdExpected) {
|
||||
t.Errorf("expected %v ,received %v", utils.ToJSON(cd), utils.ToJSON(cdExpected))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestCallDescriptorAsCGREvent(t *testing.T) {
|
||||
@@ -2523,5 +2544,4 @@ func TestValidateCallData(t *testing.T) {
|
||||
if err = cd.ValidateCallData(); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -124,4 +124,17 @@ func TestTaskFieldAsString(t *testing.T) {
|
||||
if !reflect.DeepEqual(eOut, rcv) {
|
||||
t.Errorf("Expecting: %q, received: %q", eOut, rcv)
|
||||
}
|
||||
if _, err = task.FieldAsString([]string{"default"}); err == nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTaskExecute(t *testing.T) {
|
||||
|
||||
task := &Task{
|
||||
AccountID: "accID",
|
||||
}
|
||||
if err := task.Execute(&FilterS{}); err == nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1969,6 +1969,14 @@ func TestMerge(t *testing.T) {
|
||||
} else if !tss1.Equal(eMergedTSS) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eMergedTSS, tss1)
|
||||
}
|
||||
tss1.TimeEnd = time.Date(2015, 1, 9, 16, 20, 0, 0, time.UTC)
|
||||
if merged := tss1.Merge(tss2); merged {
|
||||
t.Error("expected false")
|
||||
}
|
||||
tss1.MatchedSubject = "match_subj1"
|
||||
if merged := tss1.Merge(tss2); merged {
|
||||
t.Error("expected false")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIncrementClone(t *testing.T) {
|
||||
@@ -1993,3 +2001,163 @@ func TestIncrementClone(t *testing.T) {
|
||||
t.Errorf("Expecting %+v, received: %+v", utils.ToJSON(eOut), utils.ToJSON(clone))
|
||||
}
|
||||
}
|
||||
|
||||
func TestTimeSpansMerge(t *testing.T) {
|
||||
|
||||
tss := &TimeSpans{
|
||||
{
|
||||
CompressFactor: 4,
|
||||
DurationIndex: 1 * time.Hour,
|
||||
Cost: 12,
|
||||
TimeStart: time.Date(2022, 12, 1, 18, 0, 0, 0, time.UTC),
|
||||
TimeEnd: time.Date(2022, 12, 1, 19, 0, 0, 0, time.UTC),
|
||||
Increments: Increments{
|
||||
&Increment{
|
||||
Duration: 2 * time.Minute,
|
||||
Cost: 23.22,
|
||||
},
|
||||
{
|
||||
Duration: 5 * time.Minute,
|
||||
Cost: 12.32,
|
||||
},
|
||||
},
|
||||
RateInterval: &RateInterval{
|
||||
Timing: &RITiming{
|
||||
ID: "id",
|
||||
Years: utils.Years{2, 1, 3},
|
||||
},
|
||||
Rating: &RIRate{
|
||||
ConnectFee: 12.11,
|
||||
RoundingMethod: "method",
|
||||
RoundingDecimals: 13,
|
||||
MaxCost: 494,
|
||||
},
|
||||
Weight: 2.3,
|
||||
},
|
||||
MatchedSubject: "subject",
|
||||
MatchedPrefix: "match_prefix",
|
||||
MatchedDestId: "dest_id",
|
||||
RatingPlanId: "rate_id",
|
||||
},
|
||||
{
|
||||
CompressFactor: 4,
|
||||
DurationIndex: 1 * time.Hour,
|
||||
Cost: 12,
|
||||
TimeStart: time.Date(2022, 12, 1, 19, 0, 0, 0, time.UTC),
|
||||
TimeEnd: time.Date(2022, 12, 1, 20, 0, 0, 0, time.UTC),
|
||||
Increments: Increments{
|
||||
&Increment{
|
||||
Duration: 2 * time.Minute,
|
||||
Cost: 23.22,
|
||||
},
|
||||
{
|
||||
Duration: 5 * time.Minute,
|
||||
Cost: 12.32,
|
||||
},
|
||||
},
|
||||
RateInterval: &RateInterval{
|
||||
Timing: &RITiming{
|
||||
ID: "id",
|
||||
Years: utils.Years{2, 1, 3},
|
||||
},
|
||||
Rating: &RIRate{
|
||||
ConnectFee: 12.11,
|
||||
RoundingMethod: "method",
|
||||
RoundingDecimals: 13,
|
||||
MaxCost: 494,
|
||||
},
|
||||
Weight: 2.3,
|
||||
},
|
||||
MatchedSubject: "subject",
|
||||
MatchedPrefix: "match_prefix",
|
||||
MatchedDestId: "dest_id",
|
||||
RatingPlanId: "rate_id",
|
||||
}, {
|
||||
Cost: 11,
|
||||
DurationIndex: 1 * time.Hour,
|
||||
CompressFactor: 4,
|
||||
TimeStart: time.Date(2022, 12, 1, 20, 0, 0, 0, time.UTC),
|
||||
TimeEnd: time.Date(2022, 12, 1, 21, 0, 0, 0, time.UTC),
|
||||
Increments: Increments{
|
||||
&Increment{
|
||||
Duration: 2 * time.Minute,
|
||||
Cost: 23.22,
|
||||
},
|
||||
{
|
||||
Duration: 5 * time.Minute,
|
||||
Cost: 12.32,
|
||||
},
|
||||
},
|
||||
RateInterval: &RateInterval{
|
||||
Timing: &RITiming{
|
||||
ID: "id",
|
||||
Years: utils.Years{2, 1, 3},
|
||||
},
|
||||
Rating: &RIRate{
|
||||
ConnectFee: 12.11,
|
||||
RoundingMethod: "method",
|
||||
RoundingDecimals: 13,
|
||||
MaxCost: 494,
|
||||
},
|
||||
Weight: 2.3,
|
||||
},
|
||||
MatchedSubject: "subject",
|
||||
MatchedPrefix: "match_prefix",
|
||||
MatchedDestId: "dest_id",
|
||||
RatingPlanId: "rate_id",
|
||||
},
|
||||
}
|
||||
expMerge := &TimeSpans{{
|
||||
CompressFactor: 4,
|
||||
DurationIndex: 1 * time.Hour,
|
||||
Cost: 35,
|
||||
TimeStart: time.Date(2022, 12, 1, 18, 0, 0, 0, time.UTC),
|
||||
TimeEnd: time.Date(2022, 12, 1, 21, 0, 0, 0, time.UTC),
|
||||
Increments: Increments{
|
||||
{
|
||||
Duration: 2 * time.Minute,
|
||||
Cost: 23.22,
|
||||
},
|
||||
{
|
||||
Duration: 5 * time.Minute,
|
||||
Cost: 12.32,
|
||||
},
|
||||
{
|
||||
Duration: 2 * time.Minute,
|
||||
Cost: 23.22,
|
||||
},
|
||||
{
|
||||
Duration: 5 * time.Minute,
|
||||
Cost: 12.32,
|
||||
},
|
||||
{
|
||||
Duration: 2 * time.Minute,
|
||||
Cost: 23.22,
|
||||
},
|
||||
{
|
||||
Duration: 5 * time.Minute,
|
||||
Cost: 12.32,
|
||||
},
|
||||
},
|
||||
RateInterval: &RateInterval{
|
||||
Timing: &RITiming{
|
||||
ID: "id",
|
||||
Years: utils.Years{2, 1, 3},
|
||||
},
|
||||
Rating: &RIRate{
|
||||
ConnectFee: 12.11,
|
||||
RoundingMethod: "method",
|
||||
RoundingDecimals: 13,
|
||||
MaxCost: 494,
|
||||
},
|
||||
Weight: 2.3,
|
||||
},
|
||||
MatchedSubject: "subject",
|
||||
MatchedPrefix: "match_prefix",
|
||||
MatchedDestId: "dest_id",
|
||||
RatingPlanId: "rate_id",
|
||||
}}
|
||||
if tss.Merge(); !reflect.DeepEqual(tss, expMerge) {
|
||||
t.Errorf("expected %v ,recived %v", utils.ToJSON(expMerge), utils.ToJSON(tss))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user