Added General config

This commit is contained in:
Trial97
2018-10-05 20:33:28 +03:00
parent 18da754587
commit a4896dbc32
92 changed files with 1489 additions and 1054 deletions

View File

@@ -374,12 +374,17 @@ func callUrl(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Actions) er
return err
}
cfg := config.CgrConfig()
ffn := &utils.FallbackFileName{Module: fmt.Sprintf("%s>%s", utils.ActionsPoster, a.ActionType),
Transport: utils.MetaHTTPjson, Address: a.ExtraParameters,
RequestID: utils.GenUUID(), FileSuffix: utils.JSNSuffix}
_, err = NewHTTPPoster(config.CgrConfig().HttpSkipTlsVerify,
config.CgrConfig().ReplyTimeout).Post(a.ExtraParameters, utils.CONTENT_JSON, jsn,
config.CgrConfig().PosterAttempts, path.Join(cfg.FailedPostsDir, ffn.AsString()))
ffn := &utils.FallbackFileName{
Module: fmt.Sprintf("%s>%s", utils.ActionsPoster, a.ActionType),
Transport: utils.MetaHTTPjson,
Address: a.ExtraParameters,
RequestID: utils.GenUUID(),
FileSuffix: utils.JSNSuffix,
}
_, err = NewHTTPPoster(config.CgrConfig().GeneralCfg().HttpSkipTlsVerify,
config.CgrConfig().GeneralCfg().ReplyTimeout).Post(a.ExtraParameters,
utils.CONTENT_JSON, jsn, config.CgrConfig().GeneralCfg().PosterAttempts,
path.Join(cfg.GeneralCfg().FailedPostsDir, ffn.AsString()))
return err
}
@@ -397,12 +402,17 @@ func callUrlAsync(ub *Account, sq *CDRStatsQueueTriggered, a *Action, acs Action
return err
}
cfg := config.CgrConfig()
ffn := &utils.FallbackFileName{Module: fmt.Sprintf("%s>%s", utils.ActionsPoster, a.ActionType),
Transport: utils.MetaHTTPjson, Address: a.ExtraParameters,
RequestID: utils.GenUUID(), FileSuffix: utils.JSNSuffix}
go NewHTTPPoster(config.CgrConfig().HttpSkipTlsVerify,
config.CgrConfig().ReplyTimeout).Post(a.ExtraParameters, utils.CONTENT_JSON, jsn,
config.CgrConfig().PosterAttempts, path.Join(cfg.FailedPostsDir, ffn.AsString()))
ffn := &utils.FallbackFileName{
Module: fmt.Sprintf("%s>%s", utils.ActionsPoster, a.ActionType),
Transport: utils.MetaHTTPjson,
Address: a.ExtraParameters,
RequestID: utils.GenUUID(),
FileSuffix: utils.JSNSuffix,
}
go NewHTTPPoster(config.CgrConfig().GeneralCfg().HttpSkipTlsVerify,
config.CgrConfig().GeneralCfg().ReplyTimeout).Post(a.ExtraParameters,
utils.CONTENT_JSON, jsn, config.CgrConfig().GeneralCfg().PosterAttempts,
path.Join(cfg.GeneralCfg().FailedPostsDir, ffn.AsString()))
return nil
}
@@ -672,8 +682,10 @@ func cgrRPCAction(account *Account, sq *CDRStatsQueueTriggered, a *Action, acs A
}
var client rpcclient.RpcClientConnection
if req.Address != utils.MetaInternal {
if client, err = rpcclient.NewRpcClient("tcp", req.Address, "", "", req.Attempts, 0,
config.CgrConfig().ConnectTimeout, config.CgrConfig().ReplyTimeout, req.Transport, nil, false); err != nil {
if client, err = rpcclient.NewRpcClient("tcp", req.Address, "", "",
req.Attempts, 0, config.CgrConfig().GeneralCfg().ConnectTimeout,
config.CgrConfig().GeneralCfg().ReplyTimeout, req.Transport,
nil, false); err != nil {
return err
}
} else {

View File

@@ -32,8 +32,8 @@ var (
attrService *AttributeService
dmAtr *DataManager
mapSubstitutes = map[string]map[interface{}]*Attribute{
utils.Account: map[interface{}]*Attribute{
utils.META_ANY: &Attribute{
utils.Account: {
utils.META_ANY: {
FieldName: utils.Account,
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("1010", true),
@@ -42,9 +42,9 @@ var (
},
}
attrEvs = []*AttrArgsProcessEvent{
&AttrArgsProcessEvent{
{
CGREvent: utils.CGREvent{ //matching AttributeProfile1
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -55,9 +55,9 @@ var (
},
},
},
&AttrArgsProcessEvent{
{
CGREvent: utils.CGREvent{ //matching AttributeProfile2
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -65,9 +65,9 @@ var (
},
},
},
&AttrArgsProcessEvent{
{
CGREvent: utils.CGREvent{ //matching AttributeProfilePrefix
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -75,9 +75,9 @@ var (
},
},
},
&AttrArgsProcessEvent{
{
CGREvent: utils.CGREvent{ //matching AttributeProfilePrefix
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -88,7 +88,7 @@ var (
}
atrPs = AttributeProfiles{
&AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "AttributeProfile1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"FLTR_ATTR_1"},
@@ -97,7 +97,7 @@ var (
ExpiryTime: cloneExpTimeAttributes,
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: utils.Account,
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("1010", true),
@@ -108,7 +108,7 @@ var (
attributesIdx: mapSubstitutes,
},
&AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "AttributeProfile2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"FLTR_ATTR_2"},
@@ -117,7 +117,7 @@ var (
ExpiryTime: cloneExpTimeAttributes,
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: utils.Account,
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("1010", true),
@@ -128,7 +128,7 @@ var (
attributesIdx: mapSubstitutes,
},
&AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "AttributeProfilePrefix",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"FLTR_ATTR_3"},
@@ -137,7 +137,7 @@ var (
ExpiryTime: cloneExpTimeAttributes,
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: utils.Account,
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("1010", true),
@@ -148,7 +148,7 @@ var (
Weight: 20,
},
&AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "AttributeIDMatch",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*gte:DistinctMatch:20"},
@@ -157,7 +157,7 @@ var (
ExpiryTime: cloneExpTimeAttributes,
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: utils.Account,
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("1010", true),
@@ -189,20 +189,20 @@ func TestAttributePopulateAttrService(t *testing.T) {
func TestAttributeAddFilters(t *testing.T) {
fltrAttr1 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_ATTR_1",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaString,
FieldName: "Attribute",
Values: []string{"AttributeProfile1"},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: "UsageInterval",
Values: []string{(1 * time.Second).String()},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: utils.Weight,
Values: []string{"9.0"},
@@ -211,10 +211,10 @@ func TestAttributeAddFilters(t *testing.T) {
}
dmAtr.SetFilter(fltrAttr1)
fltrAttr2 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_ATTR_2",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaString,
FieldName: "Attribute",
Values: []string{"AttributeProfile2"},
@@ -223,10 +223,10 @@ func TestAttributeAddFilters(t *testing.T) {
}
dmAtr.SetFilter(fltrAttr2)
fltrAttrPrefix := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_ATTR_3",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaPrefix,
FieldName: "Attribute",
Values: []string{"AttributeProfilePrefix"},
@@ -235,10 +235,10 @@ func TestAttributeAddFilters(t *testing.T) {
}
dmAtr.SetFilter(fltrAttrPrefix)
fltrAttr4 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_ATTR_4",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: utils.Weight,
Values: []string{"200.00"},
@@ -459,7 +459,7 @@ func TestAttributeIndexer(t *testing.T) {
ExpiryTime: cloneExpTimeAttributes,
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: utils.Account,
Initial: utils.META_ANY,
Append: true,
@@ -472,7 +472,7 @@ func TestAttributeIndexer(t *testing.T) {
t.Error(err)
}
eIdxes := map[string]utils.StringMap{
"*string:Account:1007": utils.StringMap{
"*string:Account:1007": {
"AttrPrf": true,
},
}
@@ -519,7 +519,7 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) {
t.Errorf("\nExpecting: true got :%+v", test)
}
attrPrf1 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:InitialField:InitialValue"},
@@ -527,7 +527,7 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field1",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value1", true),
@@ -537,7 +537,7 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) {
Weight: 10,
}
attrPrf2 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Field1:Value1"},
@@ -545,7 +545,7 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field2",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value2", true),
@@ -555,7 +555,7 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) {
Weight: 20,
}
attrPrf3 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_3",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Field2:Value2"},
@@ -563,7 +563,7 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field3",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value3", true),
@@ -585,7 +585,7 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) {
attrArgs := &AttrArgsProcessEvent{
ProcessRuns: utils.IntPointer(4),
CGREvent: utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -597,7 +597,7 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) {
MatchedProfiles: []string{"ATTR_1", "ATTR_2", "ATTR_3"},
AlteredFields: []string{"Field1", "Field2", "Field3"},
CGREvent: &utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -634,7 +634,7 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) {
t.Errorf("\nExpecting: true got :%+v", test)
}
attrPrf1 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:InitialField:InitialValue"},
@@ -642,7 +642,7 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field1",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value1", true),
@@ -652,7 +652,7 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) {
Weight: 10,
}
attrPrf2 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Field1:Value1"},
@@ -660,7 +660,7 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field2",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value2", true),
@@ -670,7 +670,7 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) {
Weight: 20,
}
attrPrf3 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_3",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:NotFound:NotFound"},
@@ -678,7 +678,7 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field3",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value3", true),
@@ -700,7 +700,7 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) {
attrArgs := &AttrArgsProcessEvent{
ProcessRuns: utils.IntPointer(4),
CGREvent: utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -712,7 +712,7 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) {
MatchedProfiles: []string{"ATTR_1", "ATTR_2"},
AlteredFields: []string{"Field1", "Field2"},
CGREvent: &utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -748,7 +748,7 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) {
t.Errorf("\nExpecting: true got :%+v", test)
}
attrPrf1 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:InitialField:InitialValue"},
@@ -756,7 +756,7 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field1",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value1", true),
@@ -766,7 +766,7 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) {
Weight: 10,
}
attrPrf2 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Field1:Value1"},
@@ -774,7 +774,7 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field2",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value2", true),
@@ -784,7 +784,7 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) {
Weight: 20,
}
attrPrf3 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_3",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Field2:Value2"},
@@ -792,7 +792,7 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field3",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value3", true),
@@ -814,7 +814,7 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) {
attrArgs := &AttrArgsProcessEvent{
ProcessRuns: utils.IntPointer(2),
CGREvent: utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -826,7 +826,7 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) {
MatchedProfiles: []string{"ATTR_1", "ATTR_2"},
AlteredFields: []string{"Field1", "Field2"},
CGREvent: &utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -862,7 +862,7 @@ func TestAttributeProcessWithMultipleRuns4(t *testing.T) {
t.Errorf("\nExpecting: true got :%+v", test)
}
attrPrf1 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:InitialField:InitialValue"},
@@ -870,7 +870,7 @@ func TestAttributeProcessWithMultipleRuns4(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field1",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value1", true),
@@ -880,7 +880,7 @@ func TestAttributeProcessWithMultipleRuns4(t *testing.T) {
Weight: 10,
}
attrPrf2 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Field1:Value1"},
@@ -888,7 +888,7 @@ func TestAttributeProcessWithMultipleRuns4(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field2",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value2", true),
@@ -907,7 +907,7 @@ func TestAttributeProcessWithMultipleRuns4(t *testing.T) {
attrArgs := &AttrArgsProcessEvent{
ProcessRuns: utils.IntPointer(4),
CGREvent: utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -919,7 +919,7 @@ func TestAttributeProcessWithMultipleRuns4(t *testing.T) {
MatchedProfiles: []string{"ATTR_1", "ATTR_2"},
AlteredFields: []string{"Field1", "Field2"},
CGREvent: &utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -955,7 +955,7 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) {
t.Errorf("\nExpecting: true got :%+v", test)
}
attrPrf1 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:InitialField:InitialValue"},
@@ -963,7 +963,7 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field1",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value1", true),
@@ -973,7 +973,7 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) {
Weight: 10,
}
attrPrf2 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Field1:Value1"},
@@ -981,7 +981,7 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field2",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value2", true),
@@ -992,7 +992,7 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) {
Weight: 20,
}
attrPrf3 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_3",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Field2:Value2"},
@@ -1000,7 +1000,7 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field3",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value3", true),
@@ -1022,7 +1022,7 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) {
attrArgs := &AttrArgsProcessEvent{
ProcessRuns: utils.IntPointer(4),
CGREvent: utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -1034,7 +1034,7 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) {
MatchedProfiles: []string{"ATTR_1", "ATTR_2"},
AlteredFields: []string{"Field1", "Field2"},
CGREvent: &utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -1070,7 +1070,7 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) {
t.Errorf("\nExpecting: true got :%+v", test)
}
attrPrf1 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:InitialField:InitialValue"},
@@ -1078,7 +1078,7 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field1",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value1", true),
@@ -1089,7 +1089,7 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) {
Weight: 10,
}
attrPrf2 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_2",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Field1:Value1"},
@@ -1097,7 +1097,7 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field2",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value2", true),
@@ -1107,7 +1107,7 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) {
Weight: 20,
}
attrPrf3 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_3",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Field2:Value2"},
@@ -1115,7 +1115,7 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field3",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("Value3", true),
@@ -1137,7 +1137,7 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) {
attrArgs := &AttrArgsProcessEvent{
ProcessRuns: utils.IntPointer(4),
CGREvent: utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -1149,7 +1149,7 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) {
MatchedProfiles: []string{"ATTR_1"},
AlteredFields: []string{"Field1"},
CGREvent: &utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -1184,7 +1184,7 @@ func TestAttributeProcessSubstitute(t *testing.T) {
t.Errorf("\nExpecting: true got :%+v", test)
}
attrPrf1 := &AttributeProfile{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ATTR_1",
Contexts: []string{utils.MetaSessionS},
FilterIDs: []string{"*string:Field1:Value1"},
@@ -1192,7 +1192,7 @@ func TestAttributeProcessSubstitute(t *testing.T) {
ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC),
},
Attributes: []*Attribute{
&Attribute{
{
FieldName: "Field2",
Initial: utils.META_ANY,
Substitute: config.NewRSRParsersMustCompile("~Field1", true),
@@ -1209,7 +1209,7 @@ func TestAttributeProcessSubstitute(t *testing.T) {
attrArgs := &AttrArgsProcessEvent{
ProcessRuns: utils.IntPointer(1),
CGREvent: utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -1221,7 +1221,7 @@ func TestAttributeProcessSubstitute(t *testing.T) {
MatchedProfiles: []string{"ATTR_1"},
AlteredFields: []string{"Field2"},
CGREvent: &utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{

View File

@@ -255,7 +255,8 @@ func (cd *CallDescriptor) UpdateFromCGREvent(cgrEv *utils.CGREvent, fields []str
return
}
case utils.AnswerTime:
if cd.TimeStart, err = cgrEv.FieldAsTime(fldName, config.CgrConfig().DefaultTimezone); err != nil {
if cd.TimeStart, err = cgrEv.FieldAsTime(fldName,
config.CgrConfig().GeneralCfg().DefaultTimezone); err != nil {
return
}
case utils.Usage:

View File

@@ -69,9 +69,14 @@ func NewCDRFromExternalCDR(extCdr *ExternalCDR, timezone string) (*CDR, error) {
}
func NewCDRWithDefaults(cfg *config.CGRConfig) *CDR {
return &CDR{ToR: utils.VOICE, RequestType: cfg.DefaultReqType,
Tenant: cfg.DefaultTenant, Category: cfg.DefaultCategory,
ExtraFields: make(map[string]string), Cost: -1}
return &CDR{
ToR: utils.VOICE,
RequestType: cfg.GeneralCfg().DefaultReqType,
Tenant: cfg.GeneralCfg().DefaultTenant,
Category: cfg.GeneralCfg().DefaultCategory,
ExtraFields: make(map[string]string),
Cost: -1,
}
}
type CDR struct {
@@ -112,13 +117,13 @@ func (cdr *CDR) AddDefaults(cfg *config.CGRConfig) {
cdr.ToR = utils.VOICE
}
if cdr.RequestType == utils.EmptyString {
cdr.RequestType = cfg.DefaultReqType
cdr.RequestType = cfg.GeneralCfg().DefaultReqType
}
if cdr.Tenant == utils.EmptyString {
cdr.Tenant = cfg.DefaultTenant
cdr.Tenant = cfg.GeneralCfg().DefaultTenant
}
if cdr.Category == utils.EmptyString {
cdr.Category = cfg.DefaultCategory
cdr.Category = cfg.GeneralCfg().DefaultCategory
}
if cdr.Subject == utils.EmptyString {
cdr.Subject = cdr.Account
@@ -716,11 +721,13 @@ func (cdr *CDR) UpdateFromCGREvent(cgrEv *utils.CGREvent, fields []string) (err
return
}
case utils.SetupTime:
if cdr.SetupTime, err = cgrEv.FieldAsTime(fldName, config.CgrConfig().DefaultTimezone); err != nil {
if cdr.SetupTime, err = cgrEv.FieldAsTime(fldName,
config.CgrConfig().GeneralCfg().DefaultTimezone); err != nil {
return
}
case utils.AnswerTime:
if cdr.AnswerTime, err = cgrEv.FieldAsTime(fldName, config.CgrConfig().DefaultTimezone); err != nil {
if cdr.AnswerTime, err = cgrEv.FieldAsTime(fldName,
config.CgrConfig().GeneralCfg().DefaultTimezone); err != nil {
return
}
case utils.Usage:

View File

@@ -44,10 +44,9 @@ func TestCsvCdrWriter(t *testing.T) {
"extra2": "val_extra2", "extra3": "val_extra3"},
}
cdre, err := NewCDRExporter([]*CDR{storedCdr1},
cfg.CdreProfiles["*default"], utils.MetaFileCSV,
"", "", "firstexport",
true, 1, ',', map[string]float64{}, 0.0,
cfg.RoundingDecimals, cfg.HttpSkipTlsVerify, nil, nil)
cfg.CdreProfiles["*default"], utils.MetaFileCSV, "", "", "firstexport",
true, 1, ',', map[string]float64{}, 0.0, cfg.GeneralCfg().RoundingDecimals,
cfg.GeneralCfg().HttpSkipTlsVerify, nil, nil)
if err != nil {
t.Error("Unexpected error received: ", err)
}
@@ -84,9 +83,9 @@ func TestAlternativeFieldSeparator(t *testing.T) {
"extra2": "val_extra2", "extra3": "val_extra3"},
}
cdre, err := NewCDRExporter([]*CDR{storedCdr1}, cfg.CdreProfiles["*default"],
utils.MetaFileCSV, "", "", "firstexport",
true, 1, '|', map[string]float64{}, 0.0,
cfg.RoundingDecimals, cfg.HttpSkipTlsVerify, nil, nil)
utils.MetaFileCSV, "", "", "firstexport", true, 1, '|',
map[string]float64{}, 0.0, cfg.GeneralCfg().RoundingDecimals,
cfg.GeneralCfg().HttpSkipTlsVerify, nil, nil)
if err != nil {
t.Error("Unexpected error received: ", err)
}
@@ -112,33 +111,33 @@ func TestExportVoiceWithConvert(t *testing.T) {
cfg, _ := config.NewDefaultCGRConfig()
cdreCfg := cfg.CdreProfiles["*default"]
cdreCfg.ContentFields = []*config.FCTemplate{
&config.FCTemplate{Tag: "ToR", Type: "*composed",
{Tag: "ToR", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"ToR", true)},
&config.FCTemplate{Tag: "OriginID", Type: "*composed",
{Tag: "OriginID", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"OriginID", true)},
&config.FCTemplate{Tag: "RequestType", Type: "*composed",
{Tag: "RequestType", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"RequestType", true)},
&config.FCTemplate{Tag: "Tenant", Type: "*composed",
{Tag: "Tenant", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Tenant", true)},
&config.FCTemplate{Tag: "Category", Type: "*composed",
{Tag: "Category", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Category", true)},
&config.FCTemplate{Tag: "Account", Type: "*composed",
{Tag: "Account", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Account", true)},
&config.FCTemplate{Tag: "Destination", Type: "*composed",
{Tag: "Destination", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Destination", true)},
&config.FCTemplate{Tag: "AnswerTime", Type: "*composed",
{Tag: "AnswerTime", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"AnswerTime", true),
Layout: "2006-01-02T15:04:05Z07:00"},
&config.FCTemplate{Tag: "UsageVoice", Type: "*composed",
{Tag: "UsageVoice", Type: "*composed",
Filters: []string{"*string:ToR:*voice"},
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Usage{*duration_seconds}", true)},
&config.FCTemplate{Tag: "UsageData", Type: "*composed",
{Tag: "UsageData", Type: "*composed",
Filters: []string{"*string:ToR:*data"},
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Usage{*duration_nanoseconds}", true)},
&config.FCTemplate{Tag: "UsageSMS", Type: "*composed",
{Tag: "UsageSMS", Type: "*composed",
Filters: []string{"*string:ToR:*sms"},
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Usage{*duration_nanoseconds}", true)},
&config.FCTemplate{Tag: "Cost", Type: "*composed",
{Tag: "Cost", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Cost", true),
RoundingDecimals: 4},
}
@@ -210,33 +209,33 @@ func TestExportWithFilter(t *testing.T) {
cdreCfg := cfg.CdreProfiles["*default"]
cdreCfg.Filters = []string{"*string:Tenant:cgrates.org"}
cdreCfg.ContentFields = []*config.FCTemplate{
&config.FCTemplate{Tag: "ToR", Type: "*composed",
{Tag: "ToR", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"ToR", true)},
&config.FCTemplate{Tag: "OriginID", Type: "*composed",
{Tag: "OriginID", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"OriginID", true)},
&config.FCTemplate{Tag: "RequestType", Type: "*composed",
{Tag: "RequestType", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"RequestType", true)},
&config.FCTemplate{Tag: "Tenant", Type: "*composed",
{Tag: "Tenant", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Tenant", true)},
&config.FCTemplate{Tag: "Category", Type: "*composed",
{Tag: "Category", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Category", true)},
&config.FCTemplate{Tag: "Account", Type: "*composed",
{Tag: "Account", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Account", true)},
&config.FCTemplate{Tag: "Destination", Type: "*composed",
{Tag: "Destination", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Destination", true)},
&config.FCTemplate{Tag: "AnswerTime", Type: "*composed",
{Tag: "AnswerTime", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"AnswerTime", true),
Layout: "2006-01-02T15:04:05Z07:00"},
&config.FCTemplate{Tag: "UsageVoice", Type: "*composed",
{Tag: "UsageVoice", Type: "*composed",
Filters: []string{"*string:ToR:*voice"},
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Usage{*duration_seconds}", true)},
&config.FCTemplate{Tag: "UsageData", Type: "*composed",
{Tag: "UsageData", Type: "*composed",
Filters: []string{"*string:ToR:*data"},
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Usage{*duration_nanoseconds}", true)},
&config.FCTemplate{Tag: "UsageSMS", Type: "*composed",
{Tag: "UsageSMS", Type: "*composed",
Filters: []string{"*string:ToR:*sms"},
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Usage{*duration_nanoseconds}", true)},
&config.FCTemplate{Tag: "Cost", Type: "*composed",
{Tag: "Cost", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Cost", true),
RoundingDecimals: 4},
}
@@ -307,33 +306,33 @@ func TestExportWithFilter2(t *testing.T) {
cdreCfg := cfg.CdreProfiles["*default"]
cdreCfg.Filters = []string{"*string:Tenant:cgrates.org", "*lte:Cost:0.5"}
cdreCfg.ContentFields = []*config.FCTemplate{
&config.FCTemplate{Tag: "ToR", Type: "*composed",
{Tag: "ToR", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"ToR", true)},
&config.FCTemplate{Tag: "OriginID", Type: "*composed",
{Tag: "OriginID", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"OriginID", true)},
&config.FCTemplate{Tag: "RequestType", Type: "*composed",
{Tag: "RequestType", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"RequestType", true)},
&config.FCTemplate{Tag: "Tenant", Type: "*composed",
{Tag: "Tenant", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Tenant", true)},
&config.FCTemplate{Tag: "Category", Type: "*composed",
{Tag: "Category", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Category", true)},
&config.FCTemplate{Tag: "Account", Type: "*composed",
{Tag: "Account", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Account", true)},
&config.FCTemplate{Tag: "Destination", Type: "*composed",
{Tag: "Destination", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Destination", true)},
&config.FCTemplate{Tag: "AnswerTime", Type: "*composed",
{Tag: "AnswerTime", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"AnswerTime", true),
Layout: "2006-01-02T15:04:05Z07:00"},
&config.FCTemplate{Tag: "UsageVoice", Type: "*composed",
{Tag: "UsageVoice", Type: "*composed",
Filters: []string{"*string:ToR:*voice"},
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Usage{*duration_seconds}", true)},
&config.FCTemplate{Tag: "UsageData", Type: "*composed",
{Tag: "UsageData", Type: "*composed",
Filters: []string{"*string:ToR:*data"},
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Usage{*duration_nanoseconds}", true)},
&config.FCTemplate{Tag: "UsageSMS", Type: "*composed",
{Tag: "UsageSMS", Type: "*composed",
Filters: []string{"*string:ToR:*sms"},
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Usage{*duration_nanoseconds}", true)},
&config.FCTemplate{Tag: "Cost", Type: "*composed",
{Tag: "Cost", Type: "*composed",
Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+"Cost", true),
RoundingDecimals: 4},
}

View File

@@ -28,96 +28,96 @@ import (
)
var hdrJsnCfgFlds = []*config.FcTemplateJsonCfg{
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("TypeOfRecord"),
Type: utils.StringPointer(utils.META_CONSTANT),
Value: utils.StringPointer("10"),
Width: utils.IntPointer(2)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("Filler1"),
Type: utils.StringPointer(utils.META_FILLER),
Width: utils.IntPointer(3)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("DistributorCode"),
Type: utils.StringPointer(utils.META_CONSTANT),
Value: utils.StringPointer("VOI"),
Width: utils.IntPointer(3)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("FileSeqNr"),
Type: utils.StringPointer(utils.META_HANDLER),
Value: utils.StringPointer(META_EXPORTID),
Width: utils.IntPointer(5),
Strip: utils.StringPointer("right"),
Padding: utils.StringPointer("zeroleft")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("LastCdr"),
Type: utils.StringPointer(utils.META_HANDLER),
Width: utils.IntPointer(12),
Value: utils.StringPointer(META_LASTCDRATIME),
Layout: utils.StringPointer("020106150400")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("FileCreationfTime"),
Type: utils.StringPointer(utils.META_HANDLER),
Value: utils.StringPointer(META_TIMENOW),
Width: utils.IntPointer(12),
Layout: utils.StringPointer("020106150400")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("FileVersion"),
Type: utils.StringPointer(utils.META_CONSTANT),
Value: utils.StringPointer("01"),
Width: utils.IntPointer(2)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("Filler2"),
Type: utils.StringPointer(utils.META_FILLER),
Width: utils.IntPointer(105)},
}
var contentJsnCfgFlds = []*config.FcTemplateJsonCfg{
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("TypeOfRecord"),
Type: utils.StringPointer(utils.META_CONSTANT),
Value: utils.StringPointer("20"),
Width: utils.IntPointer(2)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("Account"),
Type: utils.StringPointer(utils.META_COMPOSED),
Value: utils.StringPointer("~" + utils.Account),
Width: utils.IntPointer(12),
Strip: utils.StringPointer("left"),
Padding: utils.StringPointer("right")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("Subject"),
Type: utils.StringPointer(utils.META_COMPOSED),
Value: utils.StringPointer("~" + utils.Subject),
Width: utils.IntPointer(5),
Strip: utils.StringPointer("right"),
Padding: utils.StringPointer("right")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("CLI"),
Type: utils.StringPointer(utils.META_COMPOSED),
Width: utils.IntPointer(15),
Value: utils.StringPointer("cli"),
Strip: utils.StringPointer("xright"),
Padding: utils.StringPointer("right")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("Destination"),
Type: utils.StringPointer(utils.META_COMPOSED),
Value: utils.StringPointer("~" + utils.Destination),
Width: utils.IntPointer(24),
Strip: utils.StringPointer("xright"),
Padding: utils.StringPointer("right")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("ToR"),
Type: utils.StringPointer(utils.META_CONSTANT),
Value: utils.StringPointer("02"),
Width: utils.IntPointer(2)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("SubtypeTOR"),
Type: utils.StringPointer(utils.META_CONSTANT),
Value: utils.StringPointer("11"),
Padding: utils.StringPointer("right"),
Width: utils.IntPointer(4)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("SetupTime"),
Type: utils.StringPointer(utils.META_COMPOSED),
Value: utils.StringPointer("~" + utils.SetupTime),
@@ -125,7 +125,7 @@ var contentJsnCfgFlds = []*config.FcTemplateJsonCfg{
Strip: utils.StringPointer("right"),
Padding: utils.StringPointer("right"),
Layout: utils.StringPointer("020106150400")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("Duration"),
Type: utils.StringPointer(utils.META_COMPOSED),
Value: utils.StringPointer("~" + utils.Usage),
@@ -133,115 +133,115 @@ var contentJsnCfgFlds = []*config.FcTemplateJsonCfg{
Strip: utils.StringPointer("right"),
Padding: utils.StringPointer("right"),
Layout: utils.StringPointer(utils.SECONDS)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("DataVolume"),
Type: utils.StringPointer(utils.META_FILLER),
Width: utils.IntPointer(6)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("TaxCode"),
Type: utils.StringPointer(utils.META_CONSTANT),
Value: utils.StringPointer("1"),
Width: utils.IntPointer(1)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("OperatorCode"),
Type: utils.StringPointer(utils.META_COMPOSED),
Value: utils.StringPointer("opercode"),
Width: utils.IntPointer(2),
Strip: utils.StringPointer("right"),
Padding: utils.StringPointer("right")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("ProductId"),
Type: utils.StringPointer(utils.META_COMPOSED),
Value: utils.StringPointer("~productid"),
Width: utils.IntPointer(5),
Strip: utils.StringPointer("right"),
Padding: utils.StringPointer("right")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("NetworkId"),
Type: utils.StringPointer(utils.META_CONSTANT),
Value: utils.StringPointer("3"),
Width: utils.IntPointer(1)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("CallId"),
Type: utils.StringPointer(utils.META_COMPOSED),
Value: utils.StringPointer("~" + utils.OriginID),
Width: utils.IntPointer(16),
Padding: utils.StringPointer("right")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("Filler"),
Type: utils.StringPointer(utils.META_FILLER),
Width: utils.IntPointer(8)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("Filler"),
Type: utils.StringPointer(utils.META_FILLER),
Width: utils.IntPointer(8)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("TerminationCode"),
Type: utils.StringPointer(utils.META_COMPOSED),
Value: utils.StringPointer("~operator;~product"),
Width: utils.IntPointer(5),
Strip: utils.StringPointer("right"),
Padding: utils.StringPointer("right")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("Cost"),
Type: utils.StringPointer(utils.META_COMPOSED),
Width: utils.IntPointer(9),
Value: utils.StringPointer("~" + utils.COST),
Padding: utils.StringPointer("zeroleft")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("DestinationPrivacy"),
Type: utils.StringPointer(utils.MetaMaskedDestination),
Width: utils.IntPointer(1)},
}
var trailerJsnCfgFlds = []*config.FcTemplateJsonCfg{
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("TypeOfRecord"),
Type: utils.StringPointer(utils.META_CONSTANT),
Value: utils.StringPointer("90"),
Width: utils.IntPointer(2)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("Filler1"),
Type: utils.StringPointer(utils.META_FILLER),
Width: utils.IntPointer(3)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("DistributorCode"),
Type: utils.StringPointer(utils.META_CONSTANT),
Value: utils.StringPointer("VOI"),
Width: utils.IntPointer(3)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("FileSeqNr"),
Type: utils.StringPointer(utils.META_HANDLER),
Value: utils.StringPointer(META_EXPORTID),
Width: utils.IntPointer(5),
Strip: utils.StringPointer("right"),
Padding: utils.StringPointer("zeroleft")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("NumberOfRecords"),
Type: utils.StringPointer(utils.META_HANDLER),
Value: utils.StringPointer(META_NRCDRS),
Width: utils.IntPointer(6),
Padding: utils.StringPointer("zeroleft")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("CdrsDuration"),
Type: utils.StringPointer(utils.META_HANDLER),
Value: utils.StringPointer(META_DURCDRS),
Width: utils.IntPointer(8),
Padding: utils.StringPointer("zeroleft"),
Layout: utils.StringPointer(utils.SECONDS)},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("FirstCdrTime"),
Type: utils.StringPointer(utils.META_HANDLER),
Width: utils.IntPointer(12),
Value: utils.StringPointer(META_FIRSTCDRATIME),
Layout: utils.StringPointer("020106150400")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("LastCdrTime"),
Type: utils.StringPointer(utils.META_HANDLER),
Width: utils.IntPointer(12),
Value: utils.StringPointer(META_LASTCDRATIME),
Layout: utils.StringPointer("020106150400")},
&config.FcTemplateJsonCfg{
{
Tag: utils.StringPointer("Filler2"),
Type: utils.StringPointer(utils.META_FILLER),
Width: utils.IntPointer(93)},
@@ -282,7 +282,8 @@ func TestWriteCdr(t *testing.T) {
}
cdre, err := NewCDRExporter([]*CDR{cdr}, cdreCfg, utils.MetaFileFWV, "", "", "fwv_1",
true, 1, '|', map[string]float64{}, 0.0, cfg.RoundingDecimals, cfg.HttpSkipTlsVerify, nil, nil)
true, 1, '|', map[string]float64{}, 0.0, cfg.GeneralCfg().RoundingDecimals,
cfg.GeneralCfg().HttpSkipTlsVerify, nil, nil)
if err != nil {
t.Error(err)
}
@@ -367,8 +368,10 @@ func TestWriteCdrs(t *testing.T) {
ExtraFields: map[string]string{"productnumber": "12344", "fieldextr2": "valextr2"},
}
cfg, _ := config.NewDefaultCGRConfig()
cdre, err := NewCDRExporter([]*CDR{cdr1, cdr2, cdr3, cdr4}, cdreCfg, utils.MetaFileFWV, "", "", "fwv_1",
true, 1, ',', map[string]float64{}, 0.0, cfg.RoundingDecimals, cfg.HttpSkipTlsVerify, nil, nil)
cdre, err := NewCDRExporter([]*CDR{cdr1, cdr2, cdr3, cdr4}, cdreCfg,
utils.MetaFileFWV, "", "", "fwv_1", true, 1, ',', map[string]float64{},
0.0, cfg.GeneralCfg().RoundingDecimals,
cfg.GeneralCfg().HttpSkipTlsVerify, nil, nil)
if err != nil {
t.Error(err)
}

View File

@@ -45,12 +45,12 @@ type CallCostLog struct {
// Handler for generic cgr cdr http
func cgrCdrHandler(w http.ResponseWriter, r *http.Request) {
cgrCdr, err := NewCgrCdrFromHttpReq(r, cdrServer.cgrCfg.DefaultTimezone)
cgrCdr, err := NewCgrCdrFromHttpReq(r, cdrServer.cgrCfg.GeneralCfg().DefaultTimezone)
if err != nil {
utils.Logger.Err(fmt.Sprintf("<CDRS> Could not create CDR entry: %s", err.Error()))
return
}
if err := cdrServer.processCdr(cgrCdr.AsCDR(cdrServer.cgrCfg.DefaultTimezone)); err != nil {
if err := cdrServer.processCdr(cgrCdr.AsCDR(cdrServer.cgrCfg.GeneralCfg().DefaultTimezone)); err != nil {
utils.Logger.Err(fmt.Sprintf("<CDRS> Errors when storing CDR entry: %s", err.Error()))
}
}
@@ -102,8 +102,8 @@ func NewCdrServer(cgrCfg *config.CGRConfig, cdrDb CdrStorage, dm *DataManager, r
users: users, aliases: aliases,
cdrstats: cdrstats, stats: stats, thdS: thdS,
chargerS: chargerS, guard: guardian.Guardian,
httpPoster: NewHTTPPoster(cgrCfg.HttpSkipTlsVerify,
cgrCfg.ReplyTimeout), filterS: filterS}, nil
httpPoster: NewHTTPPoster(cgrCfg.GeneralCfg().HttpSkipTlsVerify,
cgrCfg.GeneralCfg().ReplyTimeout), filterS: filterS}, nil
}
type CdrServer struct {
@@ -126,7 +126,7 @@ type CdrServer struct {
}
func (self *CdrServer) Timezone() string {
return self.cgrCfg.DefaultTimezone
return self.cgrCfg.GeneralCfg().DefaultTimezone
}
func (self *CdrServer) SetTimeToLive(timeToLive time.Duration, out *int) error {
self.responseCache = utils.NewResponseCache(timeToLive)
@@ -148,7 +148,7 @@ func (self *CdrServer) RegisterHandlersToServer(server *utils.Server) {
// Used to process external CDRs
func (self *CdrServer) ProcessExternalCdr(eCDR *ExternalCDR) error {
cdr, err := NewCDRFromExternalCDR(eCDR, self.cgrCfg.DefaultTimezone)
cdr, err := NewCDRFromExternalCDR(eCDR, self.cgrCfg.GeneralCfg().DefaultTimezone)
if err != nil {
return err
}
@@ -177,13 +177,13 @@ func (self *CdrServer) storeSMCost(smCost *SMCost, checkDuplicate bool) error {
// Returns error if not able to properly store the CDR, mediation is async since we can always recover offline
func (self *CdrServer) processCdr(cdr *CDR) (err error) {
if cdr.RequestType == "" {
cdr.RequestType = self.cgrCfg.DefaultReqType
cdr.RequestType = self.cgrCfg.GeneralCfg().DefaultReqType
}
if cdr.Tenant == "" {
cdr.Tenant = self.cgrCfg.DefaultTenant
cdr.Tenant = self.cgrCfg.GeneralCfg().DefaultTenant
}
if cdr.Category == "" {
cdr.Category = self.cgrCfg.DefaultCategory
cdr.Category = self.cgrCfg.GeneralCfg().DefaultCategory
}
if cdr.Subject == "" { // Use account information as rating subject if missing
cdr.Subject = cdr.Account
@@ -373,12 +373,14 @@ func (self *CdrServer) deriveCdrs(cdr *CDR) (drvdCDRs []*CDR, err error) {
dcCostFld, _ := utils.NewRSRField(dc.CostField)
dcExtraFields := []*utils.RSRField{}
for key, _ := range cdr.ExtraFields {
for key := range cdr.ExtraFields {
dcExtraFields = append(dcExtraFields, &utils.RSRField{Id: key})
}
forkedCdr, err := cdr.ForkCdr(dc.RunID, dcRequestTypeFld, dcTenantFld, dcCategoryFld, dcAcntFld, dcSubjFld, dcDstFld,
dcSTimeFld, dcATimeFld, dcDurFld, dcRatedFld, dcCostFld, dcExtraFields, true, self.cgrCfg.DefaultTimezone)
forkedCdr, err := cdr.ForkCdr(dc.RunID, dcRequestTypeFld, dcTenantFld,
dcCategoryFld, dcAcntFld, dcSubjFld, dcDstFld, dcSTimeFld, dcATimeFld,
dcDurFld, dcRatedFld, dcCostFld, dcExtraFields, true,
self.cgrCfg.GeneralCfg().DefaultTimezone)
if err != nil {
utils.Logger.Err(fmt.Sprintf("Could not fork CGR with cgrid %s, run: %s, error: %s", cdr.CGRID, dc.RunID, err.Error()))
continue // do not add it to the forked CDR list
@@ -491,9 +493,13 @@ func (self *CdrServer) replicateCDRs(cdrs []*CDR) (err error) {
for _, exportID := range self.cgrCfg.CDRSOnlineCDRExports {
expTpl := self.cgrCfg.CdreProfiles[exportID] // not checking for existence of profile since this should be done in a higher layer
var cdre *CDRExporter
if cdre, err = NewCDRExporter(cdrs, expTpl, expTpl.ExportFormat, expTpl.ExportPath, self.cgrCfg.FailedPostsDir, "CDRSReplication",
expTpl.Synchronous, expTpl.Attempts, expTpl.FieldSeparator, expTpl.UsageMultiplyFactor,
expTpl.CostMultiplyFactor, self.cgrCfg.RoundingDecimals, self.cgrCfg.HttpSkipTlsVerify, self.httpPoster, self.filterS); err != nil {
if cdre, err = NewCDRExporter(cdrs, expTpl, expTpl.ExportFormat,
expTpl.ExportPath, self.cgrCfg.GeneralCfg().FailedPostsDir,
"CDRSReplication", expTpl.Synchronous, expTpl.Attempts,
expTpl.FieldSeparator, expTpl.UsageMultiplyFactor,
expTpl.CostMultiplyFactor, self.cgrCfg.GeneralCfg().RoundingDecimals,
self.cgrCfg.GeneralCfg().HttpSkipTlsVerify, self.httpPoster,
self.filterS); err != nil {
utils.Logger.Err(fmt.Sprintf("<CDRS> Building CDRExporter for online exports got error: <%s>", err.Error()))
continue
}
@@ -610,7 +616,7 @@ func (cdrs *CdrServer) V2StoreSMCost(args ArgsV2CDRSStoreSMCost, reply *string)
// Called by rate/re-rate API, RPC method
func (self *CdrServer) V1RateCDRs(attrs utils.AttrRateCDRs, reply *string) error {
cdrFltr, err := attrs.RPCCDRsFilter.AsCDRsFilter(self.cgrCfg.DefaultTimezone)
cdrFltr, err := attrs.RPCCDRsFilter.AsCDRsFilter(self.cgrCfg.GeneralCfg().DefaultTimezone)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -801,7 +807,7 @@ func (cdrS *CdrServer) V2RateCDRs(attrs *utils.RPCCDRsFilter, reply *string) err
if cdrS.chargerS == nil {
return utils.NewErrNotConnected(utils.ChargerS)
}
cdrFltr, err := attrs.AsCDRsFilter(cdrS.cgrCfg.DefaultTimezone)
cdrFltr, err := attrs.AsCDRsFilter(cdrS.cgrCfg.GeneralCfg().DefaultTimezone)
if err != nil {
return utils.NewErrServerError(err)
}

View File

@@ -65,8 +65,8 @@ var (
},
}
chargerEvents = []*utils.CGREvent{
&utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -76,8 +76,8 @@ var (
utils.Weight: "200.0",
},
},
&utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -85,8 +85,8 @@ var (
utils.AnswerTime: time.Date(2014, 7, 14, 14, 30, 0, 0, time.UTC),
},
},
&utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: utils.GenUUID(),
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
@@ -113,15 +113,15 @@ func TestChargerPopulateChargerService(t *testing.T) {
func TestChargerAddFilter(t *testing.T) {
fltrCP1 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_CP_1",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaString,
FieldName: "Charger",
Values: []string{"ChargerProfile1"},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: "UsageInterval",
Values: []string{(1 * time.Second).String()},
@@ -130,10 +130,10 @@ func TestChargerAddFilter(t *testing.T) {
}
dmCharger.SetFilter(fltrCP1)
fltrCP2 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_CP_2",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaString,
FieldName: "Charger",
Values: []string{"ChargerProfile2"},
@@ -142,10 +142,10 @@ func TestChargerAddFilter(t *testing.T) {
}
dmCharger.SetFilter(fltrCP2)
fltrCPPrefix := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_CP_3",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaPrefix,
FieldName: "Charger",
Values: []string{"Charger"},
@@ -154,10 +154,10 @@ func TestChargerAddFilter(t *testing.T) {
}
dmCharger.SetFilter(fltrCPPrefix)
fltrCP4 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_CP_4",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: utils.Weight,
Values: []string{"200.00"},
@@ -210,7 +210,7 @@ func TestChargerMatchingChargerProfilesForEvent(t *testing.T) {
func TestChargerProcessEvent(t *testing.T) {
rpl := []*ChrgSProcessEventReply{
&ChrgSProcessEventReply{
{
ChargerSProfile: "CPP_1",
CGREvent: chargerEvents[0],
},

View File

@@ -43,8 +43,8 @@ func TestDMitRedis(t *testing.T) {
cfg, _ := config.NewDefaultCGRConfig()
dataDB, err := NewRedisStorage(
fmt.Sprintf("%s:%s", cfg.DataDbCfg().DataDbHost, cfg.DataDbCfg().DataDbPort),
4, cfg.DataDbCfg().DataDbPass, cfg.DBDataEncoding, utils.REDIS_MAX_CONNS,
nil, "")
4, cfg.DataDbCfg().DataDbPass, cfg.GeneralCfg().DBDataEncoding,
utils.REDIS_MAX_CONNS, nil, "")
if err != nil {
t.Fatal("Could not connect to Redis", err.Error())
}

View File

@@ -33,7 +33,7 @@ import (
func matchingItemIDsForEvent(ev map[string]interface{}, stringFldIDs, prefixFldIDs *[]string,
dm *DataManager, cacheID, itemIDPrefix string, indexedSelects bool) (itemIDs utils.StringMap, err error) {
lockID := utils.CacheInstanceToPrefix[cacheID] + itemIDPrefix
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lockID)
guardian.Guardian.GuardIDs(config.CgrConfig().GeneralCfg().LockingTimeout, lockID)
defer guardian.Guardian.UnguardIDs(lockID)
itemIDs = make(utils.StringMap)
if !indexedSelects {

View File

@@ -44,26 +44,32 @@ func TestFilterMatchingItemIDsForEvent(t *testing.T) {
t.Errorf("Error: %+v", err)
}
stringFilter = append(stringFilter, x)
attribStringF := &Filter{Tenant: config.CgrConfig().DefaultTenant,
ID: "stringFilter", Rules: stringFilter}
attribStringF := &Filter{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "stringFilter",
Rules: stringFilter}
dmMatch.SetFilter(attribStringF)
x, err = NewFilterRule(MetaPrefix, "Field", []string{"profilePrefix"})
if err != nil {
t.Errorf("Error: %+v", err)
}
prefixFilter = append(prefixFilter, x)
attribPrefF := &Filter{Tenant: config.CgrConfig().DefaultTenant,
ID: "prefFilter", Rules: prefixFilter}
attribPrefF := &Filter{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "prefFilter",
Rules: prefixFilter}
dmMatch.SetFilter(attribPrefF)
x, err = NewFilterRule(MetaGreaterOrEqual, "Weight", []string{"200.00"})
if err != nil {
t.Errorf("Error: %+v", err)
}
defaultFilter = append(defaultFilter, x)
attribDefaultF := &Filter{Tenant: config.CgrConfig().DefaultTenant,
ID: "defaultFilter", Rules: defaultFilter}
attribDefaultF := &Filter{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "defaultFilter",
Rules: defaultFilter}
dmMatch.SetFilter(attribDefaultF)
prefix := utils.ConcatenatedKey(config.CgrConfig().DefaultTenant, context)
prefix := utils.ConcatenatedKey(config.CgrConfig().GeneralCfg().DefaultTenant, context)
atrRFI := NewFilterIndexer(dmMatch, utils.AttributeProfilePrefix, prefix)
atrRFI.IndexTPFilter(FilterToTPFilter(attribStringF), stringFilterID)
atrRFI.IndexTPFilter(FilterToTPFilter(attribPrefF), prefixFilterID)

View File

@@ -103,7 +103,7 @@ func (rfi *FilterIndexer) cacheRemItemType() { // ToDo: tune here by removing pe
// StoreIndexes handles storing the indexes to dataDB
func (rfi *FilterIndexer) StoreIndexes(commit bool, transactionID string) (err error) {
lockID := utils.CacheInstanceToPrefix[utils.PrefixToIndexCache[rfi.itemType]] + rfi.dbKeySuffix
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lockID)
guardian.Guardian.GuardIDs(config.CgrConfig().GeneralCfg().LockingTimeout, lockID)
defer guardian.Guardian.UnguardIDs(lockID)
if err = rfi.dm.SetFilterIndexes(
utils.PrefixToIndexCache[rfi.itemType], rfi.dbKeySuffix,
@@ -216,7 +216,7 @@ func (rfi *FilterIndexer) RemoveItemFromIndex(tenant, itemID string, oldFilters
Tenant: tenant,
ID: itemID,
Rules: []*FilterRule{
&FilterRule{
{
Type: utils.META_NONE,
FieldName: utils.META_ANY,
Values: []string{utils.META_ANY},
@@ -277,7 +277,7 @@ func createAndIndex(itemPrefix, tenant, context, itemID string, filterIDs []stri
Tenant: tenant,
ID: itemID,
Rules: []*FilterRule{
&FilterRule{
{
Type: utils.META_NONE,
FieldName: utils.META_ANY,
Values: []string{utils.META_ANY},

View File

@@ -64,8 +64,8 @@ func TestFilterIndexerITRedis(t *testing.T) {
cfg, _ := config.NewDefaultCGRConfig()
redisDB, err := NewRedisStorage(
fmt.Sprintf("%s:%s", cfg.DataDbCfg().DataDbHost, cfg.DataDbCfg().DataDbPort),
4, cfg.DataDbCfg().DataDbPass, cfg.DBDataEncoding, utils.REDIS_MAX_CONNS,
nil, "")
4, cfg.DataDbCfg().DataDbPass, cfg.GeneralCfg().DBDataEncoding,
utils.REDIS_MAX_CONNS, nil, "")
if err != nil {
t.Fatal("Could not connect to Redis", err.Error())
}

View File

@@ -68,10 +68,10 @@ func (fS *FilterS) connStatS() (err error) {
}
fS.statSConns, err = NewRPCPool(rpcclient.POOL_FIRST,
fS.cfg.TLSClientKey, fS.cfg.TLSClientCerificate,
fS.cfg.ConnectAttempts, fS.cfg.Reconnects,
fS.cfg.ConnectTimeout, fS.cfg.ReplyTimeout,
fS.cfg.GeneralCfg().ConnectAttempts, fS.cfg.GeneralCfg().Reconnects,
fS.cfg.GeneralCfg().ConnectTimeout, fS.cfg.GeneralCfg().ReplyTimeout,
fS.cfg.FilterSCfg().StatSConns,
fS.statSChan, fS.cfg.InternalTtl)
fS.statSChan, fS.cfg.GeneralCfg().InternalTtl)
return
}
@@ -113,7 +113,7 @@ func NewFilterFromInline(tenant, inlnRule string) (f *Filter, err error) {
Tenant: tenant,
ID: inlnRule,
Rules: []*FilterRule{
&FilterRule{
{
Type: ruleSplt[0],
FieldName: ruleSplt[1],
Values: strings.Split(ruleSplt[2], utils.INFIELD_SEP)}},

View File

@@ -142,16 +142,25 @@ func (fsCdr FSCdr) AsCDR(timezone string) *CDR {
storCdr.CGRID = fsCdr.getCGRID()
storCdr.ToR = utils.VOICE
storCdr.OriginID = fsCdr.vars[FS_UUID]
storCdr.OriginHost = utils.FirstNonEmpty(fsCdr.vars[utils.CGROriginHost], fsCdr.vars[FsIPv4])
storCdr.OriginHost = utils.FirstNonEmpty(fsCdr.vars[utils.CGROriginHost],
fsCdr.vars[FsIPv4])
storCdr.Source = FS_CDR_SOURCE
storCdr.RequestType = utils.FirstNonEmpty(fsCdr.vars[utils.CGR_REQTYPE], fsCdr.cgrCfg.DefaultReqType)
storCdr.Tenant = utils.FirstNonEmpty(fsCdr.vars[utils.CGR_TENANT], fsCdr.cgrCfg.DefaultTenant)
storCdr.Category = utils.FirstNonEmpty(fsCdr.vars[utils.CGR_CATEGORY], fsCdr.cgrCfg.DefaultCategory)
storCdr.Account = fsCdr.firstDefined([]string{utils.CGR_ACCOUNT, FS_USERNAME}, FsUsername)
storCdr.Subject = fsCdr.firstDefined([]string{utils.CGR_SUBJECT, utils.CGR_ACCOUNT, FS_USERNAME}, FsUsername)
storCdr.Destination = utils.FirstNonEmpty(fsCdr.vars[utils.CGR_DESTINATION], fsCdr.vars[FS_CALL_DEST_NR], fsCdr.vars[FS_SIP_REQUSER])
storCdr.SetupTime, _ = utils.ParseTimeDetectLayout(fsCdr.vars[FS_SETUP_TIME], timezone) // Not interested to process errors, should do them if necessary in a previous step
storCdr.AnswerTime, _ = utils.ParseTimeDetectLayout(fsCdr.vars[FS_ANSWER_TIME], timezone)
storCdr.RequestType = utils.FirstNonEmpty(fsCdr.vars[utils.CGR_REQTYPE],
fsCdr.cgrCfg.GeneralCfg().DefaultReqType)
storCdr.Tenant = utils.FirstNonEmpty(fsCdr.vars[utils.CGR_TENANT],
fsCdr.cgrCfg.GeneralCfg().DefaultTenant)
storCdr.Category = utils.FirstNonEmpty(fsCdr.vars[utils.CGR_CATEGORY],
fsCdr.cgrCfg.GeneralCfg().DefaultCategory)
storCdr.Account = fsCdr.firstDefined([]string{utils.CGR_ACCOUNT, FS_USERNAME},
FsUsername)
storCdr.Subject = fsCdr.firstDefined([]string{utils.CGR_SUBJECT,
utils.CGR_ACCOUNT, FS_USERNAME}, FsUsername)
storCdr.Destination = utils.FirstNonEmpty(fsCdr.vars[utils.CGR_DESTINATION],
fsCdr.vars[FS_CALL_DEST_NR], fsCdr.vars[FS_SIP_REQUSER])
storCdr.SetupTime, _ = utils.ParseTimeDetectLayout(fsCdr.vars[FS_SETUP_TIME],
timezone) // Not interested to process errors, should do them if necessary in a previous step
storCdr.AnswerTime, _ = utils.ParseTimeDetectLayout(fsCdr.vars[FS_ANSWER_TIME],
timezone)
storCdr.Usage, _ = utils.ParseDurationWithSecs(fsCdr.vars[FS_DURATION])
storCdr.ExtraFields = fsCdr.getExtraFields()
storCdr.Cost = -1

View File

@@ -75,10 +75,10 @@ func (self *LcrRequest) AsCallDescriptor(timezone string) (*CallDescriptor, erro
self.Direction = utils.OUT
}
if len(self.Tenant) == 0 {
self.Tenant = config.CgrConfig().DefaultTenant
self.Tenant = config.CgrConfig().GeneralCfg().DefaultTenant
}
if len(self.Category) == 0 {
self.Category = config.CgrConfig().DefaultCategory
self.Category = config.CgrConfig().GeneralCfg().DefaultCategory
}
if len(self.Subject) == 0 {
self.Subject = self.Account

View File

@@ -238,8 +238,8 @@ func TestLcrRequestAsCallDescriptor(t *testing.T) {
lcrReq = &LcrRequest{Account: "2001", Destination: "2002", SetupTime: sTime.String()}
eCd := &CallDescriptor{
Direction: utils.OUT,
Tenant: config.CgrConfig().DefaultTenant,
Category: config.CgrConfig().DefaultCategory,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
Category: config.CgrConfig().GeneralCfg().DefaultCategory,
Account: lcrReq.Account,
Subject: lcrReq.Account,
Destination: lcrReq.Destination,
@@ -261,9 +261,9 @@ func TestLCRCostSuppliersSlice(t *testing.T) {
lcrCost = &LCRCost{
Entry: &LCREntry{DestinationId: utils.ANY, RPCategory: "call", Strategy: LCR_STRATEGY_STATIC, StrategyParams: "ivo12;dan12;rif12", Weight: 10.0},
SupplierCosts: []*LCRSupplierCost{
&LCRSupplierCost{Supplier: "*out:tenant12:call:ivo12", Cost: 1.8, Duration: 60 * time.Second},
&LCRSupplierCost{Supplier: "*out:tenant12:call:dan12", Cost: 0.6, Duration: 60 * time.Second},
&LCRSupplierCost{Supplier: "*out:tenant12:call:rif12", Cost: 1.2, Duration: 60 * time.Second},
{Supplier: "*out:tenant12:call:ivo12", Cost: 1.8, Duration: 60 * time.Second},
{Supplier: "*out:tenant12:call:dan12", Cost: 0.6, Duration: 60 * time.Second},
{Supplier: "*out:tenant12:call:rif12", Cost: 1.2, Duration: 60 * time.Second},
},
}
eSuppls := []string{"ivo12", "dan12", "rif12"}
@@ -282,9 +282,9 @@ func TestLCRCostSuppliersString(t *testing.T) {
lcrCost = &LCRCost{
Entry: &LCREntry{DestinationId: utils.ANY, RPCategory: "call", Strategy: LCR_STRATEGY_STATIC, StrategyParams: "ivo12;dan12;rif12", Weight: 10.0},
SupplierCosts: []*LCRSupplierCost{
&LCRSupplierCost{Supplier: "*out:tenant12:call:ivo12", Cost: 1.8, Duration: 60 * time.Second},
&LCRSupplierCost{Supplier: "*out:tenant12:call:dan12", Cost: 0.6, Duration: 60 * time.Second},
&LCRSupplierCost{Supplier: "*out:tenant12:call:rif12", Cost: 1.2, Duration: 60 * time.Second},
{Supplier: "*out:tenant12:call:ivo12", Cost: 1.8, Duration: 60 * time.Second},
{Supplier: "*out:tenant12:call:dan12", Cost: 0.6, Duration: 60 * time.Second},
{Supplier: "*out:tenant12:call:rif12", Cost: 1.2, Duration: 60 * time.Second},
},
}
eSupplStr := "ivo12,dan12,rif12"
@@ -300,25 +300,25 @@ func TestLCRCostSuppliersLoad(t *testing.T) {
lcrCost := &LCRCost{
Entry: &LCREntry{DestinationId: utils.ANY, RPCategory: "call", Strategy: LCR_STRATEGY_LOAD, StrategyParams: "ivo12:10;dan12:3;*default:7", Weight: 10.0},
SupplierCosts: []*LCRSupplierCost{
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:ivo12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 3 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{SetupTime: setupTime}, {SetupTime: setupTime}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 1 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{SetupTime: setupTime}, {SetupTime: setupTime}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
@@ -326,25 +326,25 @@ func TestLCRCostSuppliersLoad(t *testing.T) {
},
},
},
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:dan12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
@@ -352,32 +352,32 @@ func TestLCRCostSuppliersLoad(t *testing.T) {
},
},
},
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:rif12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 1 * time.Minute,
@@ -398,25 +398,25 @@ func TestLCRCostSuppliersLoadAllRounded(t *testing.T) {
lcrCost := &LCRCost{
Entry: &LCREntry{DestinationId: utils.ANY, RPCategory: "call", Strategy: LCR_STRATEGY_LOAD, StrategyParams: "ivo12:3;dan12:5;*default:2", Weight: 10.0},
SupplierCosts: []*LCRSupplierCost{
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:ivo12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 3 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{SetupTime: setupTime}, {SetupTime: setupTime}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 1 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{SetupTime: setupTime}, {SetupTime: setupTime}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
@@ -424,25 +424,25 @@ func TestLCRCostSuppliersLoadAllRounded(t *testing.T) {
},
},
},
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:dan12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(200 * time.Minute)}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime.Add(200 * time.Minute)}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
@@ -450,32 +450,32 @@ func TestLCRCostSuppliersLoadAllRounded(t *testing.T) {
},
},
},
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:rif12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime.Add(400 * time.Minute)}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime.Add(400 * time.Minute)}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 1 * time.Minute,
@@ -498,25 +498,25 @@ func TestLCRCostSuppliersLoadAllOver(t *testing.T) {
lcrCost := &LCRCost{
Entry: &LCREntry{DestinationId: utils.ANY, RPCategory: "call", Strategy: LCR_STRATEGY_LOAD, StrategyParams: "ivo12:2;dan12:4;*default:2", Weight: 10.0},
SupplierCosts: []*LCRSupplierCost{
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:ivo12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 3 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{SetupTime: setupTime}, {SetupTime: setupTime}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 1 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{SetupTime: setupTime}, {SetupTime: setupTime}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
@@ -524,25 +524,25 @@ func TestLCRCostSuppliersLoadAllOver(t *testing.T) {
},
},
},
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:dan12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(200 * time.Minute)}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime.Add(200 * time.Minute)}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
@@ -550,32 +550,32 @@ func TestLCRCostSuppliersLoadAllOver(t *testing.T) {
},
},
},
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:rif12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(400 * time.Minute)}},
{
Cdrs: []*QCdr{{}, {}, {SetupTime: setupTime.Add(400 * time.Minute)}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 1 * time.Minute,
@@ -598,25 +598,25 @@ func TestLCRCostSuppliersLoadAllOverMisingDefault(t *testing.T) {
lcrCost := &LCRCost{
Entry: &LCREntry{DestinationId: utils.ANY, RPCategory: "call", Strategy: LCR_STRATEGY_LOAD, StrategyParams: "ivo12:2;dan12:4", Weight: 10.0},
SupplierCosts: []*LCRSupplierCost{
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:ivo12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 3 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{SetupTime: setupTime}, {SetupTime: setupTime}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 1 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{SetupTime: setupTime}, {SetupTime: setupTime}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
@@ -624,25 +624,25 @@ func TestLCRCostSuppliersLoadAllOverMisingDefault(t *testing.T) {
},
},
},
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:dan12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(200 * time.Minute)}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime.Add(200 * time.Minute)}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
@@ -650,32 +650,32 @@ func TestLCRCostSuppliersLoadAllOverMisingDefault(t *testing.T) {
},
},
},
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:rif12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(400 * time.Minute)}},
{
Cdrs: []*QCdr{{}, {}, {SetupTime: setupTime.Add(400 * time.Minute)}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 1 * time.Minute,
@@ -698,25 +698,25 @@ func TestLCRCostSuppliersLoadAllOverMisingParams(t *testing.T) {
lcrCost := &LCRCost{
Entry: &LCREntry{DestinationId: utils.ANY, RPCategory: "call", Strategy: LCR_STRATEGY_LOAD, StrategyParams: "", Weight: 10.0},
SupplierCosts: []*LCRSupplierCost{
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:ivo12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 3 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{SetupTime: setupTime}, {SetupTime: setupTime}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 1 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{SetupTime: setupTime}, {SetupTime: setupTime}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
@@ -724,25 +724,25 @@ func TestLCRCostSuppliersLoadAllOverMisingParams(t *testing.T) {
},
},
},
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:dan12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(60 * time.Minute)}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime.Add(60 * time.Minute)}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {}, {}, {}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
@@ -750,32 +750,32 @@ func TestLCRCostSuppliersLoadAllOverMisingParams(t *testing.T) {
},
},
},
&LCRSupplierCost{
{
Supplier: "*out:tenant12:call:rif12",
supplierQueues: []*CDRStatsQueue{
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 7 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{}, &QCdr{SetupTime: setupTime.Add(200 * time.Minute)}},
{
Cdrs: []*QCdr{{}, {}, {SetupTime: setupTime.Add(200 * time.Minute)}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 10 * time.Minute,
},
},
&CDRStatsQueue{
Cdrs: []*QCdr{&QCdr{}, &QCdr{SetupTime: setupTime}},
{
Cdrs: []*QCdr{{}, {SetupTime: setupTime}},
conf: &CdrStats{
QueueLength: 0,
TimeWindow: 1 * time.Minute,

View File

@@ -37,7 +37,7 @@ func InitDataDb(cfg *config.CGRConfig) error {
dm, err := ConfigureDataStorage(cfg.DataDbCfg().DataDbType,
cfg.DataDbCfg().DataDbHost, cfg.DataDbCfg().DataDbPort,
cfg.DataDbCfg().DataDbName, cfg.DataDbCfg().DataDbUser,
cfg.DataDbCfg().DataDbPass, cfg.DBDataEncoding,
cfg.DataDbCfg().DataDbPass, cfg.GeneralCfg().DBDataEncoding,
cfg.CacheCfg(), cfg.DataDbCfg().DataDbSentinelName)
if err != nil {
return err
@@ -58,7 +58,7 @@ func InitStorDb(cfg *config.CGRConfig) error {
storDb, err := ConfigureLoadStorage(cfg.StorDbCfg().StorDBType,
cfg.StorDbCfg().StorDBHost, cfg.StorDbCfg().StorDBPort,
cfg.StorDbCfg().StorDBName, cfg.StorDbCfg().StorDBUser,
cfg.StorDbCfg().StorDBPass, cfg.DBDataEncoding,
cfg.StorDbCfg().StorDBPass, cfg.GeneralCfg().DBDataEncoding,
cfg.StorDbCfg().StorDBMaxOpenConns, cfg.StorDbCfg().StorDBMaxIdleConns,
cfg.StorDbCfg().StorDBConnMaxLifetime, cfg.StorDbCfg().StorDBCDRSIndexes)
if err != nil {

View File

@@ -46,19 +46,19 @@ func TestLoaderITConnDataDbs(t *testing.T) {
if dataDbCsv, err = ConfigureDataStorage(lCfg.DataDbCfg().DataDbType,
lCfg.DataDbCfg().DataDbHost, lCfg.DataDbCfg().DataDbPort, "7",
lCfg.DataDbCfg().DataDbUser, lCfg.DataDbCfg().DataDbPass,
lCfg.DBDataEncoding, nil, ""); err != nil {
lCfg.GeneralCfg().DBDataEncoding, nil, ""); err != nil {
t.Fatal("Error on dataDb connection: ", err.Error())
}
if dataDbStor, err = ConfigureDataStorage(lCfg.DataDbCfg().DataDbType,
lCfg.DataDbCfg().DataDbHost, lCfg.DataDbCfg().DataDbPort, "8",
lCfg.DataDbCfg().DataDbUser, lCfg.DataDbCfg().DataDbPass,
lCfg.DBDataEncoding, nil, ""); err != nil {
lCfg.GeneralCfg().DBDataEncoding, nil, ""); err != nil {
t.Fatal("Error on dataDb connection: ", err.Error())
}
if dataDbApier, err = ConfigureDataStorage(lCfg.DataDbCfg().DataDbType,
lCfg.DataDbCfg().DataDbHost, lCfg.DataDbCfg().DataDbPort, "9",
lCfg.DataDbCfg().DataDbUser, lCfg.DataDbCfg().DataDbPass,
lCfg.DBDataEncoding, nil, ""); err != nil {
lCfg.GeneralCfg().DBDataEncoding, nil, ""); err != nil {
t.Fatal("Error on dataDb connection: ", err.Error())
}
for _, db := range []Storage{dataDbCsv.DataDB(), dataDbStor.DataDB(), dataDbApier.DataDB(),

View File

@@ -272,9 +272,9 @@ func TestMapEventAsCDR(t *testing.T) {
Cost: -1.0,
RunID: utils.MetaRaw,
ToR: utils.VOICE,
RequestType: cfg.DefaultReqType,
Tenant: cfg.DefaultTenant,
Category: cfg.DefaultCategory,
RequestType: cfg.GeneralCfg().DefaultReqType,
Tenant: cfg.GeneralCfg().DefaultTenant,
Category: cfg.GeneralCfg().DefaultCategory,
ExtraFields: make(map[string]string),
}
if rply, err := me.AsCDR(cfg, utils.EmptyString); err != nil {
@@ -335,9 +335,9 @@ func TestMapEventAsCDR(t *testing.T) {
},
RunID: utils.MetaRaw,
ToR: utils.VOICE,
RequestType: cfg.DefaultReqType,
Tenant: cfg.DefaultTenant,
Category: cfg.DefaultCategory,
RequestType: cfg.GeneralCfg().DefaultReqType,
Tenant: cfg.GeneralCfg().DefaultTenant,
Category: cfg.GeneralCfg().DefaultCategory,
}
if rply, err := me.AsCDR(cfg, utils.EmptyString); err != nil {
t.Error(err)
@@ -368,9 +368,9 @@ func TestMapEventAsCDR(t *testing.T) {
},
RunID: utils.MetaRaw,
ToR: utils.VOICE,
RequestType: cfg.DefaultReqType,
Tenant: cfg.DefaultTenant,
Category: cfg.DefaultCategory,
RequestType: cfg.GeneralCfg().DefaultReqType,
Tenant: cfg.GeneralCfg().DefaultTenant,
Category: cfg.GeneralCfg().DefaultCategory,
}
if rply, err := me.AsCDR(cfg, utils.EmptyString); err != nil {
t.Error(err)

View File

@@ -95,8 +95,8 @@ func TestOnStorITRedis(t *testing.T) {
cfg, _ := config.NewDefaultCGRConfig()
rdsITdb, err = NewRedisStorage(
fmt.Sprintf("%s:%s", cfg.DataDbCfg().DataDbHost, cfg.DataDbCfg().DataDbPort),
4, cfg.DataDbCfg().DataDbPass, cfg.DBDataEncoding, utils.REDIS_MAX_CONNS,
nil, "")
4, cfg.DataDbCfg().DataDbPass, cfg.GeneralCfg().DBDataEncoding,
utils.REDIS_MAX_CONNS, nil, "")
if err != nil {
t.Fatal("Could not connect to Redis", err.Error())
}

View File

@@ -248,7 +248,7 @@ func (rs Resources) allocateResource(ru *ResourceUsage, dryRun bool) (alcMessage
return "", utils.ErrResourceUnavailable
}
lockIDs := utils.PrefixSliceItems(rs.tenatIDsStr(), utils.ResourcesPrefix)
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lockIDs...)
guardian.Guardian.GuardIDs(config.CgrConfig().GeneralCfg().LockingTimeout, lockIDs...)
defer guardian.Guardian.UnguardIDs(lockIDs...)
// Simulate resource usage
for _, r := range rs {
@@ -417,7 +417,7 @@ func (rS *ResourceService) cachedResourcesForEvent(evUUID string) (rs Resources)
for i, rTid := range rIDs {
lockIDs[i] = utils.ResourcesPrefix + rTid.TenantID()
}
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lockIDs...)
guardian.Guardian.GuardIDs(config.CgrConfig().GeneralCfg().LockingTimeout, lockIDs...)
defer guardian.Guardian.UnguardIDs(lockIDs...)
for i, rTid := range rIDs {
if r, err := rS.dm.GetResource(rTid.Tenant, rTid.ID, true, true, ""); err != nil {

View File

@@ -36,8 +36,8 @@ var (
resService *ResourceService
dmRES *DataManager
resprf = []*ResourceProfile{
&ResourceProfile{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ResourceProfile1",
FilterIDs: []string{"FLTR_RES_1"},
ActivationInterval: &utils.ActivationInterval{
@@ -49,8 +49,8 @@ var (
Weight: 20.00,
ThresholdIDs: []string{""},
},
&ResourceProfile{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ResourceProfile2", // identifier of this resource
FilterIDs: []string{"FLTR_RES_2"},
ActivationInterval: &utils.ActivationInterval{
@@ -62,8 +62,8 @@ var (
Weight: 20.00,
ThresholdIDs: []string{""},
},
&ResourceProfile{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ResourceProfile3",
FilterIDs: []string{"FLTR_RES_3"},
ActivationInterval: &utils.ActivationInterval{
@@ -77,22 +77,22 @@ var (
},
}
resourceTest = []*Resource{
&Resource{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ResourceProfile1",
Usages: map[string]*ResourceUsage{},
TTLIdx: []string{},
rPrf: resprf[0],
},
&Resource{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ResourceProfile2",
Usages: map[string]*ResourceUsage{},
TTLIdx: []string{},
rPrf: resprf[1],
},
&Resource{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "ResourceProfile3",
Usages: map[string]*ResourceUsage{},
TTLIdx: []string{},
@@ -100,8 +100,8 @@ var (
},
}
resEvs = []*utils.CGREvent{
&utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "event1",
Event: map[string]interface{}{
"Resources": "ResourceProfile1",
@@ -113,8 +113,8 @@ var (
utils.COST: 123.0,
},
},
&utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "event2",
Event: map[string]interface{}{
"Resources": "ResourceProfile2",
@@ -125,8 +125,8 @@ var (
utils.Usage: time.Duration(45 * time.Second),
},
},
&utils.CGREvent{
Tenant: config.CgrConfig().DefaultTenant,
{
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "event3",
Event: map[string]interface{}{
"Resources": "ResourceProfilePrefix",
@@ -342,7 +342,7 @@ func TestRSCacheSetGet(t *testing.T) {
UsageTTL: time.Duration(1 * time.Millisecond),
},
Usages: map[string]*ResourceUsage{
"RU2": &ResourceUsage{
"RU2": {
Tenant: "cgrates.org",
ID: "RU2",
ExpiryTime: time.Date(2014, 7, 3, 13, 43, 0, 1, time.UTC),
@@ -404,25 +404,25 @@ func TestResourceV1AuthorizeResourceMissingStruct(t *testing.T) {
func TestResourceAddFilters(t *testing.T) {
fltrRes1 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_RES_1",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaString,
FieldName: "Resources",
Values: []string{"ResourceProfile1"},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: "UsageInterval",
Values: []string{(1 * time.Second).String()},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: utils.Usage,
Values: []string{(1 * time.Second).String()},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: utils.Weight,
Values: []string{"9.0"},
@@ -431,25 +431,25 @@ func TestResourceAddFilters(t *testing.T) {
}
dmRES.SetFilter(fltrRes1)
fltrRes2 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_RES_2",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaString,
FieldName: "Resources",
Values: []string{"ResourceProfile2"},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: "PddInterval",
Values: []string{(1 * time.Second).String()},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: utils.Usage,
Values: []string{(1 * time.Second).String()},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: utils.Weight,
Values: []string{"15.0"},
@@ -458,10 +458,10 @@ func TestResourceAddFilters(t *testing.T) {
}
dmRES.SetFilter(fltrRes2)
fltrRes3 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_RES_3",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaPrefix,
FieldName: "Resources",
Values: []string{"ResourceProfilePrefix"},
@@ -478,13 +478,13 @@ func TestResourceCachedResourcesForEvent(t *testing.T) {
Units: 10.0,
}
val := []*utils.TenantID{
&utils.TenantID{
{
Tenant: "cgrates.org",
ID: "RL",
},
}
resources := []*Resource{
&Resource{
{
Tenant: "cgrates.org",
ID: "RL",
rPrf: &ResourceProfile{
@@ -502,7 +502,7 @@ func TestResourceCachedResourcesForEvent(t *testing.T) {
UsageTTL: time.Duration(1 * time.Millisecond),
},
Usages: map[string]*ResourceUsage{
"RU2": &ResourceUsage{
"RU2": {
Tenant: "cgrates.org",
ID: "RU2",
ExpiryTime: time.Date(2014, 7, 3, 13, 43, 0, 1, time.UTC),

View File

@@ -585,7 +585,7 @@ func (rs *Responder) Status(arg string, reply *map[string]interface{}) (err erro
memstats := new(runtime.MemStats)
runtime.ReadMemStats(memstats)
response := make(map[string]interface{})
response[utils.NodeID] = config.CgrConfig().NodeID
response[utils.NodeID] = config.CgrConfig().GeneralCfg().NodeID
response["MemoryUsage"] = utils.SizeFmt(float64(memstats.HeapAlloc), "")
response[utils.ActiveGoroutines] = runtime.NumGoroutine()
response["Footprint"] = utils.SizeFmt(float64(memstats.Sys), "")

View File

@@ -628,9 +628,9 @@ func TestSafEventAsCDR(t *testing.T) {
Cost: -1.0,
RunID: utils.MetaRaw,
ToR: utils.VOICE,
RequestType: cfg.DefaultReqType,
Tenant: cfg.DefaultTenant,
Category: cfg.DefaultCategory,
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); err != nil {
@@ -691,9 +691,9 @@ func TestSafEventAsCDR(t *testing.T) {
},
RunID: utils.MetaRaw,
ToR: utils.VOICE,
RequestType: cfg.DefaultReqType,
Tenant: cfg.DefaultTenant,
Category: cfg.DefaultCategory,
RequestType: cfg.GeneralCfg().DefaultReqType,
Tenant: cfg.GeneralCfg().DefaultTenant,
Category: cfg.GeneralCfg().DefaultCategory,
}
if rply, err := se.AsCDR(cfg, utils.EmptyString); err != nil {
t.Error(err)
@@ -724,9 +724,9 @@ func TestSafEventAsCDR(t *testing.T) {
},
RunID: utils.MetaRaw,
ToR: utils.VOICE,
RequestType: cfg.DefaultReqType,
Tenant: cfg.DefaultTenant,
Category: cfg.DefaultCategory,
RequestType: cfg.GeneralCfg().DefaultReqType,
Tenant: cfg.GeneralCfg().DefaultTenant,
Category: cfg.GeneralCfg().DefaultCategory,
}
if rply, err := se.AsCDR(cfg, utils.EmptyString); err != nil {
t.Error(err)

View File

@@ -80,7 +80,7 @@ func (asr *StatASR) getValue() float64 {
asr.val = utils.Float64Pointer(STATS_NA)
} else {
asr.val = utils.Float64Pointer(utils.Round((asr.Answered / asr.Count * 100),
config.CgrConfig().RoundingDecimals, utils.ROUNDING_MIDDLE))
config.CgrConfig().GeneralCfg().RoundingDecimals, utils.ROUNDING_MIDDLE))
}
}
return *asr.val
@@ -108,7 +108,8 @@ func (asr *StatASR) GetFloat64Value() (val float64) {
// AddEvent is part of StatMetric interface
func (asr *StatASR) AddEvent(ev *utils.CGREvent) (err error) {
var answered bool
if at, err := ev.FieldAsTime(utils.AnswerTime, config.CgrConfig().DefaultTimezone); err != nil &&
if at, err := ev.FieldAsTime(utils.AnswerTime,
config.CgrConfig().GeneralCfg().DefaultTimezone); err != nil &&
err != utils.ErrNotFound {
return err
} else if !at.IsZero() {
@@ -196,7 +197,8 @@ func (acd *StatACD) GetFloat64Value() (v float64) {
func (acd *StatACD) AddEvent(ev *utils.CGREvent) (err error) {
var value time.Duration
if at, err := ev.FieldAsTime(utils.AnswerTime, config.CgrConfig().DefaultTimezone); err != nil {
if at, err := ev.FieldAsTime(utils.AnswerTime,
config.CgrConfig().GeneralCfg().DefaultTimezone); err != nil {
return err
} else if !at.IsZero() {
if duration, err := ev.FieldAsDuration(utils.Usage); err != nil &&
@@ -283,7 +285,8 @@ func (tcd *StatTCD) GetFloat64Value() (v float64) {
func (tcd *StatTCD) AddEvent(ev *utils.CGREvent) (err error) {
var value time.Duration
if at, err := ev.FieldAsTime(utils.AnswerTime, config.CgrConfig().DefaultTimezone); err != nil {
if at, err := ev.FieldAsTime(utils.AnswerTime,
config.CgrConfig().GeneralCfg().DefaultTimezone); err != nil {
return err
} else if !at.IsZero() {
if duration, err := ev.FieldAsDuration(utils.Usage); err != nil &&
@@ -343,7 +346,7 @@ func (acc *StatACC) getValue() float64 {
acc.val = utils.Float64Pointer(STATS_NA)
} else {
acc.val = utils.Float64Pointer(utils.Round((acc.Sum / acc.Count),
config.CgrConfig().RoundingDecimals, utils.ROUNDING_MIDDLE))
config.CgrConfig().GeneralCfg().RoundingDecimals, utils.ROUNDING_MIDDLE))
}
}
return *acc.val
@@ -369,7 +372,8 @@ func (acc *StatACC) GetFloat64Value() (v float64) {
func (acc *StatACC) AddEvent(ev *utils.CGREvent) (err error) {
var value float64
if at, err := ev.FieldAsTime(utils.AnswerTime, config.CgrConfig().DefaultTimezone); err != nil {
if at, err := ev.FieldAsTime(utils.AnswerTime,
config.CgrConfig().GeneralCfg().DefaultTimezone); err != nil {
return err
} else if !at.IsZero() {
if cost, err := ev.FieldAsFloat64(utils.COST); err != nil &&
@@ -428,7 +432,8 @@ func (tcc *StatTCC) getValue() float64 {
tcc.val = utils.Float64Pointer(STATS_NA)
} else {
tcc.val = utils.Float64Pointer(utils.Round(tcc.Sum,
config.CgrConfig().RoundingDecimals, utils.ROUNDING_MIDDLE))
config.CgrConfig().GeneralCfg().RoundingDecimals,
utils.ROUNDING_MIDDLE))
}
}
return *tcc.val
@@ -453,7 +458,8 @@ func (tcc *StatTCC) GetFloat64Value() (v float64) {
func (tcc *StatTCC) AddEvent(ev *utils.CGREvent) (err error) {
var value float64
if at, err := ev.FieldAsTime(utils.AnswerTime, config.CgrConfig().DefaultTimezone); err != nil {
if at, err := ev.FieldAsTime(utils.AnswerTime,
config.CgrConfig().GeneralCfg().DefaultTimezone); err != nil {
return err
} else if !at.IsZero() {
if cost, err := ev.FieldAsFloat64(utils.COST); err != nil &&
@@ -541,7 +547,8 @@ func (pdd *StatPDD) GetFloat64Value() (v float64) {
func (pdd *StatPDD) AddEvent(ev *utils.CGREvent) (err error) {
var value time.Duration
if at, err := ev.FieldAsTime(utils.AnswerTime, config.CgrConfig().DefaultTimezone); err != nil &&
if at, err := ev.FieldAsTime(utils.AnswerTime,
config.CgrConfig().GeneralCfg().DefaultTimezone); err != nil &&
err != utils.ErrNotFound {
return err
} else if !at.IsZero() {
@@ -665,7 +672,8 @@ func (sum *StatSum) getValue() float64 {
sum.val = utils.Float64Pointer(STATS_NA)
} else {
sum.val = utils.Float64Pointer(utils.Round(sum.Sum,
config.CgrConfig().RoundingDecimals, utils.ROUNDING_MIDDLE))
config.CgrConfig().GeneralCfg().RoundingDecimals,
utils.ROUNDING_MIDDLE))
}
}
return *sum.val
@@ -744,7 +752,7 @@ func (avg *StatAverage) getValue() float64 {
avg.val = utils.Float64Pointer(STATS_NA)
} else {
avg.val = utils.Float64Pointer(utils.Round((avg.Sum / avg.Count),
config.CgrConfig().RoundingDecimals, utils.ROUNDING_MIDDLE))
config.CgrConfig().GeneralCfg().RoundingDecimals, utils.ROUNDING_MIDDLE))
}
}
return *avg.val

View File

@@ -108,7 +108,7 @@ func (sS *StatService) storeStats() {
break // no more keys, backup completed
}
lkID := utils.StatQueuePrefix + sID
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lkID)
guardian.Guardian.GuardIDs(config.CgrConfig().GeneralCfg().LockingTimeout, lkID)
if sqIf, ok := Cache.Get(utils.CacheStatQueues, sID); !ok || sqIf == nil {
utils.Logger.Warning(
fmt.Sprintf("<%s> failed retrieving from cache stat queue with ID: %s",
@@ -177,7 +177,7 @@ func (sS *StatService) matchingStatQueuesForEvent(args *StatsArgsProcessEvent) (
continue
}
lkID := utils.StatQueuePrefix + utils.ConcatenatedKey(sqPrfl.Tenant, sqPrfl.ID)
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lkID)
guardian.Guardian.GuardIDs(config.CgrConfig().GeneralCfg().LockingTimeout, lkID)
s, err := sS.dm.GetStatQueue(sqPrfl.Tenant, sqPrfl.ID, true, true, "")
guardian.Guardian.UnguardIDs(lkID)
if err != nil {
@@ -235,7 +235,7 @@ func (sS *StatService) processEvent(args *StatsArgsProcessEvent) (statQueueIDs [
for _, sq := range matchSQs {
stsIDs = append(stsIDs, sq.ID)
lkID := utils.StatQueuePrefix + sq.TenantID()
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lkID)
guardian.Guardian.GuardIDs(config.CgrConfig().GeneralCfg().LockingTimeout, lkID)
err = sq.ProcessEvent(&args.CGREvent)
guardian.Guardian.UnguardIDs(lkID)
if err != nil {
@@ -334,7 +334,7 @@ func (sS *StatService) V1GetQueueStringMetrics(args *utils.TenantID, reply *map[
return utils.NewErrMandatoryIeMissing(missing...)
}
lkID := utils.StatQueuePrefix + args.TenantID()
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lkID)
guardian.Guardian.GuardIDs(config.CgrConfig().GeneralCfg().LockingTimeout, lkID)
defer guardian.Guardian.UnguardIDs(lkID)
sq, err := sS.dm.GetStatQueue(args.Tenant, args.ID, true, true, "")
if err != nil {
@@ -357,7 +357,7 @@ func (sS *StatService) V1GetQueueFloatMetrics(args *utils.TenantID, reply *map[s
return utils.NewErrMandatoryIeMissing(missing...)
}
lkID := utils.StatQueuePrefix + args.TenantID()
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lkID)
guardian.Guardian.GuardIDs(config.CgrConfig().GeneralCfg().LockingTimeout, lkID)
defer guardian.Guardian.UnguardIDs(lkID)
sq, err := sS.dm.GetStatQueue(args.Tenant, args.ID, true, true, "")
if err != nil {

View File

@@ -161,7 +161,7 @@ func TestStatQueuesPopulateService(t *testing.T) {
func TestStatQueuesAddFilters(t *testing.T) {
fltrSts1 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_STATS_1",
Rules: []*FilterRule{
{
@@ -188,7 +188,7 @@ func TestStatQueuesAddFilters(t *testing.T) {
}
dmSTS.SetFilter(fltrSts1)
fltrSts2 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_STATS_2",
Rules: []*FilterRule{
{
@@ -215,7 +215,7 @@ func TestStatQueuesAddFilters(t *testing.T) {
}
dmSTS.SetFilter(fltrSts2)
fltrSts3 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_STATS_3",
Rules: []*FilterRule{
{

View File

@@ -432,7 +432,8 @@ func (args *ArgsGetSuppliers) asOptsGetSuppliers() (opts *optsGetSuppliers, err
utils.Destination, utils.SetupTime, utils.Usage}); err != nil {
return
}
cd, err := NewCallDescriptorFromCGREvent(&args.CGREvent, config.CgrConfig().DefaultTimezone)
cd, err := NewCallDescriptorFromCGREvent(&args.CGREvent,
config.CgrConfig().GeneralCfg().DefaultTimezone)
if err != nil {
return nil, err
}

View File

@@ -43,7 +43,7 @@ var (
Sorting: utils.MetaWeight,
SortingParameters: []string{},
Suppliers: []*Supplier{
&Supplier{
{
ID: "supplier1",
FilterIDs: []string{},
AccountIDs: []string{},
@@ -68,7 +68,7 @@ var (
Sorting: utils.MetaWeight,
SortingParameters: []string{},
Suppliers: []*Supplier{
&Supplier{
{
ID: "supplier2",
FilterIDs: []string{},
AccountIDs: []string{},
@@ -78,7 +78,7 @@ var (
Weight: 20.0,
SupplierParameters: "param2",
},
&Supplier{
{
ID: "supplier3",
FilterIDs: []string{},
AccountIDs: []string{},
@@ -88,7 +88,7 @@ var (
Weight: 10.0,
SupplierParameters: "param3",
},
&Supplier{
{
ID: "supplier1",
FilterIDs: []string{},
AccountIDs: []string{},
@@ -113,7 +113,7 @@ var (
Sorting: utils.MetaWeight,
SortingParameters: []string{},
Suppliers: []*Supplier{
&Supplier{
{
ID: "supplier1",
FilterIDs: []string{},
AccountIDs: []string{},
@@ -129,7 +129,7 @@ var (
},
}
argsGetSuppliers = []*ArgsGetSuppliers{
&ArgsGetSuppliers{ //matching SupplierProfile1
{ //matching SupplierProfile1
CGREvent: utils.CGREvent{
Tenant: "cgrates.org",
ID: "utils.CGREvent1",
@@ -142,7 +142,7 @@ var (
},
},
},
&ArgsGetSuppliers{ //matching SupplierProfile2
{ //matching SupplierProfile2
CGREvent: utils.CGREvent{
Tenant: "cgrates.org",
ID: "utils.CGREvent1",
@@ -155,7 +155,7 @@ var (
},
},
},
&ArgsGetSuppliers{ //matching SupplierProfilePrefix
{ //matching SupplierProfilePrefix
CGREvent: utils.CGREvent{
Tenant: "cgrates.org",
ID: "utils.CGREvent1",
@@ -164,7 +164,7 @@ var (
},
},
},
&ArgsGetSuppliers{ //matching
{ //matching
CGREvent: utils.CGREvent{
Tenant: "cgrates.org",
ID: "CGR",
@@ -190,7 +190,7 @@ func TestSuppliersSort(t *testing.T) {
Sorting: "",
SortingParameters: []string{},
Suppliers: []*Supplier{
&Supplier{
{
ID: "supplier1",
FilterIDs: []string{},
AccountIDs: []string{},
@@ -215,7 +215,7 @@ func TestSuppliersSort(t *testing.T) {
Sorting: "",
SortingParameters: []string{},
Suppliers: []*Supplier{
&Supplier{
{
ID: "supplier1",
FilterIDs: []string{},
AccountIDs: []string{},
@@ -242,7 +242,7 @@ func TestSuppliersSort(t *testing.T) {
Sorting: "",
SortingParameters: []string{},
Suppliers: []*Supplier{
&Supplier{
{
ID: "supplier1",
FilterIDs: []string{},
AccountIDs: []string{},
@@ -267,7 +267,7 @@ func TestSuppliersSort(t *testing.T) {
Sorting: "",
SortingParameters: []string{},
Suppliers: []*Supplier{
&Supplier{
{
ID: "supplier1",
FilterIDs: []string{},
AccountIDs: []string{},
@@ -300,8 +300,10 @@ func TestSuppliersPopulateSupplierService(t *testing.T) {
t.Errorf("Error: %+v", err)
}
splService, err = NewSupplierService(dmSPP, config.CgrConfig().DefaultTimezone,
&FilterS{dm: dmSPP, cfg: defaultCfg}, nil, nil, nil, nil, nil)
splService, err = NewSupplierService(dmSPP,
config.CgrConfig().GeneralCfg().DefaultTimezone, &FilterS{
dm: dmSPP,
cfg: defaultCfg}, nil, nil, nil, nil, nil)
if err != nil {
t.Errorf("Error: %+v", err)
}
@@ -309,20 +311,20 @@ func TestSuppliersPopulateSupplierService(t *testing.T) {
func TestSuppliersAddFilters(t *testing.T) {
fltrSupp1 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_SUPP_1",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaString,
FieldName: "Supplier",
Values: []string{"SupplierProfile1"},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: "UsageInterval",
Values: []string{(1 * time.Second).String()},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: utils.Weight,
Values: []string{"9.0"},
@@ -331,20 +333,20 @@ func TestSuppliersAddFilters(t *testing.T) {
}
dmSPP.SetFilter(fltrSupp1)
fltrSupp2 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_SUPP_2",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaString,
FieldName: "Supplier",
Values: []string{"SupplierProfile2"},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: "PddInterval",
Values: []string{(1 * time.Second).String()},
},
&FilterRule{
{
Type: MetaGreaterOrEqual,
FieldName: utils.Weight,
Values: []string{"15.0"},
@@ -353,10 +355,10 @@ func TestSuppliersAddFilters(t *testing.T) {
}
dmSPP.SetFilter(fltrSupp2)
fltrSupp3 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_SUPP_3",
Rules: []*FilterRule{
&FilterRule{
{
Type: MetaPrefix,
FieldName: "Supplier",
Values: []string{"SupplierProfilePrefix"},
@@ -414,7 +416,7 @@ func TestSuppliersSortedForEvent(t *testing.T) {
ProfileID: "SupplierProfile1",
Sorting: utils.MetaWeight,
SortedSuppliers: []*SortedSupplier{
&SortedSupplier{
{
SupplierID: "supplier1",
SortingData: map[string]interface{}{
"Weight": 10.0,
@@ -435,21 +437,21 @@ func TestSuppliersSortedForEvent(t *testing.T) {
ProfileID: "SupplierProfile2",
Sorting: utils.MetaWeight,
SortedSuppliers: []*SortedSupplier{
&SortedSupplier{
{
SupplierID: "supplier1",
SortingData: map[string]interface{}{
"Weight": 30.0,
},
SupplierParameters: "param1",
},
&SortedSupplier{
{
SupplierID: "supplier2",
SortingData: map[string]interface{}{
"Weight": 20.0,
},
SupplierParameters: "param2",
},
&SortedSupplier{
{
SupplierID: "supplier3",
SortingData: map[string]interface{}{
"Weight": 10.0,
@@ -471,7 +473,7 @@ func TestSuppliersSortedForEvent(t *testing.T) {
ProfileID: "SupplierProfilePrefix",
Sorting: utils.MetaWeight,
SortedSuppliers: []*SortedSupplier{
&SortedSupplier{
{
SupplierID: "supplier1",
SortingData: map[string]interface{}{
"Weight": 10.0,
@@ -495,14 +497,14 @@ func TestSuppliersSortedForEventWithLimit(t *testing.T) {
ProfileID: "SupplierProfile2",
Sorting: utils.MetaWeight,
SortedSuppliers: []*SortedSupplier{
&SortedSupplier{
{
SupplierID: "supplier1",
SortingData: map[string]interface{}{
"Weight": 30.0,
},
SupplierParameters: "param1",
},
&SortedSupplier{
{
SupplierID: "supplier2",
SortingData: map[string]interface{}{
"Weight": 20.0,
@@ -528,7 +530,7 @@ func TestSuppliersSortedForEventWithOffset(t *testing.T) {
ProfileID: "SupplierProfile2",
Sorting: utils.MetaWeight,
SortedSuppliers: []*SortedSupplier{
&SortedSupplier{
{
SupplierID: "supplier3",
SortingData: map[string]interface{}{
"Weight": 10.0,
@@ -554,7 +556,7 @@ func TestSuppliersSortedForEventWithLimitAndOffset(t *testing.T) {
ProfileID: "SupplierProfile2",
Sorting: utils.MetaWeight,
SortedSuppliers: []*SortedSupplier{
&SortedSupplier{
{
SupplierID: "supplier2",
SortingData: map[string]interface{}{
"Weight": 20.0,

View File

@@ -63,7 +63,7 @@ func NewSureTaxRequest(cdr *CDR, stCfg *config.SureTaxCfg) (*SureTaxRequest, err
stReq.ResponseGroup = stCfg.ResponseGroup
stReq.ResponseType = stCfg.ResponseType
stReq.ItemList = []*STRequestItem{
&STRequestItem{
{
CustomerNumber: cdr.FieldsAsStringWithRSRFields(stCfg.CustomerNumber),
OrigNumber: cdr.FieldsAsStringWithRSRFields(stCfg.OrigNumber),
TermNumber: cdr.FieldsAsStringWithRSRFields(stCfg.TermNumber),
@@ -183,7 +183,9 @@ func SureTaxProcessCdr(cdr *CDR) error {
}
if sureTaxClient == nil { // First time used, init the client here
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: config.CgrConfig().HttpSkipTlsVerify},
TLSClientConfig: &tls.Config{
InsecureSkipVerify: config.CgrConfig().GeneralCfg().HttpSkipTlsVerify,
},
}
sureTaxClient = &http.Client{Transport: tr}
}
@@ -225,9 +227,13 @@ func SureTaxProcessCdr(cdr *CDR) error {
cdr.ExtraInfo = err.Error()
}
if !stCfg.IncludeLocalCost {
cdr.Cost = utils.Round(totalTax, config.CgrConfig().RoundingDecimals, utils.ROUNDING_MIDDLE)
cdr.Cost = utils.Round(totalTax,
config.CgrConfig().GeneralCfg().RoundingDecimals,
utils.ROUNDING_MIDDLE)
} else {
cdr.Cost = utils.Round(cdr.Cost+totalTax, config.CgrConfig().RoundingDecimals, utils.ROUNDING_MIDDLE)
cdr.Cost = utils.Round(cdr.Cost+totalTax,
config.CgrConfig().GeneralCfg().RoundingDecimals,
utils.ROUNDING_MIDDLE)
}
// Add response into extra fields to be available for later review
cdr.ExtraFields[utils.META_SURETAX] = respFull.D

View File

@@ -158,7 +158,7 @@ func TestThresholdsPopulateThresholdService(t *testing.T) {
func TestThresholdsAddFilters(t *testing.T) {
fltrTh1 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_TH_1",
Rules: []*FilterRule{
{
@@ -175,7 +175,7 @@ func TestThresholdsAddFilters(t *testing.T) {
}
dmTH.SetFilter(fltrTh1)
fltrTh2 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_TH_2",
Rules: []*FilterRule{
{
@@ -192,7 +192,7 @@ func TestThresholdsAddFilters(t *testing.T) {
}
dmTH.SetFilter(fltrTh2)
fltrTh3 := &Filter{
Tenant: config.CgrConfig().DefaultTenant,
Tenant: config.CgrConfig().GeneralCfg().DefaultTenant,
ID: "FLTR_TH_3",
Rules: []*FilterRule{
{

View File

@@ -48,14 +48,14 @@ func TestVersionsITMongo(t *testing.T) {
if dm3, err = ConfigureDataStorage(cfg.DataDbCfg().DataDbType,
cfg.DataDbCfg().DataDbHost, cfg.DataDbCfg().DataDbPort,
cfg.DataDbCfg().DataDbName, cfg.DataDbCfg().DataDbUser,
cfg.DataDbCfg().DataDbPass, cfg.DBDataEncoding,
cfg.DataDbCfg().DataDbPass, cfg.GeneralCfg().DBDataEncoding,
cfg.CacheCfg(), ""); err != nil {
log.Fatal(err)
}
storageDb, err = ConfigureStorStorage(cfg.StorDbCfg().StorDBType,
cfg.StorDbCfg().StorDBHost, cfg.StorDbCfg().StorDBPort,
cfg.StorDbCfg().StorDBName, cfg.StorDbCfg().StorDBUser,
cfg.StorDbCfg().StorDBPass, cfg.DBDataEncoding,
cfg.StorDbCfg().StorDBPass, cfg.GeneralCfg().DBDataEncoding,
config.CgrConfig().StorDbCfg().StorDBMaxOpenConns,
config.CgrConfig().StorDbCfg().StorDBMaxIdleConns,
config.CgrConfig().StorDbCfg().StorDBConnMaxLifetime,
@@ -77,7 +77,7 @@ func TestVersionsITRedisMYSQL(t *testing.T) {
dm3, err = ConfigureDataStorage(cfg.DataDbCfg().DataDbType,
cfg.DataDbCfg().DataDbHost, cfg.DataDbCfg().DataDbPort,
cfg.DataDbCfg().DataDbName, cfg.DataDbCfg().DataDbUser,
cfg.DataDbCfg().DataDbPass, cfg.DBDataEncoding, cfg.CacheCfg(), "")
cfg.DataDbCfg().DataDbPass, cfg.GeneralCfg().DBDataEncoding, cfg.CacheCfg(), "")
if err != nil {
log.Fatal(err)
}
@@ -85,7 +85,7 @@ func TestVersionsITRedisMYSQL(t *testing.T) {
storageDb, err = ConfigureStorStorage(cfg.StorDbCfg().StorDBType,
cfg.StorDbCfg().StorDBHost, cfg.StorDbCfg().StorDBPort,
cfg.StorDbCfg().StorDBName, cfg.StorDbCfg().StorDBUser,
cfg.StorDbCfg().StorDBPass, cfg.DBDataEncoding,
cfg.StorDbCfg().StorDBPass, cfg.GeneralCfg().DBDataEncoding,
config.CgrConfig().StorDbCfg().StorDBMaxOpenConns,
config.CgrConfig().StorDbCfg().StorDBMaxIdleConns,
config.CgrConfig().StorDbCfg().StorDBConnMaxLifetime,
@@ -107,14 +107,14 @@ func TestVersionsITRedisPostgres(t *testing.T) {
dm3, err = ConfigureDataStorage(cfg.DataDbCfg().DataDbType,
cfg.DataDbCfg().DataDbHost, cfg.DataDbCfg().DataDbPort,
cfg.DataDbCfg().DataDbName, cfg.DataDbCfg().DataDbUser,
cfg.DataDbCfg().DataDbPass, cfg.DBDataEncoding, cfg.CacheCfg(), "")
cfg.DataDbCfg().DataDbPass, cfg.GeneralCfg().DBDataEncoding, cfg.CacheCfg(), "")
if err != nil {
log.Fatal(err)
}
storageDb, err = ConfigureStorStorage(cfg.StorDbCfg().StorDBType,
cfg.StorDbCfg().StorDBHost, cfg.StorDbCfg().StorDBPort,
cfg.StorDbCfg().StorDBName, cfg.StorDbCfg().StorDBUser,
cfg.StorDbCfg().StorDBPass, cfg.DBDataEncoding,
cfg.StorDbCfg().StorDBPass, cfg.GeneralCfg().DBDataEncoding,
config.CgrConfig().StorDbCfg().StorDBMaxOpenConns,
config.CgrConfig().StorDbCfg().StorDBMaxIdleConns,
config.CgrConfig().StorDbCfg().StorDBConnMaxLifetime,