Finished updating gorm library

This commit is contained in:
Trial97
2021-01-12 12:37:25 +02:00
committed by Dan Christian Bogos
parent ca13e8d364
commit df702b71aa
11 changed files with 142 additions and 104 deletions

View File

@@ -121,12 +121,13 @@ func testTPAcctPrfGetTPAcctPrfBeforeSet(t *testing.T) {
func testTPAcctPrfSetTPAcctPrf(t *testing.T) {
tpAcctPrf = &utils.TPAccountProfile{
TPid: "TP1",
Tenant: "cgrates.org",
ID: "1001",
Weight: 20,
TPid: "TP1",
Tenant: "cgrates.org",
ID: "1001",
Weight: 20,
FilterIDs: make([]string, 0),
Balances: map[string]*utils.TPAccountBalance{
"MonetaryBalance": &utils.TPAccountBalance{
"MonetaryBalance": {
ID: "MonetaryBalance",
FilterIDs: []string{},
Weight: 10,
@@ -200,7 +201,7 @@ func testTPAcctPrfGetTPAcctBalAfterUpdate(t *testing.T) {
ID: "1001",
Weight: 20,
Balances: map[string]*utils.TPAccountBalance{
"MonetaryBalance2": &utils.TPAccountBalance{
"MonetaryBalance2": {
ID: "MonetaryBalance2",
FilterIDs: []string{},
Weight: 12,

View File

@@ -122,11 +122,12 @@ func testTPActPrfGetTPActPrfBeforeSet(t *testing.T) {
func testTPActPrfSetTPActPrf(t *testing.T) {
tpActPrf = &utils.TPActionProfile{
TPid: "TP1",
Tenant: "cgrates.org",
ID: "ONE_TIME_ACT",
Weight: 10,
Schedule: utils.MetaASAP,
TPid: "TP1",
Tenant: "cgrates.org",
ID: "ONE_TIME_ACT",
Weight: 10,
Schedule: utils.MetaASAP,
FilterIDs: make([]string, 0),
Targets: []*utils.TPActionTarget{
&utils.TPActionTarget{
TargetType: utils.MetaAccounts,

View File

@@ -122,10 +122,11 @@ func ttestTPDispatcherGetTPDispatcherBeforeSet(t *testing.T) {
func testTPDispatcherSetTPDispatcher(t *testing.T) {
tpDispatcher = &utils.TPDispatcherProfile{
TPid: "TP1",
Tenant: "cgrates.org",
ID: "Dsp1",
FilterIDs: []string{"*string:Account:1002"},
TPid: "TP1",
Tenant: "cgrates.org",
ID: "Dsp1",
FilterIDs: []string{"*string:Account:1002"},
Subsystems: make([]string, 0),
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-29T15:00:00Z",
ExpiryTime: "",

View File

@@ -127,6 +127,7 @@ func testTPRatePrfSetTPRatePrf(t *testing.T) {
Weight: 10,
RoundingDecimals: 4,
RoundingMethod: "*up",
FilterIDs: make([]string, 0),
Rates: map[string]*utils.TPRate{
"RT_ALWAYS": {
ID: "RT_ALWAYS",

View File

@@ -19,12 +19,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
package ees
import (
"database/sql"
"fmt"
"net/url"
"strings"
"sync"
"github.com/jinzhu/gorm"
"gorm.io/driver/mysql"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/engine"
@@ -57,23 +60,26 @@ func NewSQLEe(cgrCfg *config.CGRConfig, cfgIdx int, filterS *engine.FilterS,
sqlEe.tableName = utils.IfaceAsString(iface)
}
var connString string
var dialect gorm.Dialector
switch u.Scheme {
case utils.MySQL:
connString = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&loc=Local&parseTime=true&sql_mode='ALLOW_INVALID_DATES'",
u.User.Username(), password, u.Hostname(), u.Port(), dbname)
dialect = mysql.Open(fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&loc=Local&parseTime=true&sql_mode='ALLOW_INVALID_DATES'",
u.User.Username(), password, u.Hostname(), u.Port(), dbname))
case utils.Postgres:
connString = fmt.Sprintf("host=%s port=%s dbname=%s user=%s password=%s sslmode=%s", u.Hostname(), u.Port(), dbname, u.User.Username(), password, ssl)
dialect = postgres.Open(fmt.Sprintf("host=%s port=%s dbname=%s user=%s password=%s sslmode=%s", u.Hostname(), u.Port(), dbname, u.User.Username(), password, ssl))
default:
return nil, fmt.Errorf("unknown db_type %s", u.Scheme)
return nil, fmt.Errorf("db type <%s> not supported", u.Scheme)
}
db, err := gorm.Open(u.Scheme, connString)
if err != nil {
return nil, err
var db *gorm.DB
if db, err = gorm.Open(dialect, &gorm.Config{AllowGlobalUpdate: true}); err != nil {
return
}
if err = db.DB().Ping(); err != nil {
return nil, err
var sqlDB *sql.DB
if sqlDB, err = db.DB(); err != nil {
return
}
if err = sqlDB.Ping(); err != nil {
return
}
if iface, has := cgrCfg.EEsCfg().Exporters[cfgIdx].Opts[utils.SQLMaxIdleConns]; has {
@@ -81,24 +87,25 @@ func NewSQLEe(cgrCfg *config.CGRConfig, cfgIdx int, filterS *engine.FilterS,
if err != nil {
return nil, err
}
db.DB().SetMaxIdleConns(int(val))
sqlDB.SetMaxIdleConns(int(val))
}
if iface, has := cgrCfg.EEsCfg().Exporters[cfgIdx].Opts[utils.SQLMaxOpenConns]; has {
val, err := utils.IfaceAsTInt64(iface)
if err != nil {
return nil, err
}
db.DB().SetMaxOpenConns(int(val))
sqlDB.SetMaxOpenConns(int(val))
}
if iface, has := cgrCfg.EEsCfg().Exporters[cfgIdx].Opts[utils.SQLMaxConnLifetime]; has {
val, err := utils.IfaceAsDuration(iface)
if err != nil {
return nil, err
}
db.DB().SetConnMaxLifetime(val)
sqlDB.SetConnMaxLifetime(val)
}
sqlEe.db = db
sqlEe.sqldb = sqlDB
return
}
@@ -109,6 +116,7 @@ type SQLEe struct {
cfgIdx int // index of config instance within ERsCfg.Readers
filterS *engine.FilterS
db *gorm.DB
sqldb *sql.DB
tableName string
@@ -123,6 +131,7 @@ func (sqlEe *SQLEe) ID() string {
// OnEvicted implements EventExporter, doing the cleanup before exit
func (sqlEe *SQLEe) OnEvicted(_ string, _ interface{}) {
sqlEe.sqldb.Close()
return
}

View File

@@ -29,7 +29,9 @@ import (
"github.com/cgrates/cgrates/utils"
"github.com/jinzhu/gorm"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/engine"
@@ -78,33 +80,33 @@ func (_ *testModelSql) TableName() string {
return "expTable"
}
type nopLogger struct{}
func (nopLogger) Print(values ...interface{}) {}
func testSqlEeCreateTable(t *testing.T) {
var err error
if db2, err = gorm.Open("mysql", fmt.Sprintf(dbConnString, "cgrates")); err != nil {
if db2, err = gorm.Open(mysql.Open(fmt.Sprintf(dbConnString, "cgrates")), &gorm.Config{
AllowGlobalUpdate: true,
Logger: logger.Default.LogMode(logger.Silent),
}); err != nil {
return
}
if err = db2.Exec(`CREATE DATABASE IF NOT EXISTS exportedDatabase;`).Error; err != nil {
t.Fatal(err)
}
db2.SetLogger(new(nopLogger))
if _, err = db2.DB().Exec(`CREATE DATABASE IF NOT EXISTS exportedDatabase;`); err != nil {
t.Fatal(err)
}
if db2, err = gorm.Open("mysql", fmt.Sprintf(dbConnString, "exportedDatabase")); err != nil {
t.Fatal(err)
if db2, err = gorm.Open(mysql.Open(fmt.Sprintf(dbConnString, "exportedDatabase")), &gorm.Config{
AllowGlobalUpdate: true,
Logger: logger.Default.LogMode(logger.Silent),
}); err != nil {
return
}
tx := db2.Begin()
if tx.HasTable("expTable") {
tx = tx.DropTable(new(testModelSql))
if err = tx.Error; err != nil {
if tx.Migrator().HasTable("expTable") {
if err = tx.Migrator().DropTable(new(testModelSql)); err != nil {
tx.Rollback()
t.Fatal(err)
}
}
tx = tx.CreateTable(new(testModelSql))
if err = tx.Error; err != nil {
if err = tx.Migrator().CreateTable(new(testModelSql)); err != nil {
tx.Rollback()
t.Fatal(err)
}

View File

@@ -37,6 +37,12 @@ import (
"gorm.io/gorm"
)
const (
createdAt = "created_at"
updatedAt = "updated_at"
deletedAt = "deleted_at"
)
// NewSQLEventReader return a new sql event reader
func NewSQLEventReader(cfg *config.CGRConfig, cfgIdx int,
rdrEvents chan *erEvent, rdrErr chan error,
@@ -109,7 +115,7 @@ func (rdr *SQLEventReader) Serve() (err error) {
if sqlDB, err = db.DB(); err != nil {
return
}
// sqlDB.SetMaxOpenConns(10)
sqlDB.SetMaxOpenConns(10)
if err = sqlDB.Ping(); err != nil {
return
}
@@ -124,11 +130,7 @@ func (rdr *SQLEventReader) readLoop(db *gorm.DB, sqlDB io.Closer) {
defer sqlDB.Close()
tm := time.NewTimer(0)
for {
if db = db.Table(rdr.tableName).Select("*"); db.Error != nil {
rdr.rdrErr <- db.Error
return
}
rows, err := db.Rows()
rows, err := db.Table(rdr.tableName).Select(utils.Meta).Rows()
if err != nil {
rdr.rdrErr <- err
return
@@ -136,6 +138,7 @@ func (rdr *SQLEventReader) readLoop(db *gorm.DB, sqlDB io.Closer) {
colNames, err := rows.Columns()
if err != nil {
rdr.rdrErr <- err
rows.Close()
return
}
for rows.Next() {
@@ -144,11 +147,13 @@ func (rdr *SQLEventReader) readLoop(db *gorm.DB, sqlDB io.Closer) {
utils.Logger.Info(
fmt.Sprintf("<%s> stop monitoring sql DB <%s>",
utils.ERs, rdr.Config().SourcePath))
rows.Close()
return
default:
}
if err := rows.Err(); err != nil {
rdr.rdrErr <- err
rows.Close()
return
}
if rdr.Config().ConcurrentReqs != -1 {
@@ -161,14 +166,39 @@ func (rdr *SQLEventReader) readLoop(db *gorm.DB, sqlDB io.Closer) {
}
if err = rows.Scan(columnPointers...); err != nil {
rdr.rdrErr <- err
rows.Close()
return
}
go func(columns []interface{}, colNames []string) {
msg := make(map[string]interface{})
for i, colName := range colNames {
msg[colName] = columns[i]
msg := make(map[string]interface{})
fltr := make(map[string]string)
for i, colName := range colNames {
msg[colName] = columns[i]
if colName != createdAt && colName != updatedAt && colName != deletedAt { // ignore the sql colums for filter only
switch tm := columns[i].(type) { // also ignore the values that are zero for time
case time.Time:
if tm.IsZero() {
continue
}
case *time.Time:
if tm == nil || tm.IsZero() {
continue
}
case nil:
continue
}
fltr[colName] = utils.IfaceAsString(columns[i])
}
db = db.Delete(msg) // to ensure we don't read it again
}
if err = db.Table(rdr.tableName).Delete(nil, fltr).Error; err != nil { // to ensure we don't read it again
utils.Logger.Warning(
fmt.Sprintf("<%s> deleting message %s error: %s",
utils.ERs, utils.ToJSON(msg), err.Error()))
rdr.rdrErr <- err
rows.Close()
return
}
go func(msg map[string]interface{}) {
if err := rdr.processMessage(msg); err != nil {
utils.Logger.Warning(
fmt.Sprintf("<%s> processing message %s error: %s",
@@ -184,8 +214,9 @@ func (rdr *SQLEventReader) readLoop(db *gorm.DB, sqlDB io.Closer) {
if rdr.Config().ConcurrentReqs != -1 {
rdr.cap <- struct{}{}
}
}(columns, colNames)
}(msg)
}
rows.Close()
if rdr.Config().RunDelay < 0 {
return
}

View File

@@ -29,14 +29,11 @@ import (
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/engine"
"github.com/cgrates/cgrates/utils"
_ "github.com/go-sql-driver/mysql"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
type nopLogger struct{}
func (nopLogger) Print(values ...interface{}) {}
var (
sqlCfgPath string
sqlCfg *config.CGRConfig
@@ -146,34 +143,37 @@ func (_ *testModelSql) TableName() string {
func testSQLInitDBs(t *testing.T) {
var err error
var db2 *gorm.DB
if db2, err = gorm.Open("mysql", fmt.Sprintf(dbConnString, "cgrates")); err != nil {
if db2, err = gorm.Open(mysql.Open(fmt.Sprintf(dbConnString, "cgrates")),
&gorm.Config{
AllowGlobalUpdate: true,
Logger: logger.Default.LogMode(logger.Silent),
}); err != nil {
t.Fatal(err)
}
db2.SetLogger(new(nopLogger))
if _, err = db2.DB().Exec(`CREATE DATABASE IF NOT EXISTS cgrates2;`); err != nil {
if err = db2.Exec(`CREATE DATABASE IF NOT EXISTS cgrates2;`).Error; err != nil {
t.Fatal(err)
}
}
func testSQLInitDB(t *testing.T) {
cdr.CGRID = utils.UUIDSha1Prefix()
var err error
db, err = gorm.Open("mysql", fmt.Sprintf(dbConnString, "cgrates2"))
if err != nil {
if db, err = gorm.Open(mysql.Open(fmt.Sprintf(dbConnString, "cgrates2")),
&gorm.Config{
AllowGlobalUpdate: true,
Logger: logger.Default.LogMode(logger.Silent),
}); err != nil {
t.Fatal(err)
}
db.SetLogger(new(nopLogger))
tx := db.Begin()
if !tx.HasTable("cdrs") {
tx = tx.CreateTable(new(engine.CDRsql))
if err = tx.Error; err != nil {
if !tx.Migrator().HasTable("cdrs") {
if err = tx.Migrator().CreateTable(new(engine.CDRsql)); err != nil {
tx.Rollback()
t.Fatal(err)
}
}
if !tx.HasTable("cdrs2") {
tx = tx.CreateTable(new(testModelSql))
if err = tx.Error; err != nil {
if !tx.Migrator().HasTable("cdrs2") {
if err = tx.Migrator().CreateTable(new(testModelSql)); err != nil {
tx.Rollback()
t.Fatal(err)
}
@@ -306,13 +306,20 @@ func testSQLPoster(t *testing.T) {
}
func testSQLStop(t *testing.T) {
if _, err := db.DB().Exec(`DROP DATABASE cgrates2;`); err != nil {
close(rdrExit)
if err := db.Migrator().DropTable("cdrs2"); err != nil {
t.Fatal(err)
}
close(rdrExit)
db = db.DropTable("cdrs2")
db = db.DropTable("cdrs")
if err := db.Close(); err != nil {
t.Error(err)
if err := db.Migrator().DropTable("cdrs"); err != nil {
t.Fatal(err)
}
if err := db.Exec(`DROP DATABASE cgrates2;`).Error; err != nil {
t.Fatal(err)
}
if db2, err := db.DB(); err != nil {
t.Fatal(err)
} else if err = db2.Close(); err != nil {
t.Fatal(err)
}
}

3
go.mod
View File

@@ -45,9 +45,8 @@ require (
github.com/golang/protobuf v1.4.2 // indirect
github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75
github.com/ishidawataru/sctp v0.0.0-20191218070446-00ab2ac2db07 // indirect
github.com/jinzhu/gorm v1.9.16
github.com/jmhodges/levigo v1.0.0 // indirect
github.com/lib/pq v1.8.0
github.com/lib/pq v1.8.0 // indirect
github.com/mattn/go-runewidth v0.0.9 // indirect
github.com/mediocregopher/radix/v3 v3.5.2
github.com/miekg/dns v1.1.30

15
go.sum
View File

@@ -44,10 +44,8 @@ github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUM
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
github.com/RoaringBitmap/roaring v0.4.23 h1:gpyfd12QohbqhFO4NVDUdoPOCXsyahYRQhINmlHxKeo=
github.com/RoaringBitmap/roaring v0.4.23/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06Mq5mKs52e1TwOo=
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/antchfx/xmlquery v1.2.4 h1:T/SH1bYdzdjTMoz2RgsfVKbM5uWh3gjDYYepFqQmFv4=
github.com/antchfx/xmlquery v1.2.4/go.mod h1:KQQuESaxSlqugE2ZBcM/qn+ebIpt+d+4Xx7YcSGAIrM=
github.com/antchfx/xpath v1.1.6/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
@@ -138,7 +136,6 @@ github.com/cznic/strutil v0.0.0-20181122101858-275e90344537/go.mod h1:AHHPPPXTw0
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw=
@@ -151,7 +148,6 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/ericlagergren/decimal v0.0.0-20191206042408-88212e6cfca9 h1:mMVotm9OVwoOS2IFGRRS5AfMTFWhtf8wj34JEYh47/k=
github.com/ericlagergren/decimal v0.0.0-20191206042408-88212e6cfca9/go.mod h1:ZWP59etEywfyMG2lAqnoi3t8uoiZCiTmLtwt6iESIsQ=
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0=
github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64=
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A=
@@ -202,7 +198,6 @@ github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/V
github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -315,11 +310,8 @@ github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0f
github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v1.1.2/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.1 h1:g39TucaRWyV3dwDO++eEc6qf8TVIQ/Da48WmqjZ3i7E=
github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
@@ -351,7 +343,6 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg=
@@ -372,7 +363,6 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky
github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
github.com/mediocregopher/radix/v3 v3.5.2 h1:A9u3G7n4+fWmDZ2ZDHtlK+cZl4q55T+7RjKjR0/MAdk=
github.com/mediocregopher/radix/v3 v3.5.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8=
github.com/miekg/dns v1.1.30 h1:Qww6FseFn8PRfw07jueqIXqodm0JKiiKuK0DeXSqfyo=
@@ -491,7 +481,6 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
golang.org/x/crypto v0.0.0-20190506204251-e1dfcc566284/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -501,7 +490,6 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200320181102-891825fb96df/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
@@ -537,7 +525,6 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -749,8 +736,6 @@ gorm.io/driver/mysql v1.0.3/go.mod h1:twGxftLBlFgNVNakL7F+P/x9oYqoymG3YYT8cAfI9o
gorm.io/driver/postgres v1.0.5 h1:raX6ezL/ciUmaYTvOq48jq1GE95aMC0CmxQYbxQ4Ufw=
gorm.io/driver/postgres v1.0.5/go.mod h1:qrD92UurYzNctBMVCJ8C3VQEjffEuphycXtxOudXNCA=
gorm.io/gorm v1.20.4/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
gorm.io/gorm v1.20.8 h1:iToaOdZgjNvlc44NFkxfLa3U9q63qwaxt0FdNCiwOMs=
gorm.io/gorm v1.20.8/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
gorm.io/gorm v1.20.11 h1:jYHQ0LLUViV85V8dM1TP9VBBkfzKTnuTXDjYObkI6yc=
gorm.io/gorm v1.20.11/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

View File

@@ -107,11 +107,12 @@ func testTpDispITFlush(t *testing.T) {
func testTpDispITPopulate(t *testing.T) {
tpDisps = []*utils.TPDispatcherProfile{
&utils.TPDispatcherProfile{
TPid: "TP1",
Tenant: "cgrates.org",
ID: "Dsp1",
FilterIDs: []string{"*string:Account:1002"},
{
TPid: "TP1",
Tenant: "cgrates.org",
ID: "Dsp1",
FilterIDs: []string{"*string:Account:1002"},
Subsystems: make([]string, 0),
ActivationInterval: &utils.TPActivationInterval{
ActivationTime: "2014-07-29T15:00:00Z",
ExpiryTime: "",