mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-13 02:56:24 +05:00
Fixed tests for config with indexes
This commit is contained in:
committed by
Dan Christian Bogos
parent
4932e6d5e0
commit
be6bdb7c11
@@ -65,14 +65,16 @@ func TestConfigSetGetConfig(t *testing.T) {
|
||||
err = rlcCfg.GetConfig(context.Background(), argsGet, &replyGet)
|
||||
expectedGet := map[string]interface{}{
|
||||
"attributes": map[string]interface{}{
|
||||
"accounts_conns": []string{"*localhost"},
|
||||
"enabled": true,
|
||||
"indexed_selects": true,
|
||||
"nested_fields": false,
|
||||
"prefix_indexed_fields": []string{},
|
||||
"resources_conns": []string{"*localhost"},
|
||||
"stats_conns": []string{"*localhost"},
|
||||
"suffix_indexed_fields": []string{},
|
||||
"accounts_conns": []string{"*localhost"},
|
||||
"enabled": true,
|
||||
"indexed_selects": true,
|
||||
"nested_fields": false,
|
||||
"prefix_indexed_fields": []string{},
|
||||
"resources_conns": []string{"*localhost"},
|
||||
"stats_conns": []string{"*localhost"},
|
||||
"suffix_indexed_fields": []string{},
|
||||
"exists_indexed_fields": []string{},
|
||||
"notexists_indexed_fields": []string{},
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{},
|
||||
@@ -102,14 +104,16 @@ func TestConfigSetGetReloadConfig(t *testing.T) {
|
||||
Tenant: utils.CGRateSorg,
|
||||
Config: map[string]interface{}{
|
||||
"attributes": map[string]interface{}{
|
||||
"accounts_conns": []string{"*internal"},
|
||||
"enabled": true,
|
||||
"indexed_selects": false,
|
||||
"nested_fields": false,
|
||||
"prefix_indexed_fields": []string{},
|
||||
"resources_conns": []string{"*internal"},
|
||||
"stats_conns": []string{"*internal"},
|
||||
"suffix_indexed_fields": []string{},
|
||||
"accounts_conns": []string{"*internal"},
|
||||
"enabled": true,
|
||||
"indexed_selects": false,
|
||||
"nested_fields": false,
|
||||
"prefix_indexed_fields": []string{},
|
||||
"resources_conns": []string{"*internal"},
|
||||
"stats_conns": []string{"*internal"},
|
||||
"suffix_indexed_fields": []string{},
|
||||
"exists_indexed_fields": []string{},
|
||||
"notexists_indexed_fields": []string{},
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{
|
||||
{
|
||||
@@ -137,14 +141,16 @@ func TestConfigSetGetReloadConfig(t *testing.T) {
|
||||
errGet := rlcCfg.GetConfig(context.Background(), argsGet, &replyGet)
|
||||
expectedGet := map[string]interface{}{
|
||||
"attributes": map[string]interface{}{
|
||||
"accounts_conns": []string{"*localhost"},
|
||||
"enabled": true,
|
||||
"indexed_selects": true,
|
||||
"nested_fields": false,
|
||||
"prefix_indexed_fields": []string{},
|
||||
"resources_conns": []string{"*localhost"},
|
||||
"stats_conns": []string{"*localhost"},
|
||||
"suffix_indexed_fields": []string{},
|
||||
"accounts_conns": []string{"*localhost"},
|
||||
"enabled": true,
|
||||
"indexed_selects": true,
|
||||
"nested_fields": false,
|
||||
"prefix_indexed_fields": []string{},
|
||||
"resources_conns": []string{"*localhost"},
|
||||
"stats_conns": []string{"*localhost"},
|
||||
"suffix_indexed_fields": []string{},
|
||||
"exists_indexed_fields": []string{},
|
||||
"notexists_indexed_fields": []string{},
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{},
|
||||
@@ -181,14 +187,16 @@ func TestConfigSetGetReloadConfig(t *testing.T) {
|
||||
errGetRld := rlcCfg.GetConfig(context.Background(), argsGetRld, &replyGetRld)
|
||||
expectedGetRld := map[string]interface{}{
|
||||
"attributes": map[string]interface{}{
|
||||
"accounts_conns": []string{"*localhost"},
|
||||
"enabled": true,
|
||||
"indexed_selects": true,
|
||||
"nested_fields": false,
|
||||
"prefix_indexed_fields": []string{},
|
||||
"resources_conns": []string{"*localhost"},
|
||||
"stats_conns": []string{"*localhost"},
|
||||
"suffix_indexed_fields": []string{},
|
||||
"accounts_conns": []string{"*localhost"},
|
||||
"enabled": true,
|
||||
"indexed_selects": true,
|
||||
"nested_fields": false,
|
||||
"prefix_indexed_fields": []string{},
|
||||
"resources_conns": []string{"*localhost"},
|
||||
"stats_conns": []string{"*localhost"},
|
||||
"suffix_indexed_fields": []string{},
|
||||
"exists_indexed_fields": []string{},
|
||||
"notexists_indexed_fields": []string{},
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{},
|
||||
@@ -240,6 +248,8 @@ func TestConfigGetSetConfigFromJSONErr(t *testing.T) {
|
||||
"resources_conns":["*localhost"],
|
||||
"stats_conns":["*localhost"],
|
||||
"suffix_indexed_fields":[],
|
||||
"exists_indexed_fields":[],
|
||||
"notexists_indexed_fields":[],
|
||||
},
|
||||
}`,
|
||||
DryRun: true,
|
||||
@@ -261,7 +271,7 @@ func TestConfigGetSetConfigFromJSONErr(t *testing.T) {
|
||||
}
|
||||
var replyGet string
|
||||
errGet := rlcCfg.GetConfigAsJSON(context.Background(), argsGet, &replyGet)
|
||||
expectedGet := `{"attributes":{"accounts_conns":["*localhost"],"enabled":true,"indexed_selects":true,"nested_fields":false,"opts":{"*processRuns":[],"*profileIDs":[],"*profileIgnoreFilters":[],"*profileRuns":[]},"prefix_indexed_fields":[],"resources_conns":["*localhost"],"stats_conns":["*localhost"],"suffix_indexed_fields":[]}}`
|
||||
expectedGet := `{"attributes":{"accounts_conns":["*localhost"],"enabled":true,"exists_indexed_fields":[],"indexed_selects":true,"nested_fields":false,"notexists_indexed_fields":[],"opts":{"*processRuns":[],"*profileIDs":[],"*profileIgnoreFilters":[],"*profileRuns":[]},"prefix_indexed_fields":[],"resources_conns":["*localhost"],"stats_conns":["*localhost"],"suffix_indexed_fields":[]}}`
|
||||
if err != nil {
|
||||
t.Errorf("Expected <%+v>, \nReceived <%+v>", nil, errGet)
|
||||
}
|
||||
|
||||
@@ -28,34 +28,38 @@ import (
|
||||
|
||||
func TestAccountSCfgLoadFromJSONCfg(t *testing.T) {
|
||||
jsonCfg := &AccountSJsonCfg{
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Attributes_conns: &[]string{utils.MetaInternal},
|
||||
Rates_conns: &[]string{utils.MetaInternal},
|
||||
Thresholds_conns: &[]string{utils.MetaInternal},
|
||||
Indexed_selects: utils.BoolPointer(false),
|
||||
String_indexed_fields: &[]string{"*req.index1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Max_iterations: utils.IntPointer(1000),
|
||||
Max_usage: utils.StringPointer("200h"),
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Attributes_conns: &[]string{utils.MetaInternal},
|
||||
Rates_conns: &[]string{utils.MetaInternal},
|
||||
Thresholds_conns: &[]string{utils.MetaInternal},
|
||||
Indexed_selects: utils.BoolPointer(false),
|
||||
String_indexed_fields: &[]string{"*req.index1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Exists_indexed_fields: &[]string{"*req.index1"},
|
||||
Notexists_indexed_fields: &[]string{"*req.index1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Max_iterations: utils.IntPointer(1000),
|
||||
Max_usage: utils.StringPointer("200h"),
|
||||
}
|
||||
usage, err := utils.NewDecimalFromUsage("200h")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
expected := &AccountSCfg{
|
||||
Enabled: true,
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes)},
|
||||
RateSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaRateS)},
|
||||
ThresholdSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds)},
|
||||
IndexedSelects: false,
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1"},
|
||||
NestedFields: true,
|
||||
MaxIterations: 1000,
|
||||
MaxUsage: usage,
|
||||
Enabled: true,
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes)},
|
||||
RateSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaRateS)},
|
||||
ThresholdSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds)},
|
||||
IndexedSelects: false,
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1"},
|
||||
ExistsIndexedFields: &[]string{"*req.index1"},
|
||||
NotExistsIndexedFields: &[]string{"*req.index1"},
|
||||
NestedFields: true,
|
||||
MaxIterations: 1000,
|
||||
MaxUsage: usage,
|
||||
Opts: &AccountsOpts{
|
||||
ProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
Usage: []*utils.DynamicDecimalBigOpt{},
|
||||
@@ -143,7 +147,9 @@ func TestAccountSCfgAsMapInterface(t *testing.T) {
|
||||
"thresholds_conns": ["*internal:*thresholds"],
|
||||
"string_indexed_fields": ["*req.index1"],
|
||||
"prefix_indexed_fields": ["*req.index1"],
|
||||
"suffix_indexed_fields": ["*req.index1"],
|
||||
"suffix_indexed_fields": ["*req.index1"],
|
||||
"exists_indexed_fields": ["*req.index1"],
|
||||
"notexists_indexed_fields": ["*req.index1"],
|
||||
"nested_fields": true,
|
||||
"max_iterations": 100,
|
||||
"max_usage": "72h",
|
||||
@@ -151,17 +157,19 @@ func TestAccountSCfgAsMapInterface(t *testing.T) {
|
||||
}`
|
||||
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: true,
|
||||
utils.IndexedSelectsCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.RateSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.ThresholdSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.MaxIterations: 100,
|
||||
utils.MaxUsage: "259200000000000", // 72h in ns
|
||||
utils.EnabledCfg: true,
|
||||
utils.IndexedSelectsCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.RateSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.ThresholdSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.ExistsIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.MaxIterations: 100,
|
||||
utils.MaxUsage: "259200000000000", // 72h in ns
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
utils.MetaUsage: []*utils.DynamicDecimalBigOpt{},
|
||||
|
||||
@@ -38,6 +38,8 @@ func TestActionSCfgLoadFromJSONCfg(t *testing.T) {
|
||||
String_indexed_fields: &[]string{"*req.index1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Exists_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Notexists_indexed_fields: &[]string{"*req.index1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Dynaprepaid_actionprofile: &[]string{"val1", "val2"},
|
||||
}
|
||||
@@ -53,6 +55,8 @@ func TestActionSCfgLoadFromJSONCfg(t *testing.T) {
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1"},
|
||||
NotExistsIndexedFields: &[]string{"*req.index1"},
|
||||
ExistsIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
NestedFields: true,
|
||||
DynaprepaidActionProfile: []string{"val1", "val2"},
|
||||
Opts: &ActionsOpts{
|
||||
@@ -118,6 +122,8 @@ func TestActionSCfgAsMapInterface(t *testing.T) {
|
||||
"string_indexed_fields": ["*req.index1"],
|
||||
"prefix_indexed_fields": ["*req.index1","*req.index2"],
|
||||
"suffix_indexed_fields": ["*req.index1"],
|
||||
"exists_indexed_fields": ["*req.index1","*req.index2"],
|
||||
"notexists_indexed_fields": ["*req.index1"],
|
||||
"nested_fields": true,
|
||||
"DynaprepaidActionProfile": [],
|
||||
},
|
||||
@@ -135,6 +141,8 @@ func TestActionSCfgAsMapInterface(t *testing.T) {
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.ExistsIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.DynaprepaidActionplansCfg: []string{},
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
|
||||
@@ -26,26 +26,30 @@ import (
|
||||
|
||||
func TestAttributeSCfgloadFromJsonCfg(t *testing.T) {
|
||||
jsonCfg := &AttributeSJsonCfg{
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(false),
|
||||
Resources_conns: &[]string{"*internal", "*conn1"},
|
||||
Stats_conns: &[]string{"*internal", "*conn1"},
|
||||
Accounts_conns: &[]string{"*internal", "*conn1"},
|
||||
String_indexed_fields: &[]string{"*req.index1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(false),
|
||||
Resources_conns: &[]string{"*internal", "*conn1"},
|
||||
Stats_conns: &[]string{"*internal", "*conn1"},
|
||||
Accounts_conns: &[]string{"*internal", "*conn1"},
|
||||
String_indexed_fields: &[]string{"*req.index1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Exists_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Notexists_indexed_fields: &[]string{"*req.index1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
}
|
||||
expected := &AttributeSCfg{
|
||||
Enabled: true,
|
||||
AccountSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAccounts), "*conn1"},
|
||||
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "*conn1"},
|
||||
ResourceSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "*conn1"},
|
||||
IndexedSelects: false,
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1"},
|
||||
NestedFields: true,
|
||||
Enabled: true,
|
||||
AccountSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAccounts), "*conn1"},
|
||||
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "*conn1"},
|
||||
ResourceSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "*conn1"},
|
||||
IndexedSelects: false,
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1"},
|
||||
ExistsIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
NotExistsIndexedFields: &[]string{"*req.index1"},
|
||||
NestedFields: true,
|
||||
Opts: &AttributesOpts{
|
||||
ProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
ProcessRuns: []*utils.DynamicIntOpt{},
|
||||
@@ -128,6 +132,8 @@ func TestAttributeSCfgAsMapInterface(t *testing.T) {
|
||||
"accounts_conns": ["*internal"],
|
||||
"prefix_indexed_fields": ["*req.index1","*req.index2"],
|
||||
"string_indexed_fields": ["*req.index1"],
|
||||
"exists_indexed_fields": ["*req.index1","*req.index2"],
|
||||
"notexists_indexed_fields": ["*req.index1"],
|
||||
"opts": {
|
||||
"*processRuns": [
|
||||
{
|
||||
@@ -138,15 +144,17 @@ func TestAttributeSCfgAsMapInterface(t *testing.T) {
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: true,
|
||||
utils.StatSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.ResourceSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.AccountSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.EnabledCfg: true,
|
||||
utils.StatSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.ResourceSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.AccountSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.ExistsIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{
|
||||
@@ -169,6 +177,7 @@ func TestAttributeSCfgAsMapInterface2(t *testing.T) {
|
||||
cfgJSONStr := `{
|
||||
"attributes": {
|
||||
"suffix_indexed_fields": ["*req.index1","*req.index2"],
|
||||
"notexists_indexed_fields": ["*req.index1","*req.index2"],
|
||||
"nested_fields": true,
|
||||
"enabled": true,
|
||||
"opts": {
|
||||
@@ -181,14 +190,16 @@ func TestAttributeSCfgAsMapInterface2(t *testing.T) {
|
||||
},
|
||||
}`
|
||||
expectedMap := map[string]interface{}{
|
||||
utils.EnabledCfg: true,
|
||||
utils.StatSConnsCfg: []string{},
|
||||
utils.ResourceSConnsCfg: []string{},
|
||||
utils.AccountSConnsCfg: []string{},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.EnabledCfg: true,
|
||||
utils.StatSConnsCfg: []string{},
|
||||
utils.ResourceSConnsCfg: []string{},
|
||||
utils.AccountSConnsCfg: []string{},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.ExistsIndexedFieldsCfg: []string{},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{
|
||||
@@ -214,14 +225,16 @@ func TestAttributeSCfgAsMapInterface3(t *testing.T) {
|
||||
}
|
||||
`
|
||||
expectedMap := map[string]interface{}{
|
||||
utils.EnabledCfg: false,
|
||||
utils.StatSConnsCfg: []string{},
|
||||
utils.ResourceSConnsCfg: []string{},
|
||||
utils.AccountSConnsCfg: []string{},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.EnabledCfg: false,
|
||||
utils.StatSConnsCfg: []string{},
|
||||
utils.ResourceSConnsCfg: []string{},
|
||||
utils.AccountSConnsCfg: []string{},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.ExistsIndexedFieldsCfg: []string{},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
utils.MetaProcessRunsCfg: []*utils.DynamicIntOpt{},
|
||||
|
||||
@@ -70,8 +70,8 @@ func (cS *ChargerSCfg) loadFromJSONCfg(jsnCfg *ChargerSJsonCfg) (err error) {
|
||||
if jsnCfg.Exists_indexed_fields != nil {
|
||||
cS.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Exists_indexed_fields))
|
||||
}
|
||||
if jsnCfg.NotExists_indexed_fields != nil {
|
||||
cS.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.NotExists_indexed_fields))
|
||||
if jsnCfg.Notexists_indexed_fields != nil {
|
||||
cS.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Notexists_indexed_fields))
|
||||
}
|
||||
if jsnCfg.Nested_fields != nil {
|
||||
cS.NestedFields = *jsnCfg.Nested_fields
|
||||
@@ -148,7 +148,7 @@ type ChargerSJsonCfg struct {
|
||||
Prefix_indexed_fields *[]string
|
||||
Suffix_indexed_fields *[]string
|
||||
Exists_indexed_fields *[]string
|
||||
NotExists_indexed_fields *[]string
|
||||
Notexists_indexed_fields *[]string
|
||||
Nested_fields *bool // applies when indexed fields is not defined
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ func diffChargerSJsonCfg(d *ChargerSJsonCfg, v1, v2 *ChargerSCfg) *ChargerSJsonC
|
||||
d.Prefix_indexed_fields = diffIndexSlice(d.Prefix_indexed_fields, v1.PrefixIndexedFields, v2.PrefixIndexedFields)
|
||||
d.Suffix_indexed_fields = diffIndexSlice(d.Suffix_indexed_fields, v1.SuffixIndexedFields, v2.SuffixIndexedFields)
|
||||
d.Exists_indexed_fields = diffIndexSlice(d.Exists_indexed_fields, v1.ExistsIndexedFields, v2.ExistsIndexedFields)
|
||||
d.NotExists_indexed_fields = diffIndexSlice(d.NotExists_indexed_fields, v1.NotExistsIndexedFields, v2.NotExistsIndexedFields)
|
||||
d.Notexists_indexed_fields = diffIndexSlice(d.Notexists_indexed_fields, v1.NotExistsIndexedFields, v2.NotExistsIndexedFields)
|
||||
if v1.NestedFields != v2.NestedFields {
|
||||
d.Nested_fields = utils.BoolPointer(v2.NestedFields)
|
||||
}
|
||||
|
||||
@@ -26,22 +26,26 @@ import (
|
||||
|
||||
func TestChargerSCfgloadFromJsonCfg(t *testing.T) {
|
||||
jsonCfg := &ChargerSJsonCfg{
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Attributes_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
String_indexed_fields: &[]string{"*req.Field1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
Suffix_indexed_fields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Attributes_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
String_indexed_fields: &[]string{"*req.Field1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
Suffix_indexed_fields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
Exists_indexed_fields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
Notexists_indexed_fields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
}
|
||||
expected := &ChargerSCfg{
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "*conn1"},
|
||||
StringIndexedFields: &[]string{"*req.Field1"},
|
||||
PrefixIndexedFields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
SuffixIndexedFields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
NestedFields: true,
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "*conn1"},
|
||||
StringIndexedFields: &[]string{"*req.Field1"},
|
||||
PrefixIndexedFields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
SuffixIndexedFields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
ExistsIndexedFields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
NotExistsIndexedFields: &[]string{"*req.Field1", "*req.Field2"},
|
||||
NestedFields: true,
|
||||
}
|
||||
jsncfg := NewDefaultCGRConfig()
|
||||
if err = jsncfg.chargerSCfg.loadFromJSONCfg(jsonCfg); err != nil {
|
||||
@@ -67,12 +71,14 @@ func TestChargerSCfgAsMapInterface(t *testing.T) {
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.EnabledCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.ExistsIndexedFieldsCfg: []string{},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{},
|
||||
}
|
||||
if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil {
|
||||
t.Error(err)
|
||||
@@ -88,19 +94,23 @@ func TestChargerSCfgAsMapInterface1(t *testing.T) {
|
||||
"attributes_conns": ["*internal:*attributes", "*conn1"],
|
||||
"indexed_selects":true,
|
||||
"string_indexed_fields": ["*req.Field1","*req.Field2","*req.Field3"],
|
||||
"prefix_indexed_fields": ["*req.DestinationPrefix"],
|
||||
"suffix_indexed_fields": ["*req.Field1","*req.Field2","*req.Field3"],
|
||||
"prefix_indexed_fields": ["*req.DestinationPrefix"],
|
||||
"suffix_indexed_fields": ["*req.Field1","*req.Field2","*req.Field3"],
|
||||
"exists_indexed_fields": ["*req.DestinationPrefix"],
|
||||
"notexists_indexed_fields": [],
|
||||
"nested_fields": false,
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.Field1", "*req.Field2", "*req.Field3"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.DestinationPrefix"},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.Field1", "*req.Field2", "*req.Field3"},
|
||||
utils.EnabledCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.Field1", "*req.Field2", "*req.Field3"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.DestinationPrefix"},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.Field1", "*req.Field2", "*req.Field3"},
|
||||
utils.ExistsIndexedFieldsCfg: []string{"*req.DestinationPrefix"},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{},
|
||||
}
|
||||
if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil {
|
||||
t.Error(err)
|
||||
|
||||
@@ -943,6 +943,8 @@ const CGRATES_CFG_JSON = `
|
||||
//"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"suffix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"exists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"notexists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
|
||||
"opts":{ //
|
||||
"*profileIDs": [
|
||||
@@ -984,6 +986,8 @@ const CGRATES_CFG_JSON = `
|
||||
//"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"suffix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"exists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"notexists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
|
||||
},
|
||||
|
||||
@@ -996,6 +1000,8 @@ const CGRATES_CFG_JSON = `
|
||||
//"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"suffix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"exists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"notexists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
|
||||
"opts":{ //
|
||||
"*usageID": [
|
||||
@@ -1032,6 +1038,8 @@ const CGRATES_CFG_JSON = `
|
||||
//"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"suffix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"exists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"notexists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
|
||||
"opts": { //
|
||||
"*profileIDs": [
|
||||
@@ -1066,6 +1074,8 @@ const CGRATES_CFG_JSON = `
|
||||
//"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"suffix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"exists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"notexists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
|
||||
"actions_conns": [], // connections to ActionS to execute the actions
|
||||
"opts":{ //
|
||||
@@ -1093,6 +1103,8 @@ const CGRATES_CFG_JSON = `
|
||||
//"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"suffix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"exists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"notexists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
|
||||
"attributes_conns": [], // connections to AttributeS for altering events before route queries: <""|*internal|$rpc_conns_id>
|
||||
"resources_conns": [], // connections to ResourceS for *res sorting, empty to disable functionality: <""|*internal|$rpc_conns_id>
|
||||
@@ -1479,6 +1491,8 @@ const CGRATES_CFG_JSON = `
|
||||
//"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"suffix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"exists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"notexists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
|
||||
"attributes_conns": [], // connections to AttributeS for API authorization, empty to disable auth functionality: <""|*internal|$rpc_conns_id>
|
||||
},
|
||||
@@ -1524,11 +1538,15 @@ const CGRATES_CFG_JSON = `
|
||||
//"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"suffix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"exists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"notexists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
|
||||
"rate_indexed_selects": true, // enable profile matching exclusively on indexes
|
||||
//"rate_string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"rate_prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"rate_suffix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"rate_exists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"rate_notexists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"rate_nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
|
||||
"verbosity": 1000, // number of increment iterations allowed
|
||||
"opts":{ //
|
||||
@@ -1698,6 +1716,8 @@ const CGRATES_CFG_JSON = `
|
||||
//"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"suffix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"exists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"notexists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
|
||||
"dynaprepaid_actionprofile": [], //
|
||||
"opts":{ //
|
||||
@@ -1728,6 +1748,8 @@ const CGRATES_CFG_JSON = `
|
||||
//"string_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"prefix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"suffix_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"exists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"notexists_indexed_fields": [], // query indexes based on these fields for faster processing
|
||||
"nested_fields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
|
||||
"max_iterations": 1000, // maximum number of iterations
|
||||
"max_usage": "72h", // maximum time of usage
|
||||
|
||||
@@ -936,15 +936,17 @@ func TestDNSAgentJsonCfg(t *testing.T) {
|
||||
|
||||
func TestDfAttributeServJsonCfg(t *testing.T) {
|
||||
eCfg := &AttributeSJsonCfg{
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Stats_conns: &[]string{},
|
||||
Resources_conns: &[]string{},
|
||||
Accounts_conns: &[]string{},
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Stats_conns: &[]string{},
|
||||
Resources_conns: &[]string{},
|
||||
Accounts_conns: &[]string{},
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Exists_indexed_fields: &[]string{},
|
||||
Notexists_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Opts: &AttributesOptsJson{
|
||||
ProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
ProcessRuns: []*utils.DynamicIntOpt{},
|
||||
@@ -966,13 +968,15 @@ func TestDfAttributeServJsonCfg(t *testing.T) {
|
||||
|
||||
func TestDfChargerServJsonCfg(t *testing.T) {
|
||||
eCfg := &ChargerSJsonCfg{
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Attributes_conns: &[]string{},
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Attributes_conns: &[]string{},
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Exists_indexed_fields: &[]string{},
|
||||
Notexists_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
}
|
||||
dfCgrJSONCfg, err := NewCgrJsonCfgFromBytes([]byte(CGRATES_CFG_JSON))
|
||||
if err != nil {
|
||||
@@ -1006,14 +1010,16 @@ func TestDfFilterSJsonCfg(t *testing.T) {
|
||||
|
||||
func TestDfResourceLimiterSJsonCfg(t *testing.T) {
|
||||
eCfg := &ResourceSJsonCfg{
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Thresholds_conns: &[]string{},
|
||||
Store_interval: utils.StringPointer(""),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Thresholds_conns: &[]string{},
|
||||
Store_interval: utils.StringPointer(""),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Exists_indexed_fields: &[]string{},
|
||||
Notexists_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Opts: &ResourcesOptsJson{
|
||||
UsageID: []*utils.DynamicStringOpt{},
|
||||
UsageTTL: []*utils.DynamicStringOpt{},
|
||||
@@ -1042,6 +1048,8 @@ func TestDfStatServiceJsonCfg(t *testing.T) {
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Exists_indexed_fields: &[]string{},
|
||||
Notexists_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Opts: &StatsOptsJson{
|
||||
ProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
@@ -1063,14 +1071,16 @@ func TestDfStatServiceJsonCfg(t *testing.T) {
|
||||
|
||||
func TestDfThresholdSJsonCfg(t *testing.T) {
|
||||
eCfg := &ThresholdSJsonCfg{
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Store_interval: utils.StringPointer(""),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Actions_conns: &[]string{},
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Store_interval: utils.StringPointer(""),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Exists_indexed_fields: &[]string{},
|
||||
Notexists_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Actions_conns: &[]string{},
|
||||
Opts: &ThresholdsOptsJson{
|
||||
ProfileIgnoreFilters: []*utils.DynamicBoolOpt{},
|
||||
},
|
||||
@@ -1089,18 +1099,20 @@ func TestDfThresholdSJsonCfg(t *testing.T) {
|
||||
|
||||
func TestDfRouteSJsonCfg(t *testing.T) {
|
||||
eCfg := &RouteSJsonCfg{
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Attributes_conns: &[]string{},
|
||||
Resources_conns: &[]string{},
|
||||
Stats_conns: &[]string{},
|
||||
Rates_conns: &[]string{},
|
||||
Accounts_conns: &[]string{},
|
||||
Default_ratio: utils.IntPointer(1),
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Exists_indexed_fields: &[]string{},
|
||||
Notexists_indexed_fields: &[]string{},
|
||||
Attributes_conns: &[]string{},
|
||||
Resources_conns: &[]string{},
|
||||
Stats_conns: &[]string{},
|
||||
Rates_conns: &[]string{},
|
||||
Accounts_conns: &[]string{},
|
||||
Default_ratio: utils.IntPointer(1),
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Opts: &RoutesOptsJson{
|
||||
Context: []*utils.DynamicStringOpt{},
|
||||
ProfileCount: []*utils.DynamicIntOpt{},
|
||||
@@ -1903,13 +1915,15 @@ func TestDfHttpJsonCfg(t *testing.T) {
|
||||
|
||||
func TestDfDispatcherSJsonCfg(t *testing.T) {
|
||||
eCfg := &DispatcherSJsonCfg{
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Attributes_conns: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Exists_indexed_fields: &[]string{},
|
||||
Notexists_indexed_fields: &[]string{},
|
||||
Attributes_conns: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
}
|
||||
dfCgrJSONCfg, err := NewCgrJsonCfgFromBytes([]byte(CGRATES_CFG_JSON))
|
||||
if err != nil {
|
||||
@@ -2163,18 +2177,22 @@ func TestDfEventExporterCfg(t *testing.T) {
|
||||
|
||||
func TestDfRateSJsonCfg(t *testing.T) {
|
||||
eCfg := &RateSJsonCfg{
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Rate_indexed_selects: utils.BoolPointer(true),
|
||||
Rate_string_indexed_fields: nil,
|
||||
Rate_prefix_indexed_fields: &[]string{},
|
||||
Rate_suffix_indexed_fields: &[]string{},
|
||||
Rate_nested_fields: utils.BoolPointer(false),
|
||||
Verbosity: utils.IntPointer(1000),
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Exists_indexed_fields: &[]string{},
|
||||
Notexists_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Rate_indexed_selects: utils.BoolPointer(true),
|
||||
Rate_string_indexed_fields: nil,
|
||||
Rate_prefix_indexed_fields: &[]string{},
|
||||
Rate_suffix_indexed_fields: &[]string{},
|
||||
Rate_exists_indexed_fields: &[]string{},
|
||||
Rate_notexists_indexed_fields: &[]string{},
|
||||
Rate_nested_fields: utils.BoolPointer(false),
|
||||
Verbosity: utils.IntPointer(1000),
|
||||
Opts: &RatesOptsJson{
|
||||
ProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
StartTime: []*utils.DynamicStringOpt{},
|
||||
@@ -2469,6 +2487,8 @@ func TestDfActionSJsonCfg(t *testing.T) {
|
||||
String_indexed_fields: nil,
|
||||
Prefix_indexed_fields: &[]string{},
|
||||
Suffix_indexed_fields: &[]string{},
|
||||
Exists_indexed_fields: &[]string{},
|
||||
Notexists_indexed_fields: &[]string{},
|
||||
Nested_fields: utils.BoolPointer(false),
|
||||
Dynaprepaid_actionprofile: &[]string{},
|
||||
Opts: &ActionsOptsJson{
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -27,22 +27,26 @@ import (
|
||||
|
||||
func TestDispatcherSCfgloadFromJsonCfg(t *testing.T) {
|
||||
jsonCfg := &DispatcherSJsonCfg{
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: &[]string{"*req.prefix", "*req.indexed"},
|
||||
Prefix_indexed_fields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
Suffix_indexed_fields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
Attributes_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: &[]string{"*req.prefix", "*req.indexed"},
|
||||
Prefix_indexed_fields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
Suffix_indexed_fields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
Exists_indexed_fields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
Notexists_indexed_fields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
Attributes_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
}
|
||||
expected := &DispatcherSCfg{
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StringIndexedFields: &[]string{"*req.prefix", "*req.indexed"},
|
||||
PrefixIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
SuffixIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "*conn1"},
|
||||
NestedFields: true,
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StringIndexedFields: &[]string{"*req.prefix", "*req.indexed"},
|
||||
PrefixIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
SuffixIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
ExistsIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
NotExistsIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "*conn1"},
|
||||
NestedFields: true,
|
||||
}
|
||||
jsnCfg := NewDefaultCGRConfig()
|
||||
if err = jsnCfg.dispatcherSCfg.loadFromJSONCfg(jsonCfg); err != nil {
|
||||
@@ -63,18 +67,22 @@ func TestDispatcherSCfgAsMapInterface(t *testing.T) {
|
||||
"indexed_selects":true,
|
||||
"prefix_indexed_fields": [],
|
||||
"suffix_indexed_fields": [],
|
||||
"exists_indexed_fields": [],
|
||||
"notexists_indexed_fields": [],
|
||||
"nested_fields": false,
|
||||
"attributes_conns": [],
|
||||
},
|
||||
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: false,
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{},
|
||||
utils.EnabledCfg: false,
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.ExistsIndexedFieldsCfg: []string{},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{},
|
||||
}
|
||||
if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil {
|
||||
t.Error(err)
|
||||
@@ -91,19 +99,23 @@ func TestDispatcherSCfgAsMapInterface1(t *testing.T) {
|
||||
"string_indexed_fields": ["*req.prefix"],
|
||||
"prefix_indexed_fields": ["*req.prefix","*req.indexed","*req.fields"],
|
||||
"suffix_indexed_fields": ["*req.prefix"],
|
||||
"exists_indexed_fields": ["*req.prefix","*req.indexed","*req.fields"],
|
||||
"notexists_indexed_fields": ["*req.prefix"],
|
||||
"nested_fields": false,
|
||||
"attributes_conns": ["*internal:*attributes", "*conn1"],
|
||||
},
|
||||
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: false,
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.prefix"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.prefix"},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{"*internal", "*conn1"},
|
||||
utils.EnabledCfg: false,
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.prefix"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.prefix"},
|
||||
utils.ExistsIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{"*req.prefix"},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{"*internal", "*conn1"},
|
||||
}
|
||||
if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil {
|
||||
t.Error(err)
|
||||
@@ -117,12 +129,14 @@ func TestDispatcherSCfgAsMapInterface2(t *testing.T) {
|
||||
"dispatchers":{},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: false,
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{},
|
||||
utils.EnabledCfg: false,
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.ExistsIndexedFieldsCfg: []string{},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{},
|
||||
}
|
||||
if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil {
|
||||
t.Error(err)
|
||||
@@ -132,13 +146,15 @@ func TestDispatcherSCfgAsMapInterface2(t *testing.T) {
|
||||
}
|
||||
func TestDispatcherSCfgClone(t *testing.T) {
|
||||
ban := &DispatcherSCfg{
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StringIndexedFields: &[]string{"*req.prefix", "*req.indexed"},
|
||||
PrefixIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
SuffixIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "*conn1"},
|
||||
NestedFields: true,
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StringIndexedFields: &[]string{"*req.prefix", "*req.indexed"},
|
||||
PrefixIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
SuffixIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
ExistsIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
NotExistsIndexedFields: &[]string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "*conn1"},
|
||||
NestedFields: true,
|
||||
}
|
||||
rcv := ban.Clone()
|
||||
if !reflect.DeepEqual(ban, rcv) {
|
||||
|
||||
@@ -28,32 +28,40 @@ import (
|
||||
|
||||
func TestRateSConfigloadFromJsonCfg(t *testing.T) {
|
||||
cfgJSON := &RateSJsonCfg{
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: &[]string{"*req.index1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Rate_indexed_selects: utils.BoolPointer(true),
|
||||
Rate_string_indexed_fields: &[]string{"*req.index1"},
|
||||
Rate_prefix_indexed_fields: &[]string{"*req.index1"},
|
||||
Rate_suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Rate_nested_fields: utils.BoolPointer(true),
|
||||
Verbosity: utils.IntPointer(20),
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: &[]string{"*req.index1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Exists_indexed_fields: &[]string{"*req.index1"},
|
||||
Notexists_indexed_fields: &[]string{"*req.index1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Rate_indexed_selects: utils.BoolPointer(true),
|
||||
Rate_string_indexed_fields: &[]string{"*req.index1"},
|
||||
Rate_prefix_indexed_fields: &[]string{"*req.index1"},
|
||||
Rate_suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Rate_exists_indexed_fields: &[]string{"*req.index1"},
|
||||
Rate_notexists_indexed_fields: &[]string{"*req.index1"},
|
||||
Rate_nested_fields: utils.BoolPointer(true),
|
||||
Verbosity: utils.IntPointer(20),
|
||||
}
|
||||
expected := &RateSCfg{
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1"},
|
||||
NestedFields: true,
|
||||
RateIndexedSelects: true,
|
||||
RateStringIndexedFields: &[]string{"*req.index1"},
|
||||
RatePrefixIndexedFields: &[]string{"*req.index1"},
|
||||
RateSuffixIndexedFields: &[]string{"*req.index1"},
|
||||
RateNestedFields: true,
|
||||
Verbosity: 20,
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1"},
|
||||
ExistsIndexedFields: &[]string{"*req.index1"},
|
||||
NotExistsIndexedFields: &[]string{"*req.index1"},
|
||||
NestedFields: true,
|
||||
RateIndexedSelects: true,
|
||||
RateStringIndexedFields: &[]string{"*req.index1"},
|
||||
RatePrefixIndexedFields: &[]string{"*req.index1"},
|
||||
RateSuffixIndexedFields: &[]string{"*req.index1"},
|
||||
RateExistsIndexedFields: &[]string{"*req.index1"},
|
||||
RateNotExistsIndexedFields: &[]string{"*req.index1"},
|
||||
RateNestedFields: true,
|
||||
Verbosity: 20,
|
||||
Opts: &RatesOpts{
|
||||
ProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
StartTime: []*utils.DynamicStringOpt{},
|
||||
@@ -79,16 +87,20 @@ func TestRatesCfgAsMapInterface(t *testing.T) {
|
||||
"rates": {}
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: false,
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.RateIndexedSelectsCfg: true,
|
||||
utils.RatePrefixIndexedFieldsCfg: []string{},
|
||||
utils.RateSuffixIndexedFieldsCfg: []string{},
|
||||
utils.RateNestedFieldsCfg: false,
|
||||
utils.Verbosity: 1000,
|
||||
utils.EnabledCfg: false,
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.ExistsIndexedFieldsCfg: []string{},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.RateIndexedSelectsCfg: true,
|
||||
utils.RatePrefixIndexedFieldsCfg: []string{},
|
||||
utils.RateSuffixIndexedFieldsCfg: []string{},
|
||||
utils.RateExistsIndexedFieldsCfg: []string{},
|
||||
utils.RateNotExistsIndexedFieldsCfg: []string{},
|
||||
utils.RateNestedFieldsCfg: false,
|
||||
utils.Verbosity: 1000,
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
utils.MetaStartTime: []*utils.DynamicStringOpt{},
|
||||
@@ -109,30 +121,38 @@ func TestRatesCfgAsMapInterface1(t *testing.T) {
|
||||
"rates": {
|
||||
"enabled": true,
|
||||
"indexed_selects": false,
|
||||
"string_indexed_fields": ["*req.index1"],
|
||||
"string_indexed_fields": ["*req.index1"],
|
||||
"prefix_indexed_fields": ["*req.index1", "*req.index2"],
|
||||
"suffix_indexed_fields": ["*req.index1"],
|
||||
"suffix_indexed_fields": ["*req.index1"],
|
||||
"exists_indexed_fields": ["*req.index1", "*req.index2"],
|
||||
"notexists_indexed_fields": ["*req.index1"],
|
||||
"nested_fields": true,
|
||||
"rate_indexed_selects": false,
|
||||
"rate_string_indexed_fields": ["*req.index1"],
|
||||
"rate_prefix_indexed_fields": ["*req.index1", "*req.index2"],
|
||||
"rate_suffix_indexed_fields": ["*req.index1", "*req.index2", "*req.index3"],
|
||||
"rate_prefix_indexed_fields": ["*req.index1", "*req.index2"],
|
||||
"rate_suffix_indexed_fields": ["*req.index1", "*req.index2", "*req.index3"],
|
||||
"rate_exists_indexed_fields": ["*req.index1", "*req.index2"],
|
||||
"rate_notexists_indexed_fields": ["*req.index1"],
|
||||
"rate_nested_fields": true,
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: true,
|
||||
utils.IndexedSelectsCfg: false,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.RateIndexedSelectsCfg: false,
|
||||
utils.RateStringIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.RatePrefixIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.RateSuffixIndexedFieldsCfg: []string{"*req.index1", "*req.index2", "*req.index3"},
|
||||
utils.RateNestedFieldsCfg: true,
|
||||
utils.Verbosity: 1000,
|
||||
utils.EnabledCfg: true,
|
||||
utils.IndexedSelectsCfg: false,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.ExistsIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.RateIndexedSelectsCfg: false,
|
||||
utils.RateStringIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.RatePrefixIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.RateSuffixIndexedFieldsCfg: []string{"*req.index1", "*req.index2", "*req.index3"},
|
||||
utils.RateExistsIndexedFieldsCfg: []string{"*req.index1", "*req.index2"},
|
||||
utils.RateNotExistsIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.RateNestedFieldsCfg: true,
|
||||
utils.Verbosity: 1000,
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
utils.MetaStartTime: []*utils.DynamicStringOpt{},
|
||||
|
||||
@@ -27,24 +27,28 @@ import (
|
||||
|
||||
func TestResourceSConfigloadFromJsonCfgCase1(t *testing.T) {
|
||||
cfgJSON := &ResourceSJsonCfg{
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Thresholds_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Store_interval: utils.StringPointer("2s"),
|
||||
String_indexed_fields: &[]string{"*req.index1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Thresholds_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Store_interval: utils.StringPointer("2s"),
|
||||
String_indexed_fields: &[]string{"*req.index1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Exists_indexed_fields: &[]string{"*req.index1"},
|
||||
Notexists_indexed_fields: &[]string{"*req.index1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
}
|
||||
expected := &ResourceSConfig{
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StoreInterval: 2 * time.Second,
|
||||
ThresholdSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds), "*conn1"},
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1"},
|
||||
NestedFields: true,
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StoreInterval: 2 * time.Second,
|
||||
ThresholdSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds), "*conn1"},
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1"},
|
||||
ExistsIndexedFields: &[]string{"*req.index1"},
|
||||
NotExistsIndexedFields: &[]string{"*req.index1"},
|
||||
NestedFields: true,
|
||||
Opts: &ResourcesOpts{
|
||||
UsageID: []*utils.DynamicStringOpt{},
|
||||
UsageTTL: []*utils.DynamicDurationOpt{},
|
||||
@@ -128,13 +132,15 @@ func TestResourceSConfigAsMapInterface(t *testing.T) {
|
||||
"resources": {},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: false,
|
||||
utils.StoreIntervalCfg: utils.EmptyString,
|
||||
utils.ThresholdSConnsCfg: []string{},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.EnabledCfg: false,
|
||||
utils.StoreIntervalCfg: utils.EmptyString,
|
||||
utils.ThresholdSConnsCfg: []string{},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.ExistsIndexedFieldsCfg: []string{},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaUsageIDCfg: []*utils.DynamicStringOpt{},
|
||||
utils.MetaUsageTTLCfg: []*utils.DynamicDurationOpt{},
|
||||
@@ -158,18 +164,22 @@ func TestResourceSConfigAsMapInterface1(t *testing.T) {
|
||||
"string_indexed_fields": ["*req.index1"],
|
||||
"prefix_indexed_fields": ["*req.prefix_indexed_fields1","*req.prefix_indexed_fields2"],
|
||||
"suffix_indexed_fields": ["*req.prefix_indexed_fields1"],
|
||||
"exists_indexed_fields": ["*req.prefix_indexed_fields1","*req.prefix_indexed_fields2"],
|
||||
"notexists_indexed_fields": ["*req.prefix_indexed_fields1"],
|
||||
"nested_fields": true,
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: true,
|
||||
utils.StoreIntervalCfg: "7m0s",
|
||||
utils.ThresholdSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.prefix_indexed_fields1", "*req.prefix_indexed_fields2"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.prefix_indexed_fields1"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.EnabledCfg: true,
|
||||
utils.StoreIntervalCfg: "7m0s",
|
||||
utils.ThresholdSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.index1"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.prefix_indexed_fields1", "*req.prefix_indexed_fields2"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.prefix_indexed_fields1"},
|
||||
utils.ExistsIndexedFieldsCfg: []string{"*req.prefix_indexed_fields1", "*req.prefix_indexed_fields2"},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{"*req.prefix_indexed_fields1"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaUsageIDCfg: []*utils.DynamicStringOpt{},
|
||||
utils.MetaUsageTTLCfg: []*utils.DynamicDurationOpt{},
|
||||
|
||||
@@ -27,33 +27,37 @@ import (
|
||||
|
||||
func TestRouteSCfgloadFromJsonCfg(t *testing.T) {
|
||||
cfgJSON := &RouteSJsonCfg{
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: &[]string{"*req.index1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Attributes_conns: &[]string{utils.MetaInternal, "conn1"},
|
||||
Resources_conns: &[]string{utils.MetaInternal, "conn1"},
|
||||
Stats_conns: &[]string{utils.MetaInternal, "conn1"},
|
||||
Rates_conns: &[]string{utils.MetaInternal, "conn1"},
|
||||
Accounts_conns: &[]string{utils.MetaInternal, "conn1"},
|
||||
Default_ratio: utils.IntPointer(10),
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Opts: &RoutesOptsJson{},
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
String_indexed_fields: &[]string{"*req.index1"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Exists_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Notexists_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Attributes_conns: &[]string{utils.MetaInternal, "conn1"},
|
||||
Resources_conns: &[]string{utils.MetaInternal, "conn1"},
|
||||
Stats_conns: &[]string{utils.MetaInternal, "conn1"},
|
||||
Rates_conns: &[]string{utils.MetaInternal, "conn1"},
|
||||
Accounts_conns: &[]string{utils.MetaInternal, "conn1"},
|
||||
Default_ratio: utils.IntPointer(10),
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Opts: &RoutesOptsJson{},
|
||||
}
|
||||
expected := &RouteSCfg{
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "conn1"},
|
||||
ResourceSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "conn1"},
|
||||
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "conn1"},
|
||||
RateSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaRateS), "conn1"},
|
||||
AccountSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAccounts), "conn1"},
|
||||
DefaultRatio: 10,
|
||||
NestedFields: true,
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
ExistsIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
NotExistsIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "conn1"},
|
||||
ResourceSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "conn1"},
|
||||
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "conn1"},
|
||||
RateSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaRateS), "conn1"},
|
||||
AccountSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAccounts), "conn1"},
|
||||
DefaultRatio: 10,
|
||||
NestedFields: true,
|
||||
Opts: &RoutesOpts{
|
||||
Context: []*utils.DynamicStringOpt{},
|
||||
ProfileCount: []*utils.DynamicIntPointerOpt{},
|
||||
@@ -100,17 +104,19 @@ func TestRouteSCfgAsMapInterface(t *testing.T) {
|
||||
"routes": {},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: false,
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{},
|
||||
utils.ResourceSConnsCfg: []string{},
|
||||
utils.StatSConnsCfg: []string{},
|
||||
utils.RateSConnsCfg: []string{},
|
||||
utils.AccountSConnsCfg: []string{},
|
||||
utils.DefaultRatioCfg: 1,
|
||||
utils.EnabledCfg: false,
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.ExistsIndexedFieldsCfg: []string{},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.AttributeSConnsCfg: []string{},
|
||||
utils.ResourceSConnsCfg: []string{},
|
||||
utils.StatSConnsCfg: []string{},
|
||||
utils.RateSConnsCfg: []string{},
|
||||
utils.AccountSConnsCfg: []string{},
|
||||
utils.DefaultRatioCfg: 1,
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.OptsContext: []*utils.DynamicStringOpt{},
|
||||
utils.MetaLimitCfg: []*utils.DynamicIntPointerOpt{},
|
||||
@@ -136,6 +142,8 @@ func TestRouteSCfgAsMapInterface1(t *testing.T) {
|
||||
"string_indexed_fields": ["*req.string"],
|
||||
"prefix_indexed_fields": ["*req.prefix","*req.indexed","*req.fields"],
|
||||
"suffix_indexed_fields": ["*req.prefix","*req.indexed"],
|
||||
"exists_indexed_fields": ["*req.prefix","*req.indexed","*req.fields"],
|
||||
"notexists_indexed_fields": ["*req.prefix","*req.indexed"],
|
||||
"nested_fields": true,
|
||||
"attributes_conns": ["*internal:*attributes", "conn1"],
|
||||
"resources_conns": ["*internal:*resources", "conn1"],
|
||||
@@ -147,18 +155,20 @@ func TestRouteSCfgAsMapInterface1(t *testing.T) {
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: true,
|
||||
utils.IndexedSelectsCfg: false,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.string"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.AttributeSConnsCfg: []string{utils.MetaInternal, "conn1"},
|
||||
utils.ResourceSConnsCfg: []string{utils.MetaInternal, "conn1"},
|
||||
utils.StatSConnsCfg: []string{utils.MetaInternal, "conn1"},
|
||||
utils.RateSConnsCfg: []string{utils.MetaInternal, "conn1"},
|
||||
utils.AccountSConnsCfg: []string{utils.MetaInternal, "conn1"},
|
||||
utils.DefaultRatioCfg: 2,
|
||||
utils.EnabledCfg: true,
|
||||
utils.IndexedSelectsCfg: false,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.string"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed"},
|
||||
utils.ExistsIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.AttributeSConnsCfg: []string{utils.MetaInternal, "conn1"},
|
||||
utils.ResourceSConnsCfg: []string{utils.MetaInternal, "conn1"},
|
||||
utils.StatSConnsCfg: []string{utils.MetaInternal, "conn1"},
|
||||
utils.RateSConnsCfg: []string{utils.MetaInternal, "conn1"},
|
||||
utils.AccountSConnsCfg: []string{utils.MetaInternal, "conn1"},
|
||||
utils.DefaultRatioCfg: 2,
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.OptsContext: []*utils.DynamicStringOpt{},
|
||||
utils.MetaLimitCfg: []*utils.DynamicIntPointerOpt{},
|
||||
@@ -178,17 +188,19 @@ func TestRouteSCfgAsMapInterface1(t *testing.T) {
|
||||
|
||||
func TestRouteSCfgClone(t *testing.T) {
|
||||
ban := &RouteSCfg{
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "conn1"},
|
||||
ResourceSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "conn1"},
|
||||
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "conn1"},
|
||||
DefaultRatio: 10,
|
||||
NestedFields: true,
|
||||
Opts: &RoutesOpts{},
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StringIndexedFields: &[]string{"*req.index1"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
ExistsIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
NotExistsIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
AttributeSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes), "conn1"},
|
||||
ResourceSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "conn1"},
|
||||
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "conn1"},
|
||||
DefaultRatio: 10,
|
||||
NestedFields: true,
|
||||
Opts: &RoutesOpts{},
|
||||
}
|
||||
rcv := ban.Clone()
|
||||
if !reflect.DeepEqual(ban, rcv) {
|
||||
|
||||
@@ -204,11 +204,11 @@ func (st StatSCfg) Clone() (cln *StatSCfg) {
|
||||
if st.SuffixIndexedFields != nil {
|
||||
cln.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*st.SuffixIndexedFields))
|
||||
}
|
||||
if cln.ExistsIndexedFields != nil {
|
||||
cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*cln.ExistsIndexedFields))
|
||||
if st.ExistsIndexedFields != nil {
|
||||
cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*st.ExistsIndexedFields))
|
||||
}
|
||||
if cln.NotExistsIndexedFields != nil {
|
||||
cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*cln.NotExistsIndexedFields))
|
||||
if st.NotExistsIndexedFields != nil {
|
||||
cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*st.NotExistsIndexedFields))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -35,6 +35,8 @@ func TestStatSCfgloadFromJsonCfgCase1(t *testing.T) {
|
||||
String_indexed_fields: &[]string{"*req.string"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Exists_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Notexists_indexed_fields: &[]string{"*req.index1", "*req.index2"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
}
|
||||
expected := &StatSCfg{
|
||||
@@ -46,6 +48,8 @@ func TestStatSCfgloadFromJsonCfgCase1(t *testing.T) {
|
||||
StringIndexedFields: &[]string{"*req.string"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
ExistsIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
NotExistsIndexedFields: &[]string{"*req.index1", "*req.index2"},
|
||||
NestedFields: true,
|
||||
Opts: &StatsOpts{
|
||||
ProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
@@ -121,6 +125,8 @@ func TestStatSCfgAsMapInterface(t *testing.T) {
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.ExistsIndexedFieldsCfg: []string{},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
@@ -146,6 +152,8 @@ func TestStatSCfgAsMapInterface1(t *testing.T) {
|
||||
"string_indexed_fields": ["*req.string"],
|
||||
"prefix_indexed_fields": ["*req.prefix_indexed_fields1","*req.prefix_indexed_fields2"],
|
||||
"suffix_indexed_fields":["*req.suffix_indexed_fields"],
|
||||
"exists_indexed_fields":["*req.exists_indexed_fields"],
|
||||
"notexists_indexed_fields":["*req.notexists_indexed_fields"],
|
||||
"nested_fields": true,
|
||||
},
|
||||
}`
|
||||
@@ -158,6 +166,8 @@ func TestStatSCfgAsMapInterface1(t *testing.T) {
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.string"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.prefix_indexed_fields1", "*req.prefix_indexed_fields2"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.suffix_indexed_fields"},
|
||||
utils.ExistsIndexedFieldsCfg: []string{"*req.exists_indexed_fields"},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{"*req.notexists_indexed_fields"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
|
||||
@@ -27,25 +27,29 @@ import (
|
||||
|
||||
func TestThresholdSCfgloadFromJsonCfgCase1(t *testing.T) {
|
||||
cfgJSON := &ThresholdSJsonCfg{
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Store_interval: utils.StringPointer("2"),
|
||||
String_indexed_fields: &[]string{"*req.prefix"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Actions_conns: &[]string{utils.MetaInternal},
|
||||
Opts: &ThresholdsOptsJson{},
|
||||
Enabled: utils.BoolPointer(true),
|
||||
Indexed_selects: utils.BoolPointer(true),
|
||||
Store_interval: utils.StringPointer("2"),
|
||||
String_indexed_fields: &[]string{"*req.prefix"},
|
||||
Prefix_indexed_fields: &[]string{"*req.index1"},
|
||||
Suffix_indexed_fields: &[]string{"*req.index1"},
|
||||
Exists_indexed_fields: &[]string{"*req.index1"},
|
||||
Notexists_indexed_fields: &[]string{"*req.index1"},
|
||||
Nested_fields: utils.BoolPointer(true),
|
||||
Actions_conns: &[]string{utils.MetaInternal},
|
||||
Opts: &ThresholdsOptsJson{},
|
||||
}
|
||||
expected := &ThresholdSCfg{
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StoreInterval: 2,
|
||||
StringIndexedFields: &[]string{"*req.prefix"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1"},
|
||||
NestedFields: true,
|
||||
ActionSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaActions)},
|
||||
Enabled: true,
|
||||
IndexedSelects: true,
|
||||
StoreInterval: 2,
|
||||
StringIndexedFields: &[]string{"*req.prefix"},
|
||||
PrefixIndexedFields: &[]string{"*req.index1"},
|
||||
SuffixIndexedFields: &[]string{"*req.index1"},
|
||||
ExistsIndexedFields: &[]string{"*req.index1"},
|
||||
NotExistsIndexedFields: &[]string{"*req.index1"},
|
||||
NestedFields: true,
|
||||
ActionSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaActions)},
|
||||
Opts: &ThresholdsOpts{
|
||||
ProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
ProfileIgnoreFilters: []*utils.DynamicBoolOpt{},
|
||||
@@ -115,13 +119,15 @@ func TestThresholdSCfgAsMapInterfaceCase1(t *testing.T) {
|
||||
"thresholds": {},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: false,
|
||||
utils.StoreIntervalCfg: "",
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.ActionSConnsCfg: []string{},
|
||||
utils.EnabledCfg: false,
|
||||
utils.StoreIntervalCfg: "",
|
||||
utils.IndexedSelectsCfg: true,
|
||||
utils.PrefixIndexedFieldsCfg: []string{},
|
||||
utils.SuffixIndexedFieldsCfg: []string{},
|
||||
utils.ExistsIndexedFieldsCfg: []string{},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: false,
|
||||
utils.ActionSConnsCfg: []string{},
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{},
|
||||
@@ -143,19 +149,23 @@ func TestThresholdSCfgAsMapInterfaceCase2(t *testing.T) {
|
||||
"string_indexed_fields": ["*req.string"],
|
||||
"prefix_indexed_fields": ["*req.prefix","*req.indexed","*req.fields"],
|
||||
"suffix_indexed_fields": ["*req.suffix_indexed_fields1", "*req.suffix_indexed_fields2"],
|
||||
"exists_indexed_fields": ["*req.prefix","*req.indexed","*req.fields"],
|
||||
"notexists_indexed_fields": [],
|
||||
"nested_fields": true,
|
||||
"actions_conns": ["*internal"],
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
utils.EnabledCfg: true,
|
||||
utils.StoreIntervalCfg: "96h0m0s",
|
||||
utils.IndexedSelectsCfg: false,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.string"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.suffix_indexed_fields1", "*req.suffix_indexed_fields2"},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.ActionSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.EnabledCfg: true,
|
||||
utils.StoreIntervalCfg: "96h0m0s",
|
||||
utils.IndexedSelectsCfg: false,
|
||||
utils.StringIndexedFieldsCfg: []string{"*req.string"},
|
||||
utils.PrefixIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
utils.SuffixIndexedFieldsCfg: []string{"*req.suffix_indexed_fields1", "*req.suffix_indexed_fields2"},
|
||||
utils.ExistsIndexedFieldsCfg: []string{"*req.prefix", "*req.indexed", "*req.fields"},
|
||||
utils.NotExistsIndexedFieldsCfg: []string{},
|
||||
utils.NestedFieldsCfg: true,
|
||||
utils.ActionSConnsCfg: []string{utils.MetaInternal},
|
||||
utils.OptsCfg: map[string]interface{}{
|
||||
utils.MetaProfileIDs: []*utils.DynamicStringSliceOpt{},
|
||||
utils.MetaProfileIgnoreFilters: []*utils.DynamicBoolOpt{},
|
||||
|
||||
Reference in New Issue
Block a user