Updated sessions options

This commit is contained in:
Trial97
2021-02-16 08:12:23 +02:00
committed by Dan Christian Bogos
parent 98d7f4c8c2
commit e695b852fa
10 changed files with 98 additions and 98 deletions

View File

@@ -81,7 +81,7 @@
},
{
"tag": "DebitInterval",
"path": "*opts.*sessionDebitInterval",
"path": "*opts.*sessionsDebitInterval",
"type": "*constant",
"value": "1s"
},

View File

@@ -81,7 +81,7 @@
},
{
"tag": "DebitInterval",
"path": "*opts.*sessionDebitInterval",
"path": "*opts.*sessionsDebitInterval",
"type": "*constant",
"value": "1s"
},

View File

@@ -81,7 +81,7 @@
},
{
"tag": "DebitInterval",
"path": "*opts.*sessionDebitInterval",
"path": "*opts.*sessionsDebitInterval",
"type": "*constant",
"value": "1s"
},

View File

@@ -29,7 +29,7 @@
"value": "~*req.Event-Timestamp", "mandatory": true},
{"tag": "Usage", "path": "*cgreq.Usage", "type": "*variable",
"value": "~*req.Requested-Service-Unit.CC-Time:s/(.*)/${1}s/", "mandatory": true},
{"tag": "DebitInterval", "path": "*opts.*sessionDebitInterval",
{"tag": "DebitInterval", "path": "*opts.*sessionsDebitInterval",
"type": "*constant", "value": "1s"},
],
"reply_fields":[

View File

@@ -204,9 +204,9 @@ func testA1itDataSession1(t *testing.T) {
utils.Usage: "10240",
},
Opts: map[string]interface{}{
utils.OptsSessionTTL: "28800s",
utils.OptsSessionTTLLastUsed: "0s",
utils.OptsSessionTTLUsage: "0s",
utils.OptsSessionsTTL: "28800s",
utils.OptsSessionsTTLLastUsed: "0s",
utils.OptsSessionsTTLUsage: "0s",
},
},
}
@@ -243,9 +243,9 @@ func testA1itDataSession1(t *testing.T) {
utils.Usage: "2097152",
},
Opts: map[string]interface{}{
utils.OptsSessionTTL: "28800s",
utils.OptsSessionTTLLastUsed: "2097152s",
utils.OptsSessionTTLUsage: "0s",
utils.OptsSessionsTTL: "28800s",
utils.OptsSessionsTTLLastUsed: "2097152s",
utils.OptsSessionsTTLUsage: "0s",
},
},
}

View File

@@ -462,10 +462,10 @@ func testV1DataInitSession(t *testing.T) {
utils.Usage: initUsage,
},
Opts: map[string]interface{}{
utils.OptsSessionTTL: "300s",
utils.OptsSessionTTLLastUsed: "0s",
utils.OptsSessionTTLMaxDelay: "1800s",
utils.OptsSessionTTLUsage: "0s",
utils.OptsSessionsTTL: "300s",
utils.OptsSessionsTTLLastUsed: "0s",
utils.OptsSessionsTTLMaxDelay: "1800s",
utils.OptsSessionsTTLUsage: "0s",
},
},
}
@@ -509,10 +509,10 @@ func testV1DataUpdateWith1Mo(t *testing.T) {
utils.Usage: reqUsage,
},
Opts: map[string]interface{}{
utils.OptsSessionTTL: "28807s",
utils.OptsSessionTTLLastUsed: "0s",
utils.OptsSessionTTLMaxDelay: "1800s",
utils.OptsSessionTTLUsage: "0s"},
utils.OptsSessionsTTL: "28807s",
utils.OptsSessionsTTLLastUsed: "0s",
utils.OptsSessionsTTLMaxDelay: "1800s",
utils.OptsSessionsTTLUsage: "0s"},
},
}
var rply sessions.V1UpdateSessionReply
@@ -553,10 +553,10 @@ func testV1DataUpdateWith1Go(t *testing.T) {
utils.Usage: reqUsage,
},
Opts: map[string]interface{}{
utils.OptsSessionTTL: "28807s",
utils.OptsSessionTTLLastUsed: "0s",
utils.OptsSessionTTLMaxDelay: "1800s",
utils.OptsSessionTTLUsage: "0s"},
utils.OptsSessionsTTL: "28807s",
utils.OptsSessionsTTLLastUsed: "0s",
utils.OptsSessionsTTLMaxDelay: "1800s",
utils.OptsSessionsTTLUsage: "0s"},
},
}
var rply sessions.V1UpdateSessionReply

