mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
test for stats RPC methods
This commit is contained in:
@@ -465,8 +465,7 @@ func main() {
|
||||
if cfg.CDRStatsEnabled {
|
||||
cdrStats = engine.NewStats(ratingDb)
|
||||
if cfg.CDRStatConfig != nil && len(cfg.CDRStatConfig.Metrics) != 0 {
|
||||
var out int
|
||||
cdrStats.AddQueue(engine.NewCdrStatsFromCdrStatsCfg(cfg.CDRStatConfig), &out)
|
||||
cdrStats.AddQueue(engine.NewCdrStatsFromCdrStatsCfg(cfg.CDRStatConfig), nil)
|
||||
}
|
||||
server.RpcRegister(cdrStats)
|
||||
server.RpcRegister(&apier.CDRStatsV1{cdrStats}) // Public APIs
|
||||
|
||||
@@ -25,7 +25,7 @@ import (
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
func TestStatsInit(t *testing.T) {
|
||||
func TestStatsQueueInit(t *testing.T) {
|
||||
sq := NewStatsQueue(&CdrStats{Metrics: []string{ASR, ACC}})
|
||||
if len(sq.metrics) != 2 {
|
||||
t.Error("Expected 2 metrics got ", len(sq.metrics))
|
||||
@@ -180,3 +180,165 @@ func TestAcceptCdr(t *testing.T) {
|
||||
t.Error("Should have accepted thif CDR: %+v", cdr)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatsQueueIds(t *testing.T) {
|
||||
cdrStats := NewStats(dataStorage)
|
||||
ids := []string{}
|
||||
if err := cdrStats.GetQueueIds(0, &ids); err != nil {
|
||||
t.Error("Error getting queue ids: ", err)
|
||||
}
|
||||
result := len(ids)
|
||||
expected := 2
|
||||
if result != expected {
|
||||
t.Errorf("Error loading stats queues. Expected %v was %v", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatsAppendCdr(t *testing.T) {
|
||||
cdrStats := NewStats(dataStorage)
|
||||
cdr := &utils.StoredCdr{
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
AnswerTime: time.Now(),
|
||||
SetupTime: time.Now(),
|
||||
Usage: 10 * time.Second,
|
||||
Cost: 10,
|
||||
}
|
||||
err := cdrStats.AppendCDR(cdr, nil)
|
||||
if err != nil {
|
||||
t.Error("Error appending cdr to stats: ", err)
|
||||
}
|
||||
if len(cdrStats.queues["CDRST1"].cdrs) != 0 ||
|
||||
len(cdrStats.queues["CDRST2"].cdrs) != 1 {
|
||||
t.Error("Error appending cdr to queue: ", len(cdrStats.queues["CDRST2"].cdrs))
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatsGetValues(t *testing.T) {
|
||||
cdrStats := NewStats(dataStorage)
|
||||
cdr := &utils.StoredCdr{
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
AnswerTime: time.Now(),
|
||||
SetupTime: time.Now(),
|
||||
Usage: 10 * time.Second,
|
||||
Cost: 10,
|
||||
}
|
||||
cdrStats.AppendCDR(cdr, nil)
|
||||
cdr = &utils.StoredCdr{
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
AnswerTime: time.Now(),
|
||||
SetupTime: time.Now(),
|
||||
Usage: 2 * time.Second,
|
||||
Cost: 4,
|
||||
}
|
||||
cdrStats.AppendCDR(cdr, nil)
|
||||
valMap := make(map[string]float64)
|
||||
if err := cdrStats.GetValues("CDRST2", &valMap); err != nil {
|
||||
t.Error("Error getting metric values: ", err)
|
||||
}
|
||||
if len(valMap) != 2 || valMap["ACD"] != 6 || valMap["ASR"] != 100 {
|
||||
t.Error("Error on metric map: ", valMap)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatsReloadQueues(t *testing.T) {
|
||||
cdrStats := NewStats(dataStorage)
|
||||
cdr := &utils.StoredCdr{
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
AnswerTime: time.Now(),
|
||||
SetupTime: time.Now(),
|
||||
Usage: 10 * time.Second,
|
||||
Cost: 10,
|
||||
}
|
||||
cdrStats.AppendCDR(cdr, nil)
|
||||
if err := cdrStats.ReloadQueues(nil, nil); err != nil {
|
||||
t.Error("Error reloading queues: ", err)
|
||||
}
|
||||
ids := []string{}
|
||||
if err := cdrStats.GetQueueIds(0, &ids); err != nil {
|
||||
t.Error("Error getting queue ids: ", err)
|
||||
}
|
||||
result := len(ids)
|
||||
expected := 2
|
||||
if result != expected {
|
||||
t.Errorf("Error loading stats queues. Expected %v was %v", expected, result)
|
||||
}
|
||||
valMap := make(map[string]float64)
|
||||
if err := cdrStats.GetValues("CDRST2", &valMap); err != nil {
|
||||
t.Error("Error getting metric values: ", err)
|
||||
}
|
||||
if len(valMap) != 2 || valMap["ACD"] != 0 || valMap["ASR"] != 0 {
|
||||
t.Error("Error on metric map: ", valMap)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatsReloadQueuesWithDefault(t *testing.T) {
|
||||
cdrStats := NewStats(dataStorage)
|
||||
cdrStats.AddQueue(&CdrStats{
|
||||
Id: utils.META_DEFAULT,
|
||||
}, nil)
|
||||
cdr := &utils.StoredCdr{
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
AnswerTime: time.Now(),
|
||||
SetupTime: time.Now(),
|
||||
Usage: 10 * time.Second,
|
||||
Cost: 10,
|
||||
}
|
||||
cdrStats.AppendCDR(cdr, nil)
|
||||
|
||||
if err := cdrStats.ReloadQueues(nil, nil); err != nil {
|
||||
t.Error("Error reloading queues: ", err)
|
||||
}
|
||||
ids := []string{}
|
||||
if err := cdrStats.GetQueueIds(0, &ids); err != nil {
|
||||
t.Error("Error getting queue ids: ", err)
|
||||
}
|
||||
result := len(ids)
|
||||
expected := 3
|
||||
if result != expected {
|
||||
t.Errorf("Error loading stats queues. Expected %v was %v", expected, result)
|
||||
}
|
||||
valMap := make(map[string]float64)
|
||||
if err := cdrStats.GetValues("CDRST2", &valMap); err != nil {
|
||||
t.Error("Error getting metric values: ", err)
|
||||
}
|
||||
if len(valMap) != 2 || valMap["ACD"] != 0 || valMap["ASR"] != 0 {
|
||||
t.Error("Error on metric map: ", valMap)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatsResetQueues(t *testing.T) {
|
||||
cdrStats := NewStats(dataStorage)
|
||||
cdr := &utils.StoredCdr{
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
AnswerTime: time.Now(),
|
||||
SetupTime: time.Now(),
|
||||
Usage: 10 * time.Second,
|
||||
Cost: 10,
|
||||
}
|
||||
cdrStats.AppendCDR(cdr, nil)
|
||||
if err := cdrStats.ResetQueues(nil, nil); err != nil {
|
||||
t.Error("Error reloading queues: ", err)
|
||||
}
|
||||
ids := []string{}
|
||||
if err := cdrStats.GetQueueIds(0, &ids); err != nil {
|
||||
t.Error("Error getting queue ids: ", err)
|
||||
}
|
||||
result := len(ids)
|
||||
expected := 2
|
||||
if result != expected {
|
||||
t.Errorf("Error loading stats queues. Expected %v was %v", expected, result)
|
||||
}
|
||||
valMap := make(map[string]float64)
|
||||
if err := cdrStats.GetValues("CDRST2", &valMap); err != nil {
|
||||
t.Error("Error getting metric values: ", err)
|
||||
}
|
||||
if len(valMap) != 2 || valMap["ACD"] != 0 || valMap["ASR"] != 0 {
|
||||
t.Error("Error on metric map: ", valMap)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -526,7 +526,7 @@ func (ms *MapStorage) SetCdrStats(cs *CdrStats) error {
|
||||
}
|
||||
|
||||
func (ms *MapStorage) GetCdrStats(key string) (cs *CdrStats, err error) {
|
||||
if values, ok := ms.dict[key]; ok {
|
||||
if values, ok := ms.dict[CDR_STATS_PREFIX+key]; ok {
|
||||
err = ms.ms.Unmarshal(values, &cs)
|
||||
} else {
|
||||
return nil, errors.New(utils.ERR_NOT_FOUND)
|
||||
@@ -539,7 +539,7 @@ func (ms *MapStorage) GetAllCdrStats() (css []*CdrStats, err error) {
|
||||
if !strings.HasPrefix(key, CDR_STATS_PREFIX) {
|
||||
continue
|
||||
}
|
||||
var cs *CdrStats
|
||||
cs := &CdrStats{}
|
||||
err = ms.ms.Unmarshal(value, cs)
|
||||
css = append(css, cs)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user