From a2ca4ef7e38437599e2239260401de94bfea2d21 Mon Sep 17 00:00:00 2001 From: Anevo Date: Mon, 26 Mar 2018 11:22:49 -0400 Subject: [PATCH] Renamed console files and tested functions from utils/struct.go --- console/attribute_ping.go | 62 ------------------------------------- console/resource_ping.go | 62 ------------------------------------- console/session_ping.go | 62 ------------------------------------- console/supplier_ping.go | 62 ------------------------------------- console/threshold_ping.go | 62 ------------------------------------- utils/struct.go | 6 ++-- utils/struct_test.go | 65 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 68 insertions(+), 313 deletions(-) delete mode 100644 console/attribute_ping.go delete mode 100644 console/resource_ping.go delete mode 100644 console/session_ping.go delete mode 100644 console/supplier_ping.go delete mode 100644 console/threshold_ping.go diff --git a/console/attribute_ping.go b/console/attribute_ping.go deleted file mode 100644 index ca4aba11f..000000000 --- a/console/attribute_ping.go +++ /dev/null @@ -1,62 +0,0 @@ -/* -Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments -Copyright (C) ITsysCOM GmbH - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see -*/ - -package console - -import "github.com/cgrates/cgrates/utils" - -func init() { - c := &CmdAttributePing{ - name: "attribute_ping", - rpcMethod: utils.AttributeSv1Ping, - } - commands[c.Name()] = c - c.CommandExecuter = &CommandExecuter{c} -} - -// Commander implementation -type CmdAttributePing struct { - name string - rpcMethod string - rpcParams *EmptyWrapper - *CommandExecuter -} - -func (self *CmdAttributePing) Name() string { - return self.name -} - -func (self *CmdAttributePing) RpcMethod() string { - return self.rpcMethod -} - -func (self *CmdAttributePing) RpcParams(reset bool) interface{} { - if reset || self.rpcParams == nil { - self.rpcParams = &EmptyWrapper{} - } - return self.rpcParams -} - -func (self *CmdAttributePing) PostprocessRpcParams() error { - return nil -} - -func (self *CmdAttributePing) RpcResult() interface{} { - var s string - return &s -} diff --git a/console/resource_ping.go b/console/resource_ping.go deleted file mode 100644 index 144e745b6..000000000 --- a/console/resource_ping.go +++ /dev/null @@ -1,62 +0,0 @@ -/* -Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments -Copyright (C) ITsysCOM GmbH - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see -*/ - -package console - -import "github.com/cgrates/cgrates/utils" - -func init() { - c := &CmdResourcePing{ - name: "resource_ping", - rpcMethod: utils.ResourceSv1Ping, - } - commands[c.Name()] = c - c.CommandExecuter = &CommandExecuter{c} -} - -// Commander implementation -type CmdResourcePing struct { - name string - rpcMethod string - rpcParams *EmptyWrapper - *CommandExecuter -} - -func (self *CmdResourcePing) Name() string { - return self.name -} - -func (self *CmdResourcePing) RpcMethod() string { - return self.rpcMethod -} - -func (self *CmdResourcePing) RpcParams(reset bool) interface{} { - if reset || self.rpcParams == nil { - self.rpcParams = &EmptyWrapper{} - } - return self.rpcParams -} - -func (self *CmdResourcePing) PostprocessRpcParams() error { - return nil -} - -func (self *CmdResourcePing) RpcResult() interface{} { - var s string - return &s -} diff --git a/console/session_ping.go b/console/session_ping.go deleted file mode 100644 index 8aaad2855..000000000 --- a/console/session_ping.go +++ /dev/null @@ -1,62 +0,0 @@ -/* -Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments -Copyright (C) ITsysCOM GmbH - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see -*/ - -package console - -import "github.com/cgrates/cgrates/utils" - -func init() { - c := &CmdSessionPing{ - name: "session_ping", - rpcMethod: utils.SessionSv1Ping, - } - commands[c.Name()] = c - c.CommandExecuter = &CommandExecuter{c} -} - -// Commander implementation -type CmdSessionPing struct { - name string - rpcMethod string - rpcParams *EmptyWrapper - *CommandExecuter -} - -func (self *CmdSessionPing) Name() string { - return self.name -} - -func (self *CmdSessionPing) RpcMethod() string { - return self.rpcMethod -} - -func (self *CmdSessionPing) RpcParams(reset bool) interface{} { - if reset || self.rpcParams == nil { - self.rpcParams = &EmptyWrapper{} - } - return self.rpcParams -} - -func (self *CmdSessionPing) PostprocessRpcParams() error { - return nil -} - -func (self *CmdSessionPing) RpcResult() interface{} { - var s string - return &s -} diff --git a/console/supplier_ping.go b/console/supplier_ping.go deleted file mode 100644 index 3c1ef847c..000000000 --- a/console/supplier_ping.go +++ /dev/null @@ -1,62 +0,0 @@ -/* -Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments -Copyright (C) ITsysCOM GmbH - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see -*/ - -package console - -import "github.com/cgrates/cgrates/utils" - -func init() { - c := &CmdSupplierPing{ - name: "supplier_ping", - rpcMethod: utils.SupplierSv1Ping, - } - commands[c.Name()] = c - c.CommandExecuter = &CommandExecuter{c} -} - -// Commander implementation -type CmdSupplierPing struct { - name string - rpcMethod string - rpcParams *EmptyWrapper - *CommandExecuter -} - -func (self *CmdSupplierPing) Name() string { - return self.name -} - -func (self *CmdSupplierPing) RpcMethod() string { - return self.rpcMethod -} - -func (self *CmdSupplierPing) RpcParams(reset bool) interface{} { - if reset || self.rpcParams == nil { - self.rpcParams = &EmptyWrapper{} - } - return self.rpcParams -} - -func (self *CmdSupplierPing) PostprocessRpcParams() error { - return nil -} - -func (self *CmdSupplierPing) RpcResult() interface{} { - var s string - return &s -} diff --git a/console/threshold_ping.go b/console/threshold_ping.go deleted file mode 100644 index a42f10ff2..000000000 --- a/console/threshold_ping.go +++ /dev/null @@ -1,62 +0,0 @@ -/* -Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments -Copyright (C) ITsysCOM GmbH - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see -*/ - -package console - -import "github.com/cgrates/cgrates/utils" - -func init() { - c := &CmdThresholdPing{ - name: "threshold_ping", - rpcMethod: utils.ThresholdSv1Ping, - } - commands[c.Name()] = c - c.CommandExecuter = &CommandExecuter{c} -} - -// Commander implementation -type CmdThresholdPing struct { - name string - rpcMethod string - rpcParams *EmptyWrapper - *CommandExecuter -} - -func (self *CmdThresholdPing) Name() string { - return self.name -} - -func (self *CmdThresholdPing) RpcMethod() string { - return self.rpcMethod -} - -func (self *CmdThresholdPing) RpcParams(reset bool) interface{} { - if reset || self.rpcParams == nil { - self.rpcParams = &EmptyWrapper{} - } - return self.rpcParams -} - -func (self *CmdThresholdPing) PostprocessRpcParams() error { - return nil -} - -func (self *CmdThresholdPing) RpcResult() interface{} { - var s string - return &s -} diff --git a/utils/struct.go b/utils/struct.go index b8e59ae12..c58822130 100644 --- a/utils/struct.go +++ b/utils/struct.go @@ -86,7 +86,7 @@ func NonemptyStructFields(s interface{}) map[string]interface{} { }*/ // Converts a struct to map[string]interface{} -func ToMapMapStringInterface(in interface{}) map[string]interface{} { +func ToMapMapStringInterface(in interface{}) map[string]interface{} { // Got error and it is not used anywhere out := make(map[string]interface{}) v := reflect.ValueOf(in) @@ -224,7 +224,7 @@ func FromMapStringInterfaceValue(m map[string]interface{}, v reflect.Value) (int } // Update struct with map fields, returns not matching map keys, s is a struct to be updated -func UpdateStructWithStrMap(s interface{}, m map[string]string) []string { +func UpdateStructWithStrMap(s interface{}, m map[string]string) []string { // Not tested and declared and used only here notMatched := []string{} for key, val := range m { fld := reflect.ValueOf(s).Elem().FieldByName(key) @@ -253,7 +253,7 @@ func UpdateStructWithStrMap(s interface{}, m map[string]string) []string { } // UpdateStructWithIfaceMap will update struct fields with values coming from map -// if map values are not matching the ones in strcut convertion is being attempted +// if map values are not matching the ones in struct convertion is being attempted // ToDo: add here more fields func UpdateStructWithIfaceMap(s interface{}, mp map[string]interface{}) (err error) { for key, val := range mp { diff --git a/utils/struct_test.go b/utils/struct_test.go index f09b7776d..1b50a4c89 100644 --- a/utils/struct_test.go +++ b/utils/struct_test.go @@ -116,6 +116,31 @@ func TestStructExtraFields(t *testing.T) { } } +func TestSetStructExtraFields(t *testing.T) { + ts := struct { + Name string + Surname string + Address string + ExtraFields map[string]string + }{ + Name: "1", + Surname: "2", + Address: "3", + ExtraFields: make(map[string]string), + } + s := "ExtraFields" + m := map[string]string{ + "k1": "v1", + "k2": "v2", + "k3": "v3", + } + SetMapExtraFields(ts, m, s) + efMap := GetMapExtraFields(ts, "ExtraFields") + if !reflect.DeepEqual(efMap, ts.ExtraFields) { + t.Errorf("expected: %v got: %v", ts.ExtraFields, efMap) + } +} + func TestStructFromMapStringInterface(t *testing.T) { ts := &struct { Name string @@ -210,3 +235,43 @@ func TestUpdateStructWithIfaceMap(t *testing.T) { t.Errorf("expecting: %+v, received: %+v", eStruct, s) } } + +func TestNonemptyStructFields(t *testing.T) { + var attr = struct { + Tenant string + Direction bool + Account string + Type string + ActionTimingsId string + }{"bevoip.eu", true, "testaccount", META_PREPAID, ""} + mapStruct := NonemptyStructFields(&attr) + expMapStruct := map[string]interface{}{ + "Tenant": "bevoip.eu", + "Direction": true, + "Account": "testaccount", + "Type": META_PREPAID, + } + if !reflect.DeepEqual(expMapStruct, mapStruct) { + t.Errorf("expecting: %+v, received: %+v", expMapStruct, mapStruct) + } +} + +/* +func TestToMapMapStringInterface(t *testing.T) { + var attr = struct { + Tenant string + Direction bool + Account string + Type string + }{"bevoip.eu", true, "testaccount", META_PREPAID} + mapStruct := ToMapMapStringInterface(&attr) + expMapStruct := map[string]interface{}{ + "Tenant": "bevoip.eu", + "Direction": true, + "Account": "testaccount", + "Type": META_PREPAID, + } + if !reflect.DeepEqual(expMapStruct, mapStruct) { + t.Errorf("expecting: %+v, received: %+v", expMapStruct, mapStruct) + } +}*/