View File

@@ -212,17 +212,17 @@ func (sS *SessionS) setSTerminator(s *Session, opts engine.MapEvent) {
var err error
// TTL
var ttl time.Duration
if opts.HasField(utils.OptsSessionTTL) {
ttl, err = opts.GetDuration(utils.OptsSessionTTL)
} else if s.OptsStart.HasField(utils.OptsSessionTTL) {
ttl, err = s.OptsStart.GetDuration(utils.OptsSessionTTL)
if opts.HasField(utils.OptsSessionsTTL) {
ttl, err = opts.GetDuration(utils.OptsSessionsTTL)
} else if s.OptsStart.HasField(utils.OptsSessionsTTL) {
ttl, err = s.OptsStart.GetDuration(utils.OptsSessionsTTL)
} else {
ttl = sS.cgrCfg.SessionSCfg().SessionTTL
}
if err != nil {
utils.Logger.Warning(
fmt.Sprintf("<%s>, cannot extract <%s> for session:<%s>, from it's options: <%s>, err: <%s>",
utils.SessionS, utils.OptsSessionTTL, s.CGRID, opts, err))
utils.SessionS, utils.OptsSessionsTTL, s.CGRID, opts, err))
return
}
if ttl == 0 {
@@ -230,17 +230,17 @@ func (sS *SessionS) setSTerminator(s *Session, opts engine.MapEvent) {
}
// random delay computation
var maxDelay time.Duration
if opts.HasField(utils.OptsSessionTTLMaxDelay) {
maxDelay, err = opts.GetDuration(utils.OptsSessionTTLMaxDelay)
} else if s.OptsStart.HasField(utils.OptsSessionTTLMaxDelay) {
maxDelay, err = s.OptsStart.GetDuration(utils.OptsSessionTTLMaxDelay)
if opts.HasField(utils.OptsSessionsTTLMaxDelay) {
maxDelay, err = opts.GetDuration(utils.OptsSessionsTTLMaxDelay)
} else if s.OptsStart.HasField(utils.OptsSessionsTTLMaxDelay) {
maxDelay, err = s.OptsStart.GetDuration(utils.OptsSessionsTTLMaxDelay)
} else if sS.cgrCfg.SessionSCfg().SessionTTLMaxDelay != nil {
maxDelay = *sS.cgrCfg.SessionSCfg().SessionTTLMaxDelay
}
if err != nil {
utils.Logger.Warning(
fmt.Sprintf("<%s>, cannot extract <%s> for session:<%s>, from it's options: <%s>, err: <%s>",
utils.SessionS, utils.OptsSessionTTLMaxDelay, s.CGRID, opts.String(), err.Error()))
utils.SessionS, utils.OptsSessionsTTLMaxDelay, s.CGRID, opts.String(), err.Error()))
return
}
if maxDelay != 0 {
@@ -250,47 +250,47 @@ func (sS *SessionS) setSTerminator(s *Session, opts engine.MapEvent) {
}
// LastUsed
var ttlLastUsed *time.Duration
if opts.HasField(utils.OptsSessionTTLLastUsed) {
ttlLastUsed, err = opts.GetDurationPtr(utils.OptsSessionTTLLastUsed)
} else if s.OptsStart.HasField(utils.OptsSessionTTLLastUsed) {
ttlLastUsed, err = s.OptsStart.GetDurationPtr(utils.OptsSessionTTLLastUsed)
if opts.HasField(utils.OptsSessionsTTLLastUsed) {
ttlLastUsed, err = opts.GetDurationPtr(utils.OptsSessionsTTLLastUsed)
} else if s.OptsStart.HasField(utils.OptsSessionsTTLLastUsed) {
ttlLastUsed, err = s.OptsStart.GetDurationPtr(utils.OptsSessionsTTLLastUsed)
} else {
ttlLastUsed = sS.cgrCfg.SessionSCfg().SessionTTLLastUsed
}
if err != nil {
utils.Logger.Warning(
fmt.Sprintf("<%s>, cannot extract <%s> for session:<%s>, from it's options: <%s>, err: <%s>",
utils.SessionS, utils.OptsSessionTTLLastUsed, s.CGRID, opts.String(), err.Error()))
utils.SessionS, utils.OptsSessionsTTLLastUsed, s.CGRID, opts.String(), err.Error()))
return
}
// LastUsage
var ttlLastUsage *time.Duration
if opts.HasField(utils.OptsSessionTTLLastUsage) {
ttlLastUsage, err = opts.GetDurationPtr(utils.OptsSessionTTLLastUsage)
} else if s.OptsStart.HasField(utils.OptsSessionTTLLastUsage) {
ttlLastUsage, err = s.OptsStart.GetDurationPtr(utils.OptsSessionTTLLastUsage)
if opts.HasField(utils.OptsSessionsTTLLastUsage) {
ttlLastUsage, err = opts.GetDurationPtr(utils.OptsSessionsTTLLastUsage)
} else if s.OptsStart.HasField(utils.OptsSessionsTTLLastUsage) {
ttlLastUsage, err = s.OptsStart.GetDurationPtr(utils.OptsSessionsTTLLastUsage)
} else {
ttlLastUsage = sS.cgrCfg.SessionSCfg().SessionTTLLastUsage
}
if err != nil {
utils.Logger.Warning(
fmt.Sprintf("<%s>, cannot extract <%s> for session:<%s>, from it's options: <%s>, err: <%s>",
utils.SessionS, utils.OptsSessionTTLLastUsage, s.CGRID, opts.String(), err.Error()))
utils.SessionS, utils.OptsSessionsTTLLastUsage, s.CGRID, opts.String(), err.Error()))
return
}
// TTLUsage
var ttlUsage *time.Duration
if opts.HasField(utils.OptsSessionTTLUsage) {
ttlUsage, err = opts.GetDurationPtr(utils.OptsSessionTTLUsage)
} else if s.OptsStart.HasField(utils.OptsSessionTTLUsage) {
ttlUsage, err = s.OptsStart.GetDurationPtr(utils.OptsSessionTTLUsage)
if opts.HasField(utils.OptsSessionsTTLUsage) {
ttlUsage, err = opts.GetDurationPtr(utils.OptsSessionsTTLUsage)
} else if s.OptsStart.HasField(utils.OptsSessionsTTLUsage) {
ttlUsage, err = s.OptsStart.GetDurationPtr(utils.OptsSessionsTTLUsage)
} else {
ttlUsage = sS.cgrCfg.SessionSCfg().SessionTTLUsage
}
if err != nil {
utils.Logger.Warning(
fmt.Sprintf("<%s>, cannot extract <%s> for session:<%s>, from it's options: <%s>, err: <%s>",
utils.SessionS, utils.OptsSessionTTLUsage, s.CGRID, opts.String(), err.Error()))
utils.SessionS, utils.OptsSessionsTTLUsage, s.CGRID, opts.String(), err.Error()))
return
}
// previously defined, reset

View File

@@ -585,7 +585,7 @@ func testSessionsDataTTLExpired(t *testing.T) {
utils.Usage: "1024",
},
Opts: map[string]interface{}{
utils.OptsSessionTTLUsage: "2048", // will be charged on TTL
utils.OptsSessionsTTLUsage: "2048", // will be charged on TTL
},
},
}
@@ -726,8 +726,8 @@ func testSessionsDataTTLExpMultiUpdates(t *testing.T) {
utils.Usage: "4096",
},
Opts: map[string]interface{}{
utils.OptsSessionTTLUsage: "2048", // will be charged on TTL
utils.OptsSessionTTLLastUsed: "1024",
utils.OptsSessionsTTLUsage: "2048", // will be charged on TTL
utils.OptsSessionsTTLLastUsed: "1024",
},
},
}
@@ -866,7 +866,7 @@ func testSessionsDataMultipleDataNoUsage(t *testing.T) {
utils.LastUsed: "1024",
},
Opts: map[string]interface{}{
utils.OptsSessionTTL: "0", // cancel timeout since usage 0 will not update it
utils.OptsSessionsTTL: "0", // cancel timeout since usage 0 will not update it
},
},
}
@@ -915,7 +915,7 @@ func testSessionsDataMultipleDataNoUsage(t *testing.T) {
utils.LastUsed: "0",
},
Opts: map[string]interface{}{
utils.OptsSessionTTL: "1h", // cancel timeout since usage 0 will not update it
utils.OptsSessionsTTL: "1h", // cancel timeout since usage 0 will not update it
},
},
}
@@ -1114,7 +1114,7 @@ func testSessionsDataTTLLastUsage(t *testing.T) {
utils.Usage: "1024",
},
Opts: map[string]interface{}{
utils.OptsSessionTTLLastUsage: "2048",
utils.OptsSessionsTTLLastUsage: "2048",
},
},
}

View File

@@ -117,11 +117,11 @@ func testSetSTerminator(t *testing.T) {
}
opts = engine.MapEvent{
utils.OptsSessionTTL: "1s",
utils.OptsSessionTTLMaxDelay: "1s",
utils.OptsSessionTTLLastUsed: "2s",
utils.OptsSessionTTLLastUsage: "0s",
utils.OptsSessionTTLUsage: "5s",
utils.OptsSessionsTTL: "1s",
utils.OptsSessionsTTLMaxDelay: "1s",
utils.OptsSessionsTTLLastUsed: "2s",
utils.OptsSessionsTTLLastUsage: "0s",
utils.OptsSessionsTTLUsage: "5s",
}
ss.sTerminator = &sTerminator{
timer: time.NewTimer(cfg.SessionSCfg().SessionTTL),
@@ -142,11 +142,11 @@ func testSetSTerminator(t *testing.T) {
}
ss.OptsStart = engine.MapEvent{
utils.OptsSessionTTL: "1s",
utils.OptsSessionTTLMaxDelay: "1s",
utils.OptsSessionTTLLastUsed: "2s",
utils.OptsSessionTTLLastUsage: "0s",
utils.OptsSessionTTLUsage: "5s",
utils.OptsSessionsTTL: "1s",
utils.OptsSessionsTTLMaxDelay: "1s",
utils.OptsSessionsTTLLastUsed: "2s",
utils.OptsSessionsTTLLastUsage: "0s",
utils.OptsSessionsTTLUsage: "5s",
}
ss.sTerminator = &sTerminator{
timer: time.NewTimer(cfg.SessionSCfg().SessionTTL),
@@ -181,17 +181,17 @@ func testSetSTerminatorError(t *testing.T) {
//Cannot set a terminate when ttl is 0
ss.OptsStart = engine.MapEvent{
utils.OptsSessionTTL: "0s",
utils.OptsSessionsTTL: "0s",
}
opts := engine.MapEvent{}
sessions.setSTerminator(ss, opts)
//Invalid format types for time duration
ss.OptsStart = engine.MapEvent{
utils.OptsSessionTTL: "invalid_time_format",
utils.OptsSessionsTTL: "invalid_time_format",
}
sessions.setSTerminator(ss, opts)
expected := "cannot extract <*sessionTTL> for session:<>, from it's options: <{}>, err: <time: invalid duration \"invalid_time_format\">"
expected := "cannot extract <*sessionsTTL> for session:<>, from it's options: <{}>, err: <time: invalid duration \"invalid_time_format\">"
if rcv := buff.String(); !strings.Contains(rcv, expected) {
t.Errorf("Expected %+v, received %+v", expected, rcv)
}
@@ -200,11 +200,11 @@ func testSetSTerminatorError(t *testing.T) {
log.SetOutput(buff)
ss.OptsStart = engine.MapEvent{
utils.OptsSessionTTL: "1s",
utils.OptsSessionTTLMaxDelay: "invalid_time_format",
utils.OptsSessionsTTL: "1s",
utils.OptsSessionsTTLMaxDelay: "invalid_time_format",
}
sessions.setSTerminator(ss, opts)
expected = "cannot extract <*sessionTTLMaxDelay> for session:<>, from it's options: <{}>, err: <time: invalid duration \"invalid_time_format\">"
expected = "cannot extract <*sessionsTTLMaxDelay> for session:<>, from it's options: <{}>, err: <time: invalid duration \"invalid_time_format\">"
if rcv := buff.String(); !strings.Contains(rcv, expected) {
t.Errorf("Expected %+v, received %+v", expected, rcv)
}
@@ -213,12 +213,12 @@ func testSetSTerminatorError(t *testing.T) {
log.SetOutput(buff)
ss.OptsStart = engine.MapEvent{
utils.OptsSessionTTL: "1s",
utils.OptsSessionTTLMaxDelay: "2s",
utils.OptsSessionTTLLastUsed: "invalid_time_format",
utils.OptsSessionsTTL: "1s",
utils.OptsSessionsTTLMaxDelay: "2s",
utils.OptsSessionsTTLLastUsed: "invalid_time_format",
}
sessions.setSTerminator(ss, opts)
expected = "cannot extract <*sessionTTLLastUsed> for session:<>, from it's options: <{}>, err: <time: invalid duration \"invalid_time_format\">"
expected = "cannot extract <*sessionsTTLLastUsed> for session:<>, from it's options: <{}>, err: <time: invalid duration \"invalid_time_format\">"
if rcv := buff.String(); !strings.Contains(rcv, expected) {
t.Errorf("Expected %+v, received %+v", expected, rcv)
}
@@ -227,13 +227,13 @@ func testSetSTerminatorError(t *testing.T) {
log.SetOutput(buff)
ss.OptsStart = engine.MapEvent{
utils.OptsSessionTTL: "1s",
utils.OptsSessionTTLMaxDelay: "2s",
utils.OptsSessionTTLLastUsed: "1s",
utils.OptsSessionTTLLastUsage: "invalid_time_format",
utils.OptsSessionsTTL: "1s",
utils.OptsSessionsTTLMaxDelay: "2s",
utils.OptsSessionsTTLLastUsed: "1s",
utils.OptsSessionsTTLLastUsage: "invalid_time_format",
}
sessions.setSTerminator(ss, opts)
expected = "cannot extract <*sessionTTLLastUsage> for session:<>, from it's options: <{}>, err: <time: invalid duration \"invalid_time_format\">"
expected = "cannot extract <*sessionsTTLLastUsage> for session:<>, from it's options: <{}>, err: <time: invalid duration \"invalid_time_format\">"
if rcv := buff.String(); !strings.Contains(rcv, expected) {
t.Errorf("Expected %+v, received %+v", expected, rcv)
}
@@ -244,12 +244,12 @@ func testSetSTerminatorError(t *testing.T) {
cfg.SessionSCfg().SessionTTLMaxDelay = utils.DurationPointer(time.Second)
sessions = NewSessionS(cfg, dm, nil)
ss.OptsStart = engine.MapEvent{
utils.OptsSessionTTLLastUsed: "1s",
utils.OptsSessionTTLLastUsage: "5s",
utils.OptsSessionTTLUsage: "invalid_time_format",
utils.OptsSessionsTTLLastUsed: "1s",
utils.OptsSessionsTTLLastUsage: "5s",
utils.OptsSessionsTTLUsage: "invalid_time_format",
}
sessions.setSTerminator(ss, opts)
expected = "cannot extract <*sessionTTLUsage> for session:<>, from it's options: <{}>, err: <time: invalid duration \"invalid_time_format\">"
expected = "cannot extract <*sessionsTTLUsage> for session:<>, from it's options: <{}>, err: <time: invalid duration \"invalid_time_format\">"
if rcv := buff.String(); !strings.Contains(rcv, expected) {
t.Errorf("Expected %+v, received %+v", expected, rcv)
}
@@ -266,8 +266,8 @@ func testSetSTerminatorAutomaticTermination(t *testing.T) {
sessions := NewSessionS(cfg, dm, nil)
opts := engine.MapEvent{
utils.OptsSessionTTL: "1s",
utils.OptsSessionTTLLastUsage: "0s",
utils.OptsSessionsTTL: "1s",
utils.OptsSessionsTTLLastUsage: "0s",
}
sessions.setSTerminator(ss, opts)
@@ -287,7 +287,7 @@ func testSetSTerminatorManualTermination(t *testing.T) {
sessions := NewSessionS(cfg, dm, nil)
opts := engine.MapEvent{
utils.OptsSessionTTL: "1s",
utils.OptsSessionsTTL: "1s",
}
sessions.setSTerminator(ss, opts)

View File

@@ -2500,8 +2500,8 @@ var (
)
// CGROptionsSet the possible cgr options
var CGROptionsSet = NewStringSet([]string{OptsRatesStartTime, OptsRatesUsage, OptsSessionTTL,
OptsSessionTTLMaxDelay, OptsSessionTTLLastUsed, OptsSessionTTLLastUsage, OptsSessionTTLUsage,
var CGROptionsSet = NewStringSet([]string{OptsRatesStartTime, OptsRatesUsage, OptsSessionsTTL,
OptsSessionsTTLMaxDelay, OptsSessionsTTLLastUsed, OptsSessionsTTLLastUsage, OptsSessionsTTLUsage,
OptsDebitInterval, OptsStirATest, OptsStirPayloadMaxDuration, OptsStirIdentity,
OptsStirOriginatorTn, OptsStirOriginatorURI, OptsStirDestinationTn, OptsStirDestinationURI,
OptsStirPublicKeyPath, OptsStirPrivateKeyPath, OptsAPIKey, OptsRouteID, OptsContext,
@@ -2527,17 +2527,17 @@ const (
// Event Opts
const (
OptsRoutesLimit = "*routes_limit"
OptsRoutesOffset = "*routes_offset"
OptsRatesStartTime = "*ratesStartTime"
OptsRatesUsage = "*ratesUsage"
OptsSessionTTL = "*sessionTTL"
OptsSessionTTLMaxDelay = "*sessionTTLMaxDelay"
OptsSessionTTLLastUsed = "*sessionTTLLastUsed"
OptsSessionTTLLastUsage = "*sessionTTLLastUsage"
OptsSessionTTLUsage = "*sessionTTLUsage"
OptsDebitInterval = "*sessionDebitInterval"
OptsChargeable = "*sessionChargeable"
OptsRoutesLimit = "*routes_limit"
OptsRoutesOffset = "*routes_offset"
OptsRatesStartTime = "*ratesStartTime"
OptsRatesUsage = "*ratesUsage"
OptsSessionsTTL = "*sessionsTTL"
OptsSessionsTTLMaxDelay = "*sessionsTTLMaxDelay"
OptsSessionsTTLLastUsed = "*sessionsTTLLastUsed"
OptsSessionsTTLLastUsage = "*sessionsTTLLastUsage"
OptsSessionsTTLUsage = "*sessionsTTLUsage"
OptsDebitInterval = "*sessionsDebitInterval"
OptsChargeable = "*sessionsChargeable"
// STIR
OptsStirATest = "*stirATest"
OptsStirPayloadMaxDuration = "*stirPayloadMaxDuration"