Add support for Mongo for different Marshaler

This commit is contained in:
TeoV
2020-02-25 17:42:22 +02:00
committed by Dan Christian Bogos
parent 834d842bc3
commit c7b7740c27
36 changed files with 80 additions and 65 deletions

View File

@@ -98,6 +98,7 @@ func testActionsInitCdrsStore(t *testing.T) {
if actsCdrStore, err = NewMongoStorage(actsCfg.StorDbCfg().Host,
actsCfg.StorDbCfg().Port, actsCfg.StorDbCfg().Name,
actsCfg.StorDbCfg().User, actsCfg.StorDbCfg().Password,
actsCfg.GeneralCfg().DBDataEncoding,
utils.StorDB, nil, false); err != nil {
t.Fatal("Could not connect to mongo", err.Error())
}

View File

@@ -66,6 +66,7 @@ func TestDMitinitDB(t *testing.T) {
dataDB, err = NewMongoStorage(mgoITCfg.StorDbCfg().Host,
mgoITCfg.StorDbCfg().Port, mgoITCfg.StorDbCfg().Name,
mgoITCfg.StorDbCfg().User, mgoITCfg.StorDbCfg().Password,
mgoITCfg.GeneralCfg().DBDataEncoding,
utils.StorDB, nil, false)
if err != nil {
t.Fatal("Could not connect to Mongo", err.Error())

View File

@@ -88,6 +88,7 @@ func TestFilterIndexerIT(t *testing.T) {
mongoDB, err := NewMongoStorage(mgoITCfg.StorDbCfg().Host,
mgoITCfg.StorDbCfg().Port, mgoITCfg.StorDbCfg().Name,
mgoITCfg.StorDbCfg().User, mgoITCfg.StorDbCfg().Password,
mgoITCfg.GeneralCfg().DBDataEncoding,
utils.StorDB, nil, false)
if err != nil {
t.Fatal(err)

View File

@@ -307,7 +307,7 @@ func InitStorDb(cfg *config.CGRConfig) error {
storDb, err := NewStorDBConn(cfg.StorDbCfg().Type,
cfg.StorDbCfg().Host, cfg.StorDbCfg().Port,
cfg.StorDbCfg().Name, cfg.StorDbCfg().User,
cfg.StorDbCfg().Password, cfg.StorDbCfg().SSLMode,
cfg.StorDbCfg().Password, cfg.GeneralCfg().DBDataEncoding, cfg.StorDbCfg().SSLMode,
cfg.StorDbCfg().MaxOpenConns, cfg.StorDbCfg().MaxIdleConns,
cfg.StorDbCfg().ConnMaxLifetime, cfg.StorDbCfg().StringIndexedFields,
cfg.StorDbCfg().PrefixIndexedFields, cfg.StorDbCfg().Items)

View File

@@ -102,9 +102,10 @@ func testLoaderITInitStoreDB(t *testing.T) {
// NewStorDBConn
db, err := NewStorDBConn(lCfg.StorDbCfg().Type,
lCfg.StorDbCfg().Host, lCfg.StorDbCfg().Port, lCfg.StorDbCfg().Name,
lCfg.StorDbCfg().User, lCfg.StorDbCfg().Password, lCfg.StorDbCfg().SSLMode,
lCfg.StorDbCfg().MaxOpenConns, lCfg.StorDbCfg().MaxIdleConns, lCfg.StorDbCfg().ConnMaxLifetime,
lCfg.StorDbCfg().StringIndexedFields, lCfg.StorDbCfg().PrefixIndexedFields, lCfg.StorDbCfg().Items)
lCfg.StorDbCfg().User, lCfg.StorDbCfg().Password, lCfg.GeneralCfg().DBDataEncoding,
lCfg.StorDbCfg().SSLMode, lCfg.StorDbCfg().MaxOpenConns, lCfg.StorDbCfg().MaxIdleConns,
lCfg.StorDbCfg().ConnMaxLifetime, lCfg.StorDbCfg().StringIndexedFields,
lCfg.StorDbCfg().PrefixIndexedFields, lCfg.StorDbCfg().Items)
if err != nil {
t.Error("Error on opening database connection: ", err)
}

View File

@@ -109,6 +109,7 @@ func TestOnStorIT(t *testing.T) {
if mgoITdb, err = NewMongoStorage(mgoITCfg.StorDbCfg().Host,
mgoITCfg.StorDbCfg().Port, mgoITCfg.StorDbCfg().Name,
mgoITCfg.StorDbCfg().User, mgoITCfg.StorDbCfg().Password,
mgoITCfg.GeneralCfg().DBDataEncoding,
utils.StorDB, nil, false); err != nil {
t.Fatal(err)
}

View File

@@ -69,7 +69,7 @@ func testSetCDR(cfg *config.CGRConfig) error {
cdrStorage, err := NewStorDBConn(cfg.StorDbCfg().Type,
cfg.StorDbCfg().Host, cfg.StorDbCfg().Port,
cfg.StorDbCfg().Name, cfg.StorDbCfg().User,
cfg.StorDbCfg().Password, cfg.StorDbCfg().SSLMode,
cfg.StorDbCfg().Password, cfg.GeneralCfg().DBDataEncoding, cfg.StorDbCfg().SSLMode,
cfg.StorDbCfg().MaxOpenConns, cfg.StorDbCfg().MaxIdleConns,
cfg.StorDbCfg().ConnMaxLifetime, cfg.StorDbCfg().StringIndexedFields,
cfg.StorDbCfg().PrefixIndexedFields, cfg.StorDbCfg().Items)
@@ -176,7 +176,7 @@ func testSMCosts(cfg *config.CGRConfig) error {
cdrStorage, err := NewStorDBConn(cfg.StorDbCfg().Type,
cfg.StorDbCfg().Host, cfg.StorDbCfg().Port,
cfg.StorDbCfg().Name, cfg.StorDbCfg().User,
cfg.StorDbCfg().Password, cfg.StorDbCfg().SSLMode,
cfg.StorDbCfg().Password, cfg.GeneralCfg().DBDataEncoding, cfg.StorDbCfg().SSLMode,
cfg.StorDbCfg().MaxOpenConns, cfg.StorDbCfg().MaxIdleConns,
cfg.StorDbCfg().ConnMaxLifetime, cfg.StorDbCfg().StringIndexedFields,
cfg.StorDbCfg().PrefixIndexedFields, cfg.StorDbCfg().Items)
@@ -239,7 +239,7 @@ func testGetCDRs(cfg *config.CGRConfig) error {
cdrStorage, err := NewStorDBConn(cfg.StorDbCfg().Type,
cfg.StorDbCfg().Host, cfg.StorDbCfg().Port,
cfg.StorDbCfg().Name, cfg.StorDbCfg().User,
cfg.StorDbCfg().Password, cfg.StorDbCfg().SSLMode,
cfg.StorDbCfg().Password, cfg.GeneralCfg().DBDataEncoding, cfg.StorDbCfg().SSLMode,
cfg.StorDbCfg().MaxOpenConns, cfg.StorDbCfg().MaxIdleConns,
cfg.StorDbCfg().ConnMaxLifetime, cfg.StorDbCfg().StringIndexedFields,
cfg.StorDbCfg().PrefixIndexedFields, cfg.StorDbCfg().Items)

View File

@@ -125,7 +125,7 @@ func TimeDecodeValue1(dc bsoncodec.DecodeContext, vr bsonrw.ValueReader, val ref
}
// NewMongoStorage givese new mongo driver
func NewMongoStorage(host, port, db, user, pass, storageType string, cdrsIndexes []string,
func NewMongoStorage(host, port, db, user, pass, mrshlerStr, storageType string, cdrsIndexes []string,
isDataDB bool) (ms *MongoStorage, err error) {
url := host
if port != "" {
@@ -162,13 +162,18 @@ func NewMongoStorage(host, port, db, user, pass, storageType string, cdrsIndexes
if err != nil {
return nil, err
}
mrshler, err := NewMarshaler(mrshlerStr)
if err != nil {
return nil, err
}
ms = &MongoStorage{
client: client,
ctx: ctx,
ctxTTL: ttl,
db: dbName,
storageType: storageType,
ms: NewCodecMsgpackMarshaler(),
ms: mrshler,
cdrsIndexes: cdrsIndexes,
isDataDB: isDataDB,
}

View File

@@ -48,7 +48,7 @@ func NewDataDBConn(dbType, host, port, name, user,
}
d, err = NewRedisStorage(host, dbNo, pass, marshaler, utils.REDIS_MAX_CONNS, sentinelName)
case utils.MONGO:
d, err = NewMongoStorage(host, port, name, user, pass, utils.DataDB, nil, true)
d, err = NewMongoStorage(host, port, name, user, pass, marshaler, utils.DataDB, nil, true)
case utils.INTERNAL:
d = NewInternalDB(nil, nil, true, itemsCacheCfg)
default:
@@ -58,13 +58,13 @@ func NewDataDBConn(dbType, host, port, name, user,
}
// NewStorDBConn returns a StorDB(implements Storage interface) based on dbType
func NewStorDBConn(dbType, host, port, name, user, pass, sslmode string,
func NewStorDBConn(dbType, host, port, name, user, pass, marshaler, sslmode string,
maxConn, maxIdleConn, connMaxLifetime int,
stringIndexedFields, prefixIndexedFields []string,
itemsCacheCfg map[string]*config.ItemOpt) (db StorDB, err error) {
switch dbType {
case utils.MONGO:
db, err = NewMongoStorage(host, port, name, user, pass, utils.StorDB, stringIndexedFields, false)
db, err = NewMongoStorage(host, port, name, user, pass, marshaler, utils.StorDB, stringIndexedFields, false)
case utils.POSTGRES:
db, err = NewPostgresStorage(host, port, name, user, pass, sslmode, maxConn, maxIdleConn, connMaxLifetime)
case utils.MYSQL:

View File

@@ -86,6 +86,7 @@ func TestStorDBit(t *testing.T) {
if storDB, err = NewMongoStorage(cfg.StorDbCfg().Host,
cfg.StorDbCfg().Port, cfg.StorDbCfg().Name,
cfg.StorDbCfg().User, cfg.StorDbCfg().Password,
cfg.GeneralCfg().DBDataEncoding,
utils.StorDB, cfg.StorDbCfg().StringIndexedFields, false); err != nil {
t.Fatal(err)
}

View File

@@ -81,7 +81,7 @@ func testInitDataDB(t *testing.T) {
storageDb, err = NewStorDBConn(cfg.StorDbCfg().Type,
cfg.StorDbCfg().Host, cfg.StorDbCfg().Port,
cfg.StorDbCfg().Name, cfg.StorDbCfg().User,
cfg.StorDbCfg().Password, cfg.StorDbCfg().SSLMode,
cfg.StorDbCfg().Password, cfg.GeneralCfg().DBDataEncoding, cfg.StorDbCfg().SSLMode,
cfg.StorDbCfg().MaxOpenConns, cfg.StorDbCfg().MaxIdleConns,
cfg.StorDbCfg().ConnMaxLifetime, cfg.StorDbCfg().StringIndexedFields,
cfg.StorDbCfg().PrefixIndexedFields, cfg.StorDbCfg().Items)