From 86fd8444db8199f0bdd15a4dbe53c83e33bbb8d4 Mon Sep 17 00:00:00 2001 From: DanB Date: Mon, 6 Nov 2017 18:20:17 +0100 Subject: [PATCH] Using SMGenericV2 methods returning time.Duration as maxDuration instead of float, updated smg_it tests --- agents/dmtagent.go | 4 +- apier/v2/smgeneric.go | 5 ++ general_tests/a1_it_test.go | 5 +- sessionmanager/data_it_test.go | 44 +++++++-------- sessionmanager/smasterisk.go | 5 +- sessionmanager/smg_it_test.go | 88 ++++++++++++++++-------------- sessionmanager/smgbirpc_it_test.go | 8 ++- sessionmanager/smgeneric.go | 10 ++++ sessionmanager/smgreplc_it_test.go | 14 +++-- utils/consts.go | 4 ++ 10 files changed, 109 insertions(+), 78 deletions(-) diff --git a/agents/dmtagent.go b/agents/dmtagent.go index f5be11dcb..fe4c237b9 100644 --- a/agents/dmtagent.go +++ b/agents/dmtagent.go @@ -138,9 +138,9 @@ func (self DiameterAgent) processCCR(ccr *CCR, reqProcessor *config.DARequestPro } else { // Find out maxUsage over APIs switch ccr.CCRequestType { case 1: - err = self.smg.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage) + err = self.smg.Call("SMGenericV2.InitiateSession", smgEv, &maxUsage) case 2: - err = self.smg.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage) + err = self.smg.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage) case 3, 4: // Handle them together since we generate CDR for them var rpl string if ccr.CCRequestType == 3 { diff --git a/apier/v2/smgeneric.go b/apier/v2/smgeneric.go index eacb4d891..6360c4ea7 100644 --- a/apier/v2/smgeneric.go +++ b/apier/v2/smgeneric.go @@ -43,3 +43,8 @@ func (smgv2 *SMGenericV2) InitiateSession(ev sessionmanager.SMGenericEvent, maxU func (smgv2 *SMGenericV2) UpdateSession(ev sessionmanager.SMGenericEvent, maxUsage *time.Duration) error { return smgv2.SMG.BiRPCV2UpdateSession(nil, ev, maxUsage) } + +// Called on individual Events (eg SMS) +func (smgv2 *SMGenericV2) ChargeEvent(ev sessionmanager.SMGenericEvent, maxUsage *time.Duration) error { + return smgv2.SMG.BiRPCV2ChargeEvent(nil, ev, maxUsage) +} diff --git a/general_tests/a1_it_test.go b/general_tests/a1_it_test.go index a4d3df016..79eb14306 100644 --- a/general_tests/a1_it_test.go +++ b/general_tests/a1_it_test.go @@ -146,7 +146,7 @@ func TestA1itDataSession1(t *testing.T) { utils.SessionTTLUsage: "0s", } var maxUsage float64 - if err := a1rpc.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + if err := a1rpc.Call(utils.SMGenericV2InitiateSession, smgEv, &maxUsage); err != nil { t.Error(err) } else if maxUsage != 0.000010240 { t.Error("Received: ", maxUsage) @@ -171,7 +171,8 @@ func TestA1itDataSession1(t *testing.T) { utils.ANSWER_TIME: "2017-03-03 11:39:32 +0100 CET", utils.USAGE: "2097152", } - if err := a1rpc.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := a1rpc.Call(utils.SMGenericV2UpdateSession, + smgEv, &maxUsage); err != nil { t.Error(err) } else if maxUsage != 0.002097152 { t.Error("Bad max usage: ", maxUsage) diff --git a/sessionmanager/data_it_test.go b/sessionmanager/data_it_test.go index d14166d2f..6e4fddbc5 100644 --- a/sessionmanager/data_it_test.go +++ b/sessionmanager/data_it_test.go @@ -108,10 +108,10 @@ func TestSMGDataLastUsedData(t *testing.T) { utils.USAGE: "1048576", } var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.InitiateSession", smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 1.048576e+06 { + if maxUsage != 0.001048576 { t.Error("Bad max usage: ", maxUsage) } eAcntVal = 49998945280.000000 //1054720 @@ -136,7 +136,7 @@ func TestSMGDataLastUsedData(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "20000", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -200,7 +200,7 @@ func TestSMGDataLastUsedMultipleData(t *testing.T) { utils.USAGE: "1048576", } var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.InitiateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -232,7 +232,7 @@ func TestSMGDataLastUsedMultipleData(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "20000", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -263,7 +263,7 @@ func TestSMGDataLastUsedMultipleData(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "20000", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -294,7 +294,7 @@ func TestSMGDataLastUsedMultipleData(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "20000", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -325,7 +325,7 @@ func TestSMGDataLastUsedMultipleData(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "20000", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -395,7 +395,7 @@ func TestSMGDataDerivedChargingNoCredit(t *testing.T) { utils.USAGE: "100", } var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.InitiateSession", smgEv, &maxUsage); err != nil { t.Error(err) } // the second derived charging run has no credit @@ -436,7 +436,7 @@ func TestSMGDataTTLExpired(t *testing.T) { utils.USAGE: "1048576", } var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.InitiateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -482,7 +482,7 @@ func TestSMGDataTTLExpiredMultiUpdates(t *testing.T) { utils.USAGE: "1048576", } var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.InitiateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -515,7 +515,7 @@ func TestSMGDataTTLExpiredMultiUpdates(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "20000", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -565,7 +565,7 @@ func TestSMGDataMultipleDataNoUsage(t *testing.T) { utils.USAGE: "1048576", } var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.InitiateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -597,7 +597,7 @@ func TestSMGDataMultipleDataNoUsage(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "0", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -628,7 +628,7 @@ func TestSMGDataMultipleDataNoUsage(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "0", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -659,7 +659,7 @@ func TestSMGDataMultipleDataNoUsage(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "0", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -690,7 +690,7 @@ func TestSMGDataMultipleDataNoUsage(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "0", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -760,7 +760,7 @@ func TestSMGDataMultipleDataConstantUsage(t *testing.T) { utils.USAGE: "1048576", } var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.InitiateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -793,7 +793,7 @@ func TestSMGDataMultipleDataConstantUsage(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "600", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -824,7 +824,7 @@ func TestSMGDataMultipleDataConstantUsage(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "600", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -855,7 +855,7 @@ func TestSMGDataMultipleDataConstantUsage(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "600", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { @@ -886,7 +886,7 @@ func TestSMGDataMultipleDataConstantUsage(t *testing.T) { utils.USAGE: "1048576", utils.LastUsed: "600", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call("SMGenericV2.UpdateSession", smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 1.048576e+06 { diff --git a/sessionmanager/smasterisk.go b/sessionmanager/smasterisk.go index f4edd0280..f96c2d2d8 100644 --- a/sessionmanager/smasterisk.go +++ b/sessionmanager/smasterisk.go @@ -25,6 +25,7 @@ import ( "strconv" "strings" "sync" + "time" "github.com/cgrates/aringo" "github.com/cgrates/cgrates/config" @@ -180,8 +181,8 @@ func (sma *SMAsterisk) handleChannelStateChange(ev *SMAsteriskEvent) { } return } - var maxUsage float64 - if err := sma.smg.Call("SMGenericV1.InitiateSession", *smgEv, &maxUsage); err != nil { + var maxUsage time.Duration + if err := sma.smg.Call(utils.SMGenericV2InitiateSession, *smgEv, &maxUsage); err != nil { utils.Logger.Err(fmt.Sprintf(" Error: %s when attempting to initiate session for channelID: %s", err.Error(), ev.ChannelID())) if err := sma.hangupChannel(ev.ChannelID()); err != nil { utils.Logger.Err(fmt.Sprintf(" Error: %s when attempting to disconnect channelID: %s", err.Error(), ev.ChannelID())) diff --git a/sessionmanager/smg_it_test.go b/sessionmanager/smg_it_test.go index 729ca8a7a..7b1cc4097 100644 --- a/sessionmanager/smg_it_test.go +++ b/sessionmanager/smg_it_test.go @@ -107,11 +107,12 @@ func TestSMGVoiceMonetaryRefund(t *testing.T) { utils.ANSWER_TIME: "2016-01-05 18:31:05", utils.USAGE: "1m30s", } - var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + var maxUsage time.Duration + if err := smgRPC.Call(utils.SMGenericV2InitiateSession, + smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 90 { + if maxUsage != time.Duration(90*time.Second) { t.Error("Bad max usage: ", maxUsage) } var acnt *engine.Account @@ -165,11 +166,12 @@ func TestSMGVoiceVoiceRefund(t *testing.T) { utils.ANSWER_TIME: "2016-01-05 18:31:05", utils.USAGE: "1m30s", } - var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + var maxUsage time.Duration + if err := smgRPC.Call(utils.SMGenericV2InitiateSession, + smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 90 { + if maxUsage != time.Duration(90*time.Second) { t.Error("Received: ", maxUsage) } var acnt *engine.Account @@ -178,7 +180,8 @@ func TestSMGVoiceVoiceRefund(t *testing.T) { if err := smgRPC.Call("ApierV2.GetAccount", attrs, &acnt); err != nil { t.Error(err) } else if acnt.BalanceMap[utils.VOICE].GetTotalValue() != eAcntVal { - t.Errorf("Expected: %f, received: %f", eAcntVal, acnt.BalanceMap[utils.VOICE].GetTotalValue()) + t.Errorf("Expected: %f, received: %f", + eAcntVal, acnt.BalanceMap[utils.VOICE].GetTotalValue()) } smgEv = SMGenericEvent{ utils.EVENT_NAME: "TEST_EVENT", @@ -230,11 +233,11 @@ func TestSMGVoiceMixedRefund(t *testing.T) { utils.ANSWER_TIME: "2016-01-05 18:31:05", utils.USAGE: "1m30s", } - var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + var maxUsage time.Duration + if err := smgRPC.Call(utils.SMGenericV2InitiateSession, smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 90 { + if maxUsage != time.Duration(90*time.Second) { t.Error("Bad max usage: ", maxUsage) } //var acnt *engine.Account @@ -302,11 +305,11 @@ func TestSMGVoiceLastUsed(t *testing.T) { utils.ANSWER_TIME: "2016-01-05 18:31:05", utils.USAGE: "2m", } - var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + var maxUsage time.Duration + if err := smgRPC.Call(utils.SMGenericV2InitiateSession, smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } eAcntVal = 7.39002 @@ -329,10 +332,10 @@ func TestSMGVoiceLastUsed(t *testing.T) { utils.USAGE: "2m", utils.LastUsed: "1m30s", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call(utils.SMGenericV2UpdateSession, smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } eAcntVal = 7.09005 @@ -355,10 +358,10 @@ func TestSMGVoiceLastUsed(t *testing.T) { utils.USAGE: "2m", utils.LastUsed: "2m30s", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call(utils.SMGenericV2UpdateSession, smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } eAcntVal = 6.590100 @@ -416,11 +419,11 @@ func TestSMGVoiceLastUsedEnd(t *testing.T) { utils.ANSWER_TIME: "2016-01-05 18:31:05", utils.USAGE: "2m", } - var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + var maxUsage time.Duration + if err := smgRPC.Call(utils.SMGenericV2InitiateSession, smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } eAcntVal = 6.190020 @@ -443,10 +446,10 @@ func TestSMGVoiceLastUsedEnd(t *testing.T) { utils.USAGE: "2m", utils.LastUsed: "30s", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call(utils.SMGenericV2UpdateSession, smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } eAcntVal = 6.090030 @@ -504,11 +507,11 @@ func TestSMGVoiceLastUsedNotFixed(t *testing.T) { utils.ANSWER_TIME: "2016-01-05 18:31:05", utils.USAGE: "2m", } - var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + var maxUsage time.Duration + if err := smgRPC.Call(utils.SMGenericV2InitiateSession, smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } eAcntVal = 5.190020 @@ -531,10 +534,10 @@ func TestSMGVoiceLastUsedNotFixed(t *testing.T) { utils.USAGE: "2m", utils.LastUsed: "13s", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call(utils.SMGenericV2UpdateSession, smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } eAcntVal = 5.123360 @@ -592,12 +595,12 @@ func TestSMGVoiceSessionTTL(t *testing.T) { utils.ANSWER_TIME: "2016-01-05 18:31:05", utils.USAGE: "2m", } - var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + var maxUsage time.Duration + if err := smgRPC.Call(utils.SMGenericV2InitiateSession, smgEv, &maxUsage); err != nil { t.Error(err) } time.Sleep(time.Duration(30 * time.Millisecond)) - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } var aSessions []*ActiveSession @@ -629,11 +632,11 @@ func TestSMGVoiceSessionTTL(t *testing.T) { utils.USAGE: "2m", utils.LastUsed: "30s", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call(utils.SMGenericV2UpdateSession, smgEv, &maxUsage); err != nil { t.Error(err) } time.Sleep(time.Duration(10 * time.Millisecond)) - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } if err := smgRPC.Call("SMGenericV1.GetActiveSessions", map[string]string{utils.MEDI_RUNID: utils.META_DEFAULT, utils.ACCID: "12360"}, &aSessions); err != nil { @@ -704,12 +707,12 @@ func TestSMGVoiceSessionTTLWithRelocate(t *testing.T) { utils.ANSWER_TIME: "2016-01-05 18:31:05", utils.USAGE: "2m", } - var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + var maxUsage time.Duration + if err := smgRPC.Call(utils.SMGenericV2InitiateSession, smgEv, &maxUsage); err != nil { t.Error(err) } time.Sleep(time.Duration(10) * time.Millisecond) - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } var aSessions []*ActiveSession @@ -742,10 +745,11 @@ func TestSMGVoiceSessionTTLWithRelocate(t *testing.T) { utils.USAGE: "2m", utils.LastUsed: "30s", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call(utils.SMGenericV2UpdateSession, + smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } time.Sleep(time.Duration(20) * time.Millisecond) @@ -828,11 +832,11 @@ func TestSMGVoiceRelocateWithOriginIDPrefix(t *testing.T) { utils.ANSWER_TIME: "2016-01-05 18:31:05", utils.USAGE: "2m", } - var maxUsage float64 - if err := smgRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + var maxUsage time.Duration + if err := smgRPC.Call(utils.SMGenericV2InitiateSession, smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } time.Sleep(time.Duration(20) * time.Millisecond) @@ -866,10 +870,10 @@ func TestSMGVoiceRelocateWithOriginIDPrefix(t *testing.T) { utils.USAGE: "2m", utils.LastUsed: "30s", } - if err := smgRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRPC.Call(utils.SMGenericV2UpdateSession, smgEv, &maxUsage); err != nil { t.Error(err) } - if maxUsage != 120 { + if maxUsage != time.Duration(120*time.Second) { t.Error("Bad max usage: ", maxUsage) } time.Sleep(time.Duration(20) * time.Millisecond) diff --git a/sessionmanager/smgbirpc_it_test.go b/sessionmanager/smgbirpc_it_test.go index e345814c0..2e8a14999 100644 --- a/sessionmanager/smgbirpc_it_test.go +++ b/sessionmanager/smgbirpc_it_test.go @@ -144,7 +144,7 @@ func TestSMGBiRPCSessionAutomaticDisconnects(t *testing.T) { utils.ANSWER_TIME: "2016-01-05 18:31:05", } var maxUsage float64 - if err := smgBiRPC.Call("SMGenericV1.InitiateSession", + if err := smgBiRPC.Call(utils.SMGenericV1InitiateSession, smgEv, &maxUsage); err != nil { t.Error(err) } @@ -225,7 +225,8 @@ func TestSMGBiRPCSessionOriginatorTerminate(t *testing.T) { utils.ANSWER_TIME: "2016-01-05 18:31:05", } var maxUsage float64 - if err := smgBiRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + if err := smgBiRPC.Call(utils.SMGenericV1InitiateSession, + smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != -1 { @@ -234,7 +235,8 @@ func TestSMGBiRPCSessionOriginatorTerminate(t *testing.T) { time.Sleep(time.Duration(10 * time.Millisecond)) // Give time for debits to occur smgEv[utils.USAGE] = "7ms" var rpl string - if err = smgBiRPC.Call("SMGenericV1.TerminateSession", smgEv, &rpl); err != nil || rpl != utils.OK { + if err = smgBiRPC.Call("SMGenericV1.TerminateSession", + smgEv, &rpl); err != nil || rpl != utils.OK { t.Error(err) } time.Sleep(time.Duration(50 * time.Millisecond)) // Give time for debits to occur diff --git a/sessionmanager/smgeneric.go b/sessionmanager/smgeneric.go index 82a095665..6585aa841 100644 --- a/sessionmanager/smgeneric.go +++ b/sessionmanager/smgeneric.go @@ -1128,6 +1128,16 @@ func (smg *SMGeneric) BiRPCV1ChargeEvent(clnt rpcclient.RpcClientConnection, ev return nil } +// Called on individual Events (eg SMS) +func (smg *SMGeneric) BiRPCV2ChargeEvent(clnt rpcclient.RpcClientConnection, ev SMGenericEvent, maxUsage *time.Duration) error { + if minMaxUsage, err := smg.ChargeEvent(ev); err != nil { + return utils.NewErrServerError(err) + } else { + *maxUsage = minMaxUsage + } + return nil +} + // Called on session end, should send the CDR to CDRS func (smg *SMGeneric) BiRPCV1ProcessCDR(clnt rpcclient.RpcClientConnection, ev SMGenericEvent, reply *string) error { if err := smg.ProcessCDR(ev); err != nil { diff --git a/sessionmanager/smgreplc_it_test.go b/sessionmanager/smgreplc_it_test.go index aa0595fda..5ef422848 100644 --- a/sessionmanager/smgreplc_it_test.go +++ b/sessionmanager/smgreplc_it_test.go @@ -91,7 +91,8 @@ func TestSMGRplcTPFromFolder(t *testing.T) { func TestSMGRplcInitiate(t *testing.T) { var pSessions []*ActiveSession - if err := smgRplcSlvRPC.Call("SMGenericV1.GetPassiveSessions", nil, &pSessions); err == nil || err.Error() != utils.ErrNotFound.Error() { + if err := smgRplcSlvRPC.Call("SMGenericV1.GetPassiveSessions", + nil, &pSessions); err == nil || err.Error() != utils.ErrNotFound.Error() { t.Error(err) } smgEv := SMGenericEvent{ @@ -110,14 +111,16 @@ func TestSMGRplcInitiate(t *testing.T) { utils.USAGE: "1m30s", } var maxUsage float64 - if err := smgRplcMstrRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err == nil && err.Error() != rpcclient.ErrSessionNotFound.Error() { // Update should return rpcclient.ErrSessionNotFound + if err := smgRplcMstrRPC.Call(utils.SMGenericV2UpdateSession, + smgEv, &maxUsage); err == nil && + err.Error() != rpcclient.ErrSessionNotFound.Error() { // Update should return rpcclient.ErrSessionNotFound t.Error(err) } var reply string if err := smgRplcMstrRPC.Call("SMGenericV1.TerminateSession", smgEv, &reply); err == nil && err.Error() != rpcclient.ErrSessionNotFound.Error() { // Update should return rpcclient.ErrSessionNotFound t.Error(err) } - if err := smgRplcMstrRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + if err := smgRplcMstrRPC.Call(utils.SMGenericV2InitiateSession, smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 90 { @@ -149,7 +152,8 @@ func TestSMGRplcUpdate(t *testing.T) { utils.USAGE: "1m", } var maxUsage float64 - if err := smgRplcSlvRPC.Call("SMGenericV1.UpdateSession", smgEv, &maxUsage); err != nil { + if err := smgRplcSlvRPC.Call(utils.SMGenericV2UpdateSession, + smgEv, &maxUsage); err != nil { t.Error(err) } else if maxUsage != 60 { t.Error("Bad max usage: ", maxUsage) @@ -253,7 +257,7 @@ func TestSMGRplcManualReplicate(t *testing.T) { } for _, smgEv := range []SMGenericEvent{smgEv1, smgEv2} { var maxUsage float64 - if err := smgRplcMstrRPC.Call("SMGenericV1.InitiateSession", smgEv, &maxUsage); err != nil { + if err := smgRplcMstrRPC.Call(utils.SMGenericV2InitiateSession, smgEv, &maxUsage); err != nil { t.Error(err) } if maxUsage != 90 { diff --git a/utils/consts.go b/utils/consts.go index 8dec0b96e..1484d5845 100755 --- a/utils/consts.go +++ b/utils/consts.go @@ -488,6 +488,10 @@ const ( Action = "Action" ThresholdSv1ProcessEvent = "ThresholdSv1.ProcessEvent" MetaNow = "*now" + SMGenericV2UpdateSession = "SMGenericV2.UpdateSession" + SMGenericV2InitiateSession = "SMGenericV2.InitiateSession" + SMGenericV1UpdateSession = "SMGenericV1.UpdateSession" + SMGenericV1InitiateSession = "SMGenericV1.InitiateSession" ) func buildCacheInstRevPrefixes() {