Added more DispatcherService ThresholdSv1

This commit is contained in:
Trial97
2019-02-13 16:37:07 +02:00
committed by Dan Christian Bogos
parent 1f2fcfd4b9
commit f21cac4452
4 changed files with 87 additions and 1 deletions

View File

@@ -110,6 +110,16 @@ func (dT *DispatcherThresholdSv1) ProcessEvent(args *dispatchers.ArgsProcessEven
return dT.dS.ThresholdSv1ProcessEvent(args, tIDs)
}
func (dT *DispatcherThresholdSv1) GetThresholdIDs(args *dispatchers.TntWithApiKey,
tIDs *[]string) error {
return dT.dS.ThresholdSv1GetThresholdIDs(args, tIDs)
}
func (dT *DispatcherThresholdSv1) GetThreshold(args *dispatchers.TntIDWithApiKey,
th *engine.Threshold) error {
return dT.dS.ThresholdSv1GetThreshold(args, th)
}
func NewDispatcherStatSv1(dps *dispatchers.DispatcherService) *DispatcherStatSv1 {
return &DispatcherStatSv1{dS: dps}
}

View File

@@ -3,7 +3,7 @@ cgrates.org,ATTR_1001_SIMPLEAUTH,simpleauth,*string:Account:1001,,Password,*any,
cgrates.org,ATTR_API_ATTR_FAKE_AUTH,*auth,*string:APIKey:12345,,APIMethods,*any,,true,false,20
cgrates.org,ATTR_API_ATTR_AUTH,*auth,*string:APIKey:attr12345,,APIMethods,*any,AttributeSv1.Ping&AttributeSv1.GetAttributeForEvent&AttributeSv1.ProcessEvent,true,false,20
cgrates.org,ATTR_API_CHRG_AUTH,*auth,*string:APIKey:chrg12345,,APIMethods,*any,ChargerSv1.Ping&ChargerSv1.GetChargersForEvent&ChargerSv1.ProcessEvent,true,false,20
cgrates.org,ATTR_API_THR_AUTH,*auth,*string:APIKey:thr12345,,APIMethods,*any,ThresholdSv1.Ping&ThresholdSv1.GetThresholdsForEvent&ThresholdSv1.ProcessEvent,true,false,20
cgrates.org,ATTR_API_THR_AUTH,*auth,*string:APIKey:thr12345,,APIMethods,*any,ThresholdSv1.Ping&ThresholdSv1.GetThresholdsForEvent&ThresholdSv1.ProcessEvent&ThresholdSv1.GetThreshold&ThresholdSv1.GetThresholdIDs,true,false,20
cgrates.org,ATTR_API_SUP_AUTH,*auth,*string:APIKey:sup12345,,APIMethods,*any,SupplierSv1.Ping&SupplierSv1.GetSuppliers,true,false,20
cgrates.org,ATTR_API_STAT_AUTH,*auth,*string:APIKey:stat12345,,APIMethods,*any,StatSv1.Ping&StatSv1.GetStatQueuesForEvent&StatSv1.GetQueueStringMetrics&StatSv1.ProcessEvent,true,false,20
cgrates.org,ATTR_API_RES_AUTH,*auth,*string:APIKey:res12345,,APIMethods,*any,ResourceSv1.Ping&ResourceSv1.GetResourcesForEvent,true,false,20
1 #Tenant ID Contexts FilterIDs ActivationInterval FieldName Initial Substitute Append Blocker Weight
3 cgrates.org ATTR_API_ATTR_FAKE_AUTH *auth *string:APIKey:12345 APIMethods *any true false 20
4 cgrates.org ATTR_API_ATTR_AUTH *auth *string:APIKey:attr12345 APIMethods *any AttributeSv1.Ping&AttributeSv1.GetAttributeForEvent&AttributeSv1.ProcessEvent true false 20
5 cgrates.org ATTR_API_CHRG_AUTH *auth *string:APIKey:chrg12345 APIMethods *any ChargerSv1.Ping&ChargerSv1.GetChargersForEvent&ChargerSv1.ProcessEvent true false 20
6 cgrates.org ATTR_API_THR_AUTH *auth *string:APIKey:thr12345 APIMethods *any ThresholdSv1.Ping&ThresholdSv1.GetThresholdsForEvent&ThresholdSv1.ProcessEvent ThresholdSv1.Ping&ThresholdSv1.GetThresholdsForEvent&ThresholdSv1.ProcessEvent&ThresholdSv1.GetThreshold&ThresholdSv1.GetThresholdIDs true false 20
7 cgrates.org ATTR_API_SUP_AUTH *auth *string:APIKey:sup12345 APIMethods *any SupplierSv1.Ping&SupplierSv1.GetSuppliers true false 20
8 cgrates.org ATTR_API_STAT_AUTH *auth *string:APIKey:stat12345 APIMethods *any StatSv1.Ping&StatSv1.GetStatQueuesForEvent&StatSv1.GetQueueStringMetrics&StatSv1.ProcessEvent true false 20
9 cgrates.org ATTR_API_RES_AUTH *auth *string:APIKey:res12345 APIMethods *any ResourceSv1.Ping&ResourceSv1.GetResourcesForEvent true false 20

View File

@@ -19,6 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
package dispatchers
import (
"time"
"github.com/cgrates/cgrates/engine"
"github.com/cgrates/cgrates/utils"
)
@@ -60,3 +62,28 @@ func (dS *DispatcherService) ThresholdSv1ProcessEvent(args *ArgsProcessEventWith
return dS.Dispatch(&args.CGREvent, utils.MetaThresholds, args.RouteID,
utils.ThresholdSv1ProcessEvent, args.ArgsProcessEvent, tIDs)
}
func (dS *DispatcherService) ThresholdSv1GetThresholdIDs(args *TntWithApiKey, tIDs *[]string) (err error) {
if dS.attrS != nil {
if err = dS.authorize(utils.ThresholdSv1GetThresholdIDs,
args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil {
return
}
}
return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaThresholds, args.RouteID,
utils.ThresholdSv1GetThresholdIDs, args.TenantArg, tIDs)
}
func (dS *DispatcherService) ThresholdSv1GetThreshold(args *TntIDWithApiKey, th *engine.Threshold) (err error) {
if dS.attrS != nil {
if err = dS.authorize(utils.ThresholdSv1GetThreshold,
args.TenantID.Tenant,
args.APIKey, utils.TimePointer(time.Now())); err != nil {
return
}
}
return dS.Dispatch(&utils.CGREvent{
Tenant: args.Tenant,
ID: args.ID,
}, utils.MetaThresholds, args.RouteID, utils.ThresholdSv1GetThreshold, args.TenantID, th)
}

View File

@@ -23,6 +23,7 @@ package dispatchers
import (
"path"
"reflect"
"sort"
"testing"
"time"
@@ -37,6 +38,7 @@ var sTestsDspTh = []func(t *testing.T){
testDspThPing,
testDspThTestAuthKey,
testDspThTestAuthKey2,
testDspThTestAuthKey3,
}
//Test start here
@@ -219,3 +221,50 @@ func testDspThTestAuthKey2(t *testing.T) {
t.Errorf("expecting: %+v, received: %+v", (*eTh)[0].Hits, (*th)[0].Hits)
}
}
func testDspThTestAuthKey3(t *testing.T) {
var th *engine.Thresholds
eTh := &engine.Thresholds{
&engine.Threshold{
Tenant: "cgrates.org",
ID: "THD_ACNT_1002",
Hits: 1,
},
}
if err := dispEngine.RCP.Call(utils.ThresholdSv1GetThreshold, &TntIDWithApiKey{
TenantID: utils.TenantID{
Tenant: "cgrates.org",
ID: "THD_ACNT_1002",
},
DispatcherResource: DispatcherResource{
APIKey: "thr12345",
},
}, &th); err != nil {
t.Error(err)
} else if !reflect.DeepEqual((*eTh)[0].Tenant, (*th)[0].Tenant) {
t.Errorf("expecting: %+v, received: %+v", (*eTh)[0].Tenant, (*th)[0].Tenant)
} else if !reflect.DeepEqual((*eTh)[0].ID, (*th)[0].ID) {
t.Errorf("expecting: %+v, received: %+v", (*eTh)[0].ID, (*th)[0].ID)
} else if !reflect.DeepEqual((*eTh)[0].Hits, (*th)[0].Hits) {
t.Errorf("expecting: %+v, received: %+v", (*eTh)[0].Hits, (*th)[0].Hits)
}
var ids []string
eIDs := []string{"THD_ACNT_1002", "THD_ACNT_1002"}
nowTime := time.Now()
if err := dispEngine.RCP.Call(utils.ThresholdSv1GetThresholdIDs, &TntWithApiKey{
TenantArg: utils.TenantArg{
Tenant: "cgrates.org",
},
DispatcherResource: DispatcherResource{
APIKey: "thr12345",
},
}, &ids); err != nil {
t.Fatal(err)
}
sort.Strings(ids)
if !reflect.DeepEqual(eIDs, ids) {
t.Errorf("expecting: %+v, received: %+v", eIDs, ids)
}
}