diff --git a/agents/diam_it_test.go b/agents/diam_it_test.go index f108ad660..ad1b8c3d4 100644 --- a/agents/diam_it_test.go +++ b/agents/diam_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/agents/dnsagent_it_test.go b/agents/dnsagent_it_test.go index ca894da16..33c9f1d61 100644 --- a/agents/dnsagent_it_test.go +++ b/agents/dnsagent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/agents/httpagent_it_test.go b/agents/httpagent_it_test.go index ae6519622..2c957e58f 100644 --- a/agents/httpagent_it_test.go +++ b/agents/httpagent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/agents/radagent_it_test.go b/agents/radagent_it_test.go index 03af5ed25..2dec7c329 100644 --- a/agents/radagent_it_test.go +++ b/agents/radagent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/agents/sipagent_it_test.go b/agents/sipagent_it_test.go index 2cab1f83a..8efd2871a 100644 --- a/agents/sipagent_it_test.go +++ b/agents/sipagent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/analyzers/analyzers_it_test.go b/analyzers/analyzers_it_test.go index 3ed296d74..66037bacc 100644 --- a/analyzers/analyzers_it_test.go +++ b/analyzers/analyzers_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/cmd/cgr-console/cgr-console_it_test.go b/cmd/cgr-console/cgr-console_it_test.go index 315310ace..922671c1c 100644 --- a/cmd/cgr-console/cgr-console_it_test.go +++ b/cmd/cgr-console/cgr-console_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/cmd/cgr-loader/cgr-loader_it_test.go b/cmd/cgr-loader/cgr-loader_it_test.go index 4e8464760..1dc5f161b 100644 --- a/cmd/cgr-loader/cgr-loader_it_test.go +++ b/cmd/cgr-loader/cgr-loader_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/cmd/cgr-loader/cgr-loader_remove_it_test.go b/cmd/cgr-loader/cgr-loader_remove_it_test.go index 571810b57..98ba98248 100644 --- a/cmd/cgr-loader/cgr-loader_remove_it_test.go +++ b/cmd/cgr-loader/cgr-loader_remove_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/config/config_it_test.go b/config/config_it_test.go index e402da1e2..f67af096c 100644 --- a/config/config_it_test.go +++ b/config/config_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/config/multifiles_it_test.go b/config/multifiles_it_test.go index d14e2259c..bbaaf69f9 100644 --- a/config/multifiles_it_test.go +++ b/config/multifiles_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/cores/server_it_test.go b/cores/server_it_test.go index fea5d7d82..e2a8402f6 100644 --- a/cores/server_it_test.go +++ b/cores/server_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/accounts_it_test.go b/dispatchers/accounts_it_test.go index 1116fe3f4..e1c724494 100644 --- a/dispatchers/accounts_it_test.go +++ b/dispatchers/accounts_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/actions_it_test.go b/dispatchers/actions_it_test.go index 7504bf693..dcd7242cc 100644 --- a/dispatchers/actions_it_test.go +++ b/dispatchers/actions_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/attributes_it_test.go b/dispatchers/attributes_it_test.go index 3f2b26261..fc1f5a4b1 100644 --- a/dispatchers/attributes_it_test.go +++ b/dispatchers/attributes_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/caches_it_test.go b/dispatchers/caches_it_test.go index 6beb93195..43253f093 100644 --- a/dispatchers/caches_it_test.go +++ b/dispatchers/caches_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/cdrs_it_test.go b/dispatchers/cdrs_it_test.go index 3432b90ca..b4043a076 100644 --- a/dispatchers/cdrs_it_test.go +++ b/dispatchers/cdrs_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/chargers_it_test.go b/dispatchers/chargers_it_test.go index ce43d3be7..513538322 100644 --- a/dispatchers/chargers_it_test.go +++ b/dispatchers/chargers_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/config_it_test.go b/dispatchers/config_it_test.go index e5542ecc7..0767aa6c2 100644 --- a/dispatchers/config_it_test.go +++ b/dispatchers/config_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/dispatchers_it_test.go b/dispatchers/dispatchers_it_test.go index c43c8762f..385fb1ccb 100644 --- a/dispatchers/dispatchers_it_test.go +++ b/dispatchers/dispatchers_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/guardian_it_test.go b/dispatchers/guardian_it_test.go index 2220ff285..0fe6706dd 100644 --- a/dispatchers/guardian_it_test.go +++ b/dispatchers/guardian_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/rates_it_test.go b/dispatchers/rates_it_test.go index 48d01ae5a..17e4e0df8 100644 --- a/dispatchers/rates_it_test.go +++ b/dispatchers/rates_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/replicator_it_test.go b/dispatchers/replicator_it_test.go index d8ee6cf7b..464ad2d92 100644 --- a/dispatchers/replicator_it_test.go +++ b/dispatchers/replicator_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/resources_it_test.go b/dispatchers/resources_it_test.go index e5fe1dbbe..32a425ecc 100644 --- a/dispatchers/resources_it_test.go +++ b/dispatchers/resources_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/routes_it_test.go b/dispatchers/routes_it_test.go index 68916d642..db78eca37 100644 --- a/dispatchers/routes_it_test.go +++ b/dispatchers/routes_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/sessions_it_test.go b/dispatchers/sessions_it_test.go index 482805926..054c1b259 100644 --- a/dispatchers/sessions_it_test.go +++ b/dispatchers/sessions_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/stats_it_test.go b/dispatchers/stats_it_test.go index 9fc285e76..8148931e8 100644 --- a/dispatchers/stats_it_test.go +++ b/dispatchers/stats_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/dispatchers/thresholds_it_test.go b/dispatchers/thresholds_it_test.go index 5ef9faf31..877deecce 100644 --- a/dispatchers/thresholds_it_test.go +++ b/dispatchers/thresholds_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ees/elastic_it_test.go b/ees/elastic_it_test.go index cfccda1fc..393e2a7a5 100644 --- a/ees/elastic_it_test.go +++ b/ees/elastic_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ees/filecsv_it_test.go b/ees/filecsv_it_test.go index f5061ba0e..cc1a4f360 100644 --- a/ees/filecsv_it_test.go +++ b/ees/filecsv_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ees/filefwv_it_test.go b/ees/filefwv_it_test.go index 655ac87df..011c868f8 100644 --- a/ees/filefwv_it_test.go +++ b/ees/filefwv_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ees/httppost_it_test.go b/ees/httppost_it_test.go index 4e58b8468..f8e86bb4c 100644 --- a/ees/httppost_it_test.go +++ b/ees/httppost_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ees/libcdre_it_test.go b/ees/libcdre_it_test.go index 16cefc67e..68d319792 100644 --- a/ees/libcdre_it_test.go +++ b/ees/libcdre_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ees/nats_it_test.go b/ees/nats_it_test.go index 55b1ef1d3..4360abe7e 100644 --- a/ees/nats_it_test.go +++ b/ees/nats_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ees/poster_it_test.go b/ees/poster_it_test.go index dd4c10194..868ee8af4 100644 --- a/ees/poster_it_test.go +++ b/ees/poster_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ees/posterjsonmap_it_test.go b/ees/posterjsonmap_it_test.go index f47d70033..9ccc8c4d7 100644 --- a/ees/posterjsonmap_it_test.go +++ b/ees/posterjsonmap_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ees/sql_it_test.go b/ees/sql_it_test.go index e9cf8a5bc..1e01b9043 100644 --- a/ees/sql_it_test.go +++ b/ees/sql_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ees/virtual_ee_it_test.go b/ees/virtual_ee_it_test.go index 45491b748..97122680f 100644 --- a/ees/virtual_ee_it_test.go +++ b/ees/virtual_ee_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/engine/cgrsafev.go b/engine/cgrsafev.go deleted file mode 100644 index e30a3c1e1..000000000 --- a/engine/cgrsafev.go +++ /dev/null @@ -1,46 +0,0 @@ -/* -Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments -Copyright (C) ITsysCOM GmbH - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOev. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see -*/ - -package engine - -import ( - "github.com/cgrates/cgrates/utils" -) - -func NewCGRSafEventFromCGREvent(cgrEv *utils.CGREvent) *CGRSafEvent { - return &CGRSafEvent{ - Tenant: cgrEv.Tenant, - ID: cgrEv.ID, - Event: NewSafEvent(cgrEv.Event), - } -} - -// CGRSafEvent is a safe CGREvent -type CGRSafEvent struct { - Tenant string - ID string - Event *SafEvent -} - -func (cgrSafEv *CGRSafEvent) AsCGREvent() *utils.CGREvent { - return &utils.CGREvent{ - Tenant: cgrSafEv.Tenant, - ID: cgrSafEv.ID, - Event: cgrSafEv.Event.AsMapInterface(), - } -} diff --git a/engine/safevent.go b/engine/safevent.go deleted file mode 100644 index b062e6ab6..000000000 --- a/engine/safevent.go +++ /dev/null @@ -1,251 +0,0 @@ -/* -Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments -Copyright (C) ITsysCOM GmbH - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see -*/ - -package engine - -import ( - "sync" - "time" - - "github.com/cgrates/cgrates/config" - "github.com/cgrates/cgrates/utils" -) - -func NewSafEvent(mp map[string]interface{}) *SafEvent { - return &SafEvent{Me: NewMapEvent(mp)} -} - -// SafEvent is a generic event which is safe to read/write from multiple goroutines -type SafEvent struct { - sync.RWMutex - Me MapEvent // need it exportable so we can pass it on network -} - -func (se *SafEvent) Clone() (cln *SafEvent) { - se.RLock() - cln = &SafEvent{Me: se.Me.Clone()} - se.RUnlock() - return -} - -// MapEvent offers access to MapEvent methods, avoiding locks -func (se *SafEvent) MapEvent() (mp MapEvent) { - return se.Me -} - -func (se *SafEvent) String() (out string) { - se.RLock() - out = se.Me.String() - se.RUnlock() - return -} - -func (se *SafEvent) FieldAsInterface(fldPath []string) (out interface{}, err error) { - se.RLock() - out, err = se.Me.FieldAsInterface(fldPath) - se.RUnlock() - return -} - -func (se *SafEvent) FieldAsString(fldPath []string) (out string, err error) { - se.RLock() - out, err = se.Me.FieldAsString(fldPath) - se.RUnlock() - return -} - -func (se *SafEvent) HasField(fldName string) (has bool) { - se.RLock() - has = se.Me.HasField(fldName) - se.RUnlock() - return -} - -func (se *SafEvent) Get(fldName string) (out interface{}, has bool) { - se.RLock() - out, has = se.Me[fldName] - se.RUnlock() - return -} - -func (se *SafEvent) GetIgnoreErrors(fldName string) (out interface{}) { - out, _ = se.Get(fldName) - return -} - -// Set will set a field's value -func (se *SafEvent) Set(fldName string, val interface{}) { - se.Lock() - se.Me[fldName] = val - se.Unlock() -} - -// Remove will remove a field from map -func (se *SafEvent) Remove(fldName string) { - se.Lock() - delete(se.Me, fldName) - se.Unlock() -} - -func (se *SafEvent) GetString(fldName string) (out string, err error) { - se.RLock() - out, err = se.Me.GetString(fldName) - se.RUnlock() - return -} - -func (se *SafEvent) GetTInt64(fldName string) (out int64, err error) { - se.RLock() - out, err = se.Me.GetTInt64(fldName) - se.RUnlock() - return -} - -func (se *SafEvent) GetStringIgnoreErrors(fldName string) (out string) { - out, _ = se.GetString(fldName) - return -} - -// GetDuration returns a field as Duration -func (se *SafEvent) GetDuration(fldName string) (d time.Duration, err error) { - se.RLock() - d, err = se.Me.GetDuration(fldName) - se.RUnlock() - return -} - -// GetDurationPointer returns pointer towards duration, useful to detect presence of duration -func (se *SafEvent) GetDurationOrDefault(fldName string, dflt time.Duration) (d time.Duration, err error) { - _, has := se.Get(fldName) - if !has { - return dflt, nil - } - return se.GetDuration(fldName) -} - -// GetDuration returns a field as Duration, ignoring errors -func (se *SafEvent) GetDurationIgnoreErrors(fldName string) (d time.Duration) { - d, _ = se.GetDuration(fldName) - return -} - -// GetDurationPointer returns pointer towards duration, useful to detect presence of duration -func (se *SafEvent) GetDurationPtr(fldName string) (d *time.Duration, err error) { - fldIface, has := se.Get(fldName) - if !has { - return nil, utils.ErrNotFound - } - var dReal time.Duration - if dReal, err = utils.IfaceAsDuration(fldIface); err != nil { - return - } - return &dReal, nil -} - -// GetDurationPointer returns pointer towards duration, useful to detect presence of duration -func (se *SafEvent) GetDurationPtrIgnoreErrors(fldName string) (d *time.Duration) { - d, _ = se.GetDurationPtr(fldName) - return -} - -// GetDurationPointer returns pointer towards duration, useful to detect presence of duration -func (se *SafEvent) GetDurationPtrOrDefault(fldName string, dflt *time.Duration) (d *time.Duration, err error) { - fldIface, has := se.Get(fldName) - if !has { - return dflt, nil - } - var dReal time.Duration - if dReal, err = utils.IfaceAsDuration(fldIface); err != nil { - return - } - return &dReal, nil -} - -// GetTime returns a field as Time -func (se *SafEvent) GetTime(fldName string, tmz string) (t time.Time, err error) { - se.RLock() - t, err = se.Me.GetTime(fldName, tmz) - se.RUnlock() - return -} - -// GetTimeIgnoreErrors returns a field as Time instance, ignoring errors -func (se *SafEvent) GetTimeIgnoreErrors(fldName string, tmz string) (t time.Time) { - t, _ = se.GetTime(fldName, tmz) - return -} - -// GetSet will attempt to get a field value -// if field not present set it to the value received as parameter -func (se *SafEvent) GetSetString(fldName string, setVal string) (out string, err error) { - se.Lock() - defer se.Unlock() - outIface, has := se.Me[fldName] - if !has { - se.Me[fldName] = setVal - out = setVal - return - } - // should be present, return it as string - return utils.IfaceAsString(outIface), nil -} - -// GetMapInterface returns the map stored internally without cloning it -func (se *SafEvent) GetMapInterface() (mp map[string]interface{}) { - se.RLock() - mp = se.Me - se.RUnlock() - return -} - -// AsMapInterface returns the cloned map stored internally -func (se *SafEvent) AsMapInterface() (mp map[string]interface{}) { - se.RLock() - mp = se.Me.Clone() - se.RUnlock() - return -} - -// AsMapString returns a map[string]string out of mp, ignoring specific fields if needed -// most used when needing to export extraFields -func (se *SafEvent) AsMapString(ignoredFlds utils.StringSet) (mp map[string]string) { - se.RLock() - mp = se.Me.AsMapString(ignoredFlds) - se.RUnlock() - return -} - -// AsCDR exports the SafEvent as CDR -func (se *SafEvent) AsCDR(cfg *config.CGRConfig, tnt, tmz string) (cdr *CDR, err error) { - se.RLock() - cdr, err = se.Me.AsCDR(cfg, tnt, tmz) - se.RUnlock() - return -} - -// AsCGREvent exports the SafEvent as CGREvent -func (se *SafEvent) AsCGREvent(tnt string) (cgrEv *utils.CGREvent) { - se.RLock() - cgrEv = &utils.CGREvent{ - Tenant: tnt, - ID: utils.UUIDSha1Prefix(), - Event: se.Me.Data(), - } - se.RUnlock() - return -} diff --git a/engine/safevent_test.go b/engine/safevent_test.go deleted file mode 100644 index 209ba7f80..000000000 --- a/engine/safevent_test.go +++ /dev/null @@ -1,800 +0,0 @@ -/* -Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments -Copyright (C) ITsysCOM GmbH - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see -*/ -package engine - -import ( - "reflect" - "testing" - "time" - - "github.com/cgrates/cgrates/config" - "github.com/cgrates/cgrates/utils" -) - -var sMap = map[string]interface{}{ - "test1": nil, - "test2": 42, - "test3": 42.3, - "test4": true, - "test5": "test", - "test6": 10 * time.Second, - "test7": "42s", - "test8": time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC), - "test9": "2009-11-10T23:00:00Z", -} -var safEv = &SafEvent{Me: NewMapEvent(sMap)} - -func TestSafEventNewSafEvent(t *testing.T) { - if rply := NewSafEvent(sMap); !reflect.DeepEqual(safEv, rply) { - t.Errorf("Expecting %+v, received: %+v", safEv, rply) - } -} - -func TestSafEventMapEvent(t *testing.T) { - expected := NewMapEvent(sMap) - if rply := safEv.MapEvent(); !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventFieldAsInterface(t *testing.T) { - data := utils.DataProvider(safEv) - if _, err := data.FieldAsInterface([]string{"first", "second"}); err != utils.ErrNotFound { - t.Error(err) - } - if _, err := data.FieldAsInterface([]string{"first"}); err != utils.ErrNotFound { - t.Error(err) - } - if rply, err := data.FieldAsInterface([]string{"test1"}); err != nil { - t.Error(err) - } else if rply != nil { - t.Errorf("Expecting %+v, received: %+v", nil, rply) - } - if rply, err := data.FieldAsInterface([]string{"test4"}); err != nil { - t.Error(err) - } else if expected := true; rply != expected { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventFieldAsString(t *testing.T) { - data := utils.DataProvider(safEv) - if _, err := data.FieldAsString([]string{"first", "second"}); err != utils.ErrNotFound { - t.Error(err) - } - if _, err := data.FieldAsString([]string{"first"}); err != utils.ErrNotFound { - t.Error(err) - } - if rply, err := data.FieldAsString([]string{"test1"}); err != nil { - t.Error(err) - } else if rply != "" { - t.Errorf("Expecting %+v, received: %+v", "", rply) - } - if rply, err := data.FieldAsString([]string{"test4"}); err != nil { - t.Error(err) - } else if expected := "true"; rply != expected { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventClone(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("clone", func(t *testing.T) { - t.Parallel() - safEv.Clone() - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test4", true) - }) - } - rply := safEv.Clone() - if !reflect.DeepEqual(safEv, rply) { - t.Errorf("Expecting %+v, received: %+v", safEv, rply) - } - rply.Set("test4", false) - if reflect.DeepEqual(safEv, rply) { - t.Errorf("Expecting %+v, received: %+v", safEv, rply) - } -} - -func TestSafEventString(t *testing.T) { - expected := safEv.Me.String() - if rply := safEv.String(); !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - se := safEv.Clone() - for i := 0; i < 10; i++ { - t.Run("string", func(t *testing.T) { - t.Parallel() - _ = se.String() - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - se.Remove("test4") - }) - } - se.Remove("test5") - expected = se.Me.String() - if rply := se.String(); !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventHasField(t *testing.T) { - if rply := safEv.HasField("test4"); !rply { - t.Errorf("Expecting true, received: %+v", rply) - } - se := safEv.Clone() - for i := 0; i < 10; i++ { - t.Run("field", func(t *testing.T) { - t.Parallel() - se.HasField("test4") - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - se.Remove("test4") - }) - } - se.Remove("test5") - if rply := se.HasField("test5"); rply { - t.Errorf("Expecting false, received: %+v", rply) - } -} - -func TestSafEventGet(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("get", func(t *testing.T) { - t.Parallel() - safEv.Get("test4") - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test4", true) - }) - } - safEv.Remove("test4") - if rply, has := safEv.Get("test4"); has { - t.Errorf("Expecting 'test4' to not be a field, received: %+v", rply) - } - safEv.Set("test4", false) - if rply, has := safEv.Get("test4"); !has { - t.Errorf("Expecting 'test4' to be a field") - } else if rply != false { - t.Errorf("Expecting false, received: %+v", rply) - } - safEv.Set("test4", true) - if rply, has := safEv.Get("test4"); !has { - t.Errorf("Expecting 'test4' to be a field") - } else if rply != true { - t.Errorf("Expecting true, received: %+v", rply) - } -} - -func TestSafEventGetIgnoreErrors(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("getIgnore", func(t *testing.T) { - t.Parallel() - safEv.GetIgnoreErrors("test4") - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test4", true) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test4") - }) - } - safEv.Remove("test4") - if rply := safEv.GetIgnoreErrors("test4"); rply != nil { - t.Errorf("Expecting: null, received: %+v", rply) - } - safEv.Set("test4", false) - if rply := safEv.GetIgnoreErrors("test4"); rply != false { - t.Errorf("Expecting false, received: %+v", rply) - } - safEv.Set("test4", true) - if rply := safEv.GetIgnoreErrors("test4"); rply != true { - t.Errorf("Expecting true, received: %+v", rply) - } -} - -func TestSafEventGetString(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("getString", func(t *testing.T) { - t.Parallel() - if _, err := safEv.GetString("test4"); err != nil && err != utils.ErrNotFound { - t.Error(err) - } - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test4", true) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test4") - }) - } - safEv.Remove("test2") - if _, err := safEv.GetString("test2"); err != utils.ErrNotFound { - t.Errorf("Expecting: %+v ,received: %+v", utils.ErrNotFound, err) - } - safEv.Set("test2", 42.3) - if rply, err := safEv.GetString("test2"); err != nil { - t.Error(err) - } else if rply != "42.3" { - t.Errorf("Expecting 42.3, received: %+v", rply) - } - safEv.Set("test2", 42) - if rply, err := safEv.GetString("test2"); err != nil { - t.Error(err) - } else if rply != "42" { - t.Errorf("Expecting 42, received: %+v", rply) - } -} - -func TestSafEventGetStringIgnoreErrors(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("getStringIgn", func(t *testing.T) { - t.Parallel() - safEv.GetStringIgnoreErrors("test4") - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test4", true) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test4") - }) - } - safEv.Remove("test2") - if rply := safEv.GetStringIgnoreErrors("test2"); rply != "" { - t.Errorf("Expecting: ,received: %+v", err) - } - safEv.Set("test2", 42.3) - if rply := safEv.GetStringIgnoreErrors("test2"); rply != "42.3" { - t.Errorf("Expecting 42.3, received: %+v", rply) - } - safEv.Set("test2", 42) - if rply := safEv.GetStringIgnoreErrors("test2"); rply != "42" { - t.Errorf("Expecting 42, received: %+v", rply) - } -} - -func TestSafEventGetDuration(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("getDuration", func(t *testing.T) { - t.Parallel() - if _, err := safEv.GetDuration("test6"); err != nil && err != utils.ErrNotFound { - t.Error(err) - } - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test6", 10*time.Second) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test6") - }) - } - safEv.Remove("test7") - if _, err := safEv.GetDuration("test7"); err != utils.ErrNotFound { - t.Errorf("Expecting: %+v ,received: %+v", utils.ErrNotFound, err) - } - if rply, err := safEv.GetDuration("test5"); err == nil { - t.Errorf("Expecting: error,received: %+v", rply) - } - safEv.Set("test7", "42s") - expected := 42 * time.Second - if rply, err := safEv.GetDuration("test7"); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - expected = 10 * time.Second - safEv.Set("test6", expected) - if rply, err := safEv.GetDuration("test6"); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventGetDurationIgnoreErrors(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("getDurationIgn", func(t *testing.T) { - t.Parallel() - safEv.GetDurationIgnoreErrors("test6") - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test6", 10*time.Second) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test6") - }) - } - safEv.Remove("test7") - if rply := safEv.GetDurationIgnoreErrors("test7"); rply != 0 { - t.Errorf("Expecting: %+v ,received: %+v", 0, rply) - } - safEv.Set("test7", "42s") - expected := 42 * time.Second - if rply := safEv.GetDurationIgnoreErrors("test7"); !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - expected = 10 * time.Second - safEv.Set("test6", expected) - if rply := safEv.GetDurationIgnoreErrors("test6"); !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventGetDurationPtr(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("getDurationPtr", func(t *testing.T) { - t.Parallel() - if _, err := safEv.GetDurationPtr("test6"); err != nil && err != utils.ErrNotFound { - t.Error(err) - } - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test6", 10*time.Second) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test6") - }) - } - safEv.Remove("test7") - if _, err := safEv.GetDurationPtr("test7"); err != utils.ErrNotFound { - t.Errorf("Expecting: %+v ,received: %+v", utils.ErrNotFound, err) - } - if rply, err := safEv.GetDurationPtr("test5"); err == nil { - t.Errorf("Expecting: error,received: %+v", rply) - } - safEv.Set("test7", "42s") - expected := 42 * time.Second - if rply, err := safEv.GetDurationPtr("test7"); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(&expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - expected = 10 * time.Second - safEv.Set("test6", expected) - if rply, err := safEv.GetDurationPtr("test6"); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(&expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventGetDurationPtrOrDefault(t *testing.T) { - def := 450 * time.Nanosecond - for i := 0; i < 10; i++ { - t.Run("getDurationPtrDef", func(t *testing.T) { - t.Parallel() - if _, err := safEv.GetDurationPtrOrDefault("test6", &def); err != nil { - t.Error(err) - } - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test6", 10*time.Second) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test6") - }) - } - safEv.Remove("test7") - if rply, err := safEv.GetDurationPtrOrDefault("test7", &def); err != nil { - t.Errorf("Expecting: %+v ,received: %+v", utils.ErrNotFound, err) - } else if !reflect.DeepEqual(&def, rply) { - t.Errorf("Expecting %+v, received: %+v", def, rply) - } - if rply, err := safEv.GetDurationPtrOrDefault("test5", &def); err == nil { - t.Errorf("Expecting: error,received: %+v", rply) - } - safEv.Set("test7", "42s") - expected := 42 * time.Second - if rply, err := safEv.GetDurationPtrOrDefault("test7", &def); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(&expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - expected = 10 * time.Second - safEv.Set("test6", expected) - if rply, err := safEv.GetDurationPtrOrDefault("test6", &def); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(&expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventGetTime(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("getTime", func(t *testing.T) { - t.Parallel() - if _, err := safEv.GetTime("test8", ""); err != nil && err != utils.ErrNotFound { - t.Error(err) - } - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test8", time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC)) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test8") - }) - } - safEv.Remove("test9") - if _, err := safEv.GetTime("test9", ""); err != utils.ErrNotFound { - t.Errorf("Expecting: %+v ,received: %+v", utils.ErrNotFound, err) - } - if rply, err := safEv.GetTime("test5", ""); err == nil { - t.Errorf("Expecting: error,received: %+v", rply) - } - safEv.Set("test9", "2010-11-10T23:00:00Z") - expected := time.Date(2010, 11, 10, 23, 0, 0, 0, time.UTC) - if rply, err := safEv.GetTime("test9", ""); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - expected = time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC) - safEv.Set("test8", expected) - if rply, err := safEv.GetTime("test8", ""); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventGetTimeIgnoreErrors(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("getTimeIgn", func(t *testing.T) { - t.Parallel() - safEv.GetTimeIgnoreErrors("test8", "") - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test8", time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC)) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test8") - }) - } - safEv.Remove("test9") - if rply := safEv.GetTimeIgnoreErrors("test9", ""); !rply.IsZero() { - t.Errorf("Expecting January 1, year 1, 00:00:00.000000000 UTC, received: %+v", rply) - } - if rply := safEv.GetTimeIgnoreErrors("test5", ""); !rply.IsZero() { - t.Errorf("Expecting January 1, year 1, 00:00:00.000000000 UTC, received: %+v", rply) - } - safEv.Set("test9", "2010-11-10T23:00:00Z") - expected := time.Date(2010, 11, 10, 23, 0, 0, 0, time.UTC) - if rply := safEv.GetTimeIgnoreErrors("test9", ""); !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - expected = time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC) - safEv.Set("test8", expected) - if rply := safEv.GetTimeIgnoreErrors("test8", ""); !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventGetSetString(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("getSetString", func(t *testing.T) { - t.Parallel() - safEv.GetSetString("test4", "true") - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test4") - }) - } - safEv.Remove("test2") - expected := "test2" - if rply, err := safEv.GetSetString("test2", expected); err != nil { - t.Error(err) - } else if rply != expected { - t.Errorf("Expecting: %+v ,received: %+v", expected, rply) - } - safEv.Set("test2", 42.3) - if rply, err := safEv.GetSetString("test2", ""); err != nil { - t.Error(err) - } else if rply != "42.3" { - t.Errorf("Expecting 42.3, received: %+v", rply) - } - safEv.Set("test2", 42) - if rply, err := safEv.GetSetString("test2", "test"); err != nil { - t.Error(err) - } else if rply != "42" { - t.Errorf("Expecting 42, received: %+v", rply) - } -} - -func TestSafEventGetMapInterface(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("getMapInt", func(t *testing.T) { - t.Parallel() - safEv.GetMapInterface() - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test8", time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC)) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test8") - }) - } - safEv.Remove("test8") - if rply := safEv.GetMapInterface(); !reflect.DeepEqual(sMap, rply) { - t.Errorf("Expecting %+v, received: %+v", sMap, rply) - } - safEv.Set("test8", time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC)) - if rply := safEv.GetMapInterface(); !reflect.DeepEqual(sMap, rply) { - t.Errorf("Expecting %+v, received: %+v", sMap, rply) - } -} - -func TestSafEventAsMapInterface(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("asMapInt", func(t *testing.T) { - t.Parallel() - safEv.AsMapInterface() - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test8", time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC)) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test8") - }) - } - safEv.Set("test8", time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC)) - rply := safEv.AsMapInterface() - if !reflect.DeepEqual(sMap, rply) { - t.Errorf("Expecting %+v, received: %+v", sMap, rply) - } - safEv.Remove("test8") - if reflect.DeepEqual(sMap, rply) { - t.Errorf("Expecting not be %+v, received: %+v", sMap, rply) - } - safEv.Set("test8", time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC)) -} - -func TestSafEventAsMapString(t *testing.T) { - for i := 0; i < 10; i++ { - t.Run("asMapStr", func(t *testing.T) { - t.Parallel() - safEv.AsMapString(nil) - }) - t.Run("set", func(t *testing.T) { - t.Parallel() - safEv.Set("test9", true) - }) - t.Run("remove", func(t *testing.T) { - t.Parallel() - safEv.Remove("test9") - }) - } - expected := safEv.Me.AsMapString(nil) - if rply := safEv.AsMapString(nil); !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - delete(expected, "test1") - if rply := safEv.AsMapString(utils.NewStringSet([]string{"test1"})); !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventAsCDR(t *testing.T) { - se := SafEvent{Me: NewMapEvent(nil)} - expected := &CDR{Cost: -1.0, ExtraFields: make(map[string]string)} - if rply, err := se.AsCDR(nil, utils.EmptyString, utils.EmptyString); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - cfg := config.NewDefaultCGRConfig() - if err != nil { - t.Errorf("Error: %+v", err) - } - expected = &CDR{ - CGRID: "da39a3ee5e6b4b0d3255bfef95601890afd80709", - Cost: -1.0, - RunID: utils.MetaDefault, - ToR: utils.MetaVoice, - RequestType: cfg.GeneralCfg().DefaultReqType, - Tenant: cfg.GeneralCfg().DefaultTenant, - Category: cfg.GeneralCfg().DefaultCategory, - ExtraFields: make(map[string]string), - } - if rply, err := se.AsCDR(cfg, utils.EmptyString, utils.EmptyString); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - se = SafEvent{Me: MapEvent{"SetupTime": "clearly not time string"}} - if _, err := se.AsCDR(nil, utils.EmptyString, utils.EmptyString); err == nil { - t.Errorf("Expecting not null error, received: null error") - } - se = SafEvent{Me: MapEvent{"AnswerTime": "clearly not time string"}} - if _, err := se.AsCDR(nil, utils.EmptyString, utils.EmptyString); err == nil { - t.Errorf("Expecting not null error, received: null error") - } - se = SafEvent{Me: MapEvent{"Usage": "clearly not duration string"}} - if _, err := se.AsCDR(nil, utils.EmptyString, utils.EmptyString); err == nil { - t.Errorf("Expecting not null error, received: null error") - } - se = SafEvent{Me: MapEvent{"Partial": "clearly not bool string"}} - if _, err := se.AsCDR(nil, utils.EmptyString, utils.EmptyString); err == nil { - t.Errorf("Expecting not null error, received: null error") - } - se = SafEvent{Me: MapEvent{"PreRated": "clearly not bool string"}} - if _, err := se.AsCDR(nil, utils.EmptyString, utils.EmptyString); err == nil { - t.Errorf("Expecting not null error, received: null error") - } - se = SafEvent{Me: MapEvent{"Cost": "clearly not float64 string"}} - if _, err := se.AsCDR(nil, utils.EmptyString, utils.EmptyString); err == nil { - t.Errorf("Expecting not null error, received: null error") - } - se = SafEvent{Me: MapEvent{"ExtraField1": 5, "ExtraField2": "extra"}} - expected = &CDR{ - Cost: -1.0, - ExtraFields: map[string]string{ - "ExtraField1": "5", - "ExtraField2": "extra", - }} - if rply, err := se.AsCDR(nil, utils.EmptyString, utils.EmptyString); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - se = SafEvent{Me: MapEvent{ - "ExtraField1": 5, - "Source": 1001, - "CostSource": "1002", - "ExtraField2": "extra", - }} - expected = &CDR{ - CGRID: "da39a3ee5e6b4b0d3255bfef95601890afd80709", - Cost: -1.0, - Source: "1001", - CostSource: "1002", - ExtraFields: map[string]string{ - "ExtraField1": "5", - "ExtraField2": "extra", - }, - RunID: utils.MetaDefault, - ToR: utils.MetaVoice, - RequestType: cfg.GeneralCfg().DefaultReqType, - Tenant: cfg.GeneralCfg().DefaultTenant, - Category: cfg.GeneralCfg().DefaultCategory, - } - if rply, err := se.AsCDR(cfg, utils.EmptyString, utils.EmptyString); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - se = SafEvent{Me: MapEvent{ - "ExtraField1": 5, - "Source": 1001, - "CostSource": "1002", - "ExtraField2": "extra", - "SetupTime": "2009-11-10T23:00:00Z", - "Usage": "42s", - "PreRated": "True", - "Cost": "42.3", - }} - expected = &CDR{ - CGRID: "da39a3ee5e6b4b0d3255bfef95601890afd80709", - Tenant: "itsyscom.com", - Cost: 42.3, - Source: "1001", - CostSource: "1002", - PreRated: true, - Usage: 42 * time.Second, - SetupTime: time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC), - ExtraFields: map[string]string{ - "ExtraField1": "5", - "ExtraField2": "extra", - }, - RunID: utils.MetaDefault, - ToR: utils.MetaVoice, - RequestType: cfg.GeneralCfg().DefaultReqType, - Category: cfg.GeneralCfg().DefaultCategory, - } - if rply, err := se.AsCDR(cfg, "itsyscom.com", utils.EmptyString); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } -} - -func TestSafEventGetTInt64(t *testing.T) { - if rply, err := safEv.GetTInt64("test2"); err != nil { - t.Error(err) - } else if rply != int64(42) { - t.Errorf("Expecting %+v, received: %+v", int64(42), rply) - } - - if rply, err := safEv.GetTInt64("test3"); err != nil { - t.Error(err) - } else if rply != int64(42) { - t.Errorf("Expecting %+v, received: %+v", int64(42), rply) - } - - if rply, err := safEv.GetTInt64("test4"); err == nil { - t.Errorf("Expecting error, received: %+v with error %v", rply, err) - } - - if rply, err := safEv.GetTInt64("0test"); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expecting error: %v, received: %+v with error %v", utils.ErrNotFound, rply, err) - } -} - -func TestSafEventGetDurationPtrIgnoreErrors(t *testing.T) { - safEv = &SafEvent{Me: NewMapEvent(sMap)} - if rply := safEv.GetDurationPtrIgnoreErrors("test"); rply != nil { - t.Errorf("Expected: %+v, received: %+v", nil, rply) - } - // expected := utils.DurationPointer(10*Second) - // if rply := safEv.GetDurationPtrIgnoreErrors("test6"); rply == nil || *rply != *expected { - // t.Errorf("Expected: %+v, received: %+v", expected, rply) - // } - expected := utils.DurationPointer(42 * time.Second) - if rply := safEv.GetDurationPtrIgnoreErrors("test7"); rply == nil || *rply != *expected { - t.Errorf("Expected: %+v, received: %+v", expected, rply) - } - expected = utils.DurationPointer(42) - if rply := safEv.GetDurationPtrIgnoreErrors("test2"); rply == nil || *rply != *expected { - t.Errorf("Expected: %+v, received: %+v", expected, rply) - } -} - -func TestSafEventGetDurationOrDefault(t *testing.T) { - safEv.Remove("test7") - expected := 10 * time.Second - if rply, err := safEv.GetDurationOrDefault("test7", 10*time.Second); err != nil { - t.Error(err) - } else if rply != expected { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - safEv.Set("test7", "42s") - expected = 42 * time.Second - if rply, err := safEv.GetDurationOrDefault("test7", time.Second); err != nil { - t.Error(err) - } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expecting %+v, received: %+v", expected, rply) - } - -} diff --git a/engine/z_actions2_it_test.go b/engine/z_actions2_it_test.go index f83de83f0..32ec26703 100644 --- a/engine/z_actions2_it_test.go +++ b/engine/z_actions2_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/engine/z_actions_it_test.go b/engine/z_actions_it_test.go index 67cbc46da..ac0e905d4 100644 --- a/engine/z_actions_it_test.go +++ b/engine/z_actions_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/engine/z_datamanager_it_test.go b/engine/z_datamanager_it_test.go index de181dd57..8e32a48c4 100644 --- a/engine/z_datamanager_it_test.go +++ b/engine/z_datamanager_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/engine/z_filterindexer_it_test.go b/engine/z_filterindexer_it_test.go index f229a3795..f6cc527e3 100644 --- a/engine/z_filterindexer_it_test.go +++ b/engine/z_filterindexer_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/engine/z_loader_it_test.go b/engine/z_loader_it_test.go index 1edbdf60d..2c3cf514b 100644 --- a/engine/z_loader_it_test.go +++ b/engine/z_loader_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/engine/z_onstor_it_test.go b/engine/z_onstor_it_test.go index cfcf9002c..ee5b4d963 100644 --- a/engine/z_onstor_it_test.go +++ b/engine/z_onstor_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/engine/z_storage_cdrs_it_test.go b/engine/z_storage_cdrs_it_test.go index 5f42de50e..00c0284d4 100644 --- a/engine/z_storage_cdrs_it_test.go +++ b/engine/z_storage_cdrs_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/engine/z_stordb_it_test.go b/engine/z_stordb_it_test.go index e6448bcbe..efc1b2c19 100644 --- a/engine/z_stordb_it_test.go +++ b/engine/z_stordb_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/engine/z_versions_it_test.go b/engine/z_versions_it_test.go index 9ee492773..6fb0f2245 100644 --- a/engine/z_versions_it_test.go +++ b/engine/z_versions_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/amqp_it_test.go b/ers/amqp_it_test.go index c84fc0118..4449d2b3f 100644 --- a/ers/amqp_it_test.go +++ b/ers/amqp_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/amqpv1_it_test.go b/ers/amqpv1_it_test.go index cef1f2697..d3bae4360 100644 --- a/ers/amqpv1_it_test.go +++ b/ers/amqpv1_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/ers_it_test.go b/ers/ers_it_test.go index 14381ba68..3f2881a84 100644 --- a/ers/ers_it_test.go +++ b/ers/ers_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/ers_reload_it_test.go b/ers/ers_reload_it_test.go index e9360e921..bb2fa8b83 100644 --- a/ers/ers_reload_it_test.go +++ b/ers/ers_reload_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/filecsv_it_test.go b/ers/filecsv_it_test.go index ea08571f9..12dabfa7d 100644 --- a/ers/filecsv_it_test.go +++ b/ers/filecsv_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/filefwv_it_test.go b/ers/filefwv_it_test.go index 4a7066fde..d7dd550cd 100644 --- a/ers/filefwv_it_test.go +++ b/ers/filefwv_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/filejson_it_test.go b/ers/filejson_it_test.go index ff3c364ac..dfc7f0516 100644 --- a/ers/filejson_it_test.go +++ b/ers/filejson_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/filexml_it_test.go b/ers/filexml_it_test.go index 2114f8c56..a4b0c3b49 100644 --- a/ers/filexml_it_test.go +++ b/ers/filexml_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/flatstore_it_test.go b/ers/flatstore_it_test.go index d9e05098a..e9955db60 100644 --- a/ers/flatstore_it_test.go +++ b/ers/flatstore_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/kafka_it_test.go b/ers/kafka_it_test.go index 796d0ac3b..9ca50332b 100644 --- a/ers/kafka_it_test.go +++ b/ers/kafka_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/nats_it_test.go b/ers/nats_it_test.go index d41ab4845..26fc5d24d 100644 --- a/ers/nats_it_test.go +++ b/ers/nats_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/partial_csv_it_test.go b/ers/partial_csv_it_test.go index 81e99196f..3e74c7cb8 100644 --- a/ers/partial_csv_it_test.go +++ b/ers/partial_csv_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/s3_it_test.go b/ers/s3_it_test.go index 6d1a10328..34b3913fe 100644 --- a/ers/s3_it_test.go +++ b/ers/s3_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/sql_it_test.go b/ers/sql_it_test.go index aafacaf60..0cca7004e 100644 --- a/ers/sql_it_test.go +++ b/ers/sql_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/ers/sqs_it_test.go b/ers/sqs_it_test.go index 647f532c3..2938d2222 100644 --- a/ers/sqs_it_test.go +++ b/ers/sqs_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/a1_it_test.go b/general_tests/a1_it_test.go index 6a0652bb0..920cfc717 100644 --- a/general_tests/a1_it_test.go +++ b/general_tests/a1_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/accountactions_it_test.go b/general_tests/accountactions_it_test.go index 5354c8257..3324f5e8f 100644 --- a/general_tests/accountactions_it_test.go +++ b/general_tests/accountactions_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/accounts_it_test.go b/general_tests/accounts_it_test.go index 187aff13e..4488fefc2 100644 --- a/general_tests/accounts_it_test.go +++ b/general_tests/accounts_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/all_cfg_rld_it_test.go b/general_tests/all_cfg_rld_it_test.go index 9ca5869f1..5be81fb5c 100644 --- a/general_tests/all_cfg_rld_it_test.go +++ b/general_tests/all_cfg_rld_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/all_sections_cfg_rld_it_test.go b/general_tests/all_sections_cfg_rld_it_test.go index 9e0c3adb6..430f55d95 100644 --- a/general_tests/all_sections_cfg_rld_it_test.go +++ b/general_tests/all_sections_cfg_rld_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/attributes_filters_index_it_test.go b/general_tests/attributes_filters_index_it_test.go index f6fdcc310..15b6ad78c 100644 --- a/general_tests/attributes_filters_index_it_test.go +++ b/general_tests/attributes_filters_index_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/attributes_it_test.go b/general_tests/attributes_it_test.go index 7a1065ffc..78383cedd 100644 --- a/general_tests/attributes_it_test.go +++ b/general_tests/attributes_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/broadcast_client_it_test.go b/general_tests/broadcast_client_it_test.go index 4dbbff87f..821e60572 100644 --- a/general_tests/broadcast_client_it_test.go +++ b/general_tests/broadcast_client_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/cacherpl_it_test.go b/general_tests/cacherpl_it_test.go index 941c51490..0549fcd1a 100644 --- a/general_tests/cacherpl_it_test.go +++ b/general_tests/cacherpl_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/cdrs_exp_it_test.go b/general_tests/cdrs_exp_it_test.go index f3550c382..71500c8e8 100644 --- a/general_tests/cdrs_exp_it_test.go +++ b/general_tests/cdrs_exp_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/cdrs_internal_it_test.go b/general_tests/cdrs_internal_it_test.go index 1745772ec..35ed37acd 100644 --- a/general_tests/cdrs_internal_it_test.go +++ b/general_tests/cdrs_internal_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/cdrs_it_test.go b/general_tests/cdrs_it_test.go index d397fa332..53a9c7a63 100644 --- a/general_tests/cdrs_it_test.go +++ b/general_tests/cdrs_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/cdrs_onlexp_it_test.go b/general_tests/cdrs_onlexp_it_test.go index 504fc2d99..002f1e6e5 100644 --- a/general_tests/cdrs_onlexp_it_test.go +++ b/general_tests/cdrs_onlexp_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/cdrs_post_failover_it_test.go b/general_tests/cdrs_post_failover_it_test.go index 159664564..8bba19a72 100644 --- a/general_tests/cdrs_post_failover_it_test.go +++ b/general_tests/cdrs_post_failover_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/cdrs_processevent_it_test.go b/general_tests/cdrs_processevent_it_test.go index f1a3fa973..172446d32 100644 --- a/general_tests/cdrs_processevent_it_test.go +++ b/general_tests/cdrs_processevent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/cgrloader_it_test.go b/general_tests/cgrloader_it_test.go index 867208e23..0d493467c 100644 --- a/general_tests/cgrloader_it_test.go +++ b/general_tests/cgrloader_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/data_it_test.go b/general_tests/data_it_test.go index 99472b7be..aa172e6cf 100644 --- a/general_tests/data_it_test.go +++ b/general_tests/data_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/doubleremove_it_test.go b/general_tests/doubleremove_it_test.go index a76ba3d7a..ee26347a5 100644 --- a/general_tests/doubleremove_it_test.go +++ b/general_tests/doubleremove_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/export_it_test.go b/general_tests/export_it_test.go index 854751d60..b9328bfe2 100644 --- a/general_tests/export_it_test.go +++ b/general_tests/export_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/filter_update_it_test.go b/general_tests/filter_update_it_test.go index 2ae64ece8..398462839 100644 --- a/general_tests/filter_update_it_test.go +++ b/general_tests/filter_update_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/filtered_replication_it_test.go b/general_tests/filtered_replication_it_test.go index 95083fccd..a89f66e2c 100644 --- a/general_tests/filtered_replication_it_test.go +++ b/general_tests/filtered_replication_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/filters_it_test.go b/general_tests/filters_it_test.go index 752f86a75..ce0fb1122 100644 --- a/general_tests/filters_it_test.go +++ b/general_tests/filters_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/gocs_it_test.go b/general_tests/gocs_it_test.go index b70539544..7c40e1145 100644 --- a/general_tests/gocs_it_test.go +++ b/general_tests/gocs_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/oldtutorial_it_test.go b/general_tests/oldtutorial_it_test.go index 197e8c9c8..aa0e53880 100644 --- a/general_tests/oldtutorial_it_test.go +++ b/general_tests/oldtutorial_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration // /* diff --git a/general_tests/poster_it_test.go b/general_tests/poster_it_test.go index f77316e30..2ee14b56e 100644 --- a/general_tests/poster_it_test.go +++ b/general_tests/poster_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/redis_cluster_it_test.go b/general_tests/redis_cluster_it_test.go index f590f8d25..39065f2ef 100644 --- a/general_tests/redis_cluster_it_test.go +++ b/general_tests/redis_cluster_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/redis_tls_it_test.go b/general_tests/redis_tls_it_test.go index 4aabc9edf..909cecbab 100644 --- a/general_tests/redis_tls_it_test.go +++ b/general_tests/redis_tls_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/resourcesv1_it_test.go b/general_tests/resourcesv1_it_test.go index de828dc6c..f01b94073 100644 --- a/general_tests/resourcesv1_it_test.go +++ b/general_tests/resourcesv1_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/route_it_test.go b/general_tests/route_it_test.go index eea330f23..55e827908 100644 --- a/general_tests/route_it_test.go +++ b/general_tests/route_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/rpccaching_it_test.go b/general_tests/rpccaching_it_test.go index 15c5d8175..292f7eeb4 100644 --- a/general_tests/rpccaching_it_test.go +++ b/general_tests/rpccaching_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/rpcclient_it_test.go b/general_tests/rpcclient_it_test.go index dba18c9e4..718f08c4e 100644 --- a/general_tests/rpcclient_it_test.go +++ b/general_tests/rpcclient_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/sentinel_it_test.go b/general_tests/sentinel_it_test.go index 27e26e799..5bd369a2c 100644 --- a/general_tests/sentinel_it_test.go +++ b/general_tests/sentinel_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/session2_it_test.go b/general_tests/session2_it_test.go index e6086fe5f..e40807646 100644 --- a/general_tests/session2_it_test.go +++ b/general_tests/session2_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/session3_it_test.go b/general_tests/session3_it_test.go index c8d8a5490..852d8710a 100644 --- a/general_tests/session3_it_test.go +++ b/general_tests/session3_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/session4_it_test.go b/general_tests/session4_it_test.go index 25b764069..a2e6b8223 100644 --- a/general_tests/session4_it_test.go +++ b/general_tests/session4_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/session_graceful_shutdown_it_test.go b/general_tests/session_graceful_shutdown_it_test.go index 756762333..b32536e54 100644 --- a/general_tests/session_graceful_shutdown_it_test.go +++ b/general_tests/session_graceful_shutdown_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/session_it_test.go b/general_tests/session_it_test.go index 657eb8f71..e4b12f49b 100644 --- a/general_tests/session_it_test.go +++ b/general_tests/session_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/session_nonereq_it_test.go b/general_tests/session_nonereq_it_test.go index 4ab284147..9ea644ba7 100644 --- a/general_tests/session_nonereq_it_test.go +++ b/general_tests/session_nonereq_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* @@ -141,7 +142,7 @@ func testSesNoneReqTypeItInit(t *testing.T) { utils.Usage: 10 * time.Second, }, APIOpts: map[string]interface{}{ - utils.OptsDebitInterval: "0s", + utils.OptsSessionsDebitInterval: "0s", }, }, } diff --git a/general_tests/session_replications_automaticdebit_it_test.go b/general_tests/session_replications_automaticdebit_it_test.go index 19009f488..e141b080b 100644 --- a/general_tests/session_replications_automaticdebit_it_test.go +++ b/general_tests/session_replications_automaticdebit_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/sessionpause_it_test.go b/general_tests/sessionpause_it_test.go index 984aee8f8..f114d485e 100644 --- a/general_tests/sessionpause_it_test.go +++ b/general_tests/sessionpause_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* @@ -136,8 +137,8 @@ func testSesPauseItInitSession(t *testing.T, cgrID string, chargeable bool, usag utils.Usage: usage, }, APIOpts: map[string]interface{}{ - utils.OptsDebitInterval: "0s", - utils.OptsChargeable: chargeable, + utils.OptsSessionsDebitInterval: "0s", + utils.OptsSessionsChargeable: chargeable, }, }, } @@ -170,7 +171,7 @@ func testSesPauseItUpdateSession(t *testing.T, cgrID string, chargeable bool, us utils.Usage: usage, }, APIOpts: map[string]interface{}{ - utils.OptsChargeable: chargeable, + utils.OptsSessionsChargeable: chargeable, }, }, } @@ -203,7 +204,7 @@ func testSesPauseItTerminateSession(t *testing.T, cgrID string, chargeable bool, utils.Usage: usage, }, APIOpts: map[string]interface{}{ - utils.OptsChargeable: chargeable, + utils.OptsSessionsChargeable: chargeable, }, }, } diff --git a/general_tests/sessionrefund_it_test.go b/general_tests/sessionrefund_it_test.go index 8f97696ec..0a33bad93 100644 --- a/general_tests/sessionrefund_it_test.go +++ b/general_tests/sessionrefund_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/sessionroutes_it_test.go b/general_tests/sessionroutes_it_test.go index 6322c615f..0a29711ca 100644 --- a/general_tests/sessionroutes_it_test.go +++ b/general_tests/sessionroutes_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/sessions_concur_test.go b/general_tests/sessions_concur_test.go index d93db1a88..3c1ebb61a 100644 --- a/general_tests/sessions_concur_test.go +++ b/general_tests/sessions_concur_test.go @@ -1,3 +1,4 @@ +//go:build performance // +build performance /* diff --git a/general_tests/sessions_tnt_change_cdr_it_test.go b/general_tests/sessions_tnt_change_cdr_it_test.go index 4f05a0d96..b5061072c 100644 --- a/general_tests/sessions_tnt_change_cdr_it_test.go +++ b/general_tests/sessions_tnt_change_cdr_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/sessions_tnt_change_it_test.go b/general_tests/sessions_tnt_change_it_test.go index b8df64bdc..d46e32012 100644 --- a/general_tests/sessions_tnt_change_it_test.go +++ b/general_tests/sessions_tnt_change_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/suretax_it_test.go b/general_tests/suretax_it_test.go index 685a6e546..b8ea670e5 100644 --- a/general_tests/suretax_it_test.go +++ b/general_tests/suretax_it_test.go @@ -1,3 +1,4 @@ +//go:build suretax // +build suretax /* diff --git a/general_tests/tls_it_test.go b/general_tests/tls_it_test.go index 08541a565..55809cf53 100644 --- a/general_tests/tls_it_test.go +++ b/general_tests/tls_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/tp_it_test.go b/general_tests/tp_it_test.go index eb56c9765..79091ac05 100644 --- a/general_tests/tp_it_test.go +++ b/general_tests/tp_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/tut_smgeneric_it_test.go b/general_tests/tut_smgeneric_it_test.go index 1d19af166..c867cff04 100644 --- a/general_tests/tut_smgeneric_it_test.go +++ b/general_tests/tut_smgeneric_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/tutorial2_it_test.go b/general_tests/tutorial2_it_test.go index f0c4106a8..29be2a777 100644 --- a/general_tests/tutorial2_it_test.go +++ b/general_tests/tutorial2_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/tutorial_calls_test.go b/general_tests/tutorial_calls_test.go index c9a1ee8ed..cf779a482 100644 --- a/general_tests/tutorial_calls_test.go +++ b/general_tests/tutorial_calls_test.go @@ -1,3 +1,4 @@ +//go:build call // +build call /* diff --git a/general_tests/tutorial_it_test.go b/general_tests/tutorial_it_test.go index dd6e48ac1..f0825286b 100644 --- a/general_tests/tutorial_it_test.go +++ b/general_tests/tutorial_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/general_tests/twoengines_it_test.go b/general_tests/twoengines_it_test.go index f128ae553..65278dfa0 100644 --- a/general_tests/twoengines_it_test.go +++ b/general_tests/twoengines_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/loaders/loader_it_test.go b/loaders/loader_it_test.go index bddc54bea..f0cd3092b 100644 --- a/loaders/loader_it_test.go +++ b/loaders/loader_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/loaders/loaders_it_test.go b/loaders/loaders_it_test.go index e1189bce2..428940588 100644 --- a/loaders/loaders_it_test.go +++ b/loaders/loaders_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/attributes_it_test.go b/migrator/attributes_it_test.go index 99eac14bf..64a5bef29 100644 --- a/migrator/attributes_it_test.go +++ b/migrator/attributes_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/cdrs_it_test.go b/migrator/cdrs_it_test.go index d5b4ba3e9..5d198f74f 100644 --- a/migrator/cdrs_it_test.go +++ b/migrator/cdrs_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/chargers_it_test.go b/migrator/chargers_it_test.go index 65ba5167e..6d3ff7246 100644 --- a/migrator/chargers_it_test.go +++ b/migrator/chargers_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/dispatchers_it_test.go b/migrator/dispatchers_it_test.go index 3cefb8b6c..a2bdfe290 100644 --- a/migrator/dispatchers_it_test.go +++ b/migrator/dispatchers_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/filters_it_test.go b/migrator/filters_it_test.go index 344f1f999..bef64e6f0 100644 --- a/migrator/filters_it_test.go +++ b/migrator/filters_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/load_ids_it_test.go b/migrator/load_ids_it_test.go index cb41be355..665d4a6de 100644 --- a/migrator/load_ids_it_test.go +++ b/migrator/load_ids_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/rateprofiles_it_test.go b/migrator/rateprofiles_it_test.go index 51af348ec..64887e35a 100644 --- a/migrator/rateprofiles_it_test.go +++ b/migrator/rateprofiles_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/resource_it_test.go b/migrator/resource_it_test.go index fe2ce8cce..5cecb6184 100644 --- a/migrator/resource_it_test.go +++ b/migrator/resource_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/routes_it_test.go b/migrator/routes_it_test.go index 1d19b1687..50da861c5 100644 --- a/migrator/routes_it_test.go +++ b/migrator/routes_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/stats_it_test.go b/migrator/stats_it_test.go index 34a44545c..afe738983 100644 --- a/migrator/stats_it_test.go +++ b/migrator/stats_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/thresholds_it_test.go b/migrator/thresholds_it_test.go index 7c5bb41e3..9b4eb361f 100644 --- a/migrator/thresholds_it_test.go +++ b/migrator/thresholds_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/tp_action_profile_it_test.go b/migrator/tp_action_profile_it_test.go index 4a4c30860..1b1d53804 100644 --- a/migrator/tp_action_profile_it_test.go +++ b/migrator/tp_action_profile_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/tp_dispatchers_it_test.go b/migrator/tp_dispatchers_it_test.go index 205c2a697..a821a7b45 100644 --- a/migrator/tp_dispatchers_it_test.go +++ b/migrator/tp_dispatchers_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/tp_filters_it_test.go b/migrator/tp_filters_it_test.go index be735c475..59dee81de 100644 --- a/migrator/tp_filters_it_test.go +++ b/migrator/tp_filters_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/tp_rate_profiles_it_test.go b/migrator/tp_rate_profiles_it_test.go index b7f75cf22..71a073a7f 100644 --- a/migrator/tp_rate_profiles_it_test.go +++ b/migrator/tp_rate_profiles_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/tp_resources_it_test.go b/migrator/tp_resources_it_test.go index 2bc0e8b68..fe133d241 100644 --- a/migrator/tp_resources_it_test.go +++ b/migrator/tp_resources_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/tp_routes_it_test.go b/migrator/tp_routes_it_test.go index 25dfea8fc..4f9494f99 100644 --- a/migrator/tp_routes_it_test.go +++ b/migrator/tp_routes_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/tp_stats_it_test.go b/migrator/tp_stats_it_test.go index cced92833..0dac46542 100644 --- a/migrator/tp_stats_it_test.go +++ b/migrator/tp_stats_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/tp_thresholds_it_test.go b/migrator/tp_thresholds_it_test.go index 9680b45d0..e96585757 100644 --- a/migrator/tp_thresholds_it_test.go +++ b/migrator/tp_thresholds_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/migrator/versions_it_test.go b/migrator/versions_it_test.go index c0e7e88e7..7da5e7f9b 100644 --- a/migrator/versions_it_test.go +++ b/migrator/versions_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/registrarc/registrarc_it_test.go b/registrarc/registrarc_it_test.go index 4722e691b..03349552a 100644 --- a/registrarc/registrarc_it_test.go +++ b/registrarc/registrarc_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/registrarc/registrarcrpc_it_test.go b/registrarc/registrarcrpc_it_test.go index b4b3920ca..49bcf8240 100644 --- a/registrarc/registrarcrpc_it_test.go +++ b/registrarc/registrarcrpc_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/accounts_it_test.go b/services/accounts_it_test.go index fe0bc9928..199ee5411 100644 --- a/services/accounts_it_test.go +++ b/services/accounts_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/actions_it_test.go b/services/actions_it_test.go index 40e980e4b..2ff55f875 100644 --- a/services/actions_it_test.go +++ b/services/actions_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/analyzers_it_test.go b/services/analyzers_it_test.go index 306c22d39..bae876bbd 100644 --- a/services/analyzers_it_test.go +++ b/services/analyzers_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/asteriskagent_it_test.go b/services/asteriskagent_it_test.go index cf60d365d..f4d7d28b0 100644 --- a/services/asteriskagent_it_test.go +++ b/services/asteriskagent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/attributes_it_test.go b/services/attributes_it_test.go index c9d2dcad0..ae941ac9e 100644 --- a/services/attributes_it_test.go +++ b/services/attributes_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/cdrs_it_test.go b/services/cdrs_it_test.go index e632246f8..6534fd45f 100644 --- a/services/cdrs_it_test.go +++ b/services/cdrs_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/chargers_it_test.go b/services/chargers_it_test.go index 6e0c2827d..87b487e2c 100644 --- a/services/chargers_it_test.go +++ b/services/chargers_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/cores_it_test.go b/services/cores_it_test.go index 14c1ebe1f..f12e80e96 100644 --- a/services/cores_it_test.go +++ b/services/cores_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/datadb_it_test.go b/services/datadb_it_test.go index 6423fada2..577cd8b5e 100644 --- a/services/datadb_it_test.go +++ b/services/datadb_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/diameteragent_it_test.go b/services/diameteragent_it_test.go index 45c2a1e11..33b14df88 100644 --- a/services/diameteragent_it_test.go +++ b/services/diameteragent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/dispatchers_it_test.go b/services/dispatchers_it_test.go index 4efbf70d1..f56cd1b46 100644 --- a/services/dispatchers_it_test.go +++ b/services/dispatchers_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/dnsagent_it_test.go b/services/dnsagent_it_test.go index 2e11f44c0..18c7f65f9 100644 --- a/services/dnsagent_it_test.go +++ b/services/dnsagent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/ees_it_test.go b/services/ees_it_test.go index 0e96f5b8a..f39d8e430 100644 --- a/services/ees_it_test.go +++ b/services/ees_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/ers_it_test.go b/services/ers_it_test.go index 74d738b8a..cffa8e64d 100644 --- a/services/ers_it_test.go +++ b/services/ers_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/freeswitchagent_it_test.go b/services/freeswitchagent_it_test.go index 003c95dca..6300c89e0 100644 --- a/services/freeswitchagent_it_test.go +++ b/services/freeswitchagent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/globalvars_it_test.go b/services/globalvars_it_test.go index b4b5fdf22..97f0fa571 100644 --- a/services/globalvars_it_test.go +++ b/services/globalvars_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/httpagent_it_test.go b/services/httpagent_it_test.go index deec43520..13e307fba 100644 --- a/services/httpagent_it_test.go +++ b/services/httpagent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/kamailioagent_it_test.go b/services/kamailioagent_it_test.go index 53f5b62ee..afb4926d2 100644 --- a/services/kamailioagent_it_test.go +++ b/services/kamailioagent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/loaders_it_test.go b/services/loaders_it_test.go index a6b26e1dc..de6bbe1c1 100644 --- a/services/loaders_it_test.go +++ b/services/loaders_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/radiusagent_it_test.go b/services/radiusagent_it_test.go index 24db12210..97b0283ef 100644 --- a/services/radiusagent_it_test.go +++ b/services/radiusagent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/rates_it_test.go b/services/rates_it_test.go index abbceaaa2..14233a7b2 100644 --- a/services/rates_it_test.go +++ b/services/rates_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/registrarc_it_test.go b/services/registrarc_it_test.go index a863525f3..13cc0377f 100644 --- a/services/registrarc_it_test.go +++ b/services/registrarc_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/resources_it_test.go b/services/resources_it_test.go index b6ed2eebd..8f2336a05 100644 --- a/services/resources_it_test.go +++ b/services/resources_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/routes_it_test.go b/services/routes_it_test.go index f7044ea98..88f27c847 100644 --- a/services/routes_it_test.go +++ b/services/routes_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/sessions_it_test.go b/services/sessions_it_test.go index 8df5cbe4f..d701d8a29 100644 --- a/services/sessions_it_test.go +++ b/services/sessions_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/sipagent_it_test.go b/services/sipagent_it_test.go index 0f1fb531b..670dfed6d 100644 --- a/services/sipagent_it_test.go +++ b/services/sipagent_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/stats_it_test.go b/services/stats_it_test.go index 24652cd92..da382ffc7 100644 --- a/services/stats_it_test.go +++ b/services/stats_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/stordb_it_test.go b/services/stordb_it_test.go index 6e253ba91..6eb00e78d 100644 --- a/services/stordb_it_test.go +++ b/services/stordb_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/services/thresholds_it_test.go b/services/thresholds_it_test.go index 5a5a942e5..943dd7eb5 100644 --- a/services/thresholds_it_test.go +++ b/services/thresholds_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/sessions/sessions.go b/sessions/sessions.go index a7af43d7c..d3b60c694 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -943,7 +943,7 @@ func (sS *SessionS) newSession(ctx *context.Context, cgrEv *utils.CGREvent, resI ClientConnID: clntConnID, DebitInterval: dbtItval, } - s.chargeable = s.OptsStart.GetBoolOrDefault(utils.OptsChargeable, true) + s.chargeable = s.OptsStart.GetBoolOrDefault(utils.OptsSessionsChargeable, true) if !isMsg && sS.isIndexed(s, false) { // check if already exists return nil, utils.ErrExists } @@ -1107,38 +1107,41 @@ func (sS *SessionS) syncSessions(ctx *context.Context) { if asCount == 0 { // no need to sync the sessions if none is active return } - queriedCGRIDs := engine.NewSafEvent(nil) // need this to be - var err error - for _, clnt := range sS.biJClients() { - errChan := make(chan error) + type qReply struct { + reply []*SessionID + err error + } + biClnts := sS.biJClients() + replys := make(chan *qReply, len(biClnts)) + + for _, clnt := range biClnts { ctx, cancel := context.WithTimeout(ctx, sS.cgrCfg.GeneralCfg().ReplyTimeout) - go func() { - var queriedSessionIDs []*SessionID - if err := clnt.conn.Call(ctx, utils.SessionSv1GetActiveSessionIDs, - utils.EmptyString, &queriedSessionIDs); err != nil { - errChan <- err - } - for _, sessionID := range queriedSessionIDs { - queriedCGRIDs.Set(sessionID.CGRID(), struct{}{}) - } - errChan <- nil - }() - select { - case err = <-errChan: - if err != nil && err.Error() != utils.ErrNoActiveSession.Error() { + defer cancel() + go func(clnt *biJClient) { + var reply qReply + reply.err = clnt.conn.Call(ctx, utils.SessionSv1GetActiveSessionIDs, + utils.EmptyString, &reply.reply) + replys <- &reply + }(clnt) + } + queriedCGRIDs := utils.StringSet{} + for range biClnts { + reply := <-replys + if reply.err != nil { + if reply.err.Error() != utils.ErrNoActiveSession.Error() { utils.Logger.Warning( - fmt.Sprintf("<%s> error <%s> quering session ids", utils.SessionS, err.Error())) + fmt.Sprintf("<%s> error <%s> quering session ids", utils.SessionS, reply.err.Error())) } - case <-time.After(sS.cgrCfg.GeneralCfg().ReplyTimeout): - utils.Logger.Warning( - fmt.Sprintf("<%s> timeout quering session ids ", utils.SessionS)) + continue + } + for _, sessionID := range reply.reply { + queriedCGRIDs.Add(sessionID.CGRID()) } - cancel() } var toBeRemoved []string sS.aSsMux.RLock() for cgrid := range sS.aSessions { - if !queriedCGRIDs.HasField(cgrid) { + if !queriedCGRIDs.Has(cgrid) { toBeRemoved = append(toBeRemoved, cgrid) } } @@ -1253,7 +1256,7 @@ func (sS *SessionS) updateSession(ctx *context.Context, s *Session, updtEv, opts s.updateSRuns(updtEv, sS.cgrCfg.SessionSCfg().AlterableFields) sS.setSTerminator(s, opts) // reset the terminator } - s.chargeable = opts.GetBoolOrDefault(utils.OptsChargeable, true) + s.chargeable = opts.GetBoolOrDefault(utils.OptsSessionsChargeable, true) //init has no updtEv if updtEv == nil { updtEv = engine.MapEvent(s.EventStart.Clone()) @@ -1732,8 +1735,8 @@ func (sS *SessionS) BiRPCv1InitiateSession(ctx *context.Context, var err error opts := engine.MapEvent(args.APIOpts) dbtItvl := sS.cgrCfg.SessionSCfg().DebitInterval - if opts.HasField(utils.OptsDebitInterval) { // dynamic DebitInterval via CGRDebitInterval - if dbtItvl, err = opts.GetDuration(utils.OptsDebitInterval); err != nil { + if opts.HasField(utils.OptsSessionsDebitInterval) { // dynamic DebitInterval via CGRDebitInterval + if dbtItvl, err = opts.GetDuration(utils.OptsSessionsDebitInterval); err != nil { return err //utils.NewErrRALs(err) } } @@ -1873,8 +1876,8 @@ func (sS *SessionS) BiRPCv1UpdateSession(ctx *context.Context, ev := engine.MapEvent(args.CGREvent.Event) opts := engine.MapEvent(args.APIOpts) dbtItvl := sS.cgrCfg.SessionSCfg().DebitInterval - if opts.HasField(utils.OptsDebitInterval) { // dynamic DebitInterval via CGRDebitInterval - if dbtItvl, err = opts.GetDuration(utils.OptsDebitInterval); err != nil { + if opts.HasField(utils.OptsSessionsDebitInterval) { // dynamic DebitInterval via CGRDebitInterval + if dbtItvl, err = opts.GetDuration(utils.OptsSessionsDebitInterval); err != nil { return err //utils.NewErrRALs(err) } } @@ -1951,8 +1954,8 @@ func (sS *SessionS) BiRPCv1TerminateSession(ctx *context.Context, return utils.NewErrMandatoryIeMissing(utils.OriginID) } dbtItvl := sS.cgrCfg.SessionSCfg().DebitInterval - if opts.HasField(utils.OptsDebitInterval) { // dynamic DebitInterval via CGRDebitInterval - if dbtItvl, err = opts.GetDuration(utils.OptsDebitInterval); err != nil { + if opts.HasField(utils.OptsSessionsDebitInterval) { // dynamic DebitInterval via CGRDebitInterval + if dbtItvl, err = opts.GetDuration(utils.OptsSessionsDebitInterval); err != nil { return err //utils.NewErrRALs(err) } } @@ -1984,7 +1987,7 @@ func (sS *SessionS) BiRPCv1TerminateSession(ctx *context.Context, s.UpdateSRuns(ev, sS.cgrCfg.SessionSCfg().AlterableFields) } s.Lock() - s.chargeable = opts.GetBoolOrDefault(utils.OptsChargeable, true) + s.chargeable = opts.GetBoolOrDefault(utils.OptsSessionsChargeable, true) s.Unlock() if err = sS.terminateSession(ctx, s, ev.GetDurationPtrIgnoreErrors(utils.Usage), diff --git a/sessions/sessions_birpc_it_test.go b/sessions/sessions_birpc_it_test.go index 377d7ee09..52f1b5ff5 100644 --- a/sessions/sessions_birpc_it_test.go +++ b/sessions/sessions_birpc_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/sessions/sessions_data_it_test.go b/sessions/sessions_data_it_test.go index 473933322..14e2c4db0 100644 --- a/sessions/sessions_data_it_test.go +++ b/sessions/sessions_data_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/sessions/sessions_it_test.go b/sessions/sessions_it_test.go index 5641f178d..40618e9d2 100644 --- a/sessions/sessions_it_test.go +++ b/sessions/sessions_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/sessions/sessions_rpl_it_test.go b/sessions/sessions_rpl_it_test.go index 8e83131b7..84cb2d5f1 100644 --- a/sessions/sessions_rpl_it_test.go +++ b/sessions/sessions_rpl_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/sessions/sessions_voice_it_test.go b/sessions/sessions_voice_it_test.go index ea886bbed..54848c599 100644 --- a/sessions/sessions_voice_it_test.go +++ b/sessions/sessions_voice_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/utils/consts.go b/utils/consts.go index 3428d0b52..3315f0bc1 100644 --- a/utils/consts.go +++ b/utils/consts.go @@ -2084,45 +2084,29 @@ var ( // CGROptionsSet the possible cgr options var CGROptionsSet = NewStringSet([]string{OptsRatesStartTime, OptsRatesUsage, OptsSessionsTTL, OptsSessionsTTLMaxDelay, OptsSessionsTTLLastUsed, OptsSessionsTTLLastUsage, OptsSessionsTTLUsage, - OptsDebitInterval, OptsStirATest, OptsStirPayloadMaxDuration, OptsStirIdentity, + OptsSessionsDebitInterval, OptsStirATest, OptsStirPayloadMaxDuration, OptsStirIdentity, OptsStirOriginatorTn, OptsStirOriginatorURI, OptsStirDestinationTn, OptsStirDestinationURI, OptsStirPublicKeyPath, OptsStirPrivateKeyPath, OptsAPIKey, OptsRouteID, OptsContext, - OptsAttributesProcessRuns, OptsRoutesLimit, OptsRoutesOffset, OptsChargeable, + OptsAttributesProcessRuns, OptsRoutesLimit, OptsRoutesOffset, OptsSessionsChargeable, RemoteHostOpt, CacheOpt, OptsRoutesProfilesCount, OptsDispatchersProfilesCount}) -// EventExporter metrics -const ( - NumberOfEvents = "NumberOfEvents" - TotalCost = "TotalCost" - PositiveExports = "PositiveExports" - NegativeExports = "NegativeExports" - FirstExpOrderID = "FirstExpOrderID" - LastExpOrderID = "LastExpOrderID" - FirstEventATime = "FirstEventATime" - LastEventATime = "LastEventATime" - TotalDuration = "TotalDuration" - TotalDataUsage = "TotalDataUsage" - TotalSMSUsage = "TotalSMSUsage" - TotalMMSUsage = "TotalMMSUsage" - TotalGenericUsage = "TotalGenericUsage" - FilePath = "FilePath" -) - // Event Opts const ( - OptsRoutesProfilesCount = "*routesProfilesCount" - OptsRoutesLimit = "*routes_limit" - OptsRoutesOffset = "*routes_offset" - OptsRatesStartTime = "*ratesStartTime" - OptsRatesUsage = "*ratesUsage" - OptsRatesIntervalStart = "*ratesIntervalStart" - OptsSessionsTTL = "*sessionsTTL" - OptsSessionsTTLMaxDelay = "*sessionsTTLMaxDelay" - OptsSessionsTTLLastUsed = "*sessionsTTLLastUsed" - OptsSessionsTTLLastUsage = "*sessionsTTLLastUsage" - OptsSessionsTTLUsage = "*sessionsTTLUsage" - OptsDebitInterval = "*sessionsDebitInterval" - OptsChargeable = "*sessionsChargeable" + // SessionS + OptsSessionsTTL = "*sessionsTTL" + OptsSessionsChargeable = "*sessionsChargeable" + OptsSessionsDebitInterval = "*sessionsDebitInterval" + OptsSessionsTTLLastUsage = "*sessionsTTLLastUsage" + OptsSessionsTTLLastUsed = "*sessionsTTLLastUsed" + OptsSessionsTTLMaxDelay = "*sessionsTTLMaxDelay" + OptsSessionsTTLUsage = "*sessionsTTLUsage" + + OptsRoutesProfilesCount = "*routesProfilesCount" + OptsRoutesLimit = "*routes_limit" + OptsRoutesOffset = "*routes_offset" + OptsRatesStartTime = "*ratesStartTime" + OptsRatesUsage = "*ratesUsage" + OptsRatesIntervalStart = "*ratesIntervalStart" // STIR OptsStirATest = "*stirATest" OptsStirPayloadMaxDuration = "*stirPayloadMaxDuration" @@ -2164,35 +2148,28 @@ const ( // ArgCache constats const ( - // ResourceProfileIDs = "ResourceProfileIDs" - // ResourceIDs = "ResourceIDs" - // StatsQueueIDs = "StatsQueueIDs" - // StatsQueueProfileIDs = "StatsQueueProfileIDs" - ThresholdIDs = "ThresholdIDs" - // ThresholdProfileIDs = "ThresholdProfileIDs" - FilterIDs = "FilterIDs" - - // RouteProfileIDs = "RouteProfileIDs" - // AttributeProfileIDs = "AttributeProfileIDs" - // ChargerProfileIDs = "ChargerProfileIDs" - // DispatcherProfileIDs = "DispatcherProfileIDs" - // DispatcherHostIDs = "DispatcherHostIDs" - // DispatcherRoutesIDs = "DispatcherRoutesIDs" + ThresholdIDs = "ThresholdIDs" + FilterIDs = "FilterIDs" RateProfileIDs = "RateProfileIDs" ActionProfileIDs = "ActionProfileIDs" +) -// AttributeFilterIndexIDs = "AttributeFilterIndexIDs" -// ResourceFilterIndexIDs = "ResourceFilterIndexIDs" -// StatFilterIndexIDs = "StatFilterIndexIDs" -// ThresholdFilterIndexIDs = "ThresholdFilterIndexIDs" -// RouteFilterIndexIDs = "RouteFilterIndexIDs" -// ChargerFilterIndexIDs = "ChargerFilterIndexIDs" -// DispatcherFilterIndexIDs = "DispatcherFilterIndexIDs" -// RateProfilesFilterIndexIDs = "RateProfilesFilterIndexIDs" -// RateFilterIndexIDs = "RateFilterIndexIDs" -// ActionProfilesFilterIndexIDs = "ActionProfilesFilterIndexIDs" -// AccountsFilterIndexIDs = "AccountsFilterIndexIDs" -// FilterIndexIDs = "FilterIndexIDs" +// EventExporter metrics +const ( + NumberOfEvents = "NumberOfEvents" + TotalCost = "TotalCost" + PositiveExports = "PositiveExports" + NegativeExports = "NegativeExports" + FirstExpOrderID = "FirstExpOrderID" + LastExpOrderID = "LastExpOrderID" + FirstEventATime = "FirstEventATime" + LastEventATime = "LastEventATime" + TotalDuration = "TotalDuration" + TotalDataUsage = "TotalDataUsage" + TotalSMSUsage = "TotalSMSUsage" + TotalMMSUsage = "TotalMMSUsage" + TotalGenericUsage = "TotalGenericUsage" + FilePath = "FilePath" ) // Poster and Event reader constants @@ -2366,15 +2343,12 @@ const ( ExecCgr = "exec" ) -var ( - // AnzIndexType are the analyzers possible index types - AnzIndexType = StringSet{ - MetaScorch: {}, - MetaBoltdb: {}, - MetaLeveldb: {}, - MetaMoss: {}, - } -) +var AnzIndexType = StringSet{ // AnzIndexType are the analyzers possible index types + MetaScorch: {}, + MetaBoltdb: {}, + MetaLeveldb: {}, + MetaMoss: {}, +} // ActionSv1 const ( diff --git a/utils/coreutils_it_test.go b/utils/coreutils_it_test.go index 384ec3435..58c3694a3 100644 --- a/utils/coreutils_it_test.go +++ b/utils/coreutils_it_test.go @@ -1,4 +1,6 @@ +//go:build integration // +build integration + /* Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments Copyright (C) ITsysCOM GmbH diff --git a/utils/file_it_test.go b/utils/file_it_test.go index ca4083ba4..39ccbcbc2 100644 --- a/utils/file_it_test.go +++ b/utils/file_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/utils/logger_it_test.go b/utils/logger_it_test.go index 844b0ccdc..120bab5c4 100644 --- a/utils/logger_it_test.go +++ b/utils/logger_it_test.go @@ -1,3 +1,4 @@ +//go:build integration // +build integration /* diff --git a/utils/reflect.go b/utils/reflect.go index 61ed199b9..f719cf11a 100644 --- a/utils/reflect.go +++ b/utils/reflect.go @@ -234,8 +234,14 @@ func IfaceAsBool(itm interface{}) (b bool, err error) { return strconv.ParseBool(v) case int: return v > 0, nil + case int32: + return v > 0, nil case int64: return v > 0, nil + case uint32: + return v > 0, nil + case uint64: + return v > 0, nil case float64: return v > 0, nil default: @@ -680,3 +686,59 @@ func ReflectFieldMethodInterface(obj interface{}, fldName string) (retIf interfa } return field.Interface(), nil } + +func IfaceAsStringSlice(fld interface{}) (ss []string, err error) { + switch value := fld.(type) { + case nil: + case []string: + ss = value + case []int: + ss = make([]string, len(value)) + for i, v := range value { + ss[i] = strconv.Itoa(v) + } + case []int32: + ss = make([]string, len(value)) + for i, v := range value { + ss[i] = strconv.FormatInt(int64(v), 10) + } + case []int64: + ss = make([]string, len(value)) + for i, v := range value { + ss[i] = strconv.FormatInt(v, 10) + } + case []uint32: + ss = make([]string, len(value)) + for i, v := range value { + ss[i] = strconv.FormatUint(uint64(v), 10) + } + case []uint64: + ss = make([]string, len(value)) + for i, v := range value { + ss[i] = strconv.FormatUint(v, 10) + } + case []bool: + ss = make([]string, len(value)) + for i, v := range value { + ss[i] = strconv.FormatBool(v) + } + case []float32: + ss = make([]string, len(value)) + for i, v := range value { + ss[i] = strconv.FormatFloat(float64(v), 'f', -1, 64) + } + case []float64: + ss = make([]string, len(value)) + for i, v := range value { + ss[i] = strconv.FormatFloat(v, 'f', -1, 64) + } + case []interface{}: + ss = make([]string, len(value)) + for i, v := range value { + ss[i] = IfaceAsString(v) + } + default: // Maybe we are lucky and the value converts to string + err = fmt.Errorf("cannot convert field: %+v to []string", value) + } + return +} diff --git a/utils/reflect_test.go b/utils/reflect_test.go index 9b5535fe0..1cf73c273 100644 --- a/utils/reflect_test.go +++ b/utils/reflect_test.go @@ -842,10 +842,10 @@ func TestIfaceAsBoolInt64(t *testing.T) { } func TestIfaceAsBoolDefault(t *testing.T) { - var test uint64 = 2147483647 + var test struct{} _, err := IfaceAsBool(test) - if err == nil || err.Error() != "cannot convert field: 2147483647 to bool" { - t.Errorf("Expecting ,received: <%+v>", err) + if err == nil || err.Error() != "cannot convert field: {} to bool" { + t.Errorf("Expecting ,received: <%+v>", err) } }