Moving *rateSCost and *accountSCost in APIOpts

This commit is contained in:
andronache98
2022-02-14 14:56:28 +02:00
committed by Dan Christian Bogos
parent dcdd696932
commit c79d0cb4bd
5 changed files with 58 additions and 54 deletions

View File

@@ -126,7 +126,7 @@ func (cdrS *CDRServer) rateSCostForEvent(ctx *context.Context, cgrEv *utils.CGRE
cgrEv, &rpCost); err != nil {
return
}
cgrEv.Event[utils.MetaRateSCost] = rpCost
cgrEv.APIOpts[utils.MetaRateSCost] = rpCost
return
}
@@ -137,7 +137,7 @@ func (cdrS *CDRServer) accountSDebitEvent(ctx *context.Context, cgrEv *utils.CGR
utils.AccountSv1DebitAbstracts, cgrEv, acntCost); err != nil {
return
}
cgrEv.Event[utils.MetaAccountSCost] = acntCost
cgrEv.APIOpts[utils.MetaAccountSCost] = acntCost
return
}
@@ -258,7 +258,7 @@ func (cdrS *CDRServer) processEvent(ctx *context.Context, ev *utils.CGREvent) (e
return
}
if acntS {
if ecCostIface, wasCharged := cgrEv.Event[utils.MetaAccountSCost]; wasCharged {
if ecCostIface, wasCharged := cgrEv.APIOpts[utils.MetaAccountSCost]; wasCharged {
// before converting into EventChargers, we must get the JSON encoding and Unmarshal it into an EventChargers
var btsEvCh []byte
btsEvCh, err = json.Marshal(ecCostIface.(map[string]interface{}))

View File

@@ -711,17 +711,18 @@ func TestCDRsRateProcessEventMock(t *testing.T) {
Tenant: "cgrates.org",
ID: "testID",
Event: map[string]interface{}{
utils.MetaRateSCost: utils.RateProfileCost{},
"Resources": "ResourceProfile1",
utils.AnswerTime: time.Date(2014, 7, 14, 14, 30, 0, 0, time.UTC),
"UsageInterval": "1s",
"PddInterval": "1s",
utils.Weight: "20.0",
utils.Usage: 135 * time.Second,
utils.Cost: 123.0,
"Resources": "ResourceProfile1",
utils.AnswerTime: time.Date(2014, 7, 14, 14, 30, 0, 0, time.UTC),
"UsageInterval": "1s",
"PddInterval": "1s",
utils.Weight: "20.0",
utils.Usage: 135 * time.Second,
utils.Cost: 123.0,
},
APIOpts: map[string]interface{}{
utils.Subsys: utils.MetaRateS,
utils.MetaRateSCost: utils.RateProfileCost{},
utils.Subsys: utils.MetaRateS,
},
}
if !reflect.DeepEqual(expected, cgrEv) {
@@ -768,17 +769,18 @@ func TestCDRsAccountProcessEventMock(t *testing.T) {
Tenant: "cgrates.org",
ID: "testID",
Event: map[string]interface{}{
utils.MetaAccountSCost: &utils.EventCharges{},
"Resources": "ResourceProfile1",
utils.AnswerTime: time.Date(2014, 7, 14, 14, 30, 0, 0, time.UTC),
"UsageInterval": "1s",
"PddInterval": "1s",
utils.Weight: "20.0",
utils.Usage: 135 * time.Second,
utils.Cost: 123.0,
"Resources": "ResourceProfile1",
utils.AnswerTime: time.Date(2014, 7, 14, 14, 30, 0, 0, time.UTC),
"UsageInterval": "1s",
"PddInterval": "1s",
utils.Weight: "20.0",
utils.Usage: 135 * time.Second,
utils.Cost: 123.0,
},
APIOpts: map[string]interface{}{
utils.Subsys: utils.MetaAccounts,
utils.MetaAccountSCost: &utils.EventCharges{},
utils.Subsys: utils.MetaAccounts,
},
}
err := newCDRSrv.accountSDebitEvent(context.Background(), cgrEv)
@@ -789,17 +791,18 @@ func TestCDRsAccountProcessEventMock(t *testing.T) {
Tenant: "cgrates.org",
ID: "testID",
Event: map[string]interface{}{
utils.MetaAccountSCost: cgrEv.Event[utils.MetaAccountSCost],
"Resources": "ResourceProfile1",
utils.AnswerTime: time.Date(2014, 7, 14, 14, 30, 0, 0, time.UTC),
"UsageInterval": "1s",
"PddInterval": "1s",
utils.Weight: "20.0",
utils.Usage: 135 * time.Second,
utils.Cost: 123.0,
"Resources": "ResourceProfile1",
utils.AnswerTime: time.Date(2014, 7, 14, 14, 30, 0, 0, time.UTC),
"UsageInterval": "1s",
"PddInterval": "1s",
utils.Weight: "20.0",
utils.Usage: 135 * time.Second,
utils.Cost: 123.0,
},
APIOpts: map[string]interface{}{
utils.Subsys: utils.MetaAccounts,
utils.MetaAccountSCost: cgrEv.APIOpts[utils.MetaAccountSCost],
utils.Subsys: utils.MetaAccounts,
},
}
if !reflect.DeepEqual(expected, cgrEv) {

View File

@@ -186,6 +186,16 @@ func testLdPrMatchAcCDRSProcessEvent(t *testing.T) {
Tenant: "cgrates.org",
ID: "TestEv1",
Event: map[string]interface{}{
"Account": "1001",
"Destination": "1002",
"OriginID": "TestEv1",
"RequestType": "*prepaid",
"Subject": "1001",
"ToR": "*voice",
},
APIOpts: map[string]interface{}{
utils.MetaAccountSCost: map[string]interface{}{
"Abstracts": 0,
"Accounting": map[string]interface{}{},
@@ -224,15 +234,6 @@ func testLdPrMatchAcCDRSProcessEvent(t *testing.T) {
"Rating": map[string]interface{}{},
"UnitFactors": map[string]interface{}{},
},
"Account": "1001",
"Destination": "1002",
"OriginID": "TestEv1",
"RequestType": "*prepaid",
"Subject": "1001",
"ToR": "*voice",
},
APIOpts: map[string]interface{}{
utils.MetaUsage: 2 * time.Minute,
utils.OptsCDRsExport: true,
utils.OptsRateS: false,

View File

@@ -179,14 +179,23 @@ func testLdPrMatchRtCDRSProcessEvent(t *testing.T) {
if testRPCrt1.Event == nil {
t.Fatal("The rpc was not called")
}
costIntervalRatesID := testRPCrt1.Event.Event["*rateSCost"].(map[string]interface{})["CostIntervals"].([]interface{})[0].(map[string]interface{})["Increments"].([]interface{})[0].(map[string]interface{})["RateID"]
costIntervalRatesID := testRPCrt1.Event.APIOpts[utils.MetaRateSCost].(map[string]interface{})["CostIntervals"].([]interface{})[0].(map[string]interface{})["Increments"].([]interface{})[0].(map[string]interface{})["RateID"]
expected2 := &utils.CGREventWithEeIDs{
EeIDs: nil,
CGREvent: &utils.CGREvent{
Tenant: "cgrates.org",
ID: "TestEv1",
Event: map[string]interface{}{
"*rateSCost": map[string]interface{}{
"Account": "1001",
"Destination": "1002",
"OriginID": "TestEv1",
"RequestType": "*prepaid",
"Subject": "1001",
"ToR": "*voice",
"Usage": 60000000000,
},
APIOpts: map[string]interface{}{
utils.MetaRateSCost: map[string]interface{}{
"Altered": nil,
utils.Cost: 0.4,
"CostIntervals": []map[string]interface{}{
@@ -216,15 +225,6 @@ func testLdPrMatchRtCDRSProcessEvent(t *testing.T) {
},
},
},
"Account": "1001",
"Destination": "1002",
"OriginID": "TestEv1",
"RequestType": "*prepaid",
"Subject": "1001",
"ToR": "*voice",
"Usage": 60000000000,
},
APIOpts: map[string]interface{}{
utils.OptsRateS: true,
utils.OptsCDRsExport: true,
utils.OptsAccountS: false,

View File

@@ -1147,6 +1147,8 @@ func TestCDRProcessRatesCostForEvent(t *testing.T) {
ID: "TestCDRProcessRatesCostForEvent",
Event: map[string]interface{}{
utils.AccountField: "1001",
},
APIOpts: map[string]interface{}{
utils.MetaRateSCost: utils.RateProfileCost{
ID: "TEST_RATE_PROCESS_CDR",
Cost: utils.NewDecimal(int64(15*time.Second)/10, 0),
@@ -1155,7 +1157,7 @@ func TestCDRProcessRatesCostForEvent(t *testing.T) {
Increments: []*utils.RateSIncrementCost{
{
Usage: utils.NewDecimal(int64(15*time.Second), 0),
RateID: cgrEv.Event[utils.MetaRateSCost].(utils.RateProfileCost).CostIntervals[0].Increments[0].RateID,
RateID: cgrEv.APIOpts[utils.MetaRateSCost].(utils.RateProfileCost).CostIntervals[0].Increments[0].RateID,
RateIntervalIndex: 0,
CompressFactor: 150,
},
@@ -1164,7 +1166,7 @@ func TestCDRProcessRatesCostForEvent(t *testing.T) {
},
},
Rates: map[string]*utils.IntervalRate{
cgrEv.Event[utils.MetaRateSCost].(utils.RateProfileCost).CostIntervals[0].Increments[0].RateID: {
cgrEv.APIOpts[utils.MetaRateSCost].(utils.RateProfileCost).CostIntervals[0].Increments[0].RateID: {
IntervalStart: utils.NewDecimal(0, 0),
RecurrentFee: utils.NewDecimal(1, 1),
Unit: utils.NewDecimal(1, 0),
@@ -1172,8 +1174,6 @@ func TestCDRProcessRatesCostForEvent(t *testing.T) {
},
},
},
},
APIOpts: map[string]interface{}{
utils.MetaUsage: 15 * time.Second,
},
}