diff --git a/agents/libdiam_test.go b/agents/libdiam_test.go index cc722fecb..5df2fb16d 100644 --- a/agents/libdiam_test.go +++ b/agents/libdiam_test.go @@ -357,7 +357,7 @@ func TestMessageSetAVPsWithPath5(t *testing.T) { } if !reflect.DeepEqual(eMessage.String(), m.String()) { - t.Errorf("Expected %s, recived %s", utils.ToJSON(eMessage), utils.ToJSON(m)) + t.Errorf("Expected %s, received %s", utils.ToJSON(eMessage), utils.ToJSON(m)) // t.Errorf("Expecting: %+v \n, received: %+v \n", eMessage, m) } } @@ -461,7 +461,7 @@ func TestUpdateDiamMsgFromNavMap1(t *testing.T) { t.Error(err) } if !reflect.DeepEqual(eMessage.String(), m2.String()) { - t.Errorf("Expected %s, recived %s", utils.ToJSON(eMessage), utils.ToJSON(m2)) + t.Errorf("Expected %s, received %s", utils.ToJSON(eMessage), utils.ToJSON(m2)) } } @@ -555,7 +555,7 @@ func TestUpdateDiamMsgFromNavMap2(t *testing.T) { t.Error(err) } if !reflect.DeepEqual(eMessage.String(), m2.String()) { - t.Errorf("Expected %s, recived %s", utils.ToJSON(eMessage), utils.ToJSON(m2)) + t.Errorf("Expected %s, received %s", utils.ToJSON(eMessage), utils.ToJSON(m2)) } } @@ -626,7 +626,7 @@ func TestUpdateDiamMsgFromNavMap3(t *testing.T) { t.Error(err) } if !reflect.DeepEqual(eMessage.String(), m2.String()) { - t.Errorf("Expected %s, recived %s", utils.ToJSON(eMessage), utils.ToJSON(m2)) + t.Errorf("Expected %s, received %s", utils.ToJSON(eMessage), utils.ToJSON(m2)) } } @@ -738,7 +738,7 @@ func TestUpdateDiamMsgFromNavMap4(t *testing.T) { t.Error(err) } if !reflect.DeepEqual(eMessage.String(), m2.String()) { - t.Errorf("Expected %s, recived %s", utils.ToJSON(eMessage), utils.ToJSON(m2)) + t.Errorf("Expected %s, received %s", utils.ToJSON(eMessage), utils.ToJSON(m2)) } } diff --git a/agents/libsip_test.go b/agents/libsip_test.go index a003ac3a0..3fa1881e8 100644 --- a/agents/libsip_test.go +++ b/agents/libsip_test.go @@ -57,7 +57,7 @@ func TestUpdateSIPMsgFromNavMap(t *testing.T) { "Contact": "1001", } if !reflect.DeepEqual(m, expected) { - t.Errorf("Expected: %s , recived: %s", expected, m) + t.Errorf("Expected: %s , received: %s", expected, m) } } diff --git a/agents/sipagent_it_test.go b/agents/sipagent_it_test.go index 64ffaa8d7..68a8bec9c 100644 --- a/agents/sipagent_it_test.go +++ b/agents/sipagent_it_test.go @@ -150,13 +150,13 @@ func testSAitSIPRegister(t *testing.T) { if _, err = saConn.Read(buffer); err != nil { t.Fatal(err) } - var recived sipingo.Message - if recived, err = sipingo.NewMessage(string(buffer)); err != nil { + var received sipingo.Message + if received, err = sipingo.NewMessage(string(buffer)); err != nil { t.Fatal(err) } - if expected := "SIP/2.0 405 Method Not Allowed"; recived["Request"] != expected { - t.Errorf("Expected %q, received: %q", expected, recived["Request"]) + if expected := "SIP/2.0 405 Method Not Allowed"; received["Request"] != expected { + t.Errorf("Expected %q, received: %q", expected, received["Request"]) } } diff --git a/apier/v1/apier_it_test.go b/apier/v1/apier_it_test.go index 3f8d11bdb..9c1ed8345 100644 --- a/apier/v1/apier_it_test.go +++ b/apier/v1/apier_it_test.go @@ -951,12 +951,12 @@ func testAPIerSv1GetRatingProfile(t *testing.T) { } attrGetRatingPlan.Subject = utils.EmptyString if err := rater.Call(utils.APIerSv1GetRatingProfile, attrGetRatingPlan, &rpl); err == nil { - t.Errorf("Expected error on APIerSv1.GetRatingProfile, recived : %+v", rpl) + t.Errorf("Expected error on APIerSv1.GetRatingProfile, received : %+v", rpl) } attrGetRatingPlan.Subject = "dan" attrGetRatingPlan.Tenant = "other_tenant" if err := rater.Call(utils.APIerSv1GetRatingProfile, attrGetRatingPlan, &rpl); err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error on APIerSv1.GetRatingProfile, recived : %+v", err) + t.Errorf("Expected error on APIerSv1.GetRatingProfile, received : %+v", err) } expectedIds := []string{"call:dan", "call:*any"} @@ -1829,7 +1829,7 @@ func testApierGetCallCostLog(t *testing.T) { if err := rater.Call(utils.APIerSv1GetEventCost, &attrs, &cc); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, cc) { - t.Errorf("Expecting %s ,recived %s", utils.ToJSON(expected), utils.ToJSON(cc)) + t.Errorf("Expecting %s ,received %s", utils.ToJSON(expected), utils.ToJSON(cc)) } } diff --git a/apier/v1/attributes_it_test.go b/apier/v1/attributes_it_test.go index 272b25105..f891035cd 100644 --- a/apier/v1/attributes_it_test.go +++ b/apier/v1/attributes_it_test.go @@ -888,7 +888,7 @@ func testAttributeSRemAlsPrf(t *testing.T) { resp = "" if err := attrSRPC.Call(utils.APIerSv1RemoveAttributeProfile, &utils.TenantIDWithCache{Tenant: alsPrf.Tenant, ID: alsPrf.ID}, &resp); err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error: %v recived: %v", utils.ErrNotFound, err) + t.Errorf("Expected error: %v received: %v", utils.ErrNotFound, err) } } diff --git a/apier/v1/chargers_it_test.go b/apier/v1/chargers_it_test.go index f1e0bf0d2..1e6f406b2 100755 --- a/apier/v1/chargers_it_test.go +++ b/apier/v1/chargers_it_test.go @@ -479,7 +479,7 @@ func testChargerSRemChargerProfile(t *testing.T) { } if err := chargerRPC.Call(utils.APIerSv1RemoveChargerProfile, &utils.TenantID{Tenant: "cgrates.org", ID: "ApierTest"}, &resp); err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error: %v recived: %v", utils.ErrNotFound, err) + t.Errorf("Expected error: %v received: %v", utils.ErrNotFound, err) } } diff --git a/apier/v1/config.go b/apier/v1/config.go index 5cc1f241c..2415f7b66 100644 --- a/apier/v1/config.go +++ b/apier/v1/config.go @@ -43,11 +43,16 @@ func (cSv1 *ConfigSv1) ReloadConfigFromPath(args *config.ConfigReloadWithOpts, r return cSv1.cfg.V1ReloadConfigFromPath(args, reply) } -// ReloadConfigFromJSON reloads the sections of configz +// ReloadConfigFromJSON reloads the sections of config func (cSv1 *ConfigSv1) ReloadConfigFromJSON(args *config.JSONReloadWithOpts, reply *string) (err error) { return cSv1.cfg.V1ReloadConfigFromJSON(args, reply) } +// ReloadConfigFromString reloads the sections of config +func (cSv1 *ConfigSv1) ReloadConfigFromString(args *config.JSONStringReloadWithOpts, reply *string) (err error) { + return cSv1.cfg.V1ReloadConfigFromString(args, reply) +} + // Call implements rpcclient.ClientConnector interface for internal RPC func (cSv1 *ConfigSv1) Call(serviceMethod string, args interface{}, reply interface{}) error { diff --git a/apier/v1/config_it_test.go b/apier/v1/config_it_test.go index 6b0a64906..dd183f023 100644 --- a/apier/v1/config_it_test.go +++ b/apier/v1/config_it_test.go @@ -135,47 +135,41 @@ func testConfigSReloadConfigFromJSONSessionS(t *testing.T) { t.Errorf("Expected OK received: %s", reply) } exp := map[string]interface{}{ - "Enabled": true, - "ListenBijson": "127.0.0.1:2014", - "ChargerSConns": []interface{}{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers)}, - "RALsConns": []interface{}{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)}, - "ResSConns": []interface{}{utils.MetaLocalHost}, - "ThreshSConns": []interface{}{}, - "StatSConns": []interface{}{}, - "RouteSConns": []interface{}{utils.MetaLocalHost}, - "AttrSConns": []interface{}{utils.MetaLocalHost}, - "CDRsConns": []interface{}{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCDRs)}, - "ReplicationConns": []interface{}{}, - "MinDurLowBalance": 0., - "SessionIndexes": map[string]interface{}{"OriginID": true}, - "ClientProtocol": 1., - "TerminateAttempts": 5., - "ChannelSyncInterval": 0., - "DebitInterval": 0., - "SessionTTL": 0., - "SessionTTLLastUsed": nil, - "SessionTTLMaxDelay": nil, - "SessionTTLUsage": nil, - "SessionTTLLastUsage": nil, - "StoreSCosts": false, - "AlterableFields": map[string]interface{}{}, - "STIRCfg": map[string]interface{}{ - "AllowedAttest": map[string]interface{}{ - utils.META_ANY: map[string]interface{}{}, - }, - "DefaultAttest": "A", - "PayloadMaxduration": -1., - "PrivateKeyPath": "", - "PublicKeyPath": "", + "enabled": true, + "channel_sync_interval": "0", + "alterable_fields": []interface{}{}, + "client_protocol": 1., + "debit_interval": "0", + "listen_bijson": "127.0.0.1:2014", + "session_ttl": "0", + "session_indexes": []interface{}{utils.OriginID}, + "attributes_conns": []interface{}{utils.MetaLocalHost}, + "cdrs_conns": []interface{}{utils.MetaInternal}, + "chargers_conns": []interface{}{utils.MetaInternal}, + "rals_conns": []interface{}{utils.MetaInternal}, + "replication_conns": []interface{}{}, + "resources_conns": []interface{}{utils.MetaLocalHost}, + "routes_conns": []interface{}{utils.MetaLocalHost}, + "scheduler_conns": []interface{}{}, + "thresholds_conns": []interface{}{}, + "stats_conns": []interface{}{}, + "min_dur_low_balance": "0", + "stir": map[string]interface{}{ + "allowed_attest": []interface{}{utils.META_ANY}, + "default_attest": "A", + "payload_maxduration": "-1", + "privatekey_path": "", + "publickey_path": "", }, - "SchedulerConns": []interface{}{}, + "store_session_costs": false, + "terminate_attempts": 5., } if *encoding == utils.MetaGOB { var empty []interface{} - exp["ReplicationConns"] = empty - exp["SchedulerConns"] = empty - exp["StatSConns"] = empty - exp["ThreshSConns"] = empty + exp["replication_conns"] = empty + exp["scheduler_conns"] = empty + exp["stats_conns"] = empty + exp["thresholds_conns"] = empty } var rpl map[string]interface{} if err := configRPC.Call(utils.ConfigSv1GetJSONSection, &config.SectionWithOpts{ @@ -190,40 +184,34 @@ func testConfigSReloadConfigFromJSONSessionS(t *testing.T) { func testConfigSv1GetJSONSectionWithoutTenant(t *testing.T) { exp := map[string]interface{}{ - "Enabled": true, - "ListenBijson": "127.0.0.1:2014", - "ChargerSConns": []interface{}{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers)}, - "RALsConns": []interface{}{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)}, - "ResSConns": []interface{}{utils.MetaLocalHost}, - "ThreshSConns": []interface{}{}, - "StatSConns": []interface{}{}, - "RouteSConns": []interface{}{utils.MetaLocalHost}, - "AttrSConns": []interface{}{utils.MetaLocalHost}, - "CDRsConns": []interface{}{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCDRs)}, - "ReplicationConns": []interface{}{}, - "MinDurLowBalance": 0., - "SessionIndexes": map[string]interface{}{"OriginID": true}, - "ClientProtocol": 1., - "TerminateAttempts": 5., - "ChannelSyncInterval": 0., - "DebitInterval": 0., - "SessionTTL": 0., - "SessionTTLLastUsed": nil, - "SessionTTLMaxDelay": nil, - "SessionTTLUsage": nil, - "SessionTTLLastUsage": nil, - "StoreSCosts": false, - "AlterableFields": map[string]interface{}{}, - "STIRCfg": map[string]interface{}{ - "AllowedAttest": map[string]interface{}{ - utils.META_ANY: map[string]interface{}{}, - }, - "DefaultAttest": "A", - "PayloadMaxduration": -1., - "PrivateKeyPath": "", - "PublicKeyPath": "", + "enabled": true, + "listen_bijson": "127.0.0.1:2014", + "chargers_conns": []interface{}{utils.MetaInternal}, + "rals_conns": []interface{}{utils.MetaInternal}, + "resources_conns": []interface{}{utils.MetaLocalHost}, + "thresholds_conns": []interface{}{}, + "stats_conns": []interface{}{}, + "routes_conns": []interface{}{utils.MetaLocalHost}, + "attributes_conns": []interface{}{utils.MetaLocalHost}, + "cdrs_conns": []interface{}{utils.MetaInternal}, + "replication_conns": []interface{}{}, + "scheduler_conns": []interface{}{}, + "session_indexes": []interface{}{"OriginID"}, + "client_protocol": 1., + "terminate_attempts": 5., + "channel_sync_interval": "0", + "debit_interval": "0", + "session_ttl": "0", + "store_session_costs": false, + "min_dur_low_balance": "0", + "alterable_fields": []interface{}{}, + "stir": map[string]interface{}{ + "allowed_attest": []interface{}{utils.META_ANY}, + "default_attest": "A", + "payload_maxduration": "-1", + "privatekey_path": "", + "publickey_path": "", }, - "SchedulerConns": []interface{}{}, } var rpl map[string]interface{} if err := configRPC.Call(utils.ConfigSv1GetJSONSection, &config.SectionWithOpts{ @@ -258,26 +246,26 @@ func testConfigSReloadConfigFromJSONEEs(t *testing.T) { t.Errorf("Expected OK received: %s", reply) } eporter := map[string]interface{}{ - "Attempts": 1., - "AttributeSCtx": "", - "AttributeSIDs": []interface{}{}, - "ExportPath": "/var/spool/cgrates/ees", - "FieldSep": ",", - "Fields": []interface{}{}, - "Filters": []interface{}{}, - "Flags": map[string]interface{}{}, - "ID": "*default", - "Synchronous": false, - "Tenant": nil, - "Timezone": "", - "Type": "*none", - "Opts": map[string]interface{}{}, + "attempts": 1., + "attribute_context": "", + "attribute_ids": []interface{}{}, + "export_path": "/var/spool/cgrates/ees", + "field_separator": ",", + "fields": []interface{}{}, + "filters": []interface{}{}, + "flags": []interface{}{}, + "id": "*default", + "synchronous": false, + "tenant": "", + "timezone": "", + "type": "*none", + "opts": map[string]interface{}{}, } exp := map[string]interface{}{ - "Enabled": true, - "AttributeSConns": []interface{}{}, - "Cache": map[string]interface{}{"*file_csv": map[string]interface{}{"Limit": -1., "Precache": false, "Replicate": false, "StaticTTL": false, "TTL": 5000000000.}}, - "Exporters": []interface{}{eporter}, + "enabled": true, + "attributes_conns": []interface{}{}, + "cache": map[string]interface{}{"*file_csv": map[string]interface{}{"limit": -1., "precache": false, "replicate": false, "static_ttl": false, "ttl": "5s"}}, + "exporters": []interface{}{eporter}, } var rpl map[string]interface{} if err := configRPC.Call(utils.ConfigSv1GetJSONSection, &config.SectionWithOpts{ diff --git a/apier/v1/dispatcher_it_test.go b/apier/v1/dispatcher_it_test.go index 8a33cf497..8ae385ad5 100644 --- a/apier/v1/dispatcher_it_test.go +++ b/apier/v1/dispatcher_it_test.go @@ -250,7 +250,7 @@ func testDispatcherSRemDispatcherProfile(t *testing.T) { if err := dispatcherRPC.Call(utils.APIerSv1RemoveDispatcherProfile, &utils.TenantIDWithCache{Tenant: "cgrates.org", ID: "Dsp1"}, &result); err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error: %v recived: %v", utils.ErrNotFound, err) + t.Errorf("Expected error: %v received: %v", utils.ErrNotFound, err) } } @@ -370,7 +370,7 @@ func testDispatcherSRemDispatcherHost(t *testing.T) { if err := dispatcherRPC.Call(utils.APIerSv1RemoveDispatcherHost, &utils.TenantIDWithCache{Tenant: "cgrates.org", ID: "DspHst1"}, &result); err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error: %v recived: %v", utils.ErrNotFound, err) + t.Errorf("Expected error: %v received: %v", utils.ErrNotFound, err) } } diff --git a/apier/v1/replicate_it_test.go b/apier/v1/replicate_it_test.go index dc1f813e1..c825d5635 100644 --- a/apier/v1/replicate_it_test.go +++ b/apier/v1/replicate_it_test.go @@ -271,11 +271,11 @@ func testInternalReplicateITAttributeProfile(t *testing.T) { //check again if err := engineOneRPC.Call(utils.APIerSv1GetAttributeProfile, utils.TenantIDWithOpts{TenantID: &utils.TenantID{Tenant: alsPrf.Tenant, ID: alsPrf.ID}}, &reply); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expecting: %+v recived: %+v", utils.ErrNotFound, err) + t.Errorf("Expecting: %+v received: %+v", utils.ErrNotFound, err) } if err := engineTwoRPC.Call(utils.APIerSv1GetAttributeProfile, utils.TenantIDWithOpts{TenantID: &utils.TenantID{Tenant: alsPrf.Tenant, ID: alsPrf.ID}}, &reply); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expecting: %+v recived: %+v", utils.ErrNotFound, err) + t.Errorf("Expecting: %+v received: %+v", utils.ErrNotFound, err) } } @@ -287,10 +287,10 @@ func testInternalReplicateITRatingProfile(t *testing.T) { Category: "call", Subject: "Subject"} if err := engineOneRPC.Call(utils.APIerSv1GetRatingProfile, attrGetRatingProfile, &rpl); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expecting: %+v recived: %+v", utils.ErrNotFound, err) + t.Errorf("Expecting: %+v received: %+v", utils.ErrNotFound, err) } if err := engineTwoRPC.Call(utils.APIerSv1GetRatingProfile, attrGetRatingProfile, &rpl); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expecting: %+v recived: %+v", utils.ErrNotFound, err) + t.Errorf("Expecting: %+v received: %+v", utils.ErrNotFound, err) } // set var reply string @@ -1448,12 +1448,12 @@ func testInternalReplicateITRateProfile(t *testing.T) { if err := engineOneRPC.Call(utils.APIerSv1GetRateProfile, utils.TenantIDWithOpts{TenantID: &utils.TenantID{Tenant: rPrf.Tenant, ID: rPrf.ID}}, &reply); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expecting: %+v recived: %+v", utils.ErrNotFound, err) + t.Errorf("Expecting: %+v received: %+v", utils.ErrNotFound, err) } if err := engineTwoRPC.Call(utils.APIerSv1GetRateProfile, utils.TenantIDWithOpts{TenantID: &utils.TenantID{Tenant: rPrf.Tenant, ID: rPrf.ID}}, &reply); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expecting: %+v recived: %+v", utils.ErrNotFound, err) + t.Errorf("Expecting: %+v received: %+v", utils.ErrNotFound, err) } } diff --git a/apier/v1/resourcesv1_it_test.go b/apier/v1/resourcesv1_it_test.go index 2673f3dcd..583ae99a1 100644 --- a/apier/v1/resourcesv1_it_test.go +++ b/apier/v1/resourcesv1_it_test.go @@ -798,7 +798,7 @@ func testV1RsRemResourceProfile(t *testing.T) { } if err := rlsV1Rpc.Call(utils.APIerSv1RemoveResourceProfile, &utils.TenantID{Tenant: "cgrates.org", ID: rlsConfig.ID}, &resp); err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error: %v recived: %v", utils.ErrNotFound, err) + t.Errorf("Expected error: %v received: %v", utils.ErrNotFound, err) } } diff --git a/apier/v1/routes_it_test.go b/apier/v1/routes_it_test.go index 817fee7a3..ebecf9bff 100644 --- a/apier/v1/routes_it_test.go +++ b/apier/v1/routes_it_test.go @@ -1031,7 +1031,7 @@ func testV1RouteRemRouteProfiles(t *testing.T) { } if err := splSv1Rpc.Call(utils.APIerSv1RemoveRouteProfile, &utils.TenantIDWithCache{Tenant: "cgrates.org", ID: "TEST_PROFILE1"}, &resp); err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error: %v recived: %v", utils.ErrNotFound, err) + t.Errorf("Expected error: %v received: %v", utils.ErrNotFound, err) } } diff --git a/apier/v1/stats_it_test.go b/apier/v1/stats_it_test.go index 030596a10..67edc9b18 100644 --- a/apier/v1/stats_it_test.go +++ b/apier/v1/stats_it_test.go @@ -542,7 +542,7 @@ func testV1STSRemoveStatQueueProfile(t *testing.T) { } if err := stsV1Rpc.Call(utils.APIerSv1RemoveStatQueueProfile, &utils.TenantID{Tenant: "cgrates.org", ID: "TEST_PROFILE1"}, &resp); err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error: %v recived: %v", utils.ErrNotFound, err) + t.Errorf("Expected error: %v received: %v", utils.ErrNotFound, err) } } diff --git a/apier/v1/thresholds_it_test.go b/apier/v1/thresholds_it_test.go index c777e9b15..b60dc369d 100644 --- a/apier/v1/thresholds_it_test.go +++ b/apier/v1/thresholds_it_test.go @@ -552,11 +552,11 @@ func testV1TSRemoveThresholdProfile(t *testing.T) { if err := tSv1Rpc.Call(utils.APIerSv1GetThresholdProfile, &utils.TenantID{Tenant: "cgrates.org", ID: "THD_Test"}, &sqp); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Recived %s and the error:%+v", utils.ToJSON(sqp), err) + t.Errorf("Received %s and the error:%+v", utils.ToJSON(sqp), err) } if err := tSv1Rpc.Call(utils.APIerSv1RemoveThresholdProfile, &utils.TenantIDWithCache{Tenant: "cgrates.org", ID: "THD_Test"}, &resp); err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error: %v recived: %v", utils.ErrNotFound, err) + t.Errorf("Expected error: %v received: %v", utils.ErrNotFound, err) } } diff --git a/cmd/cgr-loader/cgr-loader_it_test.go b/cmd/cgr-loader/cgr-loader_it_test.go index fee614607..a4482eb38 100644 --- a/cmd/cgr-loader/cgr-loader_it_test.go +++ b/cmd/cgr-loader/cgr-loader_it_test.go @@ -156,7 +156,7 @@ func TestLoadConfig(t *testing.T) { if !reflect.DeepEqual(ldrCfg.LoaderCgrCfg().SchedulerConns, expAddrs) { t.Errorf("Expected %v received %v", expAddrs, ldrCfg.LoaderCgrCfg().SchedulerConns) } - expaddr := map[string]*config.RPCConn{ + expaddr := config.RpcConns{ utils.MetaInternal: { Strategy: rpcclient.PoolFirst, PoolSize: 0, diff --git a/config/analyzerscfg_test.go b/config/analyzerscfg_test.go index b954bfb41..18f9098dc 100644 --- a/config/analyzerscfg_test.go +++ b/config/analyzerscfg_test.go @@ -60,7 +60,7 @@ func TestAnalyzerSCfgAsMapInterface(t *testing.T) { if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) } else if rcv := cgrCfg.analyzerSCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { - t.Errorf("Expected: %+v , recived: %+v", eMap, rcv) + t.Errorf("Expected: %+v , received: %+v", eMap, rcv) } } @@ -81,7 +81,7 @@ func TestAnalyzerSCfgAsMapInterface1(t *testing.T) { if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) } else if rcv := cgrCfg.analyzerSCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { - t.Errorf("Expected: %+v , recived: %+v", eMap, rcv) + t.Errorf("Expected: %+v , received: %+v", eMap, rcv) } } diff --git a/config/apibancfg_test.go b/config/apibancfg_test.go index 675757f8f..0dfdbe37f 100644 --- a/config/apibancfg_test.go +++ b/config/apibancfg_test.go @@ -29,12 +29,12 @@ func TestAPIBanCfgloadFromJsonCfg(t *testing.T) { if err := alS.loadFromJsonCfg(nil); err != nil { t.Error(err) } else if !reflect.DeepEqual(alS, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, alS) + t.Errorf("Expected: %+v ,received: %+v", expected, alS) } if err := alS.loadFromJsonCfg(new(APIBanJsonCfg)); err != nil { t.Error(err) } else if !reflect.DeepEqual(alS, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, alS) + t.Errorf("Expected: %+v ,received: %+v", expected, alS) } cfgJSONStr := `{ "apiban":{ // APIBan config @@ -54,7 +54,7 @@ func TestAPIBanCfgloadFromJsonCfg(t *testing.T) { } else if err = alS.loadFromJsonCfg(jsnalS); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, alS) { - t.Errorf("Expected: %+v , recived: %+v", expected, alS) + t.Errorf("Expected: %+v , received: %+v", expected, alS) } } @@ -78,6 +78,6 @@ func TestAPIBanCfgAsMapInterface(t *testing.T) { } else if err = alS.loadFromJsonCfg(jsnalS); err != nil { t.Error(err) } else if rcv := alS.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + t.Errorf("\nExpected: %+v\nReceived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) } } diff --git a/config/apiercfg_test.go b/config/apiercfg_test.go index a19781f01..04e49896b 100644 --- a/config/apiercfg_test.go +++ b/config/apiercfg_test.go @@ -65,7 +65,7 @@ func TestApierCfgAsMapInterface1(t *testing.T) { if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) } else if newMap := cgrCfg.apier.AsMapInterface(); !reflect.DeepEqual(newMap, eMap) { - t.Errorf("Expected %+v, recived %+v", eMap, newMap) + t.Errorf("Expected %+v, received %+v", eMap, newMap) } } @@ -89,6 +89,6 @@ func TestApierCfgAsMapInterface2(t *testing.T) { if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(myJSONStr); err != nil { t.Error(err) } else if newMap := cgrCfg.apier.AsMapInterface(); !reflect.DeepEqual(expectedMap, newMap) { - t.Errorf("Expected %+v \n, recived %+v", utils.ToJSON(expectedMap), utils.ToJSON(newMap)) + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(expectedMap), utils.ToJSON(newMap)) } } diff --git a/config/config.go b/config/config.go index a996b4a58..8d90847ad 100755 --- a/config/config.go +++ b/config/config.go @@ -914,7 +914,7 @@ func (cfg *CGRConfig) AsteriskAgentCfg() *AsteriskAgentCfg { } // HttpAgentCfg returns the config for HttpAgent -func (cfg *CGRConfig) HttpAgentCfg() []*HttpAgentCfg { +func (cfg *CGRConfig) HttpAgentCfg() HttpAgentCfgs { cfg.lks[HttpAgentJson].Lock() defer cfg.lks[HttpAgentJson].Unlock() return cfg.httpAgentCfg @@ -1087,14 +1087,14 @@ func (cfg *CGRConfig) SIPAgentCfg() *SIPAgentCfg { } // RPCConns reads the RPCConns configuration -func (cfg *CGRConfig) RPCConns() map[string]*RPCConn { +func (cfg *CGRConfig) RPCConns() RpcConns { cfg.lks[RPCConnsJsonName].RLock() defer cfg.lks[RPCConnsJsonName].RUnlock() return cfg.rpcConns } // TemplatesCfg returns the config for templates -func (cfg *CGRConfig) TemplatesCfg() map[string][]*FCTemplate { +func (cfg *CGRConfig) TemplatesCfg() FcTemplates { cfg.lks[TemplatesJson].Lock() defer cfg.lks[TemplatesJson].Unlock() return cfg.templates @@ -1137,81 +1137,93 @@ func (cfg *CGRConfig) V1GetConfigSection(args *SectionWithOpts, reply *map[strin var jsonString string switch args.Section { case GENERAL_JSN: - jsonString = utils.ToJSON(cfg.GeneralCfg()) + jsonString = utils.ToJSON(cfg.GeneralCfg().AsMapInterface()) case DATADB_JSN: - jsonString = utils.ToJSON(cfg.DataDbCfg()) + var datadb map[string]interface{} + if datadb, err = cfg.DataDbCfg().AsMapInterface(); err != nil { + return + } + jsonString = utils.ToJSON(datadb) case STORDB_JSN: - jsonString = utils.ToJSON(cfg.StorDbCfg()) + jsonString = utils.ToJSON(cfg.StorDbCfg().AsMapInterface()) case TlsCfgJson: - jsonString = utils.ToJSON(cfg.TlsCfg()) + jsonString = utils.ToJSON(cfg.TlsCfg().AsMapInterface()) case CACHE_JSN: - jsonString = utils.ToJSON(cfg.CacheCfg()) + jsonString = utils.ToJSON(cfg.CacheCfg().AsMapInterface()) case LISTEN_JSN: - jsonString = utils.ToJSON(cfg.ListenCfg()) + jsonString = utils.ToJSON(cfg.ListenCfg().AsMapInterface()) case HTTP_JSN: - jsonString = utils.ToJSON(cfg.HTTPCfg()) + jsonString = utils.ToJSON(cfg.HTTPCfg().AsMapInterface()) case FilterSjsn: - jsonString = utils.ToJSON(cfg.FilterSCfg()) + jsonString = utils.ToJSON(cfg.FilterSCfg().AsMapInterface()) case RALS_JSN: - jsonString = utils.ToJSON(cfg.RalsCfg()) + jsonString = utils.ToJSON(cfg.RalsCfg().AsMapInterface()) case SCHEDULER_JSN: - jsonString = utils.ToJSON(cfg.SchedulerCfg()) + jsonString = utils.ToJSON(cfg.SchedulerCfg().AsMapInterface()) case CDRS_JSN: - jsonString = utils.ToJSON(cfg.CdrsCfg()) + jsonString = utils.ToJSON(cfg.CdrsCfg().AsMapInterface()) case SessionSJson: - jsonString = utils.ToJSON(cfg.SessionSCfg()) + jsonString = utils.ToJSON(cfg.SessionSCfg().AsMapInterface()) case FreeSWITCHAgentJSN: - jsonString = utils.ToJSON(cfg.FsAgentCfg()) + jsonString = utils.ToJSON(cfg.FsAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) case KamailioAgentJSN: - jsonString = utils.ToJSON(cfg.KamAgentCfg()) + jsonString = utils.ToJSON(cfg.KamAgentCfg().AsMapInterface()) case AsteriskAgentJSN: - jsonString = utils.ToJSON(cfg.AsteriskAgentCfg()) + jsonString = utils.ToJSON(cfg.AsteriskAgentCfg().AsMapInterface()) case DA_JSN: - jsonString = utils.ToJSON(cfg.DiameterAgentCfg()) + jsonString = utils.ToJSON(cfg.DiameterAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) case RA_JSN: - jsonString = utils.ToJSON(cfg.RadiusAgentCfg()) + jsonString = utils.ToJSON(cfg.RadiusAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) case DNSAgentJson: - jsonString = utils.ToJSON(cfg.DNSAgentCfg()) + jsonString = utils.ToJSON(cfg.DNSAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) case ATTRIBUTE_JSN: - jsonString = utils.ToJSON(cfg.AttributeSCfg()) + jsonString = utils.ToJSON(cfg.AttributeSCfg().AsMapInterface()) case ChargerSCfgJson: - jsonString = utils.ToJSON(cfg.ChargerSCfg()) + jsonString = utils.ToJSON(cfg.ChargerSCfg().AsMapInterface()) case RESOURCES_JSON: - jsonString = utils.ToJSON(cfg.ResourceSCfg()) + jsonString = utils.ToJSON(cfg.ResourceSCfg().AsMapInterface()) case STATS_JSON: - jsonString = utils.ToJSON(cfg.StatSCfg()) + jsonString = utils.ToJSON(cfg.StatSCfg().AsMapInterface()) case THRESHOLDS_JSON: - jsonString = utils.ToJSON(cfg.ThresholdSCfg()) + jsonString = utils.ToJSON(cfg.ThresholdSCfg().AsMapInterface()) case RouteSJson: - jsonString = utils.ToJSON(cfg.RouteSCfg()) + jsonString = utils.ToJSON(cfg.RouteSCfg().AsMapInterface()) case SURETAX_JSON: - jsonString = utils.ToJSON(cfg.SureTaxCfg()) + jsonString = utils.ToJSON(cfg.SureTaxCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) case DispatcherSJson: - jsonString = utils.ToJSON(cfg.DispatcherSCfg()) + jsonString = utils.ToJSON(cfg.DispatcherSCfg().AsMapInterface()) case DispatcherHJson: - jsonString = utils.ToJSON(cfg.DispatcherHCfg()) + jsonString = utils.ToJSON(cfg.DispatcherHCfg().AsMapInterface()) case LoaderJson: - jsonString = utils.ToJSON(cfg.LoaderCfg()) + jsonString = utils.ToJSON(cfg.LoaderCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) case CgrLoaderCfgJson: - jsonString = utils.ToJSON(cfg.LoaderCgrCfg()) + jsonString = utils.ToJSON(cfg.LoaderCgrCfg().AsMapInterface()) case CgrMigratorCfgJson: - jsonString = utils.ToJSON(cfg.MigratorCgrCfg()) + jsonString = utils.ToJSON(cfg.MigratorCgrCfg().AsMapInterface()) case ApierS: - jsonString = utils.ToJSON(cfg.ApierCfg()) + jsonString = utils.ToJSON(cfg.ApierCfg().AsMapInterface()) case EEsJson: - jsonString = utils.ToJSON(cfg.EEsCfg()) + jsonString = utils.ToJSON(cfg.EEsCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) case ERsJson: - jsonString = utils.ToJSON(cfg.ERsCfg()) + jsonString = utils.ToJSON(cfg.ERsCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) case RPCConnsJsonName: - jsonString = utils.ToJSON(cfg.RPCConns()) + jsonString = utils.ToJSON(cfg.RPCConns().AsMapInterface()) case SIPAgentJson: - jsonString = utils.ToJSON(cfg.SIPAgentCfg()) + jsonString = utils.ToJSON(cfg.SIPAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) case TemplatesJson: - jsonString = utils.ToJSON(cfg.TemplatesCfg()) + jsonString = utils.ToJSON(cfg.TemplatesCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) case ConfigSJson: - jsonString = utils.ToJSON(cfg.ConfigSCfg()) + jsonString = utils.ToJSON(cfg.ConfigSCfg().AsMapInterface()) case APIBanCfgJson: - jsonString = utils.ToJSON(cfg.APIBanCfg()) + jsonString = utils.ToJSON(cfg.APIBanCfg().AsMapInterface()) + case HttpAgentJson: + jsonString = utils.ToJSON(cfg.HttpAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case MAILER_JSN: + jsonString = utils.ToJSON(cfg.MailerCfg().AsMapInterface()) + case AnalyzerCfgJson: + jsonString = utils.ToJSON(cfg.AnalyzerSCfg().AsMapInterface()) + case RateSJson: + jsonString = utils.ToJSON(cfg.RateSCfg().AsMapInterface()) default: return errors.New("Invalid section") } @@ -1482,7 +1494,7 @@ type JSONReloadWithOpts struct { JSON map[string]interface{} } -// V1ReloadConfigFromJSON reloads the sections of configz +// V1ReloadConfigFromJSON reloads the sections of config func (cfg *CGRConfig) V1ReloadConfigFromJSON(args *JSONReloadWithOpts, reply *string) (err error) { if len(args.JSON) == 0 { *reply = utils.OK @@ -1508,6 +1520,9 @@ func (cfg *CGRConfig) V1ReloadConfigFromJSON(args *JSONReloadWithOpts, reply *st err = cfg.checkConfigSanity() cfg.rUnlockSections() // unlock before checking the error + if err != nil { + return + } err = cfg.reloadSections(sections...) if err != nil { @@ -1626,28 +1641,17 @@ func (cfg *CGRConfig) reloadSections(sections ...string) (err error) { } // AsMapInterface returns the config as a map[string]interface{} -func (cfg *CGRConfig) AsMapInterface(separator string) map[string]interface{} { - rpcConns := make(map[string]map[string]interface{}, len(cfg.rpcConns)) - for key, val := range cfg.rpcConns { - rpcConns[key] = val.AsMapInterface() +func (cfg *CGRConfig) AsMapInterface(separator string) (mp map[string]interface{}, err error) { + var datadb map[string]interface{} + if datadb, err = cfg.dataDbCfg.AsMapInterface(); err != nil { + return } - - loaderCfg := make([]map[string]interface{}, len(cfg.loaderCfg)) - for i, item := range cfg.loaderCfg { - loaderCfg[i] = item.AsMapInterface(separator) - } - - httpAgentCfg := make([]map[string]interface{}, len(cfg.httpAgentCfg)) - for i, item := range cfg.httpAgentCfg { - httpAgentCfg[i] = item.AsMapInterface(separator) - } - return map[string]interface{}{ - LoaderJson: loaderCfg, - HttpAgentJson: httpAgentCfg, - RPCConnsJsonName: rpcConns, - GENERAL_JSN: cfg.generalCfg.AsMapInterface(), - //utils.DataDbCfg: cfg.dataDbCfg.AsMapInterface(), + LoaderJson: cfg.loaderCfg.AsMapInterface(separator), + HttpAgentJson: cfg.httpAgentCfg.AsMapInterface(separator), + RPCConnsJsonName: cfg.rpcConns.AsMapInterface(), + GENERAL_JSN: cfg.generalCfg.AsMapInterface(), + DATADB_JSN: datadb, STORDB_JSN: cfg.storDbCfg.AsMapInterface(), TlsCfgJson: cfg.tlsCfg.AsMapInterface(), CACHE_JSN: cfg.cacheCfg.AsMapInterface(), @@ -1680,5 +1684,140 @@ func (cfg *CGRConfig) AsMapInterface(separator string) map[string]interface{} { ApierS: cfg.apier.AsMapInterface(), ERsJson: cfg.ersCfg.AsMapInterface(separator), APIBanCfgJson: cfg.apiBanCfg.AsMapInterface(), - } + EEsJson: cfg.eesCfg.AsMapInterface(separator), + RateSJson: cfg.rateSCfg.AsMapInterface(), + SIPAgentJson: cfg.sipAgentCfg.AsMapInterface(separator), + TemplatesJson: cfg.templates.AsMapInterface(separator), + ConfigSJson: cfg.configSCfg.AsMapInterface(), + }, nil +} + +// JSONStringReloadWithOpts the API params for V1ReloadConfigFromString +type JSONStringReloadWithOpts struct { + Opts map[string]interface{} + Tenant string + JSON string +} + +// V1ReloadConfigFromString reloads the sections of config +func (cfg *CGRConfig) V1ReloadConfigFromString(args *JSONStringReloadWithOpts, reply *string) (err error) { + if len(args.JSON) == 0 { + *reply = utils.OK + return + } + + if err = cfg.loadCfgFromJSONWithLocks(bytes.NewBufferString(args.JSON), sortedCfgSections); err != nil { + return + } + + // lock all sections + cfg.rLockSections() + err = cfg.checkConfigSanity() + cfg.rUnlockSections() // unlock before checking the error + if err != nil { + return + } + + if err = cfg.reloadSections(sortedCfgSections...); err != nil { + return + } + *reply = utils.OK + return +} + +//V1GetConfigSectionString will retrieve from CGRConfig a section as a string +func (cfg *CGRConfig) V1GetConfigSectionString(args *SectionWithOpts, reply *string) (err error) { + switch args.Section { + case GENERAL_JSN: + *reply = utils.ToJSON(cfg.GeneralCfg().AsMapInterface()) + case DATADB_JSN: + var mp map[string]interface{} + if mp, err = cfg.DataDbCfg().AsMapInterface(); err != nil { + return + } + *reply = utils.ToJSON(mp) + case STORDB_JSN: + *reply = utils.ToJSON(cfg.StorDbCfg().AsMapInterface()) + case TlsCfgJson: + *reply = utils.ToJSON(cfg.TlsCfg().AsMapInterface()) + case CACHE_JSN: + *reply = utils.ToJSON(cfg.CacheCfg().AsMapInterface()) + case LISTEN_JSN: + *reply = utils.ToJSON(cfg.ListenCfg().AsMapInterface()) + case HTTP_JSN: + *reply = utils.ToJSON(cfg.HTTPCfg().AsMapInterface()) + case FilterSjsn: + *reply = utils.ToJSON(cfg.FilterSCfg().AsMapInterface()) + case RALS_JSN: + *reply = utils.ToJSON(cfg.RalsCfg().AsMapInterface()) + case SCHEDULER_JSN: + *reply = utils.ToJSON(cfg.SchedulerCfg().AsMapInterface()) + case CDRS_JSN: + *reply = utils.ToJSON(cfg.CdrsCfg().AsMapInterface()) + case SessionSJson: + *reply = utils.ToJSON(cfg.SessionSCfg().AsMapInterface()) + case FreeSWITCHAgentJSN: + *reply = utils.ToJSON(cfg.FsAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case KamailioAgentJSN: + *reply = utils.ToJSON(cfg.KamAgentCfg().AsMapInterface()) + case AsteriskAgentJSN: + *reply = utils.ToJSON(cfg.AsteriskAgentCfg().AsMapInterface()) + case DA_JSN: + *reply = utils.ToJSON(cfg.DiameterAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case RA_JSN: + *reply = utils.ToJSON(cfg.RadiusAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case DNSAgentJson: + *reply = utils.ToJSON(cfg.DNSAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case ATTRIBUTE_JSN: + *reply = utils.ToJSON(cfg.AttributeSCfg().AsMapInterface()) + case ChargerSCfgJson: + *reply = utils.ToJSON(cfg.ChargerSCfg().AsMapInterface()) + case RESOURCES_JSON: + *reply = utils.ToJSON(cfg.ResourceSCfg().AsMapInterface()) + case STATS_JSON: + *reply = utils.ToJSON(cfg.StatSCfg().AsMapInterface()) + case THRESHOLDS_JSON: + *reply = utils.ToJSON(cfg.ThresholdSCfg().AsMapInterface()) + case RouteSJson: + *reply = utils.ToJSON(cfg.RouteSCfg().AsMapInterface()) + case SURETAX_JSON: + *reply = utils.ToJSON(cfg.SureTaxCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case DispatcherSJson: + *reply = utils.ToJSON(cfg.DispatcherSCfg().AsMapInterface()) + case DispatcherHJson: + *reply = utils.ToJSON(cfg.DispatcherHCfg().AsMapInterface()) + case LoaderJson: + *reply = utils.ToJSON(cfg.LoaderCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case CgrLoaderCfgJson: + *reply = utils.ToJSON(cfg.LoaderCgrCfg().AsMapInterface()) + case CgrMigratorCfgJson: + *reply = utils.ToJSON(cfg.MigratorCgrCfg().AsMapInterface()) + case ApierS: + *reply = utils.ToJSON(cfg.ApierCfg().AsMapInterface()) + case EEsJson: + *reply = utils.ToJSON(cfg.EEsCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case ERsJson: + *reply = utils.ToJSON(cfg.ERsCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case SIPAgentJson: + *reply = utils.ToJSON(cfg.SIPAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case ConfigSJson: + *reply = utils.ToJSON(cfg.ConfigSCfg().AsMapInterface()) + case APIBanCfgJson: + *reply = utils.ToJSON(cfg.APIBanCfg().AsMapInterface()) + case RPCConnsJsonName: + *reply = utils.ToJSON(cfg.RPCConns().AsMapInterface()) + case TemplatesJson: + *reply = utils.ToJSON(cfg.TemplatesCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case HttpAgentJson: + *reply = utils.ToJSON(cfg.HttpAgentCfg().AsMapInterface(cfg.GeneralCfg().RSRSep)) + case MAILER_JSN: + *reply = utils.ToJSON(cfg.MailerCfg().AsMapInterface()) + case AnalyzerCfgJson: + *reply = utils.ToJSON(cfg.AnalyzerSCfg().AsMapInterface()) + case RateSJson: + *reply = utils.ToJSON(cfg.RateSCfg().AsMapInterface()) + default: + return errors.New("Invalid section") + } + return } diff --git a/config/config_it_test.go b/config/config_it_test.go index 22d242c68..91ba2cbea 100644 --- a/config/config_it_test.go +++ b/config/config_it_test.go @@ -53,6 +53,7 @@ var ( testCGRConfigReloadFreeswitchAgent, testCgrCfgV1ReloadConfigSection, testCGRConfigReloadConfigFromJSONSessionS, + testCGRConfigReloadConfigFromStringSessionS, testCGRConfigReloadAll, testHttpHandlerConfigSForNotExistFile, testHttpHandlerConfigSForFile, @@ -585,310 +586,132 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { } content := []interface{}{ map[string]interface{}{ - "AttributeID": "", - "Blocker": false, - "CostShiftDigits": 0, - "Path": "*cgreq.ToR", - "Filters": nil, - "Layout": time.RFC3339, - "Mandatory": true, - "MaskDestID": "", - "MaskLen": 0, - "NewBranch": false, - "Padding": "", - "RoundingDecimals": nil, - "Strip": "", - "Tag": "ToR", - "Timezone": "", - "Type": "*variable", - "Value": []interface{}{ - map[string]interface{}{ - "Rules": "~*req.2", - }}, - "Width": 0, + "path": "*cgreq.ToR", + "mandatory": true, + "tag": "ToR", + "type": "*variable", + "value": "~*req.2", }, map[string]interface{}{ - "AttributeID": "", - "Blocker": false, - "CostShiftDigits": 0, - "Path": "*cgreq.OriginID", - "Filters": nil, - "Layout": time.RFC3339, - "Mandatory": true, - "MaskDestID": "", - "MaskLen": 0, - "NewBranch": false, - "Padding": "", - "RoundingDecimals": nil, - "Strip": "", - "Tag": "OriginID", - "Timezone": "", - "Type": "*variable", - "Value": []interface{}{ - map[string]interface{}{ - "Rules": "~*req.3", - }}, - "Width": 0, + "path": "*cgreq.OriginID", + "mandatory": true, + "tag": "OriginID", + "type": "*variable", + "value": "~*req.3", }, map[string]interface{}{ - "AttributeID": "", - "Blocker": false, - "CostShiftDigits": 0, - "Path": "*cgreq.RequestType", - "Filters": nil, - "Layout": time.RFC3339, - "Mandatory": true, - "MaskDestID": "", - "MaskLen": 0, - "NewBranch": false, - "Padding": "", - "RoundingDecimals": nil, - "Strip": "", - "Tag": "RequestType", - "Timezone": "", - "Type": "*variable", - "Value": []interface{}{ - map[string]interface{}{ - "Rules": "~*req.4", - }}, - "Width": 0, + "path": "*cgreq.RequestType", + "mandatory": true, + "tag": "RequestType", + "type": "*variable", + "value": "~*req.4", }, map[string]interface{}{ - "AttributeID": "", - "Blocker": false, - "CostShiftDigits": 0, - "Path": "*cgreq.Tenant", - "Filters": nil, - "Layout": time.RFC3339, - "Mandatory": true, - "MaskDestID": "", - "MaskLen": 0, - "NewBranch": false, - "Padding": "", - "RoundingDecimals": nil, - "Strip": "", - "Tag": "Tenant", - "Timezone": "", - "Type": "*variable", - "Value": []interface{}{ - map[string]interface{}{ - "Rules": "~*req.6", - }}, - "Width": 0, + "path": "*cgreq.Tenant", + "mandatory": true, + "tag": "Tenant", + "type": "*variable", + "value": "~*req.6", }, map[string]interface{}{ - "AttributeID": "", - "Blocker": false, - "CostShiftDigits": 0, - "Path": "*cgreq.Category", - "Filters": nil, - "Layout": time.RFC3339, - "Mandatory": true, - "MaskDestID": "", - "MaskLen": 0, - "NewBranch": false, - "Padding": "", - "RoundingDecimals": nil, - "Strip": "", - "Tag": "Category", - "Timezone": "", - "Type": "*variable", - "Value": []interface{}{ - map[string]interface{}{ - "Rules": "~*req.7", - }}, - "Width": 0, + "path": "*cgreq.Category", + "mandatory": true, + "tag": "Category", + "type": "*variable", + "value": "~*req.7", }, map[string]interface{}{ - "AttributeID": "", - "Blocker": false, - "CostShiftDigits": 0, - "Path": "*cgreq.Account", - "Filters": nil, - "Layout": time.RFC3339, - "Mandatory": true, - "MaskDestID": "", - "MaskLen": 0, - "NewBranch": false, - "Padding": "", - "RoundingDecimals": nil, - "Strip": "", - "Tag": "Account", - "Timezone": "", - "Type": "*variable", - "Value": []interface{}{ - map[string]interface{}{ - "Rules": "~*req.8", - }}, - "Width": 0, + "path": "*cgreq.Account", + "mandatory": true, + "tag": "Account", + "type": "*variable", + "value": "~*req.8", }, map[string]interface{}{ - "AttributeID": "", - "Blocker": false, - "CostShiftDigits": 0, - "Path": "*cgreq.Subject", - "Filters": nil, - "Layout": time.RFC3339, - "Mandatory": true, - "MaskDestID": "", - "MaskLen": 0, - "NewBranch": false, - "Padding": "", - "RoundingDecimals": nil, - "Strip": "", - "Tag": "Subject", - "Timezone": "", - "Type": "*variable", - "Value": []interface{}{ - map[string]interface{}{ - "Rules": "~*req.9", - }}, - "Width": 0, + "path": "*cgreq.Subject", + "mandatory": true, + "tag": "Subject", + "type": "*variable", + "value": "~*req.9", }, map[string]interface{}{ - "AttributeID": "", - "Blocker": false, - "CostShiftDigits": 0, - "Path": "*cgreq.Destination", - "Filters": nil, - "Layout": time.RFC3339, - "Mandatory": true, - "MaskDestID": "", - "MaskLen": 0, - "NewBranch": false, - "Padding": "", - "RoundingDecimals": nil, - "Strip": "", - "Tag": "Destination", - "Timezone": "", - "Type": "*variable", - "Value": []interface{}{ - map[string]interface{}{ - "Rules": "~*req.10", - }}, - "Width": 0, + "path": "*cgreq.Destination", + "mandatory": true, + "tag": "Destination", + "type": "*variable", + "value": "~*req.10", }, map[string]interface{}{ - "AttributeID": "", - "Blocker": false, - "CostShiftDigits": 0, - "Path": "*cgreq.SetupTime", - "Filters": nil, - "Layout": time.RFC3339, - "Mandatory": true, - "MaskDestID": "", - "MaskLen": 0, - "NewBranch": false, - "Padding": "", - "RoundingDecimals": nil, - "Strip": "", - "Tag": "SetupTime", - "Timezone": "", - "Type": "*variable", - "Value": []interface{}{ - map[string]interface{}{ - "Rules": "~*req.11", - }}, - "Width": 0, + "path": "*cgreq.SetupTime", + "mandatory": true, + "tag": "SetupTime", + "type": "*variable", + "value": "~*req.11", }, map[string]interface{}{ - "AttributeID": "", - "Blocker": false, - "CostShiftDigits": 0, - "Path": "*cgreq.AnswerTime", - "Filters": nil, - "Layout": time.RFC3339, - "Mandatory": true, - "MaskDestID": "", - "MaskLen": 0, - "NewBranch": false, - "Padding": "", - "RoundingDecimals": nil, - "Strip": "", - "Tag": "AnswerTime", - "Timezone": "", - "Type": "*variable", - "Value": []interface{}{ - map[string]interface{}{ - "Rules": "~*req.12", - }}, - "Width": 0, + "path": "*cgreq.AnswerTime", + "mandatory": true, + "tag": "AnswerTime", + "type": "*variable", + "value": "~*req.12", }, map[string]interface{}{ - "AttributeID": "", - "Blocker": false, - "CostShiftDigits": 0, - "Path": "*cgreq.Usage", - "Filters": nil, - "Layout": time.RFC3339, - "Mandatory": true, - "MaskDestID": "", - "MaskLen": 0, - "NewBranch": false, - "Padding": "", - "RoundingDecimals": nil, - "Strip": "", - "Tag": "Usage", - "Timezone": "", - "Type": "*variable", - "Value": []interface{}{ - map[string]interface{}{ - "Rules": "~*req.13", - }}, - "Width": 0, + "path": "*cgreq.Usage", + "mandatory": true, + "tag": "Usage", + "type": "*variable", + "value": "~*req.13", }, } expected := map[string]interface{}{ - "Enabled": true, - "Readers": []interface{}{ + "enabled": true, + "readers": []interface{}{ map[string]interface{}{ - "PartialCacheExpiryAction": "", - "PartialRecordCache": 0, - "CacheDumpFields": []interface{}{}, - "ConcurrentReqs": 1024, - "Fields": content, - "FieldSep": ",", - "HeaderDefineChar": ":", - "Filters": []interface{}{}, - "Flags": map[string]interface{}{}, - "FailedCallsPrefix": "", - "ID": "*default", - "ProcessedPath": "/var/spool/cgrates/ers/out", - "RowLength": 0, - "RunDelay": 0, - "SourcePath": "/var/spool/cgrates/ers/in", - "Tenant": nil, - "Timezone": "", - "Type": utils.META_NONE, - "XmlRootPath": []interface{}{utils.EmptyString}, - "Opts": make(map[string]interface{}), + "partial_cache_expiry_action": "", + "partial_record_cache": "0", + "cache_dump_fields": []interface{}{}, + "concurrent_requests": 1024, + "fields": content, + "field_separator": ",", + "header_define_character": ":", + "filters": []string{}, + "flags": []string{}, + "failed_calls_prefix": "", + "id": "*default", + "processed_path": "/var/spool/cgrates/ers/out", + "row_length": 0, + "run_delay": "0", + "source_path": "/var/spool/cgrates/ers/in", + "tenant": "", + "timezone": "", + "type": utils.META_NONE, + "xml_root_path": []interface{}{utils.EmptyString}, + "opts": make(map[string]interface{}), }, map[string]interface{}{ - "CacheDumpFields": []interface{}{}, - "ConcurrentReqs": 1024, - "FieldSep": ",", - "HeaderDefineChar": ":", - "Filters": nil, - "Flags": map[string]interface{}{ - "*dryrun": map[string][]interface{}{}, - }, - "FailedCallsPrefix": "", - "PartialCacheExpiryAction": "", - "PartialRecordCache": 0, - "ID": "file_reader1", - "ProcessedPath": "/tmp/ers/out", - "RowLength": 0, - "RunDelay": -1., - "SourcePath": "/tmp/ers/in", - "Tenant": nil, - "Timezone": "", - "Type": "*file_csv", - "XmlRootPath": []interface{}{utils.EmptyString}, - "Fields": content, - "Opts": make(map[string]interface{}), + "cache_dump_fields": []interface{}{}, + "concurrent_requests": 1024, + "field_separator": ",", + "header_define_character": ":", + "filters": []string{}, + "flags": []string{"*dryrun"}, + "failed_calls_prefix": "", + "partial_cache_expiry_action": "", + "partial_record_cache": "0", + "id": "file_reader1", + "processed_path": "/tmp/ers/out", + "row_length": 0, + "run_delay": "-1", + "source_path": "/tmp/ers/in", + "tenant": "", + "timezone": "", + "type": "*file_csv", + "xml_root_path": []interface{}{utils.EmptyString}, + "fields": content, + "opts": make(map[string]interface{}), }, }, - "SessionSConns": []string{ + "sessions_conns": []string{ utils.MetaLocalHost, }, } @@ -974,6 +797,66 @@ func testCGRConfigReloadConfigFromJSONSessionS(t *testing.T) { } } +func testCGRConfigReloadConfigFromStringSessionS(t *testing.T) { + cfg, err := NewDefaultCGRConfig() + if err != nil { + t.Fatal(err) + } + cfg.RalsCfg().Enabled = true + cfg.ChargerSCfg().Enabled = true + cfg.CdrsCfg().Enabled = true + var reply string + if err = cfg.V1ReloadConfigFromString(&JSONStringReloadWithOpts{ + JSON: `{"sessions":{ + "enabled": true, + "resources_conns": ["*localhost"], + "routes_conns": ["*localhost"], + "attributes_conns": ["*localhost"], + "rals_conns": ["*internal"], + "cdrs_conns": ["*internal"], + "chargers_conns": ["*localhost"] + }}`}, &reply); err != nil { + t.Error(err) + } else if reply != utils.OK { + t.Errorf("Expected OK received: %s", reply) + } + expAttr := &SessionSCfg{ + Enabled: true, + ListenBijson: "127.0.0.1:2014", + ChargerSConns: []string{utils.MetaLocalHost}, + RALsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)}, + ResSConns: []string{utils.MetaLocalHost}, + ThreshSConns: []string{}, + StatSConns: []string{}, + RouteSConns: []string{utils.MetaLocalHost}, + AttrSConns: []string{utils.MetaLocalHost}, + CDRsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCDRs)}, + + ReplicationConns: []string{}, + SessionIndexes: utils.NewStringMap(), + ClientProtocol: 1, + TerminateAttempts: 5, + AlterableFields: utils.NewStringSet([]string{}), + STIRCfg: &STIRcfg{ + AllowedAttest: utils.NewStringSet([]string{utils.META_ANY}), + PayloadMaxduration: -1, + DefaultAttest: "A", + }, + SchedulerConns: []string{}, + } + if !reflect.DeepEqual(expAttr, cfg.SessionSCfg()) { + t.Errorf("Expected %s , received: %s ", utils.ToJSON(expAttr), utils.ToJSON(cfg.SessionSCfg())) + } + + var rcv string + expected := `{"alterable_fields":[],"attributes_conns":["*localhost"],"cdrs_conns":["*internal"],"channel_sync_interval":"0","chargers_conns":["*localhost"],"client_protocol":1,"debit_interval":"0","enabled":true,"listen_bijson":"127.0.0.1:2014","min_dur_low_balance":"0","rals_conns":["*internal"],"replication_conns":[],"resources_conns":["*localhost"],"routes_conns":["*localhost"],"scheduler_conns":[],"session_indexes":[],"session_ttl":"0","stats_conns":[],"stir":{"allowed_attest":["*any"],"default_attest":"A","payload_maxduration":"-1","privatekey_path":"","publickey_path":""},"store_session_costs":false,"terminate_attempts":5,"thresholds_conns":[]}` + if err := cfg.V1GetConfigSectionString(&SectionWithOpts{Section: SessionSJson}, &rcv); err != nil { + t.Error(err) + } else if expected != rcv { + t.Errorf("Expected: %+q, \n received: %+q", expected, rcv) + } +} + func testCGRConfigReloadAll(t *testing.T) { cfg, err := NewDefaultCGRConfig() if err != nil { @@ -1091,7 +974,11 @@ func testHttpHandlerConfigSForFolder(t *testing.T) { if err != nil { t.Error(err) } - str := utils.ToJSON(cfg.AsMapInterface(cfg.generalCfg.RSRSep)) + mp, err := cfg.AsMapInterface(cfg.generalCfg.RSRSep) + if err != nil { + t.Fatal(err) + } + str := utils.ToJSON(mp) // we compare the length of the string because flags is a map and we receive it in different order if len(str) != len(string(body)) { t.Errorf("Expected %s ,\n\n received: %s ", str, string(body)) diff --git a/config/config_test.go b/config/config_test.go index 6eab499bf..666c33cdd 100755 --- a/config/config_test.go +++ b/config/config_test.go @@ -311,61 +311,61 @@ func TestCgrCfgJSONDefaultsListen(t *testing.T) { func TestCgrCfgJSONDefaultsjsnDataDb(t *testing.T) { if cgrCfg.DataDbCfg().DataDbType != "redis" { - t.Errorf("Expecting: redis , recived: %+v", cgrCfg.DataDbCfg().DataDbType) + t.Errorf("Expecting: redis , received: %+v", cgrCfg.DataDbCfg().DataDbType) } if cgrCfg.DataDbCfg().DataDbHost != "127.0.0.1" { - t.Errorf("Expecting: 127.0.0.1 , recived: %+v", cgrCfg.DataDbCfg().DataDbHost) + t.Errorf("Expecting: 127.0.0.1 , received: %+v", cgrCfg.DataDbCfg().DataDbHost) } if cgrCfg.DataDbCfg().DataDbPort != "6379" { - t.Errorf("Expecting: 6379 , recived: %+v", cgrCfg.DataDbCfg().DataDbPort) + t.Errorf("Expecting: 6379 , received: %+v", cgrCfg.DataDbCfg().DataDbPort) } if cgrCfg.DataDbCfg().DataDbName != "10" { - t.Errorf("Expecting: 10 , recived: %+v", cgrCfg.DataDbCfg().DataDbName) + t.Errorf("Expecting: 10 , received: %+v", cgrCfg.DataDbCfg().DataDbName) } if cgrCfg.DataDbCfg().DataDbUser != "cgrates" { - t.Errorf("Expecting: cgrates , recived: %+v", cgrCfg.DataDbCfg().DataDbUser) + t.Errorf("Expecting: cgrates , received: %+v", cgrCfg.DataDbCfg().DataDbUser) } if cgrCfg.DataDbCfg().DataDbPass != "" { - t.Errorf("Expecting: , recived: %+v", cgrCfg.DataDbCfg().DataDbPass) + t.Errorf("Expecting: , received: %+v", cgrCfg.DataDbCfg().DataDbPass) } if len(cgrCfg.DataDbCfg().RmtConns) != 0 { - t.Errorf("Expecting: 0, recived: %+v", len(cgrCfg.DataDbCfg().RmtConns)) + t.Errorf("Expecting: 0, received: %+v", len(cgrCfg.DataDbCfg().RmtConns)) } if len(cgrCfg.DataDbCfg().RplConns) != 0 { - t.Errorf("Expecting: 0, recived: %+v", len(cgrCfg.DataDbCfg().RplConns)) + t.Errorf("Expecting: 0, received: %+v", len(cgrCfg.DataDbCfg().RplConns)) } } func TestCgrCfgJSONDefaultsStorDB(t *testing.T) { if cgrCfg.StorDbCfg().Type != "mysql" { - t.Errorf("Expecting: mysql , recived: %+v", cgrCfg.StorDbCfg().Type) + t.Errorf("Expecting: mysql , received: %+v", cgrCfg.StorDbCfg().Type) } if cgrCfg.StorDbCfg().Host != "127.0.0.1" { - t.Errorf("Expecting: 127.0.0.1 , recived: %+v", cgrCfg.StorDbCfg().Host) + t.Errorf("Expecting: 127.0.0.1 , received: %+v", cgrCfg.StorDbCfg().Host) } if cgrCfg.StorDbCfg().Port != "3306" { - t.Errorf("Expecting: 3306 , recived: %+v", cgrCfg.StorDbCfg().Port) + t.Errorf("Expecting: 3306 , received: %+v", cgrCfg.StorDbCfg().Port) } if cgrCfg.StorDbCfg().Name != "cgrates" { - t.Errorf("Expecting: cgrates , recived: %+v", cgrCfg.StorDbCfg().Name) + t.Errorf("Expecting: cgrates , received: %+v", cgrCfg.StorDbCfg().Name) } if cgrCfg.StorDbCfg().User != "cgrates" { - t.Errorf("Expecting: cgrates , recived: %+v", cgrCfg.StorDbCfg().User) + t.Errorf("Expecting: cgrates , received: %+v", cgrCfg.StorDbCfg().User) } if cgrCfg.StorDbCfg().Password != "" { - t.Errorf("Expecting: , recived: %+v", cgrCfg.StorDbCfg().Password) + t.Errorf("Expecting: , received: %+v", cgrCfg.StorDbCfg().Password) } if cgrCfg.StorDbCfg().Opts[utils.MaxOpenConnsCfg] != 100. { - t.Errorf("Expecting: 100 , recived: %+v", cgrCfg.StorDbCfg().Opts[utils.MaxOpenConnsCfg]) + t.Errorf("Expecting: 100 , received: %+v", cgrCfg.StorDbCfg().Opts[utils.MaxOpenConnsCfg]) } if cgrCfg.StorDbCfg().Opts[utils.MaxIdleConnsCfg] != 10. { - t.Errorf("Expecting: 10 , recived: %+v", cgrCfg.StorDbCfg().Opts[utils.MaxIdleConnsCfg]) + t.Errorf("Expecting: 10 , received: %+v", cgrCfg.StorDbCfg().Opts[utils.MaxIdleConnsCfg]) } if !reflect.DeepEqual(cgrCfg.StorDbCfg().StringIndexedFields, []string{}) { - t.Errorf("Expecting: %+v , recived: %+v", []string{}, cgrCfg.StorDbCfg().StringIndexedFields) + t.Errorf("Expecting: %+v , received: %+v", []string{}, cgrCfg.StorDbCfg().StringIndexedFields) } if !reflect.DeepEqual(cgrCfg.StorDbCfg().PrefixIndexedFields, []string{}) { - t.Errorf("Expecting: %+v , recived: %+v", []string{}, cgrCfg.StorDbCfg().PrefixIndexedFields) + t.Errorf("Expecting: %+v , received: %+v", []string{}, cgrCfg.StorDbCfg().PrefixIndexedFields) } } @@ -1938,12 +1938,12 @@ func TestCgrCfgV1GetConfigSection(t *testing.T) { } }` expected := map[string]interface{}{ - "HTTPListen": ":2080", - "HTTPTLSListen": "127.0.0.1:2280", - "RPCGOBListen": ":2013", - "RPCGOBTLSListen": "127.0.0.1:2023", - "RPCJSONListen": ":2012", - "RPCJSONTLSListen": "127.0.0.1:2022", + "http": ":2080", + "http_tls": "127.0.0.1:2280", + "rpc_gob": ":2013", + "rpc_gob_tls": "127.0.0.1:2023", + "rpc_json": ":2012", + "rpc_json_tls": "127.0.0.1:2022", } var rcv map[string]interface{} if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(jsnCfg); err != nil { @@ -1951,7 +1951,7 @@ func TestCgrCfgV1GetConfigSection(t *testing.T) { } else if err := cgrCfg.V1GetConfigSection(&SectionWithOpts{Section: LISTEN_JSN}, &rcv); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, rcv) { - t.Errorf("Expected: %+v, received: %+v", expected, rcv) + t.Errorf("Expected: %+v, received: %+v", utils.ToJSON(expected), utils.ToJSON(rcv)) } } diff --git a/config/configs.go b/config/configs.go index 4319707b4..1cfdd518d 100644 --- a/config/configs.go +++ b/config/configs.go @@ -84,8 +84,14 @@ func handleConfigSFolder(path string, w http.ResponseWriter) { fmt.Fprintf(w, err.Error()) return } + mp, err := cfg.AsMapInterface(cfg.generalCfg.RSRSep) + if err != nil { + w.WriteHeader(500) + fmt.Fprintf(w, err.Error()) + return + } // convert the config into a json and send it - if _, err := w.Write([]byte(utils.ToJSON(cfg.AsMapInterface(cfg.generalCfg.RSRSep)))); err != nil { + if _, err := w.Write([]byte(utils.ToJSON(mp))); err != nil { utils.Logger.Warning(fmt.Sprintf("<%s> Failed to write resonse because: %s", utils.ConfigSv1, err)) } diff --git a/config/datadbcfg_test.go b/config/datadbcfg_test.go index a7e2d7abb..b52a076ed 100644 --- a/config/datadbcfg_test.go +++ b/config/datadbcfg_test.go @@ -158,7 +158,7 @@ func TestDataDbCfgloadFromJsonCfgPort(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v , recived: %+v", expected, dbcfg) + t.Errorf("Expected: %+v , received: %+v", expected, dbcfg) } cfgJSONStr = `{ "data_db": { @@ -178,7 +178,7 @@ func TestDataDbCfgloadFromJsonCfgPort(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v , recived: %+v", expected, dbcfg) + t.Errorf("Expected: %+v , received: %+v", expected, dbcfg) } cfgJSONStr = `{ "data_db": { @@ -198,7 +198,7 @@ func TestDataDbCfgloadFromJsonCfgPort(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v , recived: %+v", expected, dbcfg) + t.Errorf("Expected: %+v , received: %+v", expected, dbcfg) } } @@ -239,7 +239,7 @@ func TestDataDBRemoteReplication(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) + t.Errorf("Expected: %+v ,\n received: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) } cfgJSONStr = `{ @@ -270,7 +270,7 @@ func TestDataDBRemoteReplication(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) + t.Errorf("Expected: %+v ,\n received: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) } cfgJSONStr = `{ @@ -301,7 +301,7 @@ func TestDataDBRemoteReplication(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) + t.Errorf("Expected: %+v ,\n received: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) } } @@ -359,7 +359,7 @@ func TestDataDbCfgloadFromJsonCfgItems(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) + t.Errorf("Expected: %+v ,\n received: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) } cfgJSONStr = `{ @@ -417,7 +417,7 @@ func TestDataDbCfgloadFromJsonCfgItems(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) + t.Errorf("Expected: %+v ,\n received: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) } cfgJSONStr = `{ @@ -467,7 +467,7 @@ func TestDataDbCfgloadFromJsonCfgItems(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) + t.Errorf("Expected: %+v ,\n received: %+v", utils.ToJSON(expected), utils.ToJSON(dbcfg)) } } diff --git a/config/dnsagentcfg_test.go b/config/dnsagentcfg_test.go index e7adb08a9..991bae848 100644 --- a/config/dnsagentcfg_test.go +++ b/config/dnsagentcfg_test.go @@ -81,12 +81,12 @@ func TestRequestProcessorloadFromJsonCfg(t *testing.T) { if err := dareq.loadFromJsonCfg(nil, utils.INFIELD_SEP); err != nil { t.Error(err) } else if !reflect.DeepEqual(dareq, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, dareq) + t.Errorf("Expected: %+v ,received: %+v", expected, dareq) } if err := dareq.loadFromJsonCfg(new(ReqProcessorJsnCfg), utils.INFIELD_SEP); err != nil { t.Error(err) } else if !reflect.DeepEqual(dareq, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, dareq) + t.Errorf("Expected: %+v ,received: %+v", expected, dareq) } json := &ReqProcessorJsnCfg{ ID: utils.StringPointer("cgrates"), @@ -103,7 +103,7 @@ func TestRequestProcessorloadFromJsonCfg(t *testing.T) { if err = dareq.loadFromJsonCfg(json, utils.INFIELD_SEP); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dareq) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(dareq)) + t.Errorf("Expected: %+v , received: %+v", utils.ToJSON(expected), utils.ToJSON(dareq)) } } diff --git a/config/eescfg.go b/config/eescfg.go index 8397ca48d..a78952163 100644 --- a/config/eescfg.go +++ b/config/eescfg.go @@ -328,15 +328,11 @@ func (eeC *EventExporterCfg) AsMapInterface(separator string) (initialMP map[str if flags := eeC.Flags.SliceFlags(); len(flags) != 0 { initialMP[utils.FlagsCfg] = flags } - if eeC.Tenant != nil { - var tenant string - values := make([]string, len(eeC.Tenant)) - for i, item := range eeC.Tenant { - values[i] = item.Rules - } - tenant = strings.Join(values, separator) - initialMP[utils.TenantCfg] = tenant + values := make([]string, len(eeC.Tenant)) + for i, item := range eeC.Tenant { + values[i] = item.Rules } + initialMP[utils.TenantCfg] = strings.Join(values, separator) if eeC.Fields != nil { fields := make([]map[string]interface{}, 0, len(eeC.Fields)) diff --git a/config/eescfg_test.go b/config/eescfg_test.go index 12f00ac96..f378b1c3b 100644 --- a/config/eescfg_test.go +++ b/config/eescfg_test.go @@ -376,7 +376,7 @@ func TestEventExporterSameID(t *testing.T) { if cfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) } else if !reflect.DeepEqual(expectedEEsCfg, cfg.eesCfg) { - t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(expectedEEsCfg), utils.ToJSON(cfg.eesCfg)) + t.Errorf("Expected: %+v ,\n received: %+v", utils.ToJSON(expectedEEsCfg), utils.ToJSON(cfg.eesCfg)) } } diff --git a/config/erscfg.go b/config/erscfg.go index 80e777777..cc61bdba4 100644 --- a/config/erscfg.go +++ b/config/erscfg.go @@ -286,12 +286,19 @@ func (er *EventReaderCfg) AsMapInterface(separator string) (initialMP map[string utils.SourcePathCfg: er.SourcePath, utils.ProcessedPathCfg: er.ProcessedPath, utils.TimezoneCfg: er.Timezone, - utils.FiltersCfg: er.Filters, - utils.FlagsCfg: er.Flags.SliceFlags(), + utils.FiltersCfg: []string{}, + utils.FlagsCfg: []string{}, utils.FailedCallsPrefixCfg: er.FailedCallsPrefix, utils.PartialCacheExpiryActionCfg: er.PartialCacheExpiryAction, utils.OptsCfg: er.Opts, } + if flags := er.Flags.SliceFlags(); len(flags) != 0 { + initialMP[utils.FlagsCfg] = flags + } + if len(er.Filters) != 0 { + initialMP[utils.FiltersCfg] = er.Filters + } + if er.XmlRootPath != nil { xmlRootPath := make([]string, len(er.XmlRootPath)) for i, item := range er.XmlRootPath { diff --git a/config/erscfg_test.go b/config/erscfg_test.go index d83350402..e63e1a7d6 100644 --- a/config/erscfg_test.go +++ b/config/erscfg_test.go @@ -329,7 +329,7 @@ func TestERSLoadFromjsonCfg(t *testing.T) { if cfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) } else if !reflect.DeepEqual(expectedERsCfg, cfg.ersCfg) { - t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(expectedERsCfg), utils.ToJSON(cfg.ersCfg)) + t.Errorf("Expected: %+v ,\n received: %+v", utils.ToJSON(expectedERsCfg), utils.ToJSON(cfg.ersCfg)) } } @@ -803,7 +803,7 @@ func TestEventReaderSameID(t *testing.T) { if cfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) } else if !reflect.DeepEqual(expectedERsCfg, cfg.ersCfg) { - t.Errorf("Expected: %+v ,\n recived: %+v", utils.ToJSON(expectedERsCfg), utils.ToJSON(cfg.ersCfg)) + t.Errorf("Expected: %+v ,\n received: %+v", utils.ToJSON(expectedERsCfg), utils.ToJSON(cfg.ersCfg)) } } @@ -826,14 +826,13 @@ func TestERsCfgAsMapInterfaceCase1(t *testing.T) { ], } }` - var filters []string eMap := map[string]interface{}{ utils.EnabledCfg: true, utils.SessionSConnsCfg: []string{"conn1", "conn3"}, utils.ReadersCfg: []map[string]interface{}{ { utils.FiltersCfg: []string{}, - utils.FlagsCfg: filters, + utils.FlagsCfg: []string{}, utils.IdCfg: "*default", utils.PartialRecordCacheCfg: "0", utils.ProcessedPathCfg: "/var/spool/cgrates/ers/out", @@ -848,7 +847,7 @@ func TestERsCfgAsMapInterfaceCase1(t *testing.T) { utils.ConcurrentRequestsCfg: 1024, utils.TypeCfg: "*none", utils.FailedCallsPrefixCfg: "", - utils.FieldSeparatorCfg: ",", + utils.FieldSepCfg: ",", utils.HeaderDefCharCfg: ":", utils.FieldsCfg: []map[string]interface{}{ {utils.MandatoryCfg: true, utils.PathCfg: "*cgreq.ToR", utils.TagCfg: "ToR", utils.TypeCfg: "*variable", utils.ValueCfg: "~*req.2"}, @@ -870,7 +869,7 @@ func TestERsCfgAsMapInterfaceCase1(t *testing.T) { utils.ConcurrentRequestsCfg: 1024, utils.TypeCfg: "*file_csv", utils.FailedCallsPrefixCfg: "", - utils.FieldSeparatorCfg: ",", + utils.FieldSepCfg: ",", utils.HeaderDefCharCfg: ":", utils.FieldsCfg: []map[string]interface{}{ {utils.MandatoryCfg: true, utils.PathCfg: "*cgreq.ToR", utils.TagCfg: "ToR", utils.TypeCfg: "*variable", utils.ValueCfg: "~*req.2"}, @@ -885,8 +884,8 @@ func TestERsCfgAsMapInterfaceCase1(t *testing.T) { {utils.MandatoryCfg: true, utils.PathCfg: "*cgreq.AnswerTime", utils.TagCfg: "AnswerTime", utils.TypeCfg: "*variable", utils.ValueCfg: "~*req.12"}, {utils.MandatoryCfg: true, utils.PathCfg: "*cgreq.Usage", utils.TagCfg: "Usage", utils.TypeCfg: "*variable", utils.ValueCfg: "~*req.13"}, }, - utils.FiltersCfg: filters, - utils.FlagsCfg: filters, + utils.FiltersCfg: []string{}, + utils.FlagsCfg: []string{}, utils.IDCfg: "file_reader1", utils.PartialRecordCacheCfg: "0", utils.ProcessedPathCfg: "/tmp/ers/out", @@ -904,7 +903,7 @@ func TestERsCfgAsMapInterfaceCase1(t *testing.T) { if cfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) } else if rcv := cfg.ersCfg.AsMapInterface(utils.EmptyString); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + t.Errorf("\nExpected: %+v\nReceived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) } } @@ -929,14 +928,13 @@ func TestERSCfgAsMapInterfaceCase2(t *testing.T) { ], } }` - var filters []string eMap := map[string]interface{}{ utils.EnabledCfg: true, utils.SessionSConnsCfg: []string{"conn1", "conn3"}, utils.ReadersCfg: []map[string]interface{}{ { utils.FiltersCfg: []string{}, - utils.FlagsCfg: filters, + utils.FlagsCfg: []string{}, utils.IdCfg: "*default", utils.PartialRecordCacheCfg: "0", utils.ProcessedPathCfg: "/var/spool/cgrates/ers/out", @@ -951,7 +949,7 @@ func TestERSCfgAsMapInterfaceCase2(t *testing.T) { utils.ConcurrentRequestsCfg: 1024, utils.TypeCfg: "*none", utils.FailedCallsPrefixCfg: "", - utils.FieldSeparatorCfg: ",", + utils.FieldSepCfg: ",", utils.HeaderDefCharCfg: ":", utils.FieldsCfg: []map[string]interface{}{ {utils.MandatoryCfg: true, utils.PathCfg: "*cgreq.ToR", utils.TagCfg: "ToR", utils.TypeCfg: "*variable", utils.ValueCfg: "~*req.2"}, @@ -975,7 +973,7 @@ func TestERSCfgAsMapInterfaceCase2(t *testing.T) { utils.ConcurrentRequestsCfg: 1024, utils.TypeCfg: "*file_csv", utils.FailedCallsPrefixCfg: "", - utils.FieldSeparatorCfg: ",", + utils.FieldSepCfg: ",", utils.HeaderDefCharCfg: ":", utils.FieldsCfg: []map[string]interface{}{ {utils.MandatoryCfg: true, utils.PathCfg: "*cgreq.ToR", utils.TagCfg: "ToR", utils.TypeCfg: "*variable", utils.ValueCfg: "~*req.2"}, @@ -990,8 +988,8 @@ func TestERSCfgAsMapInterfaceCase2(t *testing.T) { {utils.MandatoryCfg: true, utils.PathCfg: "*cgreq.AnswerTime", utils.TagCfg: "AnswerTime", utils.TypeCfg: "*variable", utils.ValueCfg: "~*req.12"}, {utils.MandatoryCfg: true, utils.PathCfg: "*cgreq.Usage", utils.TagCfg: "Usage", utils.TypeCfg: "*variable", utils.ValueCfg: "~*req.13"}, }, - utils.FiltersCfg: filters, - utils.FlagsCfg: filters, + utils.FiltersCfg: []string{}, + utils.FlagsCfg: []string{}, utils.IDCfg: "file_reader1", utils.ProcessedPathCfg: "/tmp/ers/out", utils.RowLengthCfg: 0, @@ -1009,7 +1007,7 @@ func TestERSCfgAsMapInterfaceCase2(t *testing.T) { if cfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) } else if rcv := cfg.ersCfg.AsMapInterface(utils.EmptyString); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + t.Errorf("\nExpected: %+v\nReceived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) } } diff --git a/config/httpagntcfg.go b/config/httpagntcfg.go index 5d442654d..5a9654249 100644 --- a/config/httpagntcfg.go +++ b/config/httpagntcfg.go @@ -51,9 +51,9 @@ func (hcfgs *HttpAgentCfgs) loadFromJsonCfg(jsnHttpAgntCfg *[]*HttpAgentJsonCfg, return nil } -func (hcfgs *HttpAgentCfgs) AsMapInterface(separator string) (mp []map[string]interface{}) { - mp = make([]map[string]interface{}, len(*hcfgs)) - for i, item := range *hcfgs { +func (hcfgs HttpAgentCfgs) AsMapInterface(separator string) (mp []map[string]interface{}) { + mp = make([]map[string]interface{}, len(hcfgs)) + for i, item := range hcfgs { mp[i] = item.AsMapInterface(separator) } return diff --git a/config/httpagntcfg_test.go b/config/httpagntcfg_test.go index 706879344..5693eb819 100644 --- a/config/httpagntcfg_test.go +++ b/config/httpagntcfg_test.go @@ -266,7 +266,7 @@ func TestHttpAgentCfgloadFromJsonCfgCase3(t *testing.T) { if err = httpcfg.loadFromJsonCfg(jsnhttpCfg, utils.INFIELD_SEP); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, httpcfg) { - t.Errorf("Expected: %+v \n, recived: %+v", utils.ToJSON(expected), utils.ToJSON(httpcfg)) + t.Errorf("Expected: %+v \n, received: %+v", utils.ToJSON(expected), utils.ToJSON(httpcfg)) } } @@ -493,7 +493,7 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) { if err = initial.appendHttpAgntProcCfgs(proceses, utils.INFIELD_SEP); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, initial) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(initial)) + t.Errorf("Expected: %+v , received: %+v", utils.ToJSON(expected), utils.ToJSON(initial)) } } diff --git a/config/kamagentcfg_test.go b/config/kamagentcfg_test.go index e9c3466cf..aa948bbab 100644 --- a/config/kamagentcfg_test.go +++ b/config/kamagentcfg_test.go @@ -59,12 +59,12 @@ func TestKamConnCfgloadFromJsonCfg(t *testing.T) { if err := kamcocfg.loadFromJsonCfg(nil); err != nil { t.Error(err) } else if !reflect.DeepEqual(kamcocfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, kamcocfg) + t.Errorf("Expected: %+v ,received: %+v", expected, kamcocfg) } if err := kamcocfg.loadFromJsonCfg(new(KamConnJsonCfg)); err != nil { t.Error(err) } else if !reflect.DeepEqual(kamcocfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, kamcocfg) + t.Errorf("Expected: %+v ,received: %+v", expected, kamcocfg) } json := &KamConnJsonCfg{ Address: utils.StringPointer("127.0.0.1:8448"), @@ -77,7 +77,7 @@ func TestKamConnCfgloadFromJsonCfg(t *testing.T) { if err = kamcocfg.loadFromJsonCfg(json); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, kamcocfg) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(kamcocfg)) + t.Errorf("Expected: %+v , received: %+v", utils.ToJSON(expected), utils.ToJSON(kamcocfg)) } } diff --git a/config/loadercgrcfg.go b/config/loadercgrcfg.go index f7d066bbd..b8c359599 100644 --- a/config/loadercgrcfg.go +++ b/config/loadercgrcfg.go @@ -88,7 +88,7 @@ func (ld *LoaderCgrCfg) AsMapInterface() (initialMP map[string]interface{}) { utils.TpIDCfg: ld.TpID, utils.DataPathCfg: ld.DataPath, utils.DisableReverseCfg: ld.DisableReverse, - utils.FieldSeparatorCfg: string(ld.FieldSeparator), + utils.FieldSepCfg: string(ld.FieldSeparator), utils.CachesConnsCfg: ld.CachesConns, utils.SchedulerConnsCfg: ld.SchedulerConns, } diff --git a/config/loadercgrcfg_test.go b/config/loadercgrcfg_test.go index bb15a7595..fdf923548 100644 --- a/config/loadercgrcfg_test.go +++ b/config/loadercgrcfg_test.go @@ -72,7 +72,7 @@ func TestLoaderCgrCfgAsMapInterface(t *testing.T) { utils.TpIDCfg: "", utils.DataPathCfg: "./", utils.DisableReverseCfg: false, - utils.FieldSeparatorCfg: ",", + utils.FieldSepCfg: ",", utils.CachesConnsCfg: []string{"*localhost"}, utils.SchedulerConnsCfg: []string{"*localhost"}, utils.GapiCredentialsCfg: json.RawMessage(`".gapi/credentials.json"`), diff --git a/config/loaderscfg.go b/config/loaderscfg.go index e9f39f858..7721183a1 100644 --- a/config/loaderscfg.go +++ b/config/loaderscfg.go @@ -211,21 +211,19 @@ func (lData *LoaderDataType) AsMapInterface(separator string) (initialMP map[str func (l *LoaderSCfg) AsMapInterface(separator string) (initialMP map[string]interface{}) { initialMP = map[string]interface{}{ - utils.IdCfg: l.Id, - utils.EnabledCfg: l.Enabled, - utils.DryRunCfg: l.DryRun, - utils.LockFileNameCfg: l.LockFileName, - utils.FieldSeparatorCfg: l.FieldSeparator, - utils.TpInDirCfg: l.TpInDir, - utils.TpOutDirCfg: l.TpOutDir, + utils.IdCfg: l.Id, + utils.EnabledCfg: l.Enabled, + utils.DryRunCfg: l.DryRun, + utils.LockFileNameCfg: l.LockFileName, + utils.FieldSepCfg: l.FieldSeparator, + utils.TpInDirCfg: l.TpInDir, + utils.TpOutDirCfg: l.TpOutDir, } - if l.Tenant != nil { - tenant := make([]string, len(l.Tenant)) - for i, item := range l.Tenant { - tenant[i] = item.Rules - } - initialMP[utils.TenantCfg] = strings.Join(tenant, utils.EmptyString) + tenant := make([]string, len(l.Tenant)) + for i, item := range l.Tenant { + tenant[i] = item.Rules } + initialMP[utils.TenantCfg] = strings.Join(tenant, utils.EmptyString) if l.Data != nil { data := make([]map[string]interface{}, len(l.Data)) for i, item := range l.Data { diff --git a/config/loaderscfg_test.go b/config/loaderscfg_test.go index e438ee05e..d312bbc9a 100644 --- a/config/loaderscfg_test.go +++ b/config/loaderscfg_test.go @@ -271,16 +271,16 @@ func TestLoaderCfgAsMapInterfaceCase1(t *testing.T) { }` eMap := []map[string]interface{}{ { - utils.IdCfg: "*default", - utils.EnabledCfg: false, - utils.TenantCfg: "~*req.Destination1", - utils.DryRunCfg: false, - utils.RunDelayCfg: "0", - utils.LockFileNameCfg: ".cgr.lck", - utils.CachesConnsCfg: []string{utils.MetaInternal}, - utils.FieldSeparatorCfg: ",", - utils.TpInDirCfg: "/var/spool/cgrates/loader/in", - utils.TpOutDirCfg: "/var/spool/cgrates/loader/out", + utils.IdCfg: "*default", + utils.EnabledCfg: false, + utils.TenantCfg: "~*req.Destination1", + utils.DryRunCfg: false, + utils.RunDelayCfg: "0", + utils.LockFileNameCfg: ".cgr.lck", + utils.CachesConnsCfg: []string{utils.MetaInternal}, + utils.FieldSepCfg: ",", + utils.TpInDirCfg: "/var/spool/cgrates/loader/in", + utils.TpOutDirCfg: "/var/spool/cgrates/loader/out", utils.DataCfg: []map[string]interface{}{ { utils.TypeCfg: "*attributes", @@ -355,16 +355,16 @@ func TestLoaderCfgAsMapInterfaceCase2(t *testing.T) { }` eMap := []map[string]interface{}{ { - utils.IdCfg: "*default", - utils.EnabledCfg: false, - utils.TenantCfg: "~*req.Destination1", - utils.DryRunCfg: false, - utils.RunDelayCfg: "0", - utils.LockFileNameCfg: ".cgr.lck", - utils.CachesConnsCfg: []string{"*conn1"}, - utils.FieldSeparatorCfg: ",", - utils.TpInDirCfg: "/var/spool/cgrates/loader/in", - utils.TpOutDirCfg: "/var/spool/cgrates/loader/out", + utils.IdCfg: "*default", + utils.EnabledCfg: false, + utils.TenantCfg: "~*req.Destination1", + utils.DryRunCfg: false, + utils.RunDelayCfg: "0", + utils.LockFileNameCfg: ".cgr.lck", + utils.CachesConnsCfg: []string{"*conn1"}, + utils.FieldSepCfg: ",", + utils.TpInDirCfg: "/var/spool/cgrates/loader/in", + utils.TpOutDirCfg: "/var/spool/cgrates/loader/out", utils.DataCfg: []map[string]interface{}{ { utils.TypeCfg: "*attributes", diff --git a/config/multifiles_it_test.go b/config/multifiles_it_test.go index 17472872a..98a37930d 100644 --- a/config/multifiles_it_test.go +++ b/config/multifiles_it_test.go @@ -80,15 +80,15 @@ func TestMfEnvReaderITRead(t *testing.T) { ConcurrentStrategy: utils.MetaBusy, } if !reflect.DeepEqual(expected, *mfCgrCfg.generalCfg) { - t.Errorf("Expected: %+v\n, recived: %+v", utils.ToJSON(expected), utils.ToJSON(*mfCgrCfg.generalCfg)) + t.Errorf("Expected: %+v\n, received: %+v", utils.ToJSON(expected), utils.ToJSON(*mfCgrCfg.generalCfg)) } } func TestMfHttpAgentMultipleFields(t *testing.T) { if len(mfCgrCfg.HttpAgentCfg()) != 2 { - t.Errorf("Expected: 2, recived: %+v", len(mfCgrCfg.HttpAgentCfg())) + t.Errorf("Expected: 2, received: %+v", len(mfCgrCfg.HttpAgentCfg())) } - expected := []*HttpAgentCfg{ + expected := HttpAgentCfgs{ { ID: "conecto1", Url: "/newConecto", @@ -197,6 +197,6 @@ func TestMfHttpAgentMultipleFields(t *testing.T) { } if !reflect.DeepEqual(mfCgrCfg.HttpAgentCfg(), expected) { - t.Errorf("Expected: %+v\n, recived: %+v", utils.ToJSON(expected), utils.ToJSON(mfCgrCfg.HttpAgentCfg())) + t.Errorf("Expected: %+v\n, received: %+v", utils.ToJSON(expected), utils.ToJSON(mfCgrCfg.HttpAgentCfg())) } } diff --git a/config/rjreader_test.go b/config/rjreader_test.go index 19242b04e..9ee1d4d69 100644 --- a/config/rjreader_test.go +++ b/config/rjreader_test.go @@ -59,7 +59,7 @@ func TestEnvRawJsonReadByte(t *testing.T) { rply = append(rply, bit) } if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expected: %+v\n, recived: %+v", string(expected), string(rply)) + t.Errorf("Expected: %+v\n, received: %+v", string(expected), string(rply)) } } @@ -80,7 +80,7 @@ a/*comment*/b`)) if rply, err := raw.ReadByte(); err != nil { t.Error(err) } else if rply != expected { - t.Errorf("Expected: %+v\n, recived: %+v", string(expected), string(rply)) + t.Errorf("Expected: %+v\n, received: %+v", string(expected), string(rply)) } expected = (byte)('b') if r, err := raw.consumeComent('*'); err != nil { @@ -91,7 +91,7 @@ a/*comment*/b`)) if rply, err := raw.ReadByte(); err != nil { t.Error(err) } else if rply != expected { - t.Errorf("Expected: %+v\n, recived: %+v", string(expected), string(rply)) + t.Errorf("Expected: %+v\n, received: %+v", string(expected), string(rply)) } } @@ -103,12 +103,12 @@ func TestEnvRawJsonReadByteWC(t *testing.T) { if rply, err := raw.ReadByteWC(); err != nil { t.Error(err) } else if rply != expected { - t.Errorf("Expected: %+v\n, recived: %+v", string(expected), string(rply)) + t.Errorf("Expected: %+v\n, received: %+v", string(expected), string(rply)) } if rply, err := raw.ReadByteWC(); err != nil { t.Error(err) } else if rply != expected { - t.Errorf("Expected: %+v\n, recived: %+v", string(expected), string(rply)) + t.Errorf("Expected: %+v\n, received: %+v", string(expected), string(rply)) } } @@ -120,23 +120,23 @@ func TestEnvRawJsonPeekByteWC(t *testing.T) { if rply, err := raw.PeekByteWC(); err != nil { t.Error(err) } else if rply != expected { - t.Errorf("Expected: %+v\n, recived: %+v", string(expected), string(rply)) + t.Errorf("Expected: %+v\n, received: %+v", string(expected), string(rply)) } if rply, err := raw.ReadByteWC(); err != nil { t.Error(err) } else if rply != expected { - t.Errorf("Expected: %+v\n, recived: %+v", string(expected), string(rply)) + t.Errorf("Expected: %+v\n, received: %+v", string(expected), string(rply)) } expected = (byte)('b') if rply, err := raw.PeekByteWC(); err != nil { t.Error(err) } else if rply != expected { - t.Errorf("Expected: %+v\n, recived: %+v", string(expected), string(rply)) + t.Errorf("Expected: %+v\n, received: %+v", string(expected), string(rply)) } if rply, err := raw.ReadByteWC(); err != nil { t.Error(err) } else if rply != expected { - t.Errorf("Expected: %+v\n, recived: %+v", string(expected), string(rply)) + t.Errorf("Expected: %+v\n, received: %+v", string(expected), string(rply)) } } @@ -148,7 +148,7 @@ func TestEnvRawJsonreadFirstNonWhiteSpace(t *testing.T) { if rply, err := raw.readFirstNonWhiteSpace(); err != nil { t.Error(err) } else if rply != expected { - t.Errorf("Expected: %+v\n, recived: %+v", string(expected), string(rply)) + t.Errorf("Expected: %+v\n, received: %+v", string(expected), string(rply)) } } @@ -171,7 +171,7 @@ func TestEnvReaderRead(t *testing.T) { } if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expected: %+v\n, recived: %+v", (string(expected)), (string(rply))) + t.Errorf("Expected: %+v\n, received: %+v", (string(expected)), (string(rply))) } } @@ -195,7 +195,7 @@ func TestEnvReaderRead2(t *testing.T) { } if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expected: %+q\n, recived: %+q", (string(expected)), (string(rply))) + t.Errorf("Expected: %+q\n, received: %+q", (string(expected)), (string(rply))) } } @@ -207,7 +207,7 @@ func TestEnvReaderreadEnvName(t *testing.T) { } else if endindx != 9 { t.Errorf("Wrong endindx returned %v", endindx) } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expected: %+v, recived: %+v", (string(expected)), (string(rply))) + t.Errorf("Expected: %+v, received: %+v", (string(expected)), (string(rply))) } expected = []byte("Var2_TEST") if rply, endindx, err := envR.readEnvName(12); err != nil { @@ -215,7 +215,7 @@ func TestEnvReaderreadEnvName(t *testing.T) { } else if endindx != 21 { t.Errorf("Wrong endindx returned %v", endindx) } else if !reflect.DeepEqual(expected, rply) { - t.Errorf("Expected: %+v, recived: %+v", (string(expected)), (string(rply))) + t.Errorf("Expected: %+v, received: %+v", (string(expected)), (string(rply))) } } @@ -241,14 +241,14 @@ func TestEnvReadercheckMeta(t *testing.T) { envR = NewRjReaderFromBytes([]byte("*enva:Var")) envR.indx = 1 if envR.checkMeta() { - t.Errorf("Expectiv to get false recived true") + t.Errorf("Expectiv to get false received true") } } func TestIsNewLine(t *testing.T) { for char, expected := range map[byte]bool{'a': false, '\n': true, ' ': false, '\t': false, '\r': true} { if rply := isNewLine(char); expected != rply { - t.Errorf("Expected: %+v, recived: %+v", expected, rply) + t.Errorf("Expected: %+v, received: %+v", expected, rply) } } } @@ -256,7 +256,7 @@ func TestIsNewLine(t *testing.T) { func TestIsWhiteSpace(t *testing.T) { for char, expected := range map[byte]bool{'a': false, '\n': true, ' ': true, '\t': true, '\r': true, 0: true, '1': false} { if rply := isWhiteSpace(char); expected != rply { - t.Errorf("Expected: %+v, recived: %+v", expected, rply) + t.Errorf("Expected: %+v, received: %+v", expected, rply) } } } @@ -264,21 +264,21 @@ func TestIsWhiteSpace(t *testing.T) { func TestReadEnv(t *testing.T) { key := "TESTVAR2" if _, err := ReadEnv(key); err == nil || err.Error() != utils.ErrEnvNotFound(key).Error() { - t.Errorf("Expected: %+v, recived: %+v", utils.ErrEnvNotFound(key), err) + t.Errorf("Expected: %+v, received: %+v", utils.ErrEnvNotFound(key), err) } expected := "cgRates" os.Setenv(key, expected) if rply, err := ReadEnv(key); err != nil { t.Error(err) } else if rply != expected { - t.Errorf("Expected: %+v, recived: %+v", expected, rply) + t.Errorf("Expected: %+v, received: %+v", expected, rply) } } func TestIsAlfanum(t *testing.T) { for char, expected := range map[byte]bool{'a': true, '\n': false, ' ': false, '\t': false, '\r': false, 0: false, '1': true, 'Q': true, '9': true} { if rply := isAlfanum(char); expected != rply { - t.Errorf("Expected: %+v, recived: %+v", expected, rply) + t.Errorf("Expected: %+v, received: %+v", expected, rply) } } } diff --git a/config/sessionscfg.go b/config/sessionscfg.go index 8b097779f..0fb255300 100644 --- a/config/sessionscfg.go +++ b/config/sessionscfg.go @@ -298,6 +298,7 @@ func (scfg *SessionSCfg) AsMapInterface() (initialMP map[string]interface{}) { utils.TerminateAttemptsCfg: scfg.TerminateAttempts, utils.AlterableFieldsCfg: scfg.AlterableFields.AsSlice(), utils.STIRCfg: scfg.STIRCfg.AsMapInterface(), + utils.MinDurLowBalanceCfg: "0", } if scfg.DebitInterval != 0 { initialMP[utils.DebitIntervalCfg] = scfg.DebitInterval.String() diff --git a/config/sessionscfg_test.go b/config/sessionscfg_test.go index e5fcf12bc..54da50e79 100644 --- a/config/sessionscfg_test.go +++ b/config/sessionscfg_test.go @@ -57,7 +57,7 @@ func TestFsAgentCfgloadFromJsonCfg1(t *testing.T) { if err := fsAgentCfg.loadFromJsonCfg(fsAgentJsnCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(eFsAgentConfig, fsAgentCfg) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(eFsAgentConfig), utils.ToJSON(fsAgentCfg)) + t.Errorf("Expected: %+v , received: %+v", utils.ToJSON(eFsAgentConfig), utils.ToJSON(fsAgentCfg)) } } @@ -329,6 +329,7 @@ func TestSessionSCfgAsMapInterfaceCase1(t *testing.T) { utils.ClientProtocolCfg: 1.0, utils.ChannelSyncIntervalCfg: "1s", utils.TerminateAttemptsCfg: 5, + utils.MinDurLowBalanceCfg: "0", utils.AlterableFieldsCfg: []string{}, utils.STIRCfg: map[string]interface{}{ utils.AllowedAtestCfg: []string{"*any"}, @@ -606,12 +607,12 @@ func TestFsConnCfgloadFromJsonCfg(t *testing.T) { if err := fscocfg.loadFromJsonCfg(nil); err != nil { t.Error(err) } else if !reflect.DeepEqual(fscocfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, fscocfg) + t.Errorf("Expected: %+v ,received: %+v", expected, fscocfg) } if err := fscocfg.loadFromJsonCfg(new(FsConnJsonCfg)); err != nil { t.Error(err) } else if !reflect.DeepEqual(fscocfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, fscocfg) + t.Errorf("Expected: %+v ,received: %+v", expected, fscocfg) } json := &FsConnJsonCfg{ Address: utils.StringPointer("127.0.0.1:8448"), @@ -628,7 +629,7 @@ func TestFsConnCfgloadFromJsonCfg(t *testing.T) { if err = fscocfg.loadFromJsonCfg(json); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, fscocfg) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(fscocfg)) + t.Errorf("Expected: %+v , received: %+v", utils.ToJSON(expected), utils.ToJSON(fscocfg)) } } @@ -637,12 +638,12 @@ func TestRemoteHostloadFromJsonCfg(t *testing.T) { if err := hpoolcfg.loadFromJsonCfg(nil); err != nil { t.Error(err) } else if !reflect.DeepEqual(hpoolcfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, hpoolcfg) + t.Errorf("Expected: %+v ,received: %+v", expected, hpoolcfg) } if err := hpoolcfg.loadFromJsonCfg(new(RemoteHostJson)); err != nil { t.Error(err) } else if !reflect.DeepEqual(hpoolcfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, hpoolcfg) + t.Errorf("Expected: %+v ,received: %+v", expected, hpoolcfg) } json := &RemoteHostJson{ Address: utils.StringPointer("127.0.0.1:8448"), @@ -655,7 +656,7 @@ func TestRemoteHostloadFromJsonCfg(t *testing.T) { if err = hpoolcfg.loadFromJsonCfg(json); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, hpoolcfg) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(hpoolcfg)) + t.Errorf("Expected: %+v , received: %+v", utils.ToJSON(expected), utils.ToJSON(hpoolcfg)) } } @@ -712,7 +713,7 @@ func TestAsteriskAgentCfgAsMapInterface(t *testing.T) { if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) } else if rcv := cgrCfg.asteriskAgentCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + t.Errorf("\nExpected: %+v\nReceived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) } } @@ -738,7 +739,7 @@ func TestAsteriskAgentCfgAsMapInterface1(t *testing.T) { if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) } else if rcv := cgrCfg.asteriskAgentCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + t.Errorf("\nExpected: %+v\nReceived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) } } @@ -747,12 +748,12 @@ func TestAsteriskConnCfgloadFromJsonCfg(t *testing.T) { if err := asconcfg.loadFromJsonCfg(nil); err != nil { t.Error(err) } else if !reflect.DeepEqual(asconcfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, asconcfg) + t.Errorf("Expected: %+v ,received: %+v", expected, asconcfg) } if err := asconcfg.loadFromJsonCfg(new(AstConnJsonCfg)); err != nil { t.Error(err) } else if !reflect.DeepEqual(asconcfg, expected) { - t.Errorf("Expected: %+v ,recived: %+v", expected, asconcfg) + t.Errorf("Expected: %+v ,received: %+v", expected, asconcfg) } json := &AstConnJsonCfg{ Address: utils.StringPointer("127.0.0.1:8088"), @@ -771,6 +772,6 @@ func TestAsteriskConnCfgloadFromJsonCfg(t *testing.T) { if err = asconcfg.loadFromJsonCfg(json); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, asconcfg) { - t.Errorf("Expected: %+v , recived: %+v", utils.ToJSON(expected), utils.ToJSON(asconcfg)) + t.Errorf("Expected: %+v , received: %+v", utils.ToJSON(expected), utils.ToJSON(asconcfg)) } } diff --git a/config/stordbcfg_test.go b/config/stordbcfg_test.go index ead96ca6d..14239d3ab 100644 --- a/config/stordbcfg_test.go +++ b/config/stordbcfg_test.go @@ -151,7 +151,7 @@ func TestStoreDbCfgloadFromJsonCfgPort(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v , recived: %+v", expected, dbcfg) + t.Errorf("Expected: %+v , received: %+v", expected, dbcfg) } cfgJSONStr = `{ "stor_db": { @@ -171,7 +171,7 @@ func TestStoreDbCfgloadFromJsonCfgPort(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v , recived: %+v", expected, dbcfg) + t.Errorf("Expected: %+v , received: %+v", expected, dbcfg) } cfgJSONStr = `{ "stor_db": { @@ -191,7 +191,7 @@ func TestStoreDbCfgloadFromJsonCfgPort(t *testing.T) { } else if err = dbcfg.loadFromJsonCfg(jsnDataDbCfg); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, dbcfg) { - t.Errorf("Expected: %+v , recived: %+v", expected, dbcfg) + t.Errorf("Expected: %+v , received: %+v", expected, dbcfg) } } diff --git a/dispatchers/attributes_it_test.go b/dispatchers/attributes_it_test.go index 966a5696b..381d2d2aa 100755 --- a/dispatchers/attributes_it_test.go +++ b/dispatchers/attributes_it_test.go @@ -122,7 +122,7 @@ func testDspAttrPingFailover(t *testing.T) { allEngine2.stopEngine(t) reply = "" if err := dispEngine.RPC.Call(utils.AttributeSv1Ping, &ev, &reply); err == nil { - t.Errorf("Expected error but recived %v and reply %v\n", err, reply) + t.Errorf("Expected error but received %v and reply %v\n", err, reply) } allEngine.startEngine(t) allEngine2.startEngine(t) @@ -160,7 +160,7 @@ func testDspAttrPingFailoverNotFoundHost(t *testing.T) { } allEngine2.stopEngine(t) // stop the engine and we expect to get error if err := dispEngine.RPC.Call(utils.AttributeSv1Ping, &ev, &reply); err == nil { - t.Errorf("Expected error but recived %v and reply %v\n", err, reply) + t.Errorf("Expected error but received %v and reply %v\n", err, reply) } allEngine2.startEngine(t) reply = "" @@ -202,7 +202,7 @@ func testDspAttrPingFailover2(t *testing.T) { allEngine2.stopEngine(t) reply = "" if err := dispEngine.RPC.Call(utils.AttributeSv1Ping, &ev, &reply); err == nil { - t.Errorf("Expected error but recived %v and reply %v\n", err, reply) + t.Errorf("Expected error but received %v and reply %v\n", err, reply) } allEngine.startEngine(t) allEngine2.startEngine(t) diff --git a/dispatchers/chargers_it_test.go b/dispatchers/chargers_it_test.go index 389f37938..0d8592d2f 100755 --- a/dispatchers/chargers_it_test.go +++ b/dispatchers/chargers_it_test.go @@ -95,7 +95,7 @@ func testDspCppPingFailover(t *testing.T) { } allEngine2.stopEngine(t) if err := dispEngine.RPC.Call(utils.ChargerSv1Ping, &ev, &reply); err == nil { - t.Errorf("Expected error but recived %v and reply %v\n", err, reply) + t.Errorf("Expected error but received %v and reply %v\n", err, reply) } allEngine.startEngine(t) allEngine2.startEngine(t) diff --git a/dispatchers/config_it_test.go b/dispatchers/config_it_test.go index 9514c7df3..24aca2a63 100644 --- a/dispatchers/config_it_test.go +++ b/dispatchers/config_it_test.go @@ -61,12 +61,12 @@ func TestDspConfigIT(t *testing.T) { func testDspConfigSv1GetJSONSection(t *testing.T) { expected := map[string]interface{}{ - "HTTPListen": ":6080", - "HTTPTLSListen": "127.0.0.1:2280", - "RPCGOBListen": ":6013", - "RPCGOBTLSListen": "127.0.0.1:2023", - "RPCJSONListen": ":6012", - "RPCJSONTLSListen": "127.0.0.1:2022", + "http": ":6080", + "http_tls": "127.0.0.1:2280", + "rpc_gob": ":6013", + "rpc_gob_tls": "127.0.0.1:2023", + "rpc_json": ":6012", + "rpc_json_tls": "127.0.0.1:2022", } var reply map[string]interface{} if err := dispEngine.RPC.Call(utils.ConfigSv1GetJSONSection, &config.SectionWithOpts{ @@ -78,6 +78,6 @@ func testDspConfigSv1GetJSONSection(t *testing.T) { }, &reply); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, reply) { - t.Errorf("Expected: %+v, received: %+v", expected, reply) + t.Errorf("Expected: %+v, received: %+v", utils.ToJSON(expected), utils.ToJSON(reply)) } } diff --git a/dispatchers/replicator_it_test.go b/dispatchers/replicator_it_test.go index 033ad6ed6..bb2617d8a 100644 --- a/dispatchers/replicator_it_test.go +++ b/dispatchers/replicator_it_test.go @@ -119,7 +119,7 @@ func testDspRplPingFailover(t *testing.T) { allEngine2.stopEngine(t) reply = utils.EmptyString if err := dispEngine.RPC.Call(utils.ReplicatorSv1Ping, &ev, &reply); err == nil { - t.Errorf("Expected error but recived %v and reply %v\n", err, reply) + t.Errorf("Expected error but received %v and reply %v\n", err, reply) } allEngine.startEngine(t) allEngine2.startEngine(t) diff --git a/dispatchers/resources_it_test.go b/dispatchers/resources_it_test.go index 3d725fbc3..37e400cd4 100755 --- a/dispatchers/resources_it_test.go +++ b/dispatchers/resources_it_test.go @@ -92,7 +92,7 @@ func testDspResPingFailover(t *testing.T) { } allEngine2.stopEngine(t) if err := dispEngine.RPC.Call(utils.ResourceSv1Ping, &ev, &reply); err == nil { - t.Errorf("Expected error but recived %v and reply %v\n", err, reply) + t.Errorf("Expected error but received %v and reply %v\n", err, reply) } allEngine.startEngine(t) allEngine2.startEngine(t) diff --git a/dispatchers/routes_it_test.go b/dispatchers/routes_it_test.go index 8f4c8ce7b..43aba5868 100755 --- a/dispatchers/routes_it_test.go +++ b/dispatchers/routes_it_test.go @@ -117,7 +117,7 @@ func testDspSupPingFailover(t *testing.T) { } allEngine2.stopEngine(t) if err := dispEngine.RPC.Call(utils.RouteSv1Ping, &ev, &reply); err == nil { - t.Errorf("Expected error but recived %v and reply %v\n", err, reply) + t.Errorf("Expected error but received %v and reply %v\n", err, reply) } allEngine.startEngine(t) allEngine2.startEngine(t) diff --git a/dispatchers/sessions_it_test.go b/dispatchers/sessions_it_test.go index efd6d50b8..e9d7ecb72 100755 --- a/dispatchers/sessions_it_test.go +++ b/dispatchers/sessions_it_test.go @@ -180,7 +180,7 @@ func testDspSessionPingFailover(t *testing.T) { } allEngine2.stopEngine(t) if err := dispEngine.RPC.Call(utils.SessionSv1Ping, &ev, &reply); err == nil { - t.Errorf("Expected error but recived %v and reply %v\n", err, reply) + t.Errorf("Expected error but received %v and reply %v\n", err, reply) } allEngine.startEngine(t) allEngine2.startEngine(t) @@ -330,7 +330,7 @@ func testDspGetSessions(t *testing.T) { &filtr, &reply); err != nil { t.Fatal(err) } else if reply != 3 { - t.Errorf("Expected 3 active sessions recived %v", reply) + t.Errorf("Expected 3 active sessions received %v", reply) } var rply []*sessions.ExternalSession if err := dispEngine.RPC.Call(utils.SessionSv1GetActiveSessions, @@ -344,12 +344,12 @@ func testDspGetSessions(t *testing.T) { &filtr, &reply); err != nil { t.Fatal(err) } else if reply != 0 { - t.Errorf("Expected no pasive sessions recived %v", reply) + t.Errorf("Expected no pasive sessions received %v", reply) } rply = nil if err := dispEngine.RPC.Call(utils.SessionSv1GetPassiveSessions, &filtr, &rply); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Fatalf("Expected %v recived %v with reply %s", utils.ErrNotFound, err, utils.ToJSON(rply)) + t.Fatalf("Expected %v received %v with reply %s", utils.ErrNotFound, err, utils.ToJSON(rply)) } } @@ -780,7 +780,7 @@ func testDspSessionReplicate(t *testing.T) { new(utils.SessionFilter), &repl); err != nil { t.Fatal(err) } else if repl != 3 { - t.Errorf("Expected 3 sessions recived %v", repl) + t.Errorf("Expected 3 sessions received %v", repl) } } @@ -800,13 +800,13 @@ func testDspSessionPassive(t *testing.T) { filtr, &repl); err != nil { t.Fatal(err) } else if repl != 0 { - t.Errorf("Expected no passive sessions recived %v", repl) + t.Errorf("Expected no passive sessions received %v", repl) } if err := dispEngine.RPC.Call(utils.SessionSv1GetActiveSessionsCount, filtr, &repl); err != nil { t.Fatal(err) } else if repl != 3 { - t.Errorf("Expected 3 active sessions recived %v", repl) + t.Errorf("Expected 3 active sessions received %v", repl) } var rply []*sessions.ExternalSession @@ -871,13 +871,13 @@ func testDspSessionPassive(t *testing.T) { filtr, &repl); err != nil { t.Fatal(err) } else if repl != 1 { - t.Errorf("Expected 1 passive sessions recived %v", repl) + t.Errorf("Expected 1 passive sessions received %v", repl) } if err := dispEngine.RPC.Call(utils.SessionSv1GetActiveSessionsCount, filtr, &repl); err != nil { t.Fatal(err) } else if repl != 0 { - t.Errorf("Expected no active sessions recived %v", repl) + t.Errorf("Expected no active sessions received %v", repl) } } @@ -902,13 +902,13 @@ func testDspSessionForceDisconect(t *testing.T) { filtr, &repl); err != nil { t.Fatal(err) } else if repl != 0 { - t.Errorf("Expected no passive sessions recived %v", repl) + t.Errorf("Expected no passive sessions received %v", repl) } if err := dispEngine.RPC.Call(utils.SessionSv1GetActiveSessionsCount, filtr, &repl); err != nil { t.Fatal(err) } else if repl != 3 { - t.Errorf("Expected 3 active sessions recived %v", repl) + t.Errorf("Expected 3 active sessions received %v", repl) } var rply []*sessions.ExternalSession @@ -930,13 +930,13 @@ func testDspSessionForceDisconect(t *testing.T) { filtr, &repl); err != nil { t.Fatal(err) } else if repl != 0 { - t.Errorf("Expected 1 passive sessions recived %v", repl) + t.Errorf("Expected 1 passive sessions received %v", repl) } if err := dispEngine.RPC.Call(utils.SessionSv1GetActiveSessionsCount, filtr, &repl); err != nil { t.Fatal(err) } else if repl != 0 { - t.Errorf("Expected no active sessions recived %v", repl) + t.Errorf("Expected no active sessions received %v", repl) } } @@ -982,7 +982,7 @@ func testDspSessionProcessEvent3(t *testing.T) { }, &repl); err != nil { t.Fatal(err) } else if repl != 0 { - t.Errorf("Expected no active sessions recived %v", repl) + t.Errorf("Expected no active sessions received %v", repl) } } diff --git a/dispatchers/stats_it_test.go b/dispatchers/stats_it_test.go index 6cbd09ad1..3d6c0ba77 100755 --- a/dispatchers/stats_it_test.go +++ b/dispatchers/stats_it_test.go @@ -95,7 +95,7 @@ func testDspStsPingFailover(t *testing.T) { } allEngine2.stopEngine(t) if err := dispEngine.RPC.Call(utils.StatSv1Ping, &ev, &reply); err == nil { - t.Errorf("Expected error but recived %v and reply %v\n", err, reply) + t.Errorf("Expected error but received %v and reply %v\n", err, reply) } allEngine.startEngine(t) allEngine2.startEngine(t) @@ -150,7 +150,7 @@ func testDspStsGetStatFailover(t *testing.T) { if err := dispEngine.RPC.Call(utils.StatSv1GetQueueStringMetrics, args2, &metrics); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error NOT_FOUND but recived %v and reply %v\n", err, reply) + t.Errorf("Expected error NOT_FOUND but received %v and reply %v\n", err, reply) } allEngine2.startEngine(t) } diff --git a/dispatchers/thresholds_it_test.go b/dispatchers/thresholds_it_test.go index a709dac95..f6cf64979 100755 --- a/dispatchers/thresholds_it_test.go +++ b/dispatchers/thresholds_it_test.go @@ -95,7 +95,7 @@ func testDspThPingFailover(t *testing.T) { } allEngine2.stopEngine(t) if err := dispEngine.RPC.Call(utils.ThresholdSv1Ping, &ev, &reply); err == nil { - t.Errorf("Expected error but recived %v and reply %v\n", err, reply) + t.Errorf("Expected error but received %v and reply %v\n", err, reply) } allEngine.startEngine(t) allEngine2.startEngine(t) @@ -123,7 +123,7 @@ func testDspThProcessEventFailover(t *testing.T) { if err := dispEngine.RPC.Call(utils.ThresholdSv1ProcessEvent, args, &ids); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error NOT_FOUND but recived %v and reply %v\n", err, ids) + t.Errorf("Expected error NOT_FOUND but received %v and reply %v\n", err, ids) } allEngine2.stopEngine(t) if err := dispEngine.RPC.Call(utils.ThresholdSv1ProcessEvent, args, &ids); err != nil { diff --git a/engine/poster_test.go b/engine/poster_test.go index 8de5fc735..4d9c69b69 100644 --- a/engine/poster_test.go +++ b/engine/poster_test.go @@ -44,7 +44,7 @@ func TestAMQPPosterParseURL(t *testing.T) { } amqp.parseOpts(opts) if !reflect.DeepEqual(expected, amqp) { - t.Errorf("Expected: %s ,recived: %s", utils.ToJSON(expected), utils.ToJSON(amqp)) + t.Errorf("Expected: %s ,received: %s", utils.ToJSON(expected), utils.ToJSON(amqp)) } } @@ -56,7 +56,7 @@ func TestKafkaParseURL(t *testing.T) { attempts: 10, } if kfk := NewKafkaPoster(u, 10, map[string]interface{}{"topic": "cdr_billing"}); !reflect.DeepEqual(exp, kfk) { - t.Errorf("Expected: %s ,recived: %s", utils.ToJSON(exp), utils.ToJSON(kfk)) + t.Errorf("Expected: %s ,received: %s", utils.ToJSON(exp), utils.ToJSON(kfk)) } u = "localhost:9092" exp = &KafkaPoster{ @@ -65,6 +65,6 @@ func TestKafkaParseURL(t *testing.T) { attempts: 10, } if kfk := NewKafkaPoster(u, 10, map[string]interface{}{"topic": "cdr_billing"}); !reflect.DeepEqual(exp, kfk) { - t.Errorf("Expected: %s ,recived: %s", utils.ToJSON(exp), utils.ToJSON(kfk)) + t.Errorf("Expected: %s ,received: %s", utils.ToJSON(exp), utils.ToJSON(kfk)) } } diff --git a/engine/safevent_test.go b/engine/safevent_test.go index d83d4d76f..22b254f63 100644 --- a/engine/safevent_test.go +++ b/engine/safevent_test.go @@ -177,7 +177,7 @@ func TestSafEventGet(t *testing.T) { } safEv.Remove("test4") if rply, has := safEv.Get("test4"); has { - t.Errorf("Expecting 'test4' to not be a field, recived: %+v", rply) + t.Errorf("Expecting 'test4' to not be a field, received: %+v", rply) } safEv.Set("test4", false) if rply, has := safEv.Get("test4"); !has { @@ -210,7 +210,7 @@ func TestSafEventGetIgnoreErrors(t *testing.T) { } safEv.Remove("test4") if rply := safEv.GetIgnoreErrors("test4"); rply != nil { - t.Errorf("Expecting: null, recived: %+v", rply) + t.Errorf("Expecting: null, received: %+v", rply) } safEv.Set("test4", false) if rply := safEv.GetIgnoreErrors("test4"); rply != false { @@ -241,7 +241,7 @@ func TestSafEventGetString(t *testing.T) { } safEv.Remove("test2") if _, err := safEv.GetString("test2"); err != utils.ErrNotFound { - t.Errorf("Expecting: %+v ,recived: %+v", utils.ErrNotFound, err) + t.Errorf("Expecting: %+v ,received: %+v", utils.ErrNotFound, err) } safEv.Set("test2", 42.3) if rply, err := safEv.GetString("test2"); err != nil { @@ -274,7 +274,7 @@ func TestSafEventGetStringIgnoreErrors(t *testing.T) { } safEv.Remove("test2") if rply := safEv.GetStringIgnoreErrors("test2"); rply != "" { - t.Errorf("Expecting: ,recived: %+v", err) + t.Errorf("Expecting: ,received: %+v", err) } safEv.Set("test2", 42.3) if rply := safEv.GetStringIgnoreErrors("test2"); rply != "42.3" { @@ -305,10 +305,10 @@ func TestSafEventGetDuration(t *testing.T) { } safEv.Remove("test7") if _, err := safEv.GetDuration("test7"); err != utils.ErrNotFound { - t.Errorf("Expecting: %+v ,recived: %+v", utils.ErrNotFound, err) + t.Errorf("Expecting: %+v ,received: %+v", utils.ErrNotFound, err) } if rply, err := safEv.GetDuration("test5"); err == nil { - t.Errorf("Expecting: error,recived: %+v", rply) + t.Errorf("Expecting: error,received: %+v", rply) } safEv.Set("test7", "42s") expected := time.Duration(42 * time.Second) @@ -343,7 +343,7 @@ func TestSafEventGetDurationIgnoreErrors(t *testing.T) { } safEv.Remove("test7") if rply := safEv.GetDurationIgnoreErrors("test7"); rply != time.Duration(0) { - t.Errorf("Expecting: %+v ,recived: %+v", time.Duration(0), rply) + t.Errorf("Expecting: %+v ,received: %+v", time.Duration(0), rply) } safEv.Set("test7", "42s") expected := time.Duration(42 * time.Second) @@ -376,10 +376,10 @@ func TestSafEventGetDurationPtr(t *testing.T) { } safEv.Remove("test7") if _, err := safEv.GetDurationPtr("test7"); err != utils.ErrNotFound { - t.Errorf("Expecting: %+v ,recived: %+v", utils.ErrNotFound, err) + t.Errorf("Expecting: %+v ,received: %+v", utils.ErrNotFound, err) } if rply, err := safEv.GetDurationPtr("test5"); err == nil { - t.Errorf("Expecting: error,recived: %+v", rply) + t.Errorf("Expecting: error,received: %+v", rply) } safEv.Set("test7", "42s") expected := time.Duration(42 * time.Second) @@ -417,12 +417,12 @@ func TestSafEventGetDurationPtrOrDefault(t *testing.T) { } safEv.Remove("test7") if rply, err := safEv.GetDurationPtrOrDefault("test7", &def); err != nil { - t.Errorf("Expecting: %+v ,recived: %+v", utils.ErrNotFound, err) + t.Errorf("Expecting: %+v ,received: %+v", utils.ErrNotFound, err) } else if !reflect.DeepEqual(&def, rply) { t.Errorf("Expecting %+v, received: %+v", def, rply) } if rply, err := safEv.GetDurationPtrOrDefault("test5", &def); err == nil { - t.Errorf("Expecting: error,recived: %+v", rply) + t.Errorf("Expecting: error,received: %+v", rply) } safEv.Set("test7", "42s") expected := time.Duration(42 * time.Second) @@ -459,10 +459,10 @@ func TestSafEventGetTime(t *testing.T) { } safEv.Remove("test9") if _, err := safEv.GetTime("test9", ""); err != utils.ErrNotFound { - t.Errorf("Expecting: %+v ,recived: %+v", utils.ErrNotFound, err) + t.Errorf("Expecting: %+v ,received: %+v", utils.ErrNotFound, err) } if rply, err := safEv.GetTime("test5", ""); err == nil { - t.Errorf("Expecting: error,recived: %+v", rply) + t.Errorf("Expecting: error,received: %+v", rply) } safEv.Set("test9", "2010-11-10T23:00:00Z") expected := time.Date(2010, 11, 10, 23, 0, 0, 0, time.UTC) @@ -530,7 +530,7 @@ func TestSafEventGetSetString(t *testing.T) { if rply, err := safEv.GetSetString("test2", expected); err != nil { t.Error(err) } else if rply != expected { - t.Errorf("Expecting: %+v ,recived: %+v", expected, rply) + t.Errorf("Expecting: %+v ,received: %+v", expected, rply) } safEv.Set("test2", 42.3) if rply, err := safEv.GetSetString("test2", ""); err != nil { diff --git a/engine/statmetrics_test.go b/engine/statmetrics_test.go index 0bb7594a1..49337aeef 100644 --- a/engine/statmetrics_test.go +++ b/engine/statmetrics_test.go @@ -2879,11 +2879,11 @@ func TestASRMarshal(t *testing.T) { if b, err := asr.Marshal(&jMarshaler); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, b) { - t.Errorf("Expected: %s , recived: %s", string(expected), string(b)) + t.Errorf("Expected: %s , received: %s", string(expected), string(b)) } else if err := nasr.LoadMarshaled(&jMarshaler, b); err != nil { t.Error(err) } else if reflect.DeepEqual(asr, nasr) { - t.Errorf("Expected: %s , recived: %s", utils.ToJSON(asr), utils.ToJSON(nasr)) + t.Errorf("Expected: %s , received: %s", utils.ToJSON(asr), utils.ToJSON(nasr)) } } @@ -2899,11 +2899,11 @@ func TestACDMarshal(t *testing.T) { if b, err := acd.Marshal(&jMarshaler); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, b) { - t.Errorf("Expected: %s , recived: %s", string(expected), string(b)) + t.Errorf("Expected: %s , received: %s", string(expected), string(b)) } else if err := nacd.LoadMarshaled(&jMarshaler, b); err != nil { t.Error(err) } else if reflect.DeepEqual(acd, nacd) { - t.Errorf("Expected: %s , recived: %s", utils.ToJSON(acd), utils.ToJSON(nacd)) + t.Errorf("Expected: %s , received: %s", utils.ToJSON(acd), utils.ToJSON(nacd)) } } @@ -2919,11 +2919,11 @@ func TestTCDMarshal(t *testing.T) { if b, err := tcd.Marshal(&jMarshaler); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, b) { - t.Errorf("Expected: %s , recived: %s", string(expected), string(b)) + t.Errorf("Expected: %s , received: %s", string(expected), string(b)) } else if err := ntcd.LoadMarshaled(&jMarshaler, b); err != nil { t.Error(err) } else if reflect.DeepEqual(tcd, ntcd) { - t.Errorf("Expected: %s , recived: %s", utils.ToJSON(tcd), utils.ToJSON(ntcd)) + t.Errorf("Expected: %s , received: %s", utils.ToJSON(tcd), utils.ToJSON(ntcd)) } } @@ -2939,11 +2939,11 @@ func TestACCMarshal(t *testing.T) { if b, err := acc.Marshal(&jMarshaler); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, b) { - t.Errorf("Expected: %s , recived: %s", string(expected), string(b)) + t.Errorf("Expected: %s , received: %s", string(expected), string(b)) } else if err := nacc.LoadMarshaled(&jMarshaler, b); err != nil { t.Error(err) } else if reflect.DeepEqual(acc, nacc) { - t.Errorf("Expected: %s , recived: %s", utils.ToJSON(acc), utils.ToJSON(nacc)) + t.Errorf("Expected: %s , received: %s", utils.ToJSON(acc), utils.ToJSON(nacc)) } } @@ -2959,11 +2959,11 @@ func TestTCCMarshal(t *testing.T) { if b, err := tcc.Marshal(&jMarshaler); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, b) { - t.Errorf("Expected: %s , recived: %s", string(expected), string(b)) + t.Errorf("Expected: %s , received: %s", string(expected), string(b)) } else if err := ntcc.LoadMarshaled(&jMarshaler, b); err != nil { t.Error(err) } else if reflect.DeepEqual(tcc, ntcc) { - t.Errorf("Expected: %s , recived: %s", utils.ToJSON(tcc), utils.ToJSON(ntcc)) + t.Errorf("Expected: %s , received: %s", utils.ToJSON(tcc), utils.ToJSON(ntcc)) } } @@ -2980,11 +2980,11 @@ func TestPDDMarshal(t *testing.T) { if b, err := pdd.Marshal(&jMarshaler); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, b) { - t.Errorf("Expected: %s , recived: %s", string(expected), string(b)) + t.Errorf("Expected: %s , received: %s", string(expected), string(b)) } else if err := ntdd.LoadMarshaled(&jMarshaler, b); err != nil { t.Error(err) } else if reflect.DeepEqual(pdd, ntdd) { - t.Errorf("Expected: %s , recived: %s", utils.ToJSON(pdd), utils.ToJSON(ntdd)) + t.Errorf("Expected: %s , received: %s", utils.ToJSON(pdd), utils.ToJSON(ntdd)) } } @@ -3002,11 +3002,11 @@ func TestDCCMarshal(t *testing.T) { if b, err := ddc.Marshal(&jMarshaler); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, b) { - t.Errorf("Expected: %s , recived: %s", string(expected), string(b)) + t.Errorf("Expected: %s , received: %s", string(expected), string(b)) } else if err := nddc.LoadMarshaled(&jMarshaler, b); err != nil { t.Error(err) } else if reflect.DeepEqual(ddc, nddc) { - t.Errorf("Expected: %s , recived: %s", utils.ToJSON(ddc), utils.ToJSON(nddc)) + t.Errorf("Expected: %s , received: %s", utils.ToJSON(ddc), utils.ToJSON(nddc)) } } @@ -3025,11 +3025,11 @@ func TestStatSumMarshal(t *testing.T) { if b, err := statSum.Marshal(&jMarshaler); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, b) { - t.Errorf("Expected: %s , recived: %s", string(expected), string(b)) + t.Errorf("Expected: %s , received: %s", string(expected), string(b)) } else if err := nstatSum.LoadMarshaled(&jMarshaler, b); err != nil { t.Error(err) } else if reflect.DeepEqual(statSum, nstatSum) { - t.Errorf("Expected: %s , recived: %s", utils.ToJSON(statSum), utils.ToJSON(nstatSum)) + t.Errorf("Expected: %s , received: %s", utils.ToJSON(statSum), utils.ToJSON(nstatSum)) } } @@ -3048,11 +3048,11 @@ func TestStatAverageMarshal(t *testing.T) { if b, err := statAvg.Marshal(&jMarshaler); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, b) { - t.Errorf("Expected: %s , recived: %s", string(expected), string(b)) + t.Errorf("Expected: %s , received: %s", string(expected), string(b)) } else if err := nstatAvg.LoadMarshaled(&jMarshaler, b); err != nil { t.Error(err) } else if reflect.DeepEqual(statAvg, nstatAvg) { - t.Errorf("Expected: %s , recived: %s", utils.ToJSON(statAvg), utils.ToJSON(nstatAvg)) + t.Errorf("Expected: %s , received: %s", utils.ToJSON(statAvg), utils.ToJSON(nstatAvg)) } } @@ -3071,10 +3071,10 @@ func TestStatDistrictMarshal(t *testing.T) { if b, err := statDistinct.Marshal(&jMarshaler); err != nil { t.Error(err) } else if !reflect.DeepEqual(expected, b) { - t.Errorf("Expected: %s , recived: %s", string(expected), string(b)) + t.Errorf("Expected: %s , received: %s", string(expected), string(b)) } else if err := nStatDistinct.LoadMarshaled(&jMarshaler, b); err != nil { t.Error(err) } else if reflect.DeepEqual(statDistinct, nStatDistinct) { - t.Errorf("Expected: %s , recived: %s", utils.ToJSON(statDistinct), utils.ToJSON(nStatDistinct)) + t.Errorf("Expected: %s , received: %s", utils.ToJSON(statDistinct), utils.ToJSON(nStatDistinct)) } } diff --git a/ers/ers_reload_it_test.go b/ers/ers_reload_it_test.go index 0676fee04..8bf2822b8 100644 --- a/ers/ers_reload_it_test.go +++ b/ers/ers_reload_it_test.go @@ -144,9 +144,9 @@ func testReloadVerifyFirstReload(t *testing.T) { Section: config.ERsJson, }, &reply); err != nil { t.Error(err) - } else if reply["Enabled"] != true { - t.Errorf("Expecting: , received: <%+v>", reply["Enabled"]) - } else if readers, canConvert := reply["Readers"].([]interface{}); !canConvert { + } else if reply[utils.EnabledCfg] != true { + t.Errorf("Expecting: , received: <%+v>", reply[utils.EnabledCfg]) + } else if readers, canConvert := reply[utils.ReadersCfg].([]interface{}); !canConvert { t.Errorf("Cannot cast Readers to slice") } else if len(readers) != 3 { // 2 active readers and 1 default t.Errorf("Expecting: <2>, received: <%+v>", len(readers)) diff --git a/general_tests/objectdp_test.go b/general_tests/objectdp_test.go index 0126c9fe1..b29702589 100644 --- a/general_tests/objectdp_test.go +++ b/general_tests/objectdp_test.go @@ -41,7 +41,7 @@ func TestAccountNewObjectDPFieldAsInterface(t *testing.T) { if data, err := accDP.FieldAsInterface([]string{"BalanceMap", "*monetary[0]", "Value"}); err != nil { t.Error(err) } else if data != 20. { - t.Errorf("Expected: %+v ,recived: %+v", 20., data) + t.Errorf("Expected: %+v ,received: %+v", 20., data) } if _, err := accDP.FieldAsInterface([]string{"BalanceMap", "*monetary[1]", "Value"}); err == nil || err.Error() != "index out of range" { @@ -70,17 +70,17 @@ func TestAccountNewObjectDPFieldAsInterfaceFromCache(t *testing.T) { if data, err := accDP.FieldAsInterface([]string{"BalanceMap", "*monetary[0]", "Value"}); err != nil { t.Error(err) } else if data != 20. { - t.Errorf("Expected: %+v ,recived: %+v", 20., data) + t.Errorf("Expected: %+v ,received: %+v", 20., data) } // the value should be taken from cache if data, err := accDP.FieldAsInterface([]string{"BalanceMap", "*monetary[0]", "Value"}); err != nil { t.Error(err) } else if data != 20. { - t.Errorf("Expected: %+v ,recived: %+v", 20., data) + t.Errorf("Expected: %+v ,received: %+v", 20., data) } if data, err := accDP.FieldAsInterface([]string{"BalanceMap", "*monetary[0]"}); err != nil { t.Error(err) } else if data != acc.BalanceMap[utils.MONETARY][0] { - t.Errorf("Expected: %+v ,recived: %+v", acc.BalanceMap[utils.MONETARY][0], data) + t.Errorf("Expected: %+v ,received: %+v", acc.BalanceMap[utils.MONETARY][0], data) } } diff --git a/migrator/alias_it_test.go b/migrator/alias_it_test.go index 2a16357db..fa7dafeca 100644 --- a/migrator/alias_it_test.go +++ b/migrator/alias_it_test.go @@ -230,8 +230,8 @@ func testAlsITMigrateAndMove(t *testing.T) { "", false, false); err != nil { t.Error(err) } else if !reflect.DeepEqual(expAlsIdx, alsidx) { - t.Errorf("Expected %v, recived: %v", utils.ToJSON(expAlsIdx), utils.ToJSON(alsidx)) + t.Errorf("Expected %v, received: %v", utils.ToJSON(expAlsIdx), utils.ToJSON(alsidx)) } else if alsMigrator.stats[Alias] != 1 { - t.Errorf("Expected 1, recived: %v", alsMigrator.stats[Alias] != 1) + t.Errorf("Expected 1, received: %v", alsMigrator.stats[Alias] != 1) } } diff --git a/migrator/alias_test.go b/migrator/alias_test.go index 904e70b88..3ab103caa 100644 --- a/migrator/alias_test.go +++ b/migrator/alias_test.go @@ -312,7 +312,7 @@ func TestAlias2AtttributeProfile(t *testing.T) { return rply.Attributes[i].Path < rply.Attributes[j].Path }) // only for test; map returns random keys if !reflect.DeepEqual(expected[i], rply) { - t.Errorf("For %v expected: %s ,recived: %s ", i, utils.ToJSON(expected[i]), utils.ToJSON(rply)) + t.Errorf("For %v expected: %s ,received: %s ", i, utils.ToJSON(expected[i]), utils.ToJSON(rply)) } } } diff --git a/migrator/cdrs_it_test.go b/migrator/cdrs_it_test.go index beb45e0f4..ddfdcc5be 100755 --- a/migrator/cdrs_it_test.go +++ b/migrator/cdrs_it_test.go @@ -184,6 +184,6 @@ func testCdrITMigrateAndMove(t *testing.T) { t.Errorf("Unexpected version returned: %d", vrs[utils.CDRs]) } // else if cdrMigrator.stats[utils.CDRs] != 1 { - // t.Errorf("Expected 1, recived: %v", cdrMigrator.stats[utils.CDRs]) + // t.Errorf("Expected 1, received: %v", cdrMigrator.stats[utils.CDRs]) // } } diff --git a/migrator/chargers_it_test.go b/migrator/chargers_it_test.go index 39bcbbdfc..c03b8accc 100755 --- a/migrator/chargers_it_test.go +++ b/migrator/chargers_it_test.go @@ -245,7 +245,7 @@ func testChrgITMigrateAndMove(t *testing.T) { "CHRG_1", false, false, utils.NonTransactional); err == nil || err != utils.ErrNotFound { t.Error(err) } else if chrgMigrator.stats[utils.Chargers] != 2 { - t.Errorf("Expected 2, recived: %v", chrgMigrator.stats[utils.Chargers]) + t.Errorf("Expected 2, received: %v", chrgMigrator.stats[utils.Chargers]) } } } diff --git a/migrator/derived_chargers_it_test.go b/migrator/derived_chargers_it_test.go index 983c6a959..0bb668cd3 100644 --- a/migrator/derived_chargers_it_test.go +++ b/migrator/derived_chargers_it_test.go @@ -245,7 +245,7 @@ func testDCITMigrateAndMove(t *testing.T) { "", true, true); err != nil { t.Error(err) } else if !reflect.DeepEqual(expDcIdx, dcidx) { - t.Errorf("Expected %v, recived: %v", utils.ToJSON(expDcIdx), utils.ToJSON(dcidx)) + t.Errorf("Expected %v, received: %v", utils.ToJSON(expDcIdx), utils.ToJSON(dcidx)) } expDcIdx = map[string]utils.StringSet{ "*string:*req.Account:1003": { @@ -256,9 +256,9 @@ func testDCITMigrateAndMove(t *testing.T) { utils.CacheChargerFilterIndexes, utils.ConcatenatedKey("cgrates.org", utils.MetaChargers), "", true, true); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected error %v, recived: %v with reply: %v", utils.ErrNotFound, err, utils.ToJSON(dcidx)) + t.Errorf("Expected error %v, received: %v with reply: %v", utils.ErrNotFound, err, utils.ToJSON(dcidx)) } else if dcMigrator.stats[utils.DerivedChargersV] != 1 { - t.Errorf("Expected 1, recived: %v", dcMigrator.stats[utils.DerivedChargersV]) + t.Errorf("Expected 1, received: %v", dcMigrator.stats[utils.DerivedChargersV]) } } diff --git a/migrator/dispatchers_it_test.go b/migrator/dispatchers_it_test.go index 931e5dd1d..a7a036d99 100644 --- a/migrator/dispatchers_it_test.go +++ b/migrator/dispatchers_it_test.go @@ -248,6 +248,6 @@ func testDspITMigrateAndMove(t *testing.T) { if err != utils.ErrNotFound { t.Error(err) } else if dspMigrator.stats[utils.Dispatchers] != 1 { - t.Errorf("Expected 1, recived: %v", dspMigrator.stats[utils.Dispatchers]) + t.Errorf("Expected 1, received: %v", dspMigrator.stats[utils.Dispatchers]) } } diff --git a/migrator/filters_it_test.go b/migrator/filters_it_test.go index 2a99a2bb2..f2a6abdb6 100644 --- a/migrator/filters_it_test.go +++ b/migrator/filters_it_test.go @@ -274,7 +274,7 @@ func testFltrITMigrateAndMove(t *testing.T) { "", false, false); err != nil { t.Error(err) } else if !reflect.DeepEqual(expFltrIdx, fltridx) { - t.Errorf("Expected %v, recived: %v", utils.ToJSON(expFltrIdx), utils.ToJSON(fltridx)) + t.Errorf("Expected %v, received: %v", utils.ToJSON(expFltrIdx), utils.ToJSON(fltridx)) } } case utils.Move: @@ -472,7 +472,7 @@ func testFltrITMigratev2(t *testing.T) { "", false, true); err != nil { t.Error(err) } else if !reflect.DeepEqual(expFltrIdx, fltridx) { - t.Errorf("Expected %v, recived: %v", utils.ToJSON(expFltrIdx), utils.ToJSON(fltridx)) + t.Errorf("Expected %v, received: %v", utils.ToJSON(expFltrIdx), utils.ToJSON(fltridx)) } } } @@ -559,6 +559,6 @@ func testFltrITMigratev3(t *testing.T) { if !reflect.DeepEqual(*expFilters, *result) { t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(expFilters), utils.ToJSON(result)) } else if fltrMigrator.stats[utils.RQF] != 5 { - t.Errorf("Expected 5, recived: %v", fltrMigrator.stats[utils.RQF]) + t.Errorf("Expected 5, received: %v", fltrMigrator.stats[utils.RQF]) } } diff --git a/migrator/filters_test.go b/migrator/filters_test.go index 632c9e956..c0f819429 100644 --- a/migrator/filters_test.go +++ b/migrator/filters_test.go @@ -51,7 +51,7 @@ func TestFiltersInlineMigrate(t *testing.T) { } for _, m := range data { if rply := migrateInlineFilter(m.in); rply != m.exp { - t.Errorf("Expected: %s, recived: %s", m.exp, rply) + t.Errorf("Expected: %s, received: %s", m.exp, rply) } } @@ -113,7 +113,7 @@ func TestFiltersMigrate(t *testing.T) { } for _, m := range data { if rply := migrateFilterV1(m.in); !reflect.DeepEqual(rply, m.exp) { - t.Errorf("Expected: %s, recived: %s", utils.ToJSON(m.exp), utils.ToJSON(rply)) + t.Errorf("Expected: %s, received: %s", utils.ToJSON(m.exp), utils.ToJSON(rply)) } } } @@ -246,7 +246,7 @@ func TestFiltersMigrateV2(t *testing.T) { } for _, m := range data { if rply := migrateFilterV2(m.in); !reflect.DeepEqual(rply, m.exp) { - t.Errorf("Expected: %s, recived: %s", utils.ToJSON(m.exp), utils.ToJSON(rply)) + t.Errorf("Expected: %s, received: %s", utils.ToJSON(m.exp), utils.ToJSON(rply)) } } } @@ -276,7 +276,7 @@ func TestFiltersInlineV2Migrate(t *testing.T) { } for _, m := range data { if rply := migrateInlineFilterV2(m.in); rply != m.exp { - t.Errorf("Expected: %s, recived: %s", m.exp, rply) + t.Errorf("Expected: %s, received: %s", m.exp, rply) } } diff --git a/migrator/rateprofiles_it_test.go b/migrator/rateprofiles_it_test.go index e087f8c9e..83f188fdf 100644 --- a/migrator/rateprofiles_it_test.go +++ b/migrator/rateprofiles_it_test.go @@ -250,7 +250,7 @@ func testRatePrfITMigrateAndMove(t *testing.T) { if err != utils.ErrNotFound { t.Error(err) } else if ratePrfMigrator.stats[utils.RateProfiles] != 1 { - t.Errorf("Expected 1, recived: %v", ratePrfMigrator.stats[utils.RateProfiles]) + t.Errorf("Expected 1, received: %v", ratePrfMigrator.stats[utils.RateProfiles]) } } } diff --git a/migrator/rating_plan_it_test.go b/migrator/rating_plan_it_test.go index a54f33b85..b8c9806fc 100644 --- a/migrator/rating_plan_it_test.go +++ b/migrator/rating_plan_it_test.go @@ -222,7 +222,7 @@ func testRtPlITMigrateAndMove(t *testing.T) { if err != utils.ErrNotFound { t.Error(err) } else if rtplMigrator.stats[utils.RatingPlan] != 1 { - t.Errorf("Expected 1, recived: %v", rtplMigrator.stats[utils.RatingPlan]) + t.Errorf("Expected 1, received: %v", rtplMigrator.stats[utils.RatingPlan]) } } } diff --git a/migrator/rating_profile_it_test.go b/migrator/rating_profile_it_test.go index 840c535dd..da9ded7ee 100644 --- a/migrator/rating_profile_it_test.go +++ b/migrator/rating_profile_it_test.go @@ -220,7 +220,7 @@ func testRtPrfITMigrateAndMove(t *testing.T) { if err != utils.ErrNotFound { t.Error(err) } else if rtprflMigrator.stats[utils.RatingProfile] != 1 { - t.Errorf("Expected 1, recived: %v", rtprflMigrator.stats[utils.RatingProfile]) + t.Errorf("Expected 1, received: %v", rtprflMigrator.stats[utils.RatingProfile]) } } } diff --git a/migrator/resource_it_test.go b/migrator/resource_it_test.go index 81b6a390d..7cbe60adc 100644 --- a/migrator/resource_it_test.go +++ b/migrator/resource_it_test.go @@ -219,7 +219,7 @@ func testResITMigrateAndMove(t *testing.T) { if err != utils.ErrNotFound { t.Error(err) } else if resMigrator.stats[utils.Resource] != 1 { - t.Errorf("Expected 1, recived: %v", resMigrator.stats[utils.Resource]) + t.Errorf("Expected 1, received: %v", resMigrator.stats[utils.Resource]) } } } diff --git a/migrator/routes_it_test.go b/migrator/routes_it_test.go index 230499ce6..f7110dc44 100644 --- a/migrator/routes_it_test.go +++ b/migrator/routes_it_test.go @@ -228,7 +228,7 @@ func testSupITMigrateAndMove(t *testing.T) { if err != utils.ErrNotFound { t.Error(err) } else if supMigrator.stats[utils.Routes] != 1 { - t.Errorf("Expected 1, recived: %v", supMigrator.stats[utils.Routes]) + t.Errorf("Expected 1, received: %v", supMigrator.stats[utils.Routes]) } } } diff --git a/migrator/session_costs_it_test.go b/migrator/session_costs_it_test.go index 6d1148676..4a80d9991 100755 --- a/migrator/session_costs_it_test.go +++ b/migrator/session_costs_it_test.go @@ -139,7 +139,7 @@ func testSessionCostITRename(t *testing.T) { } else if vrs[utils.SessionSCosts] != 2 { t.Errorf("Unexpected version returned: %d", vrs[utils.SessionSCosts]) } else if sCostMigrator.stats[utils.SessionSCosts] != 0 { - t.Errorf("Expected 0, recived: %v", sCostMigrator.stats[utils.SessionSCosts]) + t.Errorf("Expected 0, received: %v", sCostMigrator.stats[utils.SessionSCosts]) } } diff --git a/migrator/sharedgroup_it_test.go b/migrator/sharedgroup_it_test.go index adef8e47b..8b623b027 100644 --- a/migrator/sharedgroup_it_test.go +++ b/migrator/sharedgroup_it_test.go @@ -223,7 +223,7 @@ func testShrGrpITMigrateAndMove(t *testing.T) { if !reflect.DeepEqual(shrGrp, result) { t.Errorf("Expecting: %+v, received: %+v", shrGrp, result) } else if shrGrpMigrator.stats[utils.SharedGroups] != 1 { - t.Errorf("Expected 1, recived: %v", shrGrpMigrator.stats[utils.SharedGroups]) + t.Errorf("Expected 1, received: %v", shrGrpMigrator.stats[utils.SharedGroups]) } case utils.Move: if err := shrGrpMigrator.dmIN.DataManager().SetSharedGroup(shrGrp, utils.NonTransactional); err != nil { @@ -245,7 +245,7 @@ func testShrGrpITMigrateAndMove(t *testing.T) { if !reflect.DeepEqual(shrGrp, result) { t.Errorf("Expecting: %+v, received: %+v", shrGrp, result) } else if shrGrpMigrator.stats[utils.SharedGroups] != 1 { - t.Errorf("Expected 1, recived: %v", shrGrpMigrator.stats[utils.SharedGroups]) + t.Errorf("Expected 1, received: %v", shrGrpMigrator.stats[utils.SharedGroups]) } } } diff --git a/migrator/thresholds_it_test.go b/migrator/thresholds_it_test.go index 03182db7c..af391f589 100644 --- a/migrator/thresholds_it_test.go +++ b/migrator/thresholds_it_test.go @@ -356,7 +356,7 @@ func testTrsITMigrateAndMove(t *testing.T) { t.Errorf("Expecting: %+v,\nReceived: %+v", utils.ToJSON(tresProf3), utils.ToJSON(result)) } if trsMigrator.stats[utils.Thresholds] != 4 { - t.Errorf("Expected 4, recived: %v", trsMigrator.stats[utils.Thresholds]) + t.Errorf("Expected 4, received: %v", trsMigrator.stats[utils.Thresholds]) } case utils.Move: if err := trsMigrator.dmIN.DataManager().SetThresholdProfile(tresProf, false); err != nil { diff --git a/migrator/user_it_test.go b/migrator/user_it_test.go index f32a5326e..83a20cdb5 100644 --- a/migrator/user_it_test.go +++ b/migrator/user_it_test.go @@ -204,6 +204,6 @@ func testUsrITMigrateAndMove(t *testing.T) { "", true, true); err != nil { t.Error(err) } else if !reflect.DeepEqual(expUsrIdx, usridx) { - t.Errorf("Expected %v, recived: %v", utils.ToJSON(expUsrIdx), utils.ToJSON(usridx)) + t.Errorf("Expected %v, received: %v", utils.ToJSON(expUsrIdx), utils.ToJSON(usridx)) } } diff --git a/migrator/versions_it_test.go b/migrator/versions_it_test.go index cbe1ba4ef..afa495950 100644 --- a/migrator/versions_it_test.go +++ b/migrator/versions_it_test.go @@ -103,10 +103,10 @@ func testVrsITFlush(t *testing.T) { vrsMigrator.storDBOut.StorDB().Flush((path.Join(vrsCfg.DataFolderPath, "storage", vrsCfg.StorDbCfg().Type))) if vrs, err := vrsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected err=%s recived err=%v and rply=%s", utils.ErrNotFound.Error(), err, utils.ToJSON(vrs)) + t.Errorf("Expected err=%s received err=%v and rply=%s", utils.ErrNotFound.Error(), err, utils.ToJSON(vrs)) } if vrs, err := vrsMigrator.storDBOut.StorDB().GetVersions(""); err == nil || err.Error() != utils.ErrNotFound.Error() { - t.Errorf("Expected err=%s recived err=%v and rply=%s", utils.ErrNotFound.Error(), err, utils.ToJSON(vrs)) + t.Errorf("Expected err=%s received err=%v and rply=%s", utils.ErrNotFound.Error(), err, utils.ToJSON(vrs)) } } @@ -120,21 +120,21 @@ func testVrsITMigrate(t *testing.T) { if vrs, err := vrsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil { t.Error(err) } else if !reflect.DeepEqual(expVrs, vrs) { - t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + t.Errorf("Expected %s received %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) } } else { expVrs := engine.CurrentDataDBVersions() if vrs, err := vrsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil { t.Error(err) } else if !reflect.DeepEqual(expVrs, vrs) { - t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + t.Errorf("Expected %s received %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) } expVrs = engine.CurrentStorDBVersions() if vrs, err := vrsMigrator.storDBOut.StorDB().GetVersions(""); err != nil { t.Error(err) } else if !reflect.DeepEqual(expVrs, vrs) { - t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + t.Errorf("Expected %s received %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) } } @@ -154,21 +154,21 @@ func testVrsITMigrate(t *testing.T) { if vrs, err := vrsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil { t.Error(err) } else if !reflect.DeepEqual(expVrs, vrs) { - t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + t.Errorf("Expected %s received %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) } } else { expVrs := engine.CurrentDataDBVersions() if vrs, err := vrsMigrator.dmOut.DataManager().DataDB().GetVersions(""); err != nil { t.Error(err) } else if !reflect.DeepEqual(expVrs, vrs) { - t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + t.Errorf("Expected %s received %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) } expVrs = engine.CurrentStorDBVersions() if vrs, err := vrsMigrator.storDBOut.StorDB().GetVersions(""); err != nil { t.Error(err) } else if !reflect.DeepEqual(expVrs, vrs) { - t.Errorf("Expected %s recived %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) + t.Errorf("Expected %s received %s", utils.ToJSON(expVrs), utils.ToJSON(vrs)) } } } diff --git a/utils/consts.go b/utils/consts.go index d5b61c3ae..17a03c289 100755 --- a/utils/consts.go +++ b/utils/consts.go @@ -2234,7 +2234,6 @@ const ( TpIDCfg = "tpid" DataPathCfg = "data_path" DisableReverseCfg = "disable_reverse" - FieldSeparatorCfg = "field_separator" CachesConnsCfg = "caches_conns" SchedulerConnsCfg = "scheduler_conns" GapiCredentialsCfg = "gapi_credentials" diff --git a/utils/orderednavigablemap_test.go b/utils/orderednavigablemap_test.go index 9e4e1558c..4e5f0bbd7 100644 --- a/utils/orderednavigablemap_test.go +++ b/utils/orderednavigablemap_test.go @@ -311,8 +311,8 @@ func TestOrderedNavigableMapGetSet(t *testing.T) { {{Field: "Account", Index: StringPointer("1")}}, } - if recivedOrder := nm.GetOrder(); !reflect.DeepEqual(expectedOrder, recivedOrder) { - t.Errorf("Expected %s ,received: %s", expectedOrder, recivedOrder) + if receivedOrder := nm.GetOrder(); !reflect.DeepEqual(expectedOrder, receivedOrder) { + t.Errorf("Expected %s ,received: %s", expectedOrder, receivedOrder) } nm = &OrderedNavigableMap{ nm: NavigableMap2{ diff --git a/utils/reflect_test.go b/utils/reflect_test.go index 8cfa5bbf2..d52e2c639 100644 --- a/utils/reflect_test.go +++ b/utils/reflect_test.go @@ -257,37 +257,37 @@ func TestStringToInterface(t *testing.T) { func TestIfaceAsString(t *testing.T) { val := interface{}("string1") if rply := IfaceAsString(val); rply != "string1" { - t.Errorf("Expected string1 ,recived %+v", rply) + t.Errorf("Expected string1 ,received %+v", rply) } val = interface{}(123) if rply := IfaceAsString(val); rply != "123" { - t.Errorf("Expected 123 ,recived %+v", rply) + t.Errorf("Expected 123 ,received %+v", rply) } val = interface{}([]byte("byte_val")) if rply := IfaceAsString(val); rply != "byte_val" { - t.Errorf("Expected byte_val ,recived %+v", rply) + t.Errorf("Expected byte_val ,received %+v", rply) } val = interface{}(true) if rply := IfaceAsString(val); rply != "true" { - t.Errorf("Expected true ,recived %+v", rply) + t.Errorf("Expected true ,received %+v", rply) } if rply := IfaceAsString(time.Duration(1 * time.Second)); rply != "1s" { - t.Errorf("Expected 1s ,recived %+v", rply) + t.Errorf("Expected 1s ,received %+v", rply) } if rply := IfaceAsString(nil); rply != "" { - t.Errorf("Expected ,recived %+v", rply) + t.Errorf("Expected ,received %+v", rply) } val = interface{}(net.ParseIP("127.0.0.1")) if rply := IfaceAsString(val); rply != "127.0.0.1" { - t.Errorf("Expected ,recived %+v", rply) + t.Errorf("Expected ,received %+v", rply) } val = interface{}(10.23) if rply := IfaceAsString(val); rply != "10.23" { - t.Errorf("Expected ,recived %+v", rply) + t.Errorf("Expected ,received %+v", rply) } val = interface{}(time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC)) if rply := IfaceAsString(val); rply != "2009-11-10T23:00:00Z" { - t.Errorf("Expected ,recived %+v", rply) + t.Errorf("Expected ,received %+v", rply) } } @@ -543,20 +543,20 @@ func TestGetUniformType(t *testing.T) { if rply, err := GetUniformType(arg); err != nil { t.Error(err) } else if !reflect.DeepEqual(rply, expected) { - t.Errorf("Expected: %v of type %T, recived: %v of type %T", expected, expected, rply, rply) + t.Errorf("Expected: %v of type %T, received: %v of type %T", expected, expected, rply, rply) } arg = uint(10) expected = float64(10) if rply, err := GetUniformType(arg); err != nil { t.Error(err) } else if !reflect.DeepEqual(rply, expected) { - t.Errorf("Expected: %v of type %T, recived: %v of type %T", expected, expected, rply, rply) + t.Errorf("Expected: %v of type %T, received: %v of type %T", expected, expected, rply, rply) } arg = int64(10) if rply, err := GetUniformType(arg); err != nil { t.Error(err) } else if !reflect.DeepEqual(rply, expected) { - t.Errorf("Expected: %v of type %T, recived: %v of type %T", expected, expected, rply, rply) + t.Errorf("Expected: %v of type %T, received: %v of type %T", expected, expected, rply, rply) } arg = time.Now() @@ -564,14 +564,14 @@ func TestGetUniformType(t *testing.T) { if rply, err := GetUniformType(arg); err != nil { t.Error(err) } else if !reflect.DeepEqual(rply, expected) { - t.Errorf("Expected: %v of type %T, recived: %v of type %T", expected, expected, rply, rply) + t.Errorf("Expected: %v of type %T, received: %v of type %T", expected, expected, rply, rply) } arg = struct{ b int }{b: 10} expected = arg if rply, err := GetUniformType(arg); err != nil { t.Error(err) } else if !reflect.DeepEqual(rply, expected) { - t.Errorf("Expected: %v of type %T, recived: %v of type %T", expected, expected, rply, rply) + t.Errorf("Expected: %v of type %T, received: %v of type %T", expected, expected, rply, rply) } arg = time.Now()