Fix stats_it_test.go and modify Metrics

This commit is contained in:
TeoV
2017-09-26 17:11:40 +03:00
committed by Dan Christian Bogos
parent 6b390c0d85
commit d71942404f
6 changed files with 51 additions and 47 deletions

View File

@@ -20,6 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
package v1
import (
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/engine"
"github.com/cgrates/cgrates/utils"
"math/rand"
"net/rpc"
"net/rpc/jsonrpc"
@@ -27,10 +30,6 @@ import (
"reflect"
"testing"
"time"
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/engine"
"github.com/cgrates/cgrates/utils"
)
var (
@@ -47,12 +46,14 @@ var evs = []*engine.StatEvent{
Tenant: "cgrates.org",
ID: "event1",
Fields: map[string]interface{}{
utils.ANSWER_TIME: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC).Local()}},
utils.ANSWER_TIME: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC).Local(),
}},
&engine.StatEvent{
Tenant: "cgrates.org",
ID: "event2",
Fields: map[string]interface{}{
utils.ANSWER_TIME: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC).Local()}},
utils.ANSWER_TIME: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC).Local(),
}},
&engine.StatEvent{
Tenant: "cgrates.org",
ID: "event3",
@@ -151,9 +152,12 @@ func testV1STSGetStats(t *testing.T) {
expectedMetrics := map[string]string{
utils.MetaASR: utils.NOT_AVAILABLE,
utils.MetaACD: utils.NOT_AVAILABLE,
utils.MetaTCC: utils.NOT_AVAILABLE,
utils.MetaTCD: utils.NOT_AVAILABLE,
utils.MetaACC: utils.NOT_AVAILABLE,
}
if err := stsV1Rpc.Call("StatSV1.GetQueueStringMetrics",
&utils.TenantID{"cgrates.org", expectedIDs[0]}, &metrics); err != nil {
&utils.TenantID{Tenant: "cgrates.org", ID: expectedIDs[0]}, &metrics); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(expectedMetrics, metrics) {
t.Errorf("expecting: %+v, received reply: %s", expectedMetrics, metrics)
@@ -162,51 +166,52 @@ func testV1STSGetStats(t *testing.T) {
func testV1STSProcessEvent(t *testing.T) {
var reply string
if err := stsV1Rpc.Call("StatSV1.ProcessEvent",
engine.StatEvent{
Tenant: "cgrates.org",
ID: "event1",
Fields: map[string]interface{}{
utils.ACCOUNT: "1001",
utils.ANSWER_TIME: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
utils.USAGE: time.Duration(125 * time.Second)}},
&reply); err != nil {
ev1 := engine.StatEvent{
Tenant: "cgrates.org",
ID: "event1",
Fields: map[string]interface{}{
utils.ACCOUNT: "1001",
utils.ANSWER_TIME: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
utils.USAGE: time.Duration(135 * time.Second),
utils.COST: 123.0}}
if err := stsV1Rpc.Call("StatSV1.ProcessEvent", &ev1, &reply); err != nil {
t.Error(err)
} else if reply != utils.OK {
t.Errorf("received reply: %s", reply)
}
if err := stsV1Rpc.Call("StatSV1.ProcessEvent",
engine.StatEvent{
Tenant: "cgrates.org",
ID: "event2",
Fields: map[string]interface{}{
utils.ACCOUNT: "1002",
utils.ANSWER_TIME: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
utils.USAGE: time.Duration(45 * time.Second)}},
&reply); err != nil {
ev2 := engine.StatEvent{
Tenant: "cgrates.org",
ID: "event2",
Fields: map[string]interface{}{
utils.ACCOUNT: "1002",
utils.ANSWER_TIME: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
utils.USAGE: time.Duration(45 * time.Second)}}
if err := stsV1Rpc.Call("StatSV1.ProcessEvent", &ev2, &reply); err != nil {
t.Error(err)
} else if reply != utils.OK {
t.Errorf("received reply: %s", reply)
}
if err := stsV1Rpc.Call("StatSV1.ProcessEvent",
engine.StatEvent{
Tenant: "cgrates.org",
ID: "event3",
Fields: map[string]interface{}{
utils.ACCOUNT: "1002",
utils.SETUP_TIME: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
utils.USAGE: 0}},
&reply); err != nil {
ev3 := engine.StatEvent{
Tenant: "cgrates.org",
ID: "event3",
Fields: map[string]interface{}{
utils.ACCOUNT: "1002",
utils.SETUP_TIME: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
utils.USAGE: 0}}
if err := stsV1Rpc.Call("StatSV1.ProcessEvent", &ev3, &reply); err != nil {
t.Error(err)
} else if reply != utils.OK {
t.Errorf("received reply: %s", reply)
}
expectedMetrics := map[string]string{
utils.MetaASR: "66.66667%",
utils.MetaACD: "0s",
utils.MetaACD: "1m30s",
utils.MetaACC: "61.5",
utils.MetaTCD: "3m0s",
utils.MetaTCC: "123",
}
var metrics map[string]string
if err := stsV1Rpc.Call("StatSV1.GetQueueStringMetrics", &utils.TenantID{"cgrates.org", "STATS_1"}, &metrics); err != nil {
if err := stsV1Rpc.Call("StatSV1.GetQueueStringMetrics", &utils.TenantID{Tenant: "cgrates.org", ID: "STATS_1"}, &metrics); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(expectedMetrics, metrics) {
t.Errorf("expecting: %+v, received reply: %s", expectedMetrics, metrics)

View File

@@ -1,2 +1,2 @@
#Tenant[0],Id[1],FilterType[2],FilterFieldName[3],FilterFieldValues[4],ActivationInterval[5],QueueLength[6],TTL[7],Metrics[8],Blocker[9],Stored[10],Weight[11],Thresholds[12]
cgrates.org,Stats1,*string,Account,1001;1002,2014-07-29T15:00:00Z,100,1s,*asr;*acd;*acc,true,true,20,THRESH1;THRESH2
cgrates.org,Stats1,*string,Account,1001;1002,2014-07-29T15:00:00Z,100,1s,*asr;*acd;*acc;*tcd;*tcc,true,true,20,THRESH1;THRESH2
1 #Tenant[0] Id[1] FilterType[2] FilterFieldName[3] FilterFieldValues[4] ActivationInterval[5] QueueLength[6] TTL[7] Metrics[8] Blocker[9] Stored[10] Weight[11] Thresholds[12]
2 cgrates.org Stats1 *string Account 1001;1002 2014-07-29T15:00:00Z 100 1s *asr;*acd;*acc *asr;*acd;*acc;*tcd;*tcc true true 20 THRESH1;THRESH2

View File

@@ -1,2 +1,2 @@
#Tenant[0],Id[1],FilterType[2],FilterFieldName[3],FilterFieldValues[4],ActivationInterval[5],QueueLength[6],TTL[7],Metrics[8],Blocker[9],Stored[10],Weight[11],Thresholds[12]
cgrates.org,STATS_1,*string,Account,1001;1002,2014-07-29T15:00:00Z,100,1s,*asr;*acd,true,true,20,THRESH1;THRESH2
cgrates.org,STATS_1,*string,Account,1001;1002,2014-07-29T15:00:00Z,100,1s,*asr;*acc;*tcc;*acd;*tcd,true,true,20,THRESH1;THRESH2
1 #Tenant[0] Id[1] FilterType[2] FilterFieldName[3] FilterFieldValues[4] ActivationInterval[5] QueueLength[6] TTL[7] Metrics[8] Blocker[9] Stored[10] Weight[11] Thresholds[12]
2 cgrates.org STATS_1 *string Account 1001;1002 2014-07-29T15:00:00Z 100 1s *asr;*acd *asr;*acc;*tcc;*acd;*tcd true true 20 THRESH1;THRESH2

View File

@@ -80,6 +80,9 @@ func (se StatEvent) Usage(timezone string) (at time.Duration, err error) {
if !has {
return at, utils.ErrNotFound
}
if us, canCast := usIf.(float64); canCast {
return time.Duration(int64(us)), nil
}
if us, canCast := usIf.(time.Duration); canCast {
return us, nil
}

View File

@@ -181,8 +181,7 @@ func (acd *StatACD) GetFloat64Value() (v float64) {
func (acd *StatACD) AddEvent(ev *StatEvent) (err error) {
var value time.Duration
if at, err := ev.AnswerTime(config.CgrConfig().DefaultTimezone); err != nil &&
err != utils.ErrNotFound {
if at, err := ev.AnswerTime(config.CgrConfig().DefaultTimezone); err != nil {
return err
} else if !at.IsZero() {
if duration, err := ev.Usage(config.CgrConfig().DefaultTimezone); err != nil &&
@@ -264,8 +263,7 @@ func (tcd *StatTCD) GetFloat64Value() (v float64) {
func (tcd *StatTCD) AddEvent(ev *StatEvent) (err error) {
var value time.Duration
if at, err := ev.AnswerTime(config.CgrConfig().DefaultTimezone); err != nil &&
err != utils.ErrNotFound {
if at, err := ev.AnswerTime(config.CgrConfig().DefaultTimezone); err != nil {
return err
} else if !at.IsZero() {
if duration, err := ev.Usage(config.CgrConfig().DefaultTimezone); err != nil &&
@@ -348,8 +346,7 @@ func (acc *StatACC) GetFloat64Value() (v float64) {
func (acc *StatACC) AddEvent(ev *StatEvent) (err error) {
var value float64
if at, err := ev.AnswerTime(config.CgrConfig().DefaultTimezone); err != nil &&
err != utils.ErrNotFound {
if at, err := ev.AnswerTime(config.CgrConfig().DefaultTimezone); err != nil {
return err
} else if !at.IsZero() {
if cost, err := ev.Cost(config.CgrConfig().DefaultTimezone); err != nil &&
@@ -430,8 +427,7 @@ func (tcc *StatTCC) GetFloat64Value() (v float64) {
func (tcc *StatTCC) AddEvent(ev *StatEvent) (err error) {
var value float64
if at, err := ev.AnswerTime(config.CgrConfig().DefaultTimezone); err != nil &&
err != utils.ErrNotFound {
if at, err := ev.AnswerTime(config.CgrConfig().DefaultTimezone); err != nil {
return err
} else if !at.IsZero() {
if cost, err := ev.Cost(config.CgrConfig().DefaultTimezone); err != nil &&

View File

@@ -119,7 +119,7 @@ func TestACDGetStringValue(t *testing.T) {
acd, _ := NewACD()
ev := &StatEvent{Tenant: "cgrates.org", ID: "EVENT_1",
Fields: map[string]interface{}{
"Usage": time.Duration(10 * time.Second),
utils.USAGE: time.Duration(10 * time.Second),
"AnswerTime": time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
}}
if strVal := acd.GetStringValue(""); strVal != utils.NOT_AVAILABLE {