mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-16 13:49:53 +05:00
Updated CGRID generation when empty.Fix#1552
This commit is contained in:
committed by
Dan Christian Bogos
parent
ee100d423d
commit
6a0377bbb8
@@ -188,7 +188,7 @@ func (self *CsvRecordsProcessor) recordToStoredCdr(record []string, cdrcCfg *con
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
storedCdr.CGRID = utils.Sha1(storedCdr.OriginID, storedCdr.SetupTime.UTC().String())
|
||||
storedCdr.CGRID = utils.Sha1(storedCdr.OriginID, storedCdr.OriginHost)
|
||||
if storedCdr.ToR == utils.DATA && cdrcCfg.DataUsageMultiplyFactor != 0 {
|
||||
storedCdr.Usage = time.Duration(float64(storedCdr.Usage.Nanoseconds()) * cdrcCfg.DataUsageMultiplyFactor)
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ func TestCsvRecordToCDR(t *testing.T) {
|
||||
t.Error("Failed to parse CDR in rated cdr", err)
|
||||
}
|
||||
expectedCdr := &engine.CDR{
|
||||
CGRID: utils.Sha1(cdrRow[3], time.Date(2013, 2, 3, 19, 50, 0, 0, time.UTC).String()),
|
||||
CGRID: utils.Sha1(cdrRow[3], "0.0.0.0"),
|
||||
RunID: utils.MetaDefault,
|
||||
ToR: cdrRow[2],
|
||||
OriginID: cdrRow[3],
|
||||
@@ -88,9 +88,9 @@ func TestCsvDataMultiplyFactor(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Error("Failed to parse CDR in rated cdr", err)
|
||||
}
|
||||
var sTime time.Time
|
||||
// var sTime time.Time
|
||||
expectedCdr := &engine.CDR{
|
||||
CGRID: utils.Sha1("", sTime.String()),
|
||||
CGRID: utils.Sha1("", "0.0.0.0"),
|
||||
ToR: cdrRow[0],
|
||||
OriginHost: "0.0.0.0",
|
||||
Source: "TEST_CDRC",
|
||||
@@ -103,7 +103,7 @@ func TestCsvDataMultiplyFactor(t *testing.T) {
|
||||
}
|
||||
csvProcessor.cdrcCfgs[0].DataUsageMultiplyFactor = 1024
|
||||
expectedCdr = &engine.CDR{
|
||||
CGRID: utils.Sha1("", sTime.String()),
|
||||
CGRID: utils.Sha1("", "0.0.0.0"),
|
||||
ToR: cdrRow[0],
|
||||
OriginHost: "0.0.0.0",
|
||||
Source: "TEST_CDRC",
|
||||
@@ -117,7 +117,7 @@ func TestCsvDataMultiplyFactor(t *testing.T) {
|
||||
}
|
||||
cdrRow = []string{"*voice", "1s"}
|
||||
expectedCdr = &engine.CDR{
|
||||
CGRID: utils.Sha1("", sTime.String()),
|
||||
CGRID: utils.Sha1("", "0.0.0.0"),
|
||||
ToR: cdrRow[0],
|
||||
OriginHost: "0.0.0.0",
|
||||
Source: "TEST_CDRC",
|
||||
|
||||
@@ -198,7 +198,7 @@ func (self *FwvRecordsProcessor) recordToStoredCdr(record string, cdrcCfg *confi
|
||||
}
|
||||
}
|
||||
if storedCdr.CGRID == "" && storedCdr.OriginID != "" && cfgKey != "*header" {
|
||||
storedCdr.CGRID = utils.Sha1(storedCdr.OriginID, storedCdr.SetupTime.UTC().String())
|
||||
storedCdr.CGRID = utils.Sha1(storedCdr.OriginID, storedCdr.OriginHost)
|
||||
}
|
||||
if storedCdr.ToR == utils.DATA && duMultiplyFactor != 0 {
|
||||
storedCdr.Usage = time.Duration(float64(storedCdr.Usage.Nanoseconds()) * duMultiplyFactor)
|
||||
|
||||
@@ -176,7 +176,7 @@ func (xmlProc *XMLRecordsProcessor) recordToCDR(xmlEntity *xmlquery.Node, cdrcCf
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
cdr.CGRID = utils.Sha1(cdr.OriginID, cdr.SetupTime.UTC().String())
|
||||
cdr.CGRID = utils.Sha1(cdr.OriginID, cdr.OriginHost)
|
||||
if cdr.ToR == utils.DATA && cdrcCfg.DataUsageMultiplyFactor != 0 {
|
||||
cdr.Usage = time.Duration(float64(cdr.Usage.Nanoseconds()) * cdrcCfg.DataUsageMultiplyFactor)
|
||||
}
|
||||
|
||||
@@ -257,14 +257,23 @@ func TestXMLRPProcess(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
expectedCDRs := []*engine.CDR{
|
||||
{CGRID: "1f045359a0784d15e051d7e41ae30132b139d714",
|
||||
OriginHost: "0.0.0.0", Source: "TestXML", OriginID: "25160047719:0",
|
||||
ToR: "*voice", RequestType: "*rated", Tenant: "cgrates.org",
|
||||
Category: "call", Account: "1001", Destination: "+4986517174963",
|
||||
{
|
||||
CGRID: utils.Sha1("25160047719:0", "0.0.0.0"),
|
||||
OriginHost: "0.0.0.0",
|
||||
Source: "TestXML",
|
||||
OriginID: "25160047719:0",
|
||||
ToR: "*voice",
|
||||
RequestType: "*rated",
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1001",
|
||||
Destination: "+4986517174963",
|
||||
SetupTime: time.Date(2016, 4, 19, 21, 0, 5, 247000000, time.UTC),
|
||||
AnswerTime: time.Date(2016, 4, 19, 21, 0, 6, 813000000, time.UTC),
|
||||
Usage: time.Duration(13483000000),
|
||||
ExtraFields: map[string]string{}, Cost: -1},
|
||||
ExtraFields: map[string]string{},
|
||||
Cost: -1,
|
||||
},
|
||||
}
|
||||
if !reflect.DeepEqual(expectedCDRs, cdrs) {
|
||||
t.Errorf("Expecting: %+v\n, received: %+v\n", expectedCDRs, cdrs)
|
||||
@@ -329,14 +338,23 @@ func TestXMLRPProcessWithNewFilters(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
expectedCDRs := []*engine.CDR{
|
||||
{CGRID: "1f045359a0784d15e051d7e41ae30132b139d714",
|
||||
OriginHost: "0.0.0.0", Source: "XMLWithFilters", OriginID: "25160047719:0",
|
||||
ToR: "*voice", RequestType: "*rated", Tenant: "cgrates.org",
|
||||
Category: "call", Account: "1001", Destination: "+4986517174963",
|
||||
{
|
||||
CGRID: utils.Sha1("25160047719:0", "0.0.0.0"),
|
||||
OriginHost: "0.0.0.0",
|
||||
Source: "XMLWithFilters",
|
||||
OriginID: "25160047719:0",
|
||||
ToR: "*voice",
|
||||
RequestType: "*rated",
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1001",
|
||||
Destination: "+4986517174963",
|
||||
SetupTime: time.Date(2016, 4, 19, 21, 0, 5, 247000000, time.UTC),
|
||||
AnswerTime: time.Date(2016, 4, 19, 21, 0, 6, 813000000, time.UTC),
|
||||
Usage: time.Duration(13483000000),
|
||||
ExtraFields: map[string]string{}, Cost: -1},
|
||||
ExtraFields: map[string]string{},
|
||||
Cost: -1,
|
||||
},
|
||||
}
|
||||
if !reflect.DeepEqual(expectedCDRs, cdrs) {
|
||||
t.Errorf("Expecting: %+v\n, received: %+v\n", expectedCDRs, cdrs)
|
||||
@@ -588,14 +606,23 @@ func TestXMLRPNestingSeparator(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
expectedCDRs := []*engine.CDR{
|
||||
{CGRID: "0ad7f9554ff8fc5b3a7cebbe7431bbf809bc5144",
|
||||
OriginHost: "0.0.0.0", Source: "zw_cfs1", OriginID: "46d7974398c2671016afccc3f2c428c7",
|
||||
ToR: "*voice", RequestType: "*rated", Tenant: "XX.liquid.tel",
|
||||
Category: "call", Account: "+27110493421", Destination: "+270843073451",
|
||||
{
|
||||
CGRID: utils.Sha1("46d7974398c2671016afccc3f2c428c7", "0.0.0.0"),
|
||||
OriginHost: "0.0.0.0",
|
||||
Source: "zw_cfs1",
|
||||
OriginID: "46d7974398c2671016afccc3f2c428c7",
|
||||
ToR: "*voice",
|
||||
RequestType: "*rated",
|
||||
Tenant: "XX.liquid.tel",
|
||||
Category: "call",
|
||||
Account: "+27110493421",
|
||||
Destination: "+270843073451",
|
||||
SetupTime: time.Date(2017, 11, 9, 11, 5, 34, 973000000, time.UTC),
|
||||
AnswerTime: time.Date(2017, 11, 9, 11, 5, 39, 364000000, time.UTC),
|
||||
Usage: time.Duration(53737000000),
|
||||
ExtraFields: map[string]string{}, Cost: -1},
|
||||
ExtraFields: map[string]string{},
|
||||
Cost: -1,
|
||||
},
|
||||
}
|
||||
if !reflect.DeepEqual(expectedCDRs, cdrs) {
|
||||
t.Errorf("Expecting: %+v\n, received: %+v\n", expectedCDRs, cdrs)
|
||||
|
||||
@@ -29,7 +29,7 @@ CREATE TABLE cdrs (
|
||||
updated_at TIMESTAMP NULL,
|
||||
deleted_at TIMESTAMP NULL,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY cdrrun (cgrid, run_id, origin_id)
|
||||
UNIQUE KEY cdrrun (cgrid, run_id)
|
||||
);
|
||||
|
||||
DROP TABLE IF EXISTS session_costs;
|
||||
|
||||
@@ -28,7 +28,7 @@ CREATE TABLE cdrs (
|
||||
created_at TIMESTAMP WITH TIME ZONE,
|
||||
updated_at TIMESTAMP WITH TIME ZONE NULL,
|
||||
deleted_at TIMESTAMP WITH TIME ZONE NULL,
|
||||
UNIQUE (cgrid, run_id, origin_id)
|
||||
UNIQUE (cgrid, run_id)
|
||||
);
|
||||
;
|
||||
DROP INDEX IF EXISTS deleted_at_cp_idx;
|
||||
|
||||
@@ -202,7 +202,7 @@ func cdrLogAction(acc *Account, a *Action, acs Actions, extraData interface{}) (
|
||||
ExtraFields: make(map[string]string),
|
||||
PreRated: true,
|
||||
}
|
||||
cdr.CGRID = utils.Sha1(cdr.OriginID, cdr.SetupTime.String())
|
||||
cdr.CGRID = utils.Sha1(cdr.OriginID, cdr.OriginHost)
|
||||
cdr.Usage = time.Duration(1)
|
||||
elem := reflect.ValueOf(cdr).Elem()
|
||||
for key, rsrFlds := range defaultTemplate {
|
||||
|
||||
@@ -45,8 +45,7 @@ func (cgrCdr CgrCdr) getCGRID(timezone string) string {
|
||||
if CGRID, hasIt := cgrCdr[utils.CGRID]; hasIt {
|
||||
return CGRID
|
||||
}
|
||||
setupTime, _ := utils.ParseTimeDetectLayout(cgrCdr[utils.SetupTime], timezone)
|
||||
return utils.Sha1(cgrCdr[utils.OriginID], setupTime.UTC().String())
|
||||
return utils.Sha1(cgrCdr[utils.OriginID], cgrCdr[utils.OriginHost])
|
||||
}
|
||||
|
||||
func (cgrCdr CgrCdr) getExtraFields() map[string]string {
|
||||
|
||||
@@ -18,10 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
package engine
|
||||
|
||||
import (
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
"reflect"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
/*
|
||||
@@ -40,8 +41,8 @@ func TestCgrCdrAsCDR(t *testing.T) {
|
||||
utils.Account: "1001", utils.Subject: "1001", utils.Destination: "1002",
|
||||
utils.SetupTime: "2013-11-07T08:42:20Z", utils.AnswerTime: "2013-11-07T08:42:26Z",
|
||||
utils.Usage: "10s", "field_extr1": "val_extr1", "fieldextr2": "valextr2"}
|
||||
setupTime, _ := utils.ParseTimeDetectLayout(cgrCdr[utils.SetupTime], "")
|
||||
expctRtCdr := &CDR{CGRID: utils.Sha1(cgrCdr[utils.OriginID], setupTime.String()),
|
||||
// setupTime, _ := utils.ParseTimeDetectLayout(cgrCdr[utils.SetupTime], "")
|
||||
expctRtCdr := &CDR{CGRID: utils.Sha1(cgrCdr[utils.OriginID], cgrCdr[utils.OriginHost]),
|
||||
ToR: utils.VOICE, OriginID: cgrCdr[utils.OriginID],
|
||||
OriginHost: cgrCdr[utils.OriginHost],
|
||||
Source: cgrCdr[utils.Source],
|
||||
|
||||
Reference in New Issue
Block a user