mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-14 20:59:53 +05:00
Update integration_tests
This commit is contained in:
@@ -229,10 +229,10 @@ func TestDmtAgentConnectDiameterClient(t *testing.T) {
|
||||
// cgr-console 'cost Category="call" Tenant="cgrates.org" Subject="1001" Destination="1004" TimeStart="2015-11-07T08:42:26Z" TimeEnd="2015-11-07T08:47:26Z"'
|
||||
func TestDmtAgentSendCCRInit(t *testing.T) {
|
||||
cdr := &engine.CDR{CGRID: utils.Sha1("testccr1", time.Date(2015, 11, 7, 8, 42, 20, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE,
|
||||
OriginID: "testccr1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED, Direction: "*out",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1004", Supplier: "SUPPL1",
|
||||
OriginID: "testccr1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED,
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1004",
|
||||
SetupTime: time.Date(2015, 11, 7, 8, 42, 20, 0, time.UTC), AnswerTime: time.Date(2015, 11, 7, 8, 42, 26, 0, time.UTC), RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(0), PDD: time.Duration(7) * time.Second, ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
Usage: time.Duration(0), ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
}
|
||||
ccr := storedCdrToCCR(cdr, "UNIT_TEST", daCfg.DiameterAgentCfg().OriginRealm, daCfg.DiameterAgentCfg().VendorId,
|
||||
daCfg.DiameterAgentCfg().ProductName, utils.DIAMETER_FIRMWARE_REVISION, daCfg.DiameterAgentCfg().DebitInterval, false)
|
||||
@@ -270,10 +270,10 @@ func TestDmtAgentSendCCRInit(t *testing.T) {
|
||||
// cgr-console 'cost Category="call" Tenant="cgrates.org" Subject="1001" Destination="1004" TimeStart="2015-11-07T08:42:26Z" TimeEnd="2015-11-07T08:52:26Z"'
|
||||
func TestDmtAgentSendCCRUpdate(t *testing.T) {
|
||||
cdr := &engine.CDR{CGRID: utils.Sha1("testccr1", time.Date(2015, 11, 7, 8, 42, 20, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE,
|
||||
OriginID: "testccr1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED, Direction: "*out",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1004", Supplier: "SUPPL1",
|
||||
OriginID: "testccr1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED,
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1004",
|
||||
SetupTime: time.Date(2015, 11, 7, 8, 42, 20, 0, time.UTC), AnswerTime: time.Date(2015, 11, 7, 8, 42, 26, 0, time.UTC), RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(300) * time.Second, PDD: time.Duration(7) * time.Second, ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
Usage: time.Duration(300) * time.Second, ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
}
|
||||
ccr := storedCdrToCCR(cdr, "UNIT_TEST", daCfg.DiameterAgentCfg().OriginRealm, daCfg.DiameterAgentCfg().VendorId,
|
||||
daCfg.DiameterAgentCfg().ProductName, utils.DIAMETER_FIRMWARE_REVISION, daCfg.DiameterAgentCfg().DebitInterval, false)
|
||||
@@ -306,10 +306,10 @@ func TestDmtAgentSendCCRUpdate(t *testing.T) {
|
||||
// cgr-console 'cost Category="call" Tenant="cgrates.org" Subject="1001" Destination="1004" TimeStart="2015-11-07T08:42:26Z" TimeEnd="2015-11-07T08:57:26Z"'
|
||||
func TestDmtAgentSendCCRUpdate2(t *testing.T) {
|
||||
cdr := &engine.CDR{CGRID: utils.Sha1("testccr1", time.Date(2015, 11, 7, 8, 42, 20, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE,
|
||||
OriginID: "testccr1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED, Direction: "*out",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1004", Supplier: "SUPPL1",
|
||||
OriginID: "testccr1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED,
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1004",
|
||||
SetupTime: time.Date(2015, 11, 7, 8, 42, 20, 0, time.UTC), AnswerTime: time.Date(2015, 11, 7, 8, 42, 26, 0, time.UTC), RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(600) * time.Second, PDD: time.Duration(7) * time.Second, ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
Usage: time.Duration(600) * time.Second, ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
}
|
||||
ccr := storedCdrToCCR(cdr, "UNIT_TEST", daCfg.DiameterAgentCfg().OriginRealm, daCfg.DiameterAgentCfg().VendorId,
|
||||
daCfg.DiameterAgentCfg().ProductName, utils.DIAMETER_FIRMWARE_REVISION, daCfg.DiameterAgentCfg().DebitInterval, false)
|
||||
@@ -341,10 +341,10 @@ func TestDmtAgentSendCCRUpdate2(t *testing.T) {
|
||||
|
||||
func TestDmtAgentSendCCRTerminate(t *testing.T) {
|
||||
cdr := &engine.CDR{CGRID: utils.Sha1("testccr1", time.Date(2015, 11, 7, 8, 42, 20, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE,
|
||||
OriginID: "testccr1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED, Direction: "*out",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1004", Supplier: "SUPPL1",
|
||||
OriginID: "testccr1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED,
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1004",
|
||||
SetupTime: time.Date(2015, 11, 7, 8, 42, 20, 0, time.UTC), AnswerTime: time.Date(2015, 11, 7, 8, 42, 26, 0, time.UTC), RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(610) * time.Second, PDD: time.Duration(7) * time.Second, ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
Usage: time.Duration(610) * time.Second, ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
}
|
||||
ccr := storedCdrToCCR(cdr, "UNIT_TEST", daCfg.DiameterAgentCfg().OriginRealm, daCfg.DiameterAgentCfg().VendorId,
|
||||
daCfg.DiameterAgentCfg().ProductName, utils.DIAMETER_FIRMWARE_REVISION, daCfg.DiameterAgentCfg().DebitInterval, true)
|
||||
@@ -535,10 +535,10 @@ func TestDmtAgentSendCCRSMSWrongAccount(t *testing.T) {
|
||||
// cgr-console 'cost Category="call" Tenant="cgrates.org" Subject="1001" Destination="1004" TimeStart="2015-11-07T08:42:26Z" TimeEnd="2015-11-07T08:47:26Z"'
|
||||
func TestDmtAgentSendCCRInitWrongAccount(t *testing.T) {
|
||||
cdr := &engine.CDR{CGRID: utils.Sha1("testccr4", time.Date(2015, 11, 7, 8, 42, 20, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE,
|
||||
OriginID: "testccr4", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED, Direction: "*out",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "non_existent", Subject: "non_existent", Destination: "1004", Supplier: "SUPPL1",
|
||||
OriginID: "testccr4", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED,
|
||||
Tenant: "cgrates.org", Category: "call", Account: "non_existent", Subject: "non_existent", Destination: "1004",
|
||||
SetupTime: time.Date(2015, 11, 7, 8, 42, 20, 0, time.UTC), AnswerTime: time.Date(2015, 11, 7, 8, 42, 26, 0, time.UTC), RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(0) * time.Second, PDD: time.Duration(7) * time.Second, ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
Usage: time.Duration(0) * time.Second, ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
}
|
||||
ccr := storedCdrToCCR(cdr, "UNIT_TEST", daCfg.DiameterAgentCfg().OriginRealm, daCfg.DiameterAgentCfg().VendorId,
|
||||
daCfg.DiameterAgentCfg().ProductName, utils.DIAMETER_FIRMWARE_REVISION, daCfg.DiameterAgentCfg().DebitInterval, false)
|
||||
|
||||
@@ -1384,7 +1384,7 @@ func TestApierITGetCdrs(t *testing.T) {
|
||||
func TestApierITProcessCdr(t *testing.T) {
|
||||
var reply string
|
||||
cdr := engine.CDR{CGRID: utils.Sha1("dsafdsaf", time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE, OriginID: "dsafdsaf",
|
||||
OriginHost: "192.168.1.1", Source: "test", RequestType: utils.META_RATED, Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001",
|
||||
OriginHost: "192.168.1.1", Source: "test", RequestType: utils.META_RATED, Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001",
|
||||
Destination: "1002",
|
||||
SetupTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), AnswerTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
|
||||
@@ -98,28 +98,28 @@ func TestCDRStatsitPostCdrs(t *testing.T) {
|
||||
storedCdrs := []*engine.CDR{
|
||||
&engine.CDR{CGRID: utils.Sha1("dsafdsafa", time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE, OriginID: "dsafdsafa",
|
||||
OriginHost: "192.168.1.1", Source: "test",
|
||||
RequestType: utils.META_RATED, Direction: "*out", Tenant: "cgrates.org",
|
||||
RequestType: utils.META_RATED, Tenant: "cgrates.org",
|
||||
Category: "call", Account: "1001", Subject: "1001", Destination: "+4986517174963", SetupTime: time.Now(),
|
||||
AnswerTime: time.Now(), RunID: utils.DEFAULT_RUNID, Usage: time.Duration(10) * time.Second,
|
||||
ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
},
|
||||
&engine.CDR{CGRID: utils.Sha1("dsafdsafb", time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE, OriginID: "dsafdsafb",
|
||||
OriginHost: "192.168.1.1", Source: "test",
|
||||
RequestType: utils.META_RATED, Direction: "*out", Tenant: "cgrates.org",
|
||||
RequestType: utils.META_RATED, Tenant: "cgrates.org",
|
||||
Category: "call", Account: "1001", Subject: "1001", Destination: "+4986517174963", SetupTime: time.Now(),
|
||||
AnswerTime: time.Now(), RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(5) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
},
|
||||
&engine.CDR{CGRID: utils.Sha1("dsafdsafc", time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE, OriginID: "dsafdsafc",
|
||||
OriginHost: "192.168.1.1", Source: "test",
|
||||
RequestType: utils.META_RATED, Direction: "*out", Tenant: "cgrates.org",
|
||||
RequestType: utils.META_RATED, Tenant: "cgrates.org",
|
||||
Category: "call", Account: "1001", Subject: "1001", Destination: "+4986517174963", SetupTime: time.Now(), AnswerTime: time.Now(),
|
||||
RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(30) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
},
|
||||
&engine.CDR{CGRID: utils.Sha1("dsafdsafd", time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE, OriginID: "dsafdsafd",
|
||||
OriginHost: "192.168.1.1", Source: "test",
|
||||
RequestType: utils.META_RATED, Direction: "*out", Tenant: "cgrates.org",
|
||||
RequestType: utils.META_RATED, Tenant: "cgrates.org",
|
||||
Category: "call", Account: "1001", Subject: "1001", Destination: "+4986517174963", SetupTime: time.Now(), AnswerTime: time.Time{},
|
||||
RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(0) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
|
||||
@@ -117,7 +117,7 @@ func testV2CDRsInjectUnratedCdr(t *testing.T) {
|
||||
}
|
||||
strCdr1 := &engine.CDR{CGRID: utils.Sha1("bbb1", time.Date(2015, 11, 21, 10, 47, 24, 0, time.UTC).String()), RunID: utils.MetaRaw,
|
||||
ToR: utils.VOICE, OriginID: "bbb1", OriginHost: "192.168.1.1", Source: "TestV2CdrsMongoInjectUnratedCdr", RequestType: utils.META_RATED,
|
||||
Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1002",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1002",
|
||||
SetupTime: time.Date(2015, 11, 21, 10, 47, 24, 0, time.UTC), AnswerTime: time.Date(2015, 11, 21, 10, 47, 26, 0, time.UTC),
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
Cost: -1}
|
||||
@@ -144,7 +144,7 @@ func testV2CDRsProcessCdrRated(t *testing.T) {
|
||||
cdr := &engine.CDR{
|
||||
CGRID: utils.Sha1("dsafdsaf", time.Date(2015, 12, 13, 18, 15, 26, 0, time.UTC).String()), RunID: utils.DEFAULT_RUNID,
|
||||
OrderID: 123, ToR: utils.VOICE, OriginID: "dsafdsaf",
|
||||
OriginHost: "192.168.1.1", Source: "TestV2CdrsMongoProcessCdrRated", RequestType: utils.META_RATED, Direction: "*out", Tenant: "cgrates.org", Category: "call",
|
||||
OriginHost: "192.168.1.1", Source: "TestV2CdrsMongoProcessCdrRated", RequestType: utils.META_RATED, Tenant: "cgrates.org", Category: "call",
|
||||
Account: "1001", Subject: "1001", Destination: "1002",
|
||||
SetupTime: time.Date(2015, 12, 13, 18, 15, 26, 0, time.UTC), AnswerTime: time.Date(2015, 12, 13, 18, 15, 26, 0, time.UTC),
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
@@ -162,7 +162,7 @@ func testV2CDRsProcessCdrRaw(t *testing.T) {
|
||||
cdr := &engine.CDR{
|
||||
CGRID: utils.Sha1("abcdeftg", time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String()), OrderID: 123, RunID: utils.MetaRaw,
|
||||
ToR: utils.VOICE, OriginID: "abcdeftg",
|
||||
OriginHost: "192.168.1.1", Source: "TestV2CdrsMongoProcessCdrRaw", RequestType: utils.META_RATED, Direction: "*out", Tenant: "cgrates.org", Category: "call",
|
||||
OriginHost: "192.168.1.1", Source: "TestV2CdrsMongoProcessCdrRaw", RequestType: utils.META_RATED, Tenant: "cgrates.org", Category: "call",
|
||||
Account: "1002", Subject: "1002", Destination: "1002",
|
||||
SetupTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), AnswerTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC),
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
@@ -229,19 +229,19 @@ func testV2CDRsProcessPrepaidCdr(t *testing.T) {
|
||||
var reply string
|
||||
cdrs := []*engine.CDR{
|
||||
&engine.CDR{CGRID: utils.Sha1("dsafdsaf2", time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE, OriginID: "dsafdsaf",
|
||||
OriginHost: "192.168.1.1", Source: "TestV2CdrsMongoProcessPrepaidCdr1", RequestType: utils.META_PREPAID, Direction: "*out", Tenant: "cgrates.org",
|
||||
OriginHost: "192.168.1.1", Source: "TestV2CdrsMongoProcessPrepaidCdr1", RequestType: utils.META_PREPAID, Tenant: "cgrates.org",
|
||||
Category: "call", Account: "1001", Subject: "1001", Destination: "1002",
|
||||
SetupTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), AnswerTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01, Rated: true,
|
||||
},
|
||||
&engine.CDR{CGRID: utils.Sha1("abcdeftg2", time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE, OriginID: "dsafdsaf",
|
||||
OriginHost: "192.168.1.1", Source: "TestV2CdrsMongoProcessPrepaidCdr2", RequestType: utils.META_PREPAID, Direction: "*out", Tenant: "cgrates.org",
|
||||
OriginHost: "192.168.1.1", Source: "TestV2CdrsMongoProcessPrepaidCdr2", RequestType: utils.META_PREPAID, Tenant: "cgrates.org",
|
||||
Category: "call", Account: "1002", Subject: "1002", Destination: "1002",
|
||||
SetupTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), AnswerTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
},
|
||||
&engine.CDR{CGRID: utils.Sha1("aererfddf2", time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE, OriginID: "dsafdsaf",
|
||||
OriginHost: "192.168.1.1", Source: "TestV2CdrsMongoProcessPrepaidCdr3", RequestType: utils.META_PREPAID, Direction: "*out", Tenant: "cgrates.org",
|
||||
OriginHost: "192.168.1.1", Source: "TestV2CdrsMongoProcessPrepaidCdr3", RequestType: utils.META_PREPAID, Tenant: "cgrates.org",
|
||||
Category: "call", Account: "1003", Subject: "1003", Destination: "1002",
|
||||
SetupTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), AnswerTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC), RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}, Cost: 1.01,
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
DROP TABLE IF EXISTS cdrs;
|
||||
CREATE TABLE cdrs (
|
||||
id int(11) NOT NULL AUTO_INCREMENT,
|
||||
cgrid char(40) NOT NULL,
|
||||
`cgrid` varchar(40) NOT NULL,
|
||||
run_id varchar(64) NOT NULL,
|
||||
origin_host varchar(64) NOT NULL,
|
||||
source varchar(64) NOT NULL,
|
||||
@@ -29,13 +29,13 @@ 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, origin_id)
|
||||
);
|
||||
|
||||
DROP TABLE IF EXISTS sm_costs;
|
||||
CREATE TABLE sm_costs (
|
||||
id int(11) NOT NULL AUTO_INCREMENT,
|
||||
cgrid char(40) NOT NULL,
|
||||
`cgrid` varchar(40) NOT NULL,
|
||||
run_id varchar(64) NOT NULL,
|
||||
origin_host varchar(64) NOT NULL,
|
||||
origin_id varchar(64) NOT NULL,
|
||||
@@ -45,7 +45,7 @@ CREATE TABLE sm_costs (
|
||||
created_at TIMESTAMP NULL,
|
||||
deleted_at TIMESTAMP NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY costid (cgrid, run_id),
|
||||
UNIQUE KEY costid (`cgrid`, run_id),
|
||||
KEY origin_idx (origin_host, origin_id),
|
||||
KEY run_origin_idx (run_id, origin_id),
|
||||
KEY deleted_at_idx (deleted_at)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
DROP TABLE IF EXISTS cdrs;
|
||||
CREATE TABLE cdrs (
|
||||
id SERIAL PRIMARY KEY,
|
||||
cgrid CHAR(40) NOT NULL,
|
||||
"cgrid" VARCHAR(40) NOT NULL,
|
||||
run_id VARCHAR(64) NOT NULL,
|
||||
origin_host VARCHAR(64) NOT NULL,
|
||||
source VARCHAR(64) NOT NULL,
|
||||
@@ -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, origin_id)
|
||||
);
|
||||
;
|
||||
DROP INDEX IF EXISTS deleted_at_cp_idx;
|
||||
@@ -38,7 +38,7 @@ CREATE INDEX deleted_at_cp_idx ON cdrs (deleted_at);
|
||||
DROP TABLE IF EXISTS sm_costs;
|
||||
CREATE TABLE sm_costs (
|
||||
id SERIAL PRIMARY KEY,
|
||||
cgrid CHAR(40) NOT NULL,
|
||||
"cgrid" VARCHAR(40) NOT NULL,
|
||||
run_id VARCHAR(64) NOT NULL,
|
||||
origin_host VARCHAR(64) NOT NULL,
|
||||
origin_id VARCHAR(64) NOT NULL,
|
||||
@@ -47,14 +47,13 @@ CREATE TABLE sm_costs (
|
||||
cost_details jsonb,
|
||||
created_at TIMESTAMP WITH TIME ZONE,
|
||||
deleted_at TIMESTAMP WITH TIME ZONE NULL,
|
||||
UNIQUE (cgrid, run_id)
|
||||
UNIQUE ("cgrid", run_id)
|
||||
);
|
||||
DROP INDEX IF EXISTS cgrid_smcost_idx;
|
||||
CREATE INDEX cgrid_smcost_idx ON sm_costs (cgrid, run_id);
|
||||
CREATE INDEX cgrid_smcost_idx ON sm_costs ("cgrid", run_id);
|
||||
DROP INDEX IF EXISTS origin_smcost_idx;
|
||||
CREATE INDEX origin_smcost_idx ON sm_costs (origin_host, origin_id);
|
||||
DROP INDEX IF EXISTS run_origin_smcost_idx;
|
||||
CREATE INDEX run_origin_smcost_idx ON sm_costs (run_id, origin_id);
|
||||
DROP INDEX IF EXISTS deleted_at_smcost_idx;
|
||||
CREATE INDEX deleted_at_smcost_idx ON sm_costs (deleted_at);
|
||||
|
||||
|
||||
@@ -761,7 +761,7 @@ func (cdr *CDR) AsExportMap(exportFields []*config.CfgCdrField, httpSkipTlsCheck
|
||||
// AsCDRsTBL converts the CDR into the format used for SQL storage
|
||||
func (cdr *CDR) AsCDRsql() (cdrSql *CDRsql) {
|
||||
cdrSql = new(CDRsql)
|
||||
cdrSql.CGRID = cdr.CGRID
|
||||
cdrSql.Cgrid = cdr.CGRID
|
||||
cdrSql.RunID = cdr.RunID
|
||||
cdrSql.OriginHost = cdr.OriginHost
|
||||
cdrSql.Source = cdr.Source
|
||||
@@ -788,7 +788,7 @@ func (cdr *CDR) AsCDRsql() (cdrSql *CDRsql) {
|
||||
// NewCDRFromSQL converts the CDRsql into CDR
|
||||
func NewCDRFromSQL(cdrSql *CDRsql) (cdr *CDR, err error) {
|
||||
cdr = new(CDR)
|
||||
cdr.CGRID = cdrSql.CGRID
|
||||
cdr.CGRID = cdrSql.Cgrid
|
||||
cdr.RunID = cdrSql.RunID
|
||||
cdr.OriginHost = cdrSql.OriginHost
|
||||
cdr.Source = cdrSql.Source
|
||||
|
||||
@@ -36,7 +36,7 @@ func TestHttpJsonPost(t *testing.T) {
|
||||
|
||||
cdrOut := &ExternalCDR{CGRID: utils.Sha1("dsafdsaf", time.Date(2013, 11, 7, 8, 42, 20, 0, time.UTC).String()), OrderID: 123, ToR: utils.VOICE, OriginID: "dsafdsaf",
|
||||
OriginHost: "192.168.1.1",
|
||||
Source: utils.UNIT_TEST, RequestType: utils.META_RATED, Direction: "*out", Tenant: "cgrates.org",
|
||||
Source: utils.UNIT_TEST, RequestType: utils.META_RATED, Tenant: "cgrates.org",
|
||||
Category: "call", Account: "account1", Subject: "tgooiscs0014", Destination: "1002",
|
||||
SetupTime: time.Date(2013, 11, 7, 8, 42, 20, 0, time.UTC).String(), AnswerTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String(),
|
||||
RunID: utils.DEFAULT_RUNID,
|
||||
|
||||
@@ -464,7 +464,7 @@ type TpFilter struct {
|
||||
|
||||
type CDRsql struct {
|
||||
ID int64
|
||||
CGRID string
|
||||
Cgrid string
|
||||
RunID string
|
||||
OriginHost string
|
||||
Source string
|
||||
|
||||
@@ -90,28 +90,24 @@ func testSetCDR(cfg *config.CGRConfig) error {
|
||||
return err
|
||||
}
|
||||
rawCDR := &CDR{
|
||||
CGRID: utils.Sha1("testevent1", time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.MetaRaw,
|
||||
OrderID: time.Now().UnixNano(),
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testSetCDRs",
|
||||
OriginID: "testevent1",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1004",
|
||||
Subject: "1004",
|
||||
Destination: "1007",
|
||||
SetupTime: time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC),
|
||||
PDD: time.Duration(20) * time.Millisecond,
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(35) * time.Second,
|
||||
Supplier: "SUPPLIER1",
|
||||
DisconnectCause: "NORMAL_DISCONNECT",
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
Cost: -1,
|
||||
CGRID: utils.Sha1("testevent1", time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.MetaRaw,
|
||||
OrderID: time.Now().UnixNano(),
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testSetCDRs",
|
||||
OriginID: "testevent1",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1004",
|
||||
Subject: "1004",
|
||||
Destination: "1007",
|
||||
SetupTime: time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(35) * time.Second,
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
Cost: -1,
|
||||
}
|
||||
if err := cdrStorage.SetCDR(rawCDR, false); err != nil {
|
||||
return fmt.Errorf("rawCDR: %+v, SetCDR err: %s", rawCDR, err.Error())
|
||||
@@ -122,28 +118,24 @@ func testSetCDR(cfg *config.CGRConfig) error {
|
||||
return fmt.Errorf("rawCDR %+v, Unexpected number of CDRs returned: %d", rawCDR, len(cdrs))
|
||||
}
|
||||
ratedCDR := &CDR{
|
||||
CGRID: utils.Sha1("testevent1", time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testSetCDRs",
|
||||
OriginID: "testevent1",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1004",
|
||||
Subject: "1004",
|
||||
Destination: "1007",
|
||||
SetupTime: time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC),
|
||||
PDD: time.Duration(20) * time.Millisecond,
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(35) * time.Second,
|
||||
Supplier: "SUPPLIER1",
|
||||
DisconnectCause: "NORMAL_DISCONNECT",
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
CostSource: "testSetCDRs",
|
||||
Cost: 0.17,
|
||||
CGRID: utils.Sha1("testevent1", time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testSetCDRs",
|
||||
OriginID: "testevent1",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1004",
|
||||
Subject: "1004",
|
||||
Destination: "1007",
|
||||
SetupTime: time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(35) * time.Second,
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
CostSource: "testSetCDRs",
|
||||
Cost: 0.17,
|
||||
}
|
||||
if err := cdrStorage.SetCDR(ratedCDR, false); err != nil {
|
||||
return fmt.Errorf("ratedCDR: %+v, SetCDR err: %s", ratedCDR, err.Error())
|
||||
@@ -253,245 +245,205 @@ func testGetCDRs(cfg *config.CGRConfig) error {
|
||||
}
|
||||
cdrs := []*CDR{
|
||||
&CDR{
|
||||
CGRID: utils.Sha1("testevent1", time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.MetaRaw,
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent1",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1001",
|
||||
Subject: "1001",
|
||||
Destination: "1002",
|
||||
SetupTime: time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC),
|
||||
PDD: time.Duration(20) * time.Millisecond,
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(35) * time.Second,
|
||||
Supplier: "SUPPLIER1",
|
||||
DisconnectCause: "NORMAL_DISCONNECT",
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
CostSource: "",
|
||||
Cost: -1,
|
||||
CGRID: utils.Sha1("testevent1", time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.MetaRaw,
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent1",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1001",
|
||||
Subject: "1001",
|
||||
Destination: "1002",
|
||||
SetupTime: time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(35) * time.Second,
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
CostSource: "",
|
||||
Cost: -1,
|
||||
},
|
||||
&CDR{
|
||||
CGRID: utils.Sha1("testevent1", time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent1",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1001",
|
||||
Subject: "1001",
|
||||
Destination: "1002",
|
||||
SetupTime: time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC),
|
||||
PDD: time.Duration(20) * time.Millisecond,
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(35) * time.Second,
|
||||
Supplier: "SUPPLIER1",
|
||||
DisconnectCause: "NORMAL_DISCONNECT",
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
CostSource: "testGetCDRs",
|
||||
Cost: 0.17,
|
||||
CGRID: utils.Sha1("testevent1", time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent1",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1001",
|
||||
Subject: "1001",
|
||||
Destination: "1002",
|
||||
SetupTime: time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(35) * time.Second,
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
CostSource: "testGetCDRs",
|
||||
Cost: 0.17,
|
||||
},
|
||||
&CDR{
|
||||
CGRID: utils.Sha1("testevent1", time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: "run2",
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent1",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_RATED,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call_derived",
|
||||
Account: "1001",
|
||||
Subject: "1002",
|
||||
Destination: "1002",
|
||||
SetupTime: time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC),
|
||||
PDD: time.Duration(20) * time.Millisecond,
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(35) * time.Second,
|
||||
Supplier: "SUPPLIER1",
|
||||
DisconnectCause: "NORMAL_DISCONNECT",
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
CostSource: "testGetCDRs",
|
||||
Cost: 0.17,
|
||||
CGRID: utils.Sha1("testevent1", time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: "run2",
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent1",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_RATED,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call_derived",
|
||||
Account: "1001",
|
||||
Subject: "1002",
|
||||
Destination: "1002",
|
||||
SetupTime: time.Date(2015, 12, 12, 14, 52, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(35) * time.Second,
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
CostSource: "testGetCDRs",
|
||||
Cost: 0.17,
|
||||
},
|
||||
&CDR{
|
||||
CGRID: utils.Sha1("testevent2", time.Date(2015, 12, 29, 12, 58, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "192.168.1.12",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent2",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_POSTPAID,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "itsyscom.com",
|
||||
Category: "call",
|
||||
Account: "1004",
|
||||
Subject: "1004",
|
||||
Destination: "1007",
|
||||
SetupTime: time.Date(2015, 12, 29, 12, 58, 0, 0, time.UTC),
|
||||
PDD: time.Duration(10) * time.Millisecond,
|
||||
AnswerTime: time.Date(2015, 12, 29, 12, 59, 0, 0, time.UTC),
|
||||
Usage: time.Duration(0) * time.Second,
|
||||
Supplier: "SUPPLIER1",
|
||||
DisconnectCause: "NO_ANSWER",
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
CostSource: "rater1",
|
||||
Cost: 0,
|
||||
CGRID: utils.Sha1("testevent2", time.Date(2015, 12, 29, 12, 58, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "192.168.1.12",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent2",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_POSTPAID,
|
||||
Tenant: "itsyscom.com",
|
||||
Category: "call",
|
||||
Account: "1004",
|
||||
Subject: "1004",
|
||||
Destination: "1007",
|
||||
SetupTime: time.Date(2015, 12, 29, 12, 58, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 29, 12, 59, 0, 0, time.UTC),
|
||||
Usage: time.Duration(0) * time.Second,
|
||||
ExtraFields: map[string]string{"ExtraHeader1": "ExtraVal1", "ExtraHeader2": "ExtraVal2"},
|
||||
CostSource: "rater1",
|
||||
Cost: 0,
|
||||
},
|
||||
&CDR{
|
||||
CGRID: utils.Sha1("testevent3", time.Date(2015, 12, 28, 12, 58, 0, 0, time.UTC).String()),
|
||||
RunID: utils.MetaRaw,
|
||||
OriginHost: "192.168.1.13",
|
||||
Source: "testGetCDRs3",
|
||||
OriginID: "testevent3",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PSEUDOPREPAID,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1002",
|
||||
Subject: "1002",
|
||||
Destination: "1003",
|
||||
SetupTime: time.Date(2015, 12, 28, 12, 58, 0, 0, time.UTC),
|
||||
PDD: time.Duration(20) * time.Millisecond,
|
||||
AnswerTime: time.Date(2015, 12, 28, 12, 58, 30, 0, time.UTC),
|
||||
Usage: time.Duration(125) * time.Second,
|
||||
Supplier: "SUPPLIER2",
|
||||
DisconnectCause: "NORMAL_DISCONNECT",
|
||||
ExtraFields: map[string]string{},
|
||||
CostSource: "",
|
||||
Cost: -1,
|
||||
CGRID: utils.Sha1("testevent3", time.Date(2015, 12, 28, 12, 58, 0, 0, time.UTC).String()),
|
||||
RunID: utils.MetaRaw,
|
||||
OriginHost: "192.168.1.13",
|
||||
Source: "testGetCDRs3",
|
||||
OriginID: "testevent3",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PSEUDOPREPAID,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1002",
|
||||
Subject: "1002",
|
||||
Destination: "1003",
|
||||
SetupTime: time.Date(2015, 12, 28, 12, 58, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 28, 12, 58, 30, 0, time.UTC),
|
||||
Usage: time.Duration(125) * time.Second,
|
||||
ExtraFields: map[string]string{},
|
||||
CostSource: "",
|
||||
Cost: -1,
|
||||
},
|
||||
&CDR{
|
||||
CGRID: utils.Sha1("testevent3", time.Date(2015, 12, 28, 12, 58, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "192.168.1.13",
|
||||
Source: "testGetCDRs3",
|
||||
OriginID: "testevent3",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_RATED,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1002",
|
||||
Subject: "1002",
|
||||
Destination: "1003",
|
||||
SetupTime: time.Date(2015, 12, 28, 12, 58, 0, 0, time.UTC),
|
||||
PDD: time.Duration(20) * time.Millisecond,
|
||||
AnswerTime: time.Date(2015, 12, 28, 12, 58, 30, 0, time.UTC),
|
||||
Usage: time.Duration(125) * time.Second,
|
||||
Supplier: "SUPPLIER2",
|
||||
DisconnectCause: "NORMAL_DISCONNECT",
|
||||
ExtraFields: map[string]string{},
|
||||
CostSource: "testSetCDRs",
|
||||
Cost: -1,
|
||||
ExtraInfo: "AccountNotFound",
|
||||
CGRID: utils.Sha1("testevent3", time.Date(2015, 12, 28, 12, 58, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "192.168.1.13",
|
||||
Source: "testGetCDRs3",
|
||||
OriginID: "testevent3",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_RATED,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1002",
|
||||
Subject: "1002",
|
||||
Destination: "1003",
|
||||
SetupTime: time.Date(2015, 12, 28, 12, 58, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 28, 12, 58, 30, 0, time.UTC),
|
||||
Usage: time.Duration(125) * time.Second,
|
||||
ExtraFields: map[string]string{},
|
||||
CostSource: "testSetCDRs",
|
||||
Cost: -1,
|
||||
ExtraInfo: "AccountNotFound",
|
||||
},
|
||||
&CDR{
|
||||
CGRID: utils.Sha1("testevent4", time.Date(2015, 12, 14, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.MetaRaw,
|
||||
OriginHost: "192.168.1.14",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent4",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PSEUDOPREPAID,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "itsyscom.com",
|
||||
Category: "call",
|
||||
Account: "1003",
|
||||
Subject: "1003",
|
||||
Destination: "1007",
|
||||
SetupTime: time.Date(2015, 12, 14, 14, 52, 0, 0, time.UTC),
|
||||
PDD: time.Duration(2) * time.Second,
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(64) * time.Second,
|
||||
Supplier: "SUPPLIER1",
|
||||
DisconnectCause: "NORMAL_DISCONNECT",
|
||||
ExtraFields: map[string]string{"ExtraHeader3": "ExtraVal3"},
|
||||
CostSource: "",
|
||||
Cost: -1,
|
||||
CGRID: utils.Sha1("testevent4", time.Date(2015, 12, 14, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.MetaRaw,
|
||||
OriginHost: "192.168.1.14",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent4",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_PSEUDOPREPAID,
|
||||
Tenant: "itsyscom.com",
|
||||
Category: "call",
|
||||
Account: "1003",
|
||||
Subject: "1003",
|
||||
Destination: "1007",
|
||||
SetupTime: time.Date(2015, 12, 14, 14, 52, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(64) * time.Second,
|
||||
ExtraFields: map[string]string{"ExtraHeader3": "ExtraVal3"},
|
||||
CostSource: "",
|
||||
Cost: -1,
|
||||
},
|
||||
&CDR{
|
||||
CGRID: utils.Sha1("testevent4", time.Date(2015, 12, 14, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "192.168.1.14",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent4",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_RATED,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "itsyscom.com",
|
||||
Category: "call",
|
||||
Account: "1003",
|
||||
Subject: "1003",
|
||||
Destination: "1007",
|
||||
SetupTime: time.Date(2015, 12, 14, 14, 52, 0, 0, time.UTC),
|
||||
PDD: time.Duration(2) * time.Second,
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(64) * time.Second,
|
||||
Supplier: "SUPPLIER1",
|
||||
DisconnectCause: "NORMAL_DISCONNECT",
|
||||
ExtraFields: map[string]string{"ExtraHeader3": "ExtraVal3"},
|
||||
CostSource: "testSetCDRs",
|
||||
Cost: 1.205,
|
||||
CGRID: utils.Sha1("testevent4", time.Date(2015, 12, 14, 14, 52, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "192.168.1.14",
|
||||
Source: "testGetCDRs",
|
||||
OriginID: "testevent4",
|
||||
ToR: utils.VOICE,
|
||||
RequestType: utils.META_RATED,
|
||||
Tenant: "itsyscom.com",
|
||||
Category: "call",
|
||||
Account: "1003",
|
||||
Subject: "1003",
|
||||
Destination: "1007",
|
||||
SetupTime: time.Date(2015, 12, 14, 14, 52, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 12, 14, 52, 20, 0, time.UTC),
|
||||
Usage: time.Duration(64) * time.Second,
|
||||
ExtraFields: map[string]string{"ExtraHeader3": "ExtraVal3"},
|
||||
CostSource: "testSetCDRs",
|
||||
Cost: 1.205,
|
||||
},
|
||||
&CDR{
|
||||
CGRID: utils.Sha1("testevent5", time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC).String()),
|
||||
RunID: utils.MetaRaw,
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testGetCDRs5",
|
||||
OriginID: "testevent5",
|
||||
ToR: utils.SMS,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "sms",
|
||||
Account: "1001",
|
||||
Subject: "1001",
|
||||
Destination: "1002",
|
||||
SetupTime: time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC),
|
||||
PDD: time.Duration(0),
|
||||
AnswerTime: time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC),
|
||||
Usage: time.Duration(1) * time.Second,
|
||||
Supplier: "SUPPLIER3",
|
||||
DisconnectCause: "SENT_OK",
|
||||
ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
CostSource: "",
|
||||
Cost: -1,
|
||||
CGRID: utils.Sha1("testevent5", time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC).String()),
|
||||
RunID: utils.MetaRaw,
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testGetCDRs5",
|
||||
OriginID: "testevent5",
|
||||
ToR: utils.SMS,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "sms",
|
||||
Account: "1001",
|
||||
Subject: "1001",
|
||||
Destination: "1002",
|
||||
SetupTime: time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC),
|
||||
Usage: time.Duration(1) * time.Second,
|
||||
ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"},
|
||||
CostSource: "",
|
||||
Cost: -1,
|
||||
},
|
||||
&CDR{
|
||||
CGRID: utils.Sha1("testevent5", time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testGetCDRs5",
|
||||
OriginID: "testevent5",
|
||||
ToR: utils.SMS,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "sms",
|
||||
Account: "1001",
|
||||
Subject: "1001",
|
||||
Destination: "1002",
|
||||
SetupTime: time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC),
|
||||
PDD: time.Duration(0),
|
||||
AnswerTime: time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC),
|
||||
Usage: time.Duration(1) * time.Second,
|
||||
Supplier: "SUPPLIER3",
|
||||
DisconnectCause: "SENT_OK",
|
||||
ExtraFields: map[string]string{"Service-Context-Id": "voice2@huawei.com"},
|
||||
CostSource: "rater",
|
||||
Cost: 0.15,
|
||||
CGRID: utils.Sha1("testevent5", time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC).String()),
|
||||
RunID: utils.META_DEFAULT,
|
||||
OriginHost: "127.0.0.1",
|
||||
Source: "testGetCDRs5",
|
||||
OriginID: "testevent5",
|
||||
ToR: utils.SMS,
|
||||
RequestType: utils.META_PREPAID,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "sms",
|
||||
Account: "1001",
|
||||
Subject: "1001",
|
||||
Destination: "1002",
|
||||
SetupTime: time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC),
|
||||
AnswerTime: time.Date(2015, 12, 15, 18, 22, 0, 0, time.UTC),
|
||||
Usage: time.Duration(1) * time.Second,
|
||||
ExtraFields: map[string]string{"Service-Context-Id": "voice2@huawei.com"},
|
||||
CostSource: "rater",
|
||||
Cost: 0.15,
|
||||
},
|
||||
}
|
||||
// Store all CDRs
|
||||
|
||||
@@ -762,7 +762,7 @@ func (self *SQLStorage) SetCDR(cdr *CDR, allowUpdate bool) error {
|
||||
}
|
||||
tx = self.db.Begin()
|
||||
cdrSql.UpdatedAt = time.Now()
|
||||
updated := tx.Model(&CDRsql{}).Where(&CDRsql{CGRID: cdr.CGRID, RunID: cdr.RunID, OriginID: cdr.OriginID}).Updates(cdrSql)
|
||||
updated := tx.Model(&CDRsql{}).Where(&CDRsql{Cgrid: cdr.CGRID, RunID: cdr.RunID, OriginID: cdr.OriginID}).Updates(cdrSql)
|
||||
if updated.Error != nil {
|
||||
tx.Rollback()
|
||||
return updated.Error
|
||||
|
||||
@@ -1677,9 +1677,6 @@ func testStorDBitCRUDCDRs(t *testing.T) {
|
||||
if !(reflect.DeepEqual(snd[0].RequestType, rcv[0].RequestType) || reflect.DeepEqual(snd[0].RequestType, rcv[1].RequestType)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].RequestType, rcv[0].RequestType, rcv[1].RequestType)
|
||||
}
|
||||
if !(reflect.DeepEqual(snd[0].Direction, rcv[0].Direction) || reflect.DeepEqual(snd[0].Direction, rcv[1].Direction)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].Direction, rcv[0].Direction, rcv[1].Direction)
|
||||
}
|
||||
if !(reflect.DeepEqual(snd[0].Tenant, rcv[0].Tenant) || reflect.DeepEqual(snd[0].Tenant, rcv[1].Tenant)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].Tenant, rcv[0].Tenant, rcv[1].Tenant)
|
||||
}
|
||||
@@ -1698,21 +1695,12 @@ func testStorDBitCRUDCDRs(t *testing.T) {
|
||||
if !(snd[0].SetupTime.Equal(rcv[0].SetupTime) || snd[0].SetupTime.Equal(rcv[1].SetupTime)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].SetupTime, rcv[0].SetupTime, rcv[1].SetupTime)
|
||||
}
|
||||
if !(reflect.DeepEqual(snd[0].PDD, rcv[0].PDD) || reflect.DeepEqual(snd[0].PDD, rcv[1].PDD)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].PDD, rcv[0].PDD, rcv[1].PDD)
|
||||
}
|
||||
if !(snd[0].AnswerTime.Equal(rcv[0].AnswerTime) || snd[0].AnswerTime.Equal(rcv[1].AnswerTime)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].AnswerTime, rcv[0].AnswerTime, rcv[1].AnswerTime)
|
||||
}
|
||||
if !(reflect.DeepEqual(snd[0].Usage, rcv[0].Usage) || reflect.DeepEqual(snd[0].Usage, rcv[1].Usage)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].Usage, rcv[0].Usage, rcv[1].Usage)
|
||||
}
|
||||
if !(reflect.DeepEqual(snd[0].Supplier, rcv[0].Supplier) || reflect.DeepEqual(snd[0].Supplier, rcv[1].Supplier)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].Supplier, rcv[0].Supplier, rcv[1].Supplier)
|
||||
}
|
||||
if !(reflect.DeepEqual(snd[0].DisconnectCause, rcv[0].DisconnectCause) || reflect.DeepEqual(snd[0].DisconnectCause, rcv[1].DisconnectCause)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].DisconnectCause, rcv[0].DisconnectCause, rcv[1].DisconnectCause)
|
||||
}
|
||||
if !(reflect.DeepEqual(snd[0].ExtraFields, rcv[0].ExtraFields) || reflect.DeepEqual(snd[0].ExtraFields, rcv[1].ExtraFields)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].ExtraFields, rcv[0].ExtraFields, rcv[1].ExtraFields)
|
||||
}
|
||||
@@ -1725,9 +1713,6 @@ func testStorDBitCRUDCDRs(t *testing.T) {
|
||||
if !(reflect.DeepEqual(snd[0].CostDetails, rcv[0].CostDetails) || reflect.DeepEqual(snd[0].CostDetails, rcv[1].CostDetails)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].CostDetails, rcv[0].CostDetails, rcv[1].CostDetails)
|
||||
}
|
||||
if !(reflect.DeepEqual(snd[0].AccountSummary, rcv[0].AccountSummary) || reflect.DeepEqual(snd[0].AccountSummary, rcv[1].AccountSummary)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].AccountSummary, rcv[0].AccountSummary, rcv[1].AccountSummary)
|
||||
}
|
||||
if !(reflect.DeepEqual(snd[0].ExtraInfo, rcv[0].ExtraInfo) || reflect.DeepEqual(snd[0].ExtraInfo, rcv[1].ExtraInfo)) {
|
||||
t.Errorf("Expecting: %+v, received: %+v || %+v", snd[0].ExtraInfo, rcv[0].ExtraInfo, rcv[1].ExtraInfo)
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ func TestCDRsOnExpHttpCdrReplication(t *testing.T) {
|
||||
}
|
||||
testCdr1 := &engine.CDR{CGRID: utils.Sha1("httpjsonrpc1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()),
|
||||
ToR: utils.VOICE, OriginID: "httpjsonrpc1", OriginHost: "192.168.1.1", Source: "UNKNOWN", RequestType: utils.META_PSEUDOPREPAID,
|
||||
Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1002",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1002",
|
||||
SetupTime: time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC), AnswerTime: time.Date(2013, 12, 7, 8, 42, 26, 0, time.UTC),
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
RunID: utils.DEFAULT_RUNID, Cost: 1.201, Rated: true}
|
||||
@@ -125,7 +125,6 @@ func TestCDRsOnExpHttpCdrReplication(t *testing.T) {
|
||||
rcvedCdrs[0].ToR != testCdr1.ToR ||
|
||||
rcvedCdrs[0].OriginHost != testCdr1.OriginHost ||
|
||||
rcvedCdrs[0].RequestType != testCdr1.RequestType ||
|
||||
rcvedCdrs[0].Direction != testCdr1.Direction ||
|
||||
rcvedCdrs[0].Tenant != testCdr1.Tenant ||
|
||||
rcvedCdrs[0].Category != testCdr1.Category ||
|
||||
rcvedCdrs[0].Account != testCdr1.Account ||
|
||||
@@ -182,7 +181,7 @@ func TestCDRsOnExpAMQPReplication(t *testing.T) {
|
||||
time.Sleep(time.Duration(5 * time.Second))
|
||||
testCdr := &engine.CDR{CGRID: utils.Sha1("amqpreconnect", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()),
|
||||
ToR: utils.VOICE, OriginID: "amqpreconnect", OriginHost: "192.168.1.1", Source: "UNKNOWN", RequestType: utils.META_PSEUDOPREPAID,
|
||||
Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1002",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1002",
|
||||
SetupTime: time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC), AnswerTime: time.Date(2013, 12, 7, 8, 42, 26, 0, time.UTC),
|
||||
Usage: time.Duration(10) * time.Second, ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
RunID: utils.DEFAULT_RUNID, Cost: 1.201, Rated: true}
|
||||
|
||||
@@ -498,7 +498,6 @@ func TestTutITDerivedMaxSessionTime(t *testing.T) {
|
||||
OriginID: "testevent1",
|
||||
OriginHost: "127.0.0.1",
|
||||
RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1004",
|
||||
@@ -507,7 +506,6 @@ func TestTutITDerivedMaxSessionTime(t *testing.T) {
|
||||
SetupTime: tStart,
|
||||
AnswerTime: tStart,
|
||||
Usage: time.Duration(120) * time.Second,
|
||||
Supplier: "suppl1",
|
||||
Cost: -1,
|
||||
}
|
||||
var maxTime float64
|
||||
@@ -520,7 +518,7 @@ func TestTutITDerivedMaxSessionTime(t *testing.T) {
|
||||
|
||||
// Check MaxUsage
|
||||
func TestTutITMaxUsage(t *testing.T) {
|
||||
setupReq := &engine.UsageRecord{ToR: utils.VOICE, RequestType: utils.META_PREPAID, Direction: utils.OUT, Tenant: "cgrates.org", Category: "call",
|
||||
setupReq := &engine.UsageRecord{ToR: utils.VOICE, RequestType: utils.META_PREPAID, Tenant: "cgrates.org", Category: "call",
|
||||
Account: "1003", Subject: "1003", Destination: "1001",
|
||||
SetupTime: "2014-08-04T13:00:00Z", Usage: "1",
|
||||
}
|
||||
@@ -530,7 +528,7 @@ func TestTutITMaxUsage(t *testing.T) {
|
||||
} else if maxTime != 1 {
|
||||
t.Errorf("Calling ApierV2.MaxUsage got maxTime: %f", maxTime)
|
||||
}
|
||||
setupReq = &engine.UsageRecord{ToR: utils.VOICE, RequestType: utils.META_RATED, Direction: utils.OUT, Tenant: "cgrates.org", Category: "call",
|
||||
setupReq = &engine.UsageRecord{ToR: utils.VOICE, RequestType: utils.META_RATED, Tenant: "cgrates.org", Category: "call",
|
||||
Account: "test_max_usage", Destination: "1001",
|
||||
SetupTime: "2014-08-04T13:00:00Z",
|
||||
}
|
||||
@@ -543,7 +541,7 @@ func TestTutITMaxUsage(t *testing.T) {
|
||||
|
||||
// Check DebitUsage
|
||||
func TestTutITDebitUsage(t *testing.T) {
|
||||
setupReq := &engine.UsageRecord{ToR: utils.VOICE, RequestType: utils.META_PREPAID, Direction: utils.OUT, Tenant: "cgrates.org", Category: "call",
|
||||
setupReq := &engine.UsageRecord{ToR: utils.VOICE, RequestType: utils.META_PREPAID, Tenant: "cgrates.org", Category: "call",
|
||||
Account: "1003", Subject: "1003", Destination: "1001",
|
||||
AnswerTime: "2014-08-04T13:00:00Z", Usage: "1",
|
||||
}
|
||||
@@ -558,10 +556,10 @@ func TestTutITDebitUsage(t *testing.T) {
|
||||
// Test CDR from external sources
|
||||
func TestTutITProcessExternalCdr(t *testing.T) {
|
||||
cdr := &engine.ExternalCDR{ToR: utils.VOICE,
|
||||
OriginID: "testextcdr1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED, Direction: utils.OUT,
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1003", Subject: "1003", Destination: "1001", Supplier: "SUPPL1",
|
||||
OriginID: "testextcdr1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED,
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1003", Subject: "1003", Destination: "1001",
|
||||
SetupTime: "2014-08-04T13:00:00Z", AnswerTime: "2014-08-04T13:00:07Z",
|
||||
Usage: "1", PDD: "7.0", ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
Usage: "1", ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
}
|
||||
var reply string
|
||||
if err := tutLocalRpc.Call("CdrsV1.ProcessExternalCdr", cdr, &reply); err != nil {
|
||||
@@ -574,10 +572,9 @@ func TestTutITProcessExternalCdr(t *testing.T) {
|
||||
// Test CDR involving UserProfile
|
||||
func TestTutITProcessExternalCdrUP(t *testing.T) {
|
||||
cdr := &engine.ExternalCDR{ToR: utils.VOICE,
|
||||
OriginID: "testextcdr2", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, Direction: utils.OUT,
|
||||
RequestType: utils.USERS, Tenant: utils.USERS, Account: utils.USERS, Destination: "1001", Supplier: "SUPPL1",
|
||||
SetupTime: "2014-08-04T13:00:00Z", AnswerTime: "2014-08-04T13:00:07Z",
|
||||
Usage: "2", PDD: "0.2", DisconnectCause: "NORMAL_DISCONNECT",
|
||||
OriginID: "testextcdr2", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST,
|
||||
RequestType: utils.USERS, Tenant: utils.USERS, Account: utils.USERS, Destination: "1001",
|
||||
SetupTime: "2014-08-04T13:00:00Z", AnswerTime: "2014-08-04T13:00:07Z", Usage: "2",
|
||||
ExtraFields: map[string]string{"Cli": "+4986517174964", "fieldextr2": "valextr2", "SysUserName": utils.USERS},
|
||||
}
|
||||
var reply string
|
||||
@@ -589,10 +586,10 @@ func TestTutITProcessExternalCdrUP(t *testing.T) {
|
||||
time.Sleep(time.Duration(*waitRater) * time.Millisecond)
|
||||
eCdr := &engine.ExternalCDR{CGRID: "63a8d2bfeca2cfb790826c3ec461696d6574cfde", OrderID: 2,
|
||||
ToR: utils.VOICE,
|
||||
OriginID: "testextcdr2", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED, Direction: utils.OUT,
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1004", Subject: "1004", Destination: "1001", Supplier: "SUPPL1",
|
||||
SetupTime: time.Date(2014, 8, 4, 13, 0, 0, 0, time.UTC).Local().Format(time.RFC3339), AnswerTime: time.Date(2014, 8, 4, 13, 0, 7, 0, time.UTC).Local().Format(time.RFC3339),
|
||||
Usage: "2", PDD: "0.2", DisconnectCause: "NORMAL_DISCONNECT",
|
||||
OriginID: "testextcdr2", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED,
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1004", Subject: "1004", Destination: "1001",
|
||||
SetupTime: time.Date(2014, 8, 4, 13, 0, 0, 0, time.UTC).Local().Format(time.RFC3339),
|
||||
AnswerTime: time.Date(2014, 8, 4, 13, 0, 7, 0, time.UTC).Local().Format(time.RFC3339), Usage: "2",
|
||||
ExtraFields: map[string]string{"Cli": "+4986517174964", "fieldextr2": "valextr2", "SysUserName": "danb4"},
|
||||
RunID: utils.DEFAULT_RUNID, Cost: 1}
|
||||
var cdrs []*engine.ExternalCDR
|
||||
@@ -629,33 +626,24 @@ func TestTutITProcessExternalCdrUP(t *testing.T) {
|
||||
if cdrs[0].Destination != eCdr.Destination {
|
||||
t.Errorf("Unexpected Destination for CDR: %+v", cdrs[0])
|
||||
}
|
||||
if cdrs[0].Supplier != eCdr.Supplier {
|
||||
t.Errorf("Unexpected Supplier for CDR: %+v", cdrs[0])
|
||||
}
|
||||
if cdrs[0].SetupTime != eCdr.SetupTime {
|
||||
t.Errorf("Unexpected SetupTime for CDR: %+v", cdrs[0])
|
||||
}
|
||||
if cdrs[0].PDD != eCdr.PDD {
|
||||
t.Errorf("Unexpected PDD for CDR: %+v", cdrs[0])
|
||||
}
|
||||
if cdrs[0].AnswerTime != eCdr.AnswerTime {
|
||||
t.Errorf("Unexpected AnswerTime for CDR: %+v", cdrs[0])
|
||||
}
|
||||
if cdrs[0].Usage != eCdr.Usage {
|
||||
t.Errorf("Unexpected Usage for CDR: %+v", cdrs[0])
|
||||
}
|
||||
if cdrs[0].DisconnectCause != eCdr.DisconnectCause {
|
||||
t.Errorf("Unexpected DisconnectCause for CDR: %+v", cdrs[0])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestTutITCostErrors(t *testing.T) {
|
||||
cdr := &engine.ExternalCDR{ToR: utils.VOICE,
|
||||
OriginID: "TestTutIT_1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED, Direction: utils.OUT,
|
||||
Tenant: "cgrates.org", Category: "fake", Account: "2001", Subject: "2001", Destination: "1001", Supplier: "SUPPL1",
|
||||
OriginID: "TestTutIT_1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED,
|
||||
Tenant: "cgrates.org", Category: "fake", Account: "2001", Subject: "2001", Destination: "1001",
|
||||
SetupTime: "2014-08-04T13:00:00Z", AnswerTime: "2014-08-04T13:00:07Z",
|
||||
Usage: "1", PDD: "7.0", ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
Usage: "1", ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
}
|
||||
var reply string
|
||||
if err := tutLocalRpc.Call("CdrsV1.ProcessExternalCdr", cdr, &reply); err != nil {
|
||||
@@ -679,10 +667,10 @@ func TestTutITCostErrors(t *testing.T) {
|
||||
}
|
||||
}
|
||||
cdr2 := &engine.ExternalCDR{ToR: utils.VOICE,
|
||||
OriginID: "TestTutIT_2", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_POSTPAID, Direction: utils.OUT,
|
||||
Tenant: "cgrates.org", Category: "fake", Account: "2002", Subject: "2002", Destination: "1001", Supplier: "SUPPL1",
|
||||
OriginID: "TestTutIT_2", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_POSTPAID,
|
||||
Tenant: "cgrates.org", Category: "fake", Account: "2002", Subject: "2002", Destination: "1001",
|
||||
SetupTime: "2014-08-04T13:00:00Z", AnswerTime: "2014-08-04T13:00:07Z",
|
||||
Usage: "1", PDD: "7.0", ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
Usage: "1", ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
}
|
||||
if err := tutLocalRpc.Call("CdrsV1.ProcessExternalCdr", cdr2, &reply); err != nil {
|
||||
t.Error("Unexpected error: ", err.Error())
|
||||
@@ -704,10 +692,10 @@ func TestTutITCostErrors(t *testing.T) {
|
||||
}
|
||||
}
|
||||
cdr3 := &engine.ExternalCDR{ToR: utils.VOICE,
|
||||
OriginID: "TestTutIT_3", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_POSTPAID, Direction: utils.OUT,
|
||||
Tenant: "cgrates.org", Category: "fake", Account: "1001", Subject: "1001", Destination: "2002", Supplier: "SUPPL1",
|
||||
OriginID: "TestTutIT_3", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_POSTPAID,
|
||||
Tenant: "cgrates.org", Category: "fake", Account: "1001", Subject: "1001", Destination: "2002",
|
||||
SetupTime: "2014-08-04T13:00:00Z", AnswerTime: "2014-08-04T13:00:07Z",
|
||||
Usage: "1", PDD: "7.0", ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
Usage: "1", ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
}
|
||||
if err := tutLocalRpc.Call("CdrsV1.ProcessExternalCdr", cdr3, &reply); err != nil {
|
||||
t.Error("Unexpected error: ", err.Error())
|
||||
@@ -959,15 +947,15 @@ func TestTutITLcrQos(t *testing.T) {
|
||||
// Post some CDRs to influence stats
|
||||
testCdr1 := &engine.CDR{CGRID: utils.Sha1("testcdr1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()),
|
||||
ToR: utils.VOICE, OriginID: "testcdr1", OriginHost: "192.168.1.1", Source: "TEST_QOS_LCR", RequestType: utils.META_RATED,
|
||||
Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1002",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1002",
|
||||
SetupTime: time.Date(2014, 12, 7, 8, 42, 24, 0, time.UTC), AnswerTime: time.Date(2014, 12, 7, 8, 42, 26, 0, time.UTC),
|
||||
Usage: time.Duration(2) * time.Minute, Supplier: "suppl1",
|
||||
Usage: time.Duration(2) * time.Minute,
|
||||
ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}}
|
||||
testCdr2 := &engine.CDR{CGRID: utils.Sha1("testcdr2", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()),
|
||||
ToR: utils.VOICE, OriginID: "testcdr2", OriginHost: "192.168.1.1", Source: "TEST_QOS_LCR", RequestType: utils.META_RATED,
|
||||
Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1002", Subject: "1002", Destination: "1003",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1002", Subject: "1002", Destination: "1003",
|
||||
SetupTime: time.Date(2014, 12, 7, 8, 42, 24, 0, time.UTC), AnswerTime: time.Date(2014, 12, 7, 8, 42, 26, 0, time.UTC),
|
||||
Usage: time.Duration(90) * time.Second, Supplier: "suppl2",
|
||||
Usage: time.Duration(90) * time.Second,
|
||||
ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}}
|
||||
var reply string
|
||||
for _, cdr := range []*engine.CDR{testCdr1, testCdr2} {
|
||||
@@ -998,9 +986,9 @@ func TestTutITLcrQos(t *testing.T) {
|
||||
}
|
||||
testCdr3 := &engine.CDR{CGRID: utils.Sha1("testcdr3", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()),
|
||||
ToR: utils.VOICE, OriginID: "testcdr3", OriginHost: "192.168.1.1", Source: "TEST_QOS_LCR", RequestType: utils.META_RATED,
|
||||
Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1003", Subject: "1003", Destination: "1004",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1003", Subject: "1003", Destination: "1004",
|
||||
SetupTime: time.Date(2014, 12, 7, 8, 42, 24, 0, time.UTC), AnswerTime: time.Date(2014, 12, 7, 8, 42, 26, 0, time.UTC),
|
||||
Usage: time.Duration(180) * time.Second, Supplier: "suppl2"}
|
||||
Usage: time.Duration(180) * time.Second}
|
||||
if err := tutLocalRpc.Call("CdrsV1.ProcessCdr", testCdr3, &reply); err != nil {
|
||||
t.Error("Unexpected error: ", err.Error())
|
||||
} else if reply != utils.OK {
|
||||
@@ -1061,9 +1049,9 @@ func TestTutITLcrQosThreshold(t *testing.T) {
|
||||
}
|
||||
testCdr4 := &engine.CDR{CGRID: utils.Sha1("testcdr4", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()),
|
||||
ToR: utils.VOICE, OriginID: "testcdr4", OriginHost: "192.168.1.1", Source: "TEST_QOS_LCR", RequestType: utils.META_RATED,
|
||||
Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1003", Subject: "1003", Destination: "1004",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1003", Subject: "1003", Destination: "1004",
|
||||
SetupTime: time.Date(2014, 12, 7, 8, 42, 24, 0, time.UTC), AnswerTime: time.Date(2014, 12, 7, 8, 42, 26, 0, time.UTC),
|
||||
Usage: time.Duration(60) * time.Second, Supplier: "suppl2"}
|
||||
Usage: time.Duration(60) * time.Second}
|
||||
var reply string
|
||||
if err := tutLocalRpc.Call("CdrsV1.ProcessCdr", testCdr4, &reply); err != nil { // Should drop ACD under the 2m required by threshold, removing suppl2 from lcr
|
||||
t.Error("Unexpected error: ", err.Error())
|
||||
@@ -1126,9 +1114,9 @@ func TestTutITLcrQosThreshold(t *testing.T) {
|
||||
}
|
||||
testCdr5 := &engine.CDR{CGRID: utils.Sha1("testcdr5", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()),
|
||||
ToR: utils.VOICE, OriginID: "testcdr5", OriginHost: "192.168.1.1", Source: "TEST_QOS_LCR", RequestType: utils.META_RATED,
|
||||
Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1003", Subject: "1003", Destination: "1004",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1003", Subject: "1003", Destination: "1004",
|
||||
SetupTime: time.Date(2014, 12, 7, 8, 42, 24, 0, time.UTC), AnswerTime: time.Date(2014, 12, 7, 8, 42, 26, 0, time.UTC),
|
||||
Usage: time.Duration(1) * time.Second, Supplier: "suppl2"}
|
||||
Usage: time.Duration(1) * time.Second}
|
||||
if err := tutLocalRpc.Call("CdrsV1.ProcessCdr", testCdr5, &reply); err != nil { // Should drop ACD under the 1m required by threshold, removing suppl2 from lcr
|
||||
t.Error("Unexpected error: ", err.Error())
|
||||
} else if reply != utils.OK {
|
||||
@@ -1302,9 +1290,9 @@ func TestTutITCdrStatsAfter(t *testing.T) {
|
||||
func TestTutITPrepaidCDRWithSMCost(t *testing.T) {
|
||||
cdr := &engine.CDR{CGRID: utils.Sha1("testprepaid1", time.Date(2016, 4, 6, 13, 29, 24, 0, time.UTC).String()),
|
||||
ToR: utils.VOICE, OriginID: "testprepaid1", OriginHost: "192.168.1.1", Source: "TEST_PREPAID_CDR_SMCOST1", RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT, Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1003",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1003",
|
||||
SetupTime: time.Date(2016, 4, 6, 13, 29, 24, 0, time.UTC), AnswerTime: time.Date(2016, 4, 6, 13, 30, 0, 0, time.UTC),
|
||||
Usage: time.Duration(90) * time.Second, Supplier: "suppl1",
|
||||
Usage: time.Duration(90) * time.Second,
|
||||
ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}}
|
||||
smCost := &engine.SMCost{CGRID: cdr.CGRID,
|
||||
RunID: utils.META_DEFAULT,
|
||||
@@ -1359,9 +1347,9 @@ func TestTutITPrepaidCDRWithSMCost(t *testing.T) {
|
||||
func TestTutITPrepaidCDRWithoutSMCost(t *testing.T) {
|
||||
cdr := &engine.CDR{CGRID: utils.Sha1("testprepaid2", time.Date(2016, 4, 6, 13, 29, 24, 0, time.UTC).String()),
|
||||
ToR: utils.VOICE, OriginID: "testprepaid2", OriginHost: "192.168.1.1", Source: "TEST_PREPAID_CDR_NO_SMCOST1", RequestType: utils.META_PREPAID,
|
||||
Direction: utils.OUT, Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1003",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1003",
|
||||
SetupTime: time.Date(2016, 4, 6, 13, 29, 24, 0, time.UTC), AnswerTime: time.Date(2016, 4, 6, 13, 30, 0, 0, time.UTC),
|
||||
Usage: time.Duration(90) * time.Second, Supplier: "suppl1",
|
||||
Usage: time.Duration(90) * time.Second,
|
||||
ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}}
|
||||
var reply string
|
||||
if err := tutLocalRpc.Call("CdrsV1.ProcessCdr", cdr, &reply); err != nil {
|
||||
@@ -1390,9 +1378,9 @@ func TestTutITPrepaidCDRWithoutSMCost(t *testing.T) {
|
||||
|
||||
func TestTutITExportCDR(t *testing.T) {
|
||||
cdr := &engine.CDR{ToR: utils.VOICE, OriginID: "testexportcdr1", OriginHost: "192.168.1.1", Source: "TestTutITExportCDR", RequestType: utils.META_RATED,
|
||||
Direction: utils.OUT, Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1003",
|
||||
Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1003",
|
||||
SetupTime: time.Date(2016, 11, 30, 17, 5, 24, 0, time.UTC), AnswerTime: time.Date(2016, 11, 30, 17, 6, 4, 0, time.UTC),
|
||||
Usage: time.Duration(98) * time.Second, Supplier: "suppl1",
|
||||
Usage: time.Duration(98) * time.Second,
|
||||
ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"}}
|
||||
cdr.ComputeCGRID()
|
||||
var reply string
|
||||
|
||||
Reference in New Issue
Block a user