Add infrastructure for DispatcherProfile

This commit is contained in:
TeoV
2019-01-10 09:09:10 -05:00
committed by Dan Christian Bogos
parent 79a69b5aa7
commit 473d8dbc5a
41 changed files with 1190 additions and 154 deletions

View File

@@ -294,15 +294,20 @@ cgrates.org,ALS1,con2;con3,,,Field2,Initial2,Sub2,false,,
chargerProfiles = `
#Tenant,ID,FilterIDs,ActivationInterval,RunID,AttributeIDs,Weight
cgrates.org,Charger1,*string:Account:1001,2014-07-29T15:00:00Z,*rated,ATTR_1001_SIMPLEAUTH,20
`
dispatcherProfiles = `
#Tenant,ID,FilterIDs,ActivationInterval,Strategy,Hosts,Weight
cgrates.org,D1,*string:Account:1001,2014-07-29T15:00:00Z,*first,192.168.56.203;192.168.56.204,20
`
)
var csvr *TpReader
func init() {
csvr = NewTpReader(dm.dataDB, NewStringCSVStorage(',', destinations, timings, rates, destinationRates, ratingPlans, ratingProfiles,
sharedGroups, actions, actionPlans, actionTriggers, accountActions, derivedCharges,
users, aliases, resProfiles, stats, thresholds, filters, sppProfiles, attributeProfiles, chargerProfiles), testTPID, "")
csvr = NewTpReader(dm.dataDB, NewStringCSVStorage(',', destinations, timings, rates, destinationRates,
ratingPlans, ratingProfiles, sharedGroups, actions, actionPlans, actionTriggers,
accountActions, derivedCharges, users, aliases, resProfiles, stats, thresholds,
filters, sppProfiles, attributeProfiles, chargerProfiles, dispatcherProfiles), testTPID, "")
if err := csvr.LoadDestinations(); err != nil {
log.Print("error in LoadDestinations:", err)
@@ -367,6 +372,9 @@ func init() {
if err := csvr.LoadChargerProfiles(); err != nil {
log.Print("error in LoadChargerProfiles:", err)
}
if err := csvr.LoadDispatcherProfiles(); err != nil {
log.Print("error in LoadChargerProfiles:", err)
}
csvr.WriteToDatabase(false, false, false)
Cache.Clear(nil)
//dm.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
@@ -1714,6 +1722,42 @@ func TestLoadChargerProfiles(t *testing.T) {
}
}
func TestLoadDispatcherProfiles(t *testing.T) {
eDispatcherProfiles := map[utils.TenantID]*utils.TPDispatcherProfile{
utils.TenantID{Tenant: "cgrates.org", ID: "D1"}: &utils.TPDispatcherProfile{
TPid: testTPID,
Tenant: "cgrates.org",
ID: "D1",
FilterIDs: []string{"*string:Account:1001"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-29T15:00:00Z",
},
Strategy: "*first",
Hosts: []string{"192.168.56.203", "192.168.56.204"},
Weight: 20,
},
}
revHosts := &utils.TPDispatcherProfile{
TPid: testTPID,
Tenant: "cgrates.org",
ID: "D1",
FilterIDs: []string{"*string:Account:1001"},
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-29T15:00:00Z",
},
Strategy: "*first",
Hosts: []string{"192.168.56.204", "192.168.56.203"},
Weight: 20,
}
dppKey := utils.TenantID{Tenant: "cgrates.org", ID: "D1"}
if len(csvr.dispatcherProfiles) != len(eDispatcherProfiles) {
t.Errorf("Failed to load chargerProfiles: %s", utils.ToIJSON(csvr.chargerProfiles))
} else if !reflect.DeepEqual(eDispatcherProfiles[dppKey], csvr.dispatcherProfiles[dppKey]) &&
!reflect.DeepEqual(revHosts, csvr.dispatcherProfiles[dppKey]) {
t.Errorf("Expecting: %+v, received: %+v", eDispatcherProfiles[dppKey], csvr.dispatcherProfiles[dppKey])
}
}
func TestLoadResource(t *testing.T) {
eResources := []*utils.TenantID{
&utils.TenantID